<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AI工具 on KnightLi的博客</title>
        <link>https://knightli.com/categories/ai%E5%B7%A5%E5%85%B7/</link>
        <description>Recent content in AI工具 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Mon, 01 Jun 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://knightli.com/categories/ai%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>MiniMax M3 发布：代码 Agent、1M 上下文和原生多模态</title>
        <link>https://knightli.com/2026/06/01/minimax-m3-coding-agent-1m-context/</link>
        <pubDate>Mon, 01 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/06/01/minimax-m3-coding-agent-1m-context/</guid>
        <description>&lt;p&gt;MiniMax 在 2026 年 6 月 1 日发布了 &lt;code&gt;MiniMax M3&lt;/code&gt;。从官方介绍看，M3 的定位很清楚：面向代码、Agent 和长上下文任务，同时加入原生多模态能力。&lt;/p&gt;
&lt;p&gt;这次发布最值得关注的不是单个跑分，而是 MiniMax 把三类能力放到同一个模型里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码与 Agent 任务能力；&lt;/li&gt;
&lt;li&gt;最高 &lt;code&gt;1M tokens&lt;/code&gt; 上下文窗口；&lt;/li&gt;
&lt;li&gt;原生多模态，支持图像和视频输入；&lt;/li&gt;
&lt;li&gt;计划开放权重，支持后续私有化部署和微调。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你正在关注国产模型在编程助手、自动化工作流、长文档处理和多模态理解上的进展，M3 值得单独看一下。&lt;/p&gt;
&lt;h2 id=&#34;m3-的核心定位&#34;&gt;M3 的核心定位
&lt;/h2&gt;&lt;p&gt;MiniMax 对 M3 的表述是：代码与 Agent 前沿模型，1M 上下文，原生多模态。&lt;/p&gt;
&lt;p&gt;这几个关键词对应的是实际使用里的几个痛点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码任务不只是补全函数，还需要读项目、改文件、运行工具、修复报错；&lt;/li&gt;
&lt;li&gt;Agent 任务会产生大量工具调用记录、日志和中间结果；&lt;/li&gt;
&lt;li&gt;长文档、长视频、完整代码库都需要更大的上下文窗口；&lt;/li&gt;
&lt;li&gt;图表、截图、公式、视频帧等内容，不能只靠纯文本理解。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此 M3 更像是给“长链路任务”准备的模型，而不是只面向普通聊天或短文本生成。&lt;/p&gt;
&lt;h2 id=&#34;1m-上下文来自-msa-架构&#34;&gt;1M 上下文来自 MSA 架构
&lt;/h2&gt;&lt;p&gt;M3 使用 MiniMax 自研的 &lt;code&gt;MSA&lt;/code&gt;，也就是 &lt;code&gt;MiniMax Sparse Attention&lt;/code&gt;。官方解释里，MSA 的目标是解决传统全注意力在长上下文下计算复杂度快速膨胀的问题。&lt;/p&gt;
&lt;p&gt;简单说，全注意力在上下文变长时成本上升很快。MSA 通过稀疏注意力和更适合硬件执行的 KV block 访问方式，让模型在长上下文场景下更容易扩展。&lt;/p&gt;
&lt;p&gt;官方称，M3 API 支持最高 &lt;code&gt;1M tokens&lt;/code&gt; 上下文，并保证最低 &lt;code&gt;512K tokens&lt;/code&gt;。这对几类任务很有意义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读取完整项目或大型模块；&lt;/li&gt;
&lt;li&gt;处理长研究报告、合同、日志和知识库材料；&lt;/li&gt;
&lt;li&gt;保留多轮 Agent 执行过程中的工具调用记录；&lt;/li&gt;
&lt;li&gt;分析长视频或多模态材料。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过要注意，长上下文并不等于所有任务都应该塞满上下文。实际使用时，检索、分块、缓存和任务拆分仍然重要。1M 上下文更像是给复杂任务提供上限，而不是替代工程设计。&lt;/p&gt;
&lt;h2 id=&#34;代码和-agent-是重点&#34;&gt;代码和 Agent 是重点
&lt;/h2&gt;&lt;p&gt;官方报告里，M3 在多个代码与 Agent benchmark 上给出了成绩，包括：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Benchmark&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;官方公布成绩&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;SWE-Bench Pro&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;59.0%&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Terminal-Bench 2.1&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;66.0%&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;SWE-fficiency&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;34.8%&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;KernelBench Hard&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;28.8%&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MCP Atlas&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;74.2%&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些数字可以作为参考，但不建议只看榜单下结论。更值得注意的是 MiniMax 把 M3 的训练和评估重点放在更接近真实协作的 Agent 场景上。&lt;/p&gt;
&lt;p&gt;真实的代码工作并不是“一句话生成一个函数”。它通常包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;反复澄清需求；&lt;/li&gt;
&lt;li&gt;阅读已有代码；&lt;/li&gt;
&lt;li&gt;制定修改计划；&lt;/li&gt;
&lt;li&gt;运行命令和测试；&lt;/li&gt;
&lt;li&gt;根据报错继续修；&lt;/li&gt;
&lt;li&gt;在多轮上下文里保留决策依据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是 M3 和 MiniMax Code 绑定发布的原因。模型能力只是底层，真正能不能完成工程任务，还要看外层 Agent harness、工具调用、上下文管理和验证流程。&lt;/p&gt;
&lt;h2 id=&#34;官方展示的几个长链路任务&#34;&gt;官方展示的几个长链路任务
&lt;/h2&gt;&lt;p&gt;MiniMax 在报告里列了几个更接近真实工作的案例。&lt;/p&gt;
&lt;p&gt;第一个是论文复现。官方让 M3 独立复现一篇 ICLR 2025 Outstanding Paper。M3 连续运行接近 12 小时，产生 18 次 commit 和 23 张实验图，完成了核心实验复现。&lt;/p&gt;
&lt;p&gt;这个案例的重点不是“会写论文摘要”，而是它同时用到了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多模态能力，理解论文里的曲线、公式和图表；&lt;/li&gt;
&lt;li&gt;长上下文，把论文、代码和实验日志放进同一任务链路；&lt;/li&gt;
&lt;li&gt;代码与 Agent 能力，持续运行、实验、验证和修正。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二个是 CUDA kernel 优化。官方让 M3 从一个不能直接运行的 Triton 骨架开始，优化 NVIDIA Hopper GPU 上的 FP8 GEMM kernel。M3 在约 24 小时里完成 147 次 benchmark submission 和 1,959 次工具调用，把硬件峰值利用率从 &lt;code&gt;7.6%&lt;/code&gt; 提升到 &lt;code&gt;71.3%&lt;/code&gt;，相当于 &lt;code&gt;9.4x&lt;/code&gt; 加速。&lt;/p&gt;
&lt;p&gt;这个案例说明 M3 更强调长时间自主迭代。普通代码生成模型往往在前几轮失败后就停住，而 Agent 型模型需要能持续根据反馈调整方向。&lt;/p&gt;
&lt;p&gt;第三个是让 M3 自主训练模型。官方在 PostTrainBench 中给 M3 四个只完成预训练的 base model，让它在 12 小时内完成数据合成、训练、评估和迭代。最终 M3 得分 &lt;code&gt;0.37&lt;/code&gt;，低于 Opus 4.7 和 GPT-5.5，但明显领先其他模型。&lt;/p&gt;
&lt;p&gt;这些案例都来自 MiniMax 官方测试，不能直接等同于第三方独立评测结果。但它们能说明 M3 的产品方向：把模型放进长周期、可验证、有反馈的任务循环里。&lt;/p&gt;
&lt;h2 id=&#34;原生多模态的意义&#34;&gt;原生多模态的意义
&lt;/h2&gt;&lt;p&gt;M3 不是在文本模型后面简单外挂视觉能力。官方称它从训练早期就进行混合模态训练，并重建了数据管线，把训练数据扩展到 &lt;code&gt;100T+&lt;/code&gt; 级别。&lt;/p&gt;
&lt;p&gt;对开发者来说，多模态的价值主要在这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读取截图、图表、公式和设计稿；&lt;/li&gt;
&lt;li&gt;分析 PDF、论文、报告和实验图；&lt;/li&gt;
&lt;li&gt;理解长视频中的画面变化；&lt;/li&gt;
&lt;li&gt;在桌面自动化任务中识别界面元素。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MiniMax Code 也围绕这一点做了产品化。官方提到，MiniMax Code 可以结合 M3 的多模态能力做 computer use，例如根据表格内容跨应用批量录入信息。&lt;/p&gt;
&lt;h2 id=&#34;minimax-code-与-agent-team&#34;&gt;MiniMax Code 与 Agent Team
&lt;/h2&gt;&lt;p&gt;随着 M3 发布，MiniMax Code 也同步更新。官方把 MiniMax Code 定位为更适合 M3 的 Agent 产品，用来释放 M3 的长上下文、代码、Agent 和多模态能力。&lt;/p&gt;
&lt;p&gt;MiniMax Code 的 Agent Team 可以把大任务拆成多阶段、并发、可动态调整的流程，并通过类似 Producer + Verifier 的对抗式循环持续产出、反思和修正。&lt;/p&gt;
&lt;p&gt;这个方向和 Claude Code、Codex CLI、opencode 等工具处在同一大类：不是只让模型回答问题，而是让模型进入本地或云端开发环境，读文件、改文件、运行命令，再根据结果继续推进。&lt;/p&gt;
&lt;p&gt;区别在于，MiniMax 更强调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;M3 的 1M 长上下文；&lt;/li&gt;
&lt;li&gt;多模态和 computer use；&lt;/li&gt;
&lt;li&gt;Agent Team 的长时间自主执行；&lt;/li&gt;
&lt;li&gt;Token Plan 下的大额度使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;token-plan-和-api&#34;&gt;Token Plan 和 API
&lt;/h2&gt;&lt;p&gt;MiniMax 这次也更新了 Token Plan。官方公布的三档额度是：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;套餐&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;月费&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;M3 月额度&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Plus&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;$20/month&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 &lt;code&gt;1.7B tokens&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Max&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;$50/month&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 &lt;code&gt;5.1B tokens&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;$120/month&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 &lt;code&gt;9.8B tokens&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些额度看起来非常激进，适合高频代码助手、批处理、长文档处理和多模态任务。但实际是否划算，还要看可用地区、并发限制、速度、稳定性、上下文计费和任务成功率。&lt;/p&gt;
&lt;p&gt;API 方面，M3 已经可用。官方说明里有几个点值得注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入长度 &lt;code&gt;&amp;lt;=512K tokens&lt;/code&gt; 按标准价格计费；&lt;/li&gt;
&lt;li&gt;超过 &lt;code&gt;512K tokens&lt;/code&gt; 会进入更高的长上下文价格；&lt;/li&gt;
&lt;li&gt;支持开启或关闭 thinking；&lt;/li&gt;
&lt;li&gt;thinking 开启时更适合复杂推理、Agent 和长周期协作；&lt;/li&gt;
&lt;li&gt;thinking 关闭时响应更快，适合对话和代码补全；&lt;/li&gt;
&lt;li&gt;支持 &lt;code&gt;standard&lt;/code&gt; 和 &lt;code&gt;priority&lt;/code&gt; 服务等级，priority 面向更高并发和更稳定延迟。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方示例里的模型名是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-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;s2&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;MiniMax-M3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接口示例使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://api.minimax.io/v1/text/chatcompletion_v2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你要把 M3 接入现有代码工具，重点要先确认三件事：OpenAI-compatible 兼容程度、流式输出支持、工具调用格式。&lt;/p&gt;
&lt;h2 id=&#34;开放权重值得关注但要等落地&#34;&gt;开放权重值得关注，但要等落地
&lt;/h2&gt;&lt;p&gt;MiniMax 称 M3 将在 Hugging Face 和 GitHub 上开源权重，支持私有集群部署和微调。这个点很重要。&lt;/p&gt;
&lt;p&gt;如果权重真正开放，并且推理框架适配顺利，M3 可能会进入几类企业场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;私有代码库助手；&lt;/li&gt;
&lt;li&gt;内部知识库和文档分析；&lt;/li&gt;
&lt;li&gt;高敏感数据场景；&lt;/li&gt;
&lt;li&gt;政企和本地化部署；&lt;/li&gt;
&lt;li&gt;低成本批量 Agent 工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这里还需要等具体信息落地，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;权重大小和许可证；&lt;/li&gt;
&lt;li&gt;量化方案；&lt;/li&gt;
&lt;li&gt;vLLM、SGLang、llama.cpp 等框架支持；&lt;/li&gt;
&lt;li&gt;显存需求；&lt;/li&gt;
&lt;li&gt;多模态和长上下文在本地部署时的实际成本；&lt;/li&gt;
&lt;li&gt;是否开放完整训练或微调工具链。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以现在可以关注，但不宜过早把“开源权重”当成已经可生产部署的事实。&lt;/p&gt;
&lt;h2 id=&#34;适合谁先试&#34;&gt;适合谁先试
&lt;/h2&gt;&lt;p&gt;M3 更适合下面几类用户先试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常使用 AI coding agent 的开发者；&lt;/li&gt;
&lt;li&gt;想用国产模型替代部分 Claude、GPT 或 Gemini 代码任务的团队；&lt;/li&gt;
&lt;li&gt;有长文档、长代码库、长日志分析需求的人；&lt;/li&gt;
&lt;li&gt;做自动化工作流、MCP、agent harness 的开发者；&lt;/li&gt;
&lt;li&gt;需要大量 token 额度做批处理的人；&lt;/li&gt;
&lt;li&gt;对本地化部署和开放权重有长期需求的团队。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是普通聊天、短文本改写、简单问答，M3 未必是最需要优先尝试的模型。它的重点明显放在更重的 Agent 和工程任务上。&lt;/p&gt;
&lt;h2 id=&#34;我的看法&#34;&gt;我的看法
&lt;/h2&gt;&lt;p&gt;MiniMax M3 这次发布，最有意思的是路线选择：不只和通用聊天模型比，而是直接把代码、Agent、长上下文和多模态打包成一个面向工程工作流的模型。&lt;/p&gt;
&lt;p&gt;这条路线是对的。未来 AI 编程工具的竞争，不会只看模型能不能写一段代码，而会看它能不能在长时间任务里持续规划、执行、验证、纠错，并且把上下文成本控制住。&lt;/p&gt;
&lt;p&gt;不过，真正决定 M3 能不能进入主力工作流的，还是几个更朴素的问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 是否稳定；&lt;/li&gt;
&lt;li&gt;长上下文价格是否可控；&lt;/li&gt;
&lt;li&gt;MiniMax Code 的工具链是否成熟；&lt;/li&gt;
&lt;li&gt;OpenAI-compatible 和主流 agent 工具适配是否顺畅；&lt;/li&gt;
&lt;li&gt;开放权重能否及时落地；&lt;/li&gt;
&lt;li&gt;第三方评测和真实项目体验是否能支撑官方说法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些问题后续表现不错，M3 会成为国产代码 Agent 模型里很值得关注的一支。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.minimax.io/models/text/m3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MiniMax M3 官方模型页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.minimax.io/blog/minimax-m3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MiniMax M3 官方发布报告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.minimax.io/subscribe/token-plan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MiniMax Token Plan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.minimax.io/docs/api-reference/api-overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MiniMax API 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/MiniMaxAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MiniMax Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>subagent 会多花多少 token？多 agent 成本与使用策略</title>
        <link>https://knightli.com/2026/05/31/subagent-multi-agent-token-cost/</link>
        <pubDate>Sun, 31 May 2026 14:17:42 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/31/subagent-multi-agent-token-cost/</guid>
        <description>&lt;p&gt;使用 subagent 或多 agent 工作流，通常都会增加 token 用量。区别不在于“会不会增加”，而在于增加多少、换来的并行效率和稳定性是否值得。&lt;/p&gt;
&lt;p&gt;如果任务很小，直接让主 agent 完成通常更省。只有当任务可以清楚拆分，或者需要独立复查时，subagent 才更容易体现价值。&lt;/p&gt;
&lt;h2 id=&#34;subagent-不是更便宜的并行线程&#34;&gt;subagent 不是更便宜的并行线程
&lt;/h2&gt;&lt;p&gt;很多人第一次看到 subagent，会下意识把它理解成“并行线程”：主 agent 做一部分，subagent 做另一部分，速度变快，所以应该更划算。&lt;/p&gt;
&lt;p&gt;实际不是这样。subagent 本质上也是一个独立的模型调用。它需要读任务说明、理解上下文、读取文件、分析问题，再输出结果。也就是说，它不是主 agent 的免费副本，而是额外启动了一条推理链路。&lt;/p&gt;
&lt;p&gt;所以使用 subagent 的核心判断不是“能不能并行”，而是“并行带来的时间节省、质量提升，是否值得额外 token 成本”。&lt;/p&gt;
&lt;h2 id=&#34;为什么会增加-token&#34;&gt;为什么会增加 token
&lt;/h2&gt;&lt;p&gt;一次 subagent 调用通常会额外消耗这些 token：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主 agent 写给 subagent 的任务说明；&lt;/li&gt;
&lt;li&gt;传递给 subagent 的上下文；&lt;/li&gt;
&lt;li&gt;subagent 自己读取文件和分析问题；&lt;/li&gt;
&lt;li&gt;subagent 生成结果或修改说明；&lt;/li&gt;
&lt;li&gt;主 agent 回收结果后的复查、整合和验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果多个 agent 读取同一批大文件，重复消耗会更明显。尤其是代码库分析、长文档翻译、批量内容整理这类任务，如果拆分不好，token 会花在重复理解上下文上。&lt;/p&gt;
&lt;h2 id=&#34;重复读取上下文是最大的-token-浪费&#34;&gt;重复读取上下文是最大的 token 浪费
&lt;/h2&gt;&lt;p&gt;subagent 真正浪费 token 的地方，往往不是“多开了一个 agent”，而是多个 agent 反复读同一批材料。&lt;/p&gt;
&lt;p&gt;比如一个任务要处理 6 篇文章，如果 4 个 agent 都先读完整站点结构、完整技能文档、完整文章列表，再各自处理一点点内容，那么并行会很贵。更好的做法是先由主 agent 确定边界，再让每个 subagent 只读自己负责的文章目录。&lt;/p&gt;
&lt;p&gt;更省 token 的拆法通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个 agent 只负责一个明确目录；&lt;/li&gt;
&lt;li&gt;给 subagent 的上下文越短越好；&lt;/li&gt;
&lt;li&gt;不让多个 agent 重复做同一类探索；&lt;/li&gt;
&lt;li&gt;主 agent 最后统一复查，而不是让每个 agent 都做全量复查；&lt;/li&gt;
&lt;li&gt;能用脚本统一检查的部分，不交给多个 agent 反复检查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，subagent 的成本控制重点是边界，而不是数量。&lt;/p&gt;
&lt;h2 id=&#34;大概会增加多少&#34;&gt;大概会增加多少
&lt;/h2&gt;&lt;p&gt;下面是一个粗略估算，实际消耗取决于上下文长度、文件大小、任务复杂度和 agent 数量。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;token 增加&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;单个 subagent 处理一个小任务&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 &lt;code&gt;1.2x - 2x&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2-4 个 agent 并行处理可拆分任务&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 &lt;code&gt;2x - 5x&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多个 agent 各自读取大量文件、做长分析&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;可能 &lt;code&gt;5x+&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主 agent 和 subagent 重复读同一批大文件&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;浪费最明显&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这不是精确计费公式，只是经验范围。真正的消耗还要看每个 agent 是否需要读完整文件、是否需要长推理、是否会反复等待和补充上下文。&lt;/p&gt;
&lt;h2 id=&#34;如何给-subagent-写更省-token-的任务说明&#34;&gt;如何给 subagent 写更省 token 的任务说明
&lt;/h2&gt;&lt;p&gt;任务说明越宽泛，subagent 越容易自己去探索上下文，token 消耗也越高。更省的写法是把边界写清楚。&lt;/p&gt;
&lt;p&gt;一个好的 subagent 任务说明应该包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只允许处理哪些文件或目录；&lt;/li&gt;
&lt;li&gt;哪些文件只能读，哪些文件可以写；&lt;/li&gt;
&lt;li&gt;已有文件是否允许覆盖；&lt;/li&gt;
&lt;li&gt;需要保留哪些字段，比如 &lt;code&gt;date&lt;/code&gt;、&lt;code&gt;slug&lt;/code&gt;、&lt;code&gt;aliases&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;输出时只汇报什么结果；&lt;/li&gt;
&lt;li&gt;不需要做哪些事情，比如不要跑完整构建、不要改无关文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如，处理翻译时，不要只写“把文章翻译成多语言”。更省 token 的写法是：“只处理 &lt;code&gt;content/post/2026/05/240&lt;/code&gt;，读取 &lt;code&gt;index.zh-cn.md&lt;/code&gt;，只创建缺失的 &lt;code&gt;index.en.md&lt;/code&gt;、&lt;code&gt;index.zh-tw.md&lt;/code&gt;、&lt;code&gt;index.ja.md&lt;/code&gt;、&lt;code&gt;index.es.md&lt;/code&gt;，已存在则跳过，保留 &lt;code&gt;date&lt;/code&gt; 和 &lt;code&gt;slug&lt;/code&gt;。”&lt;/p&gt;
&lt;p&gt;这种说明更长一点，但能减少 subagent 自行猜测和重复探索，整体通常更省。&lt;/p&gt;
&lt;h2 id=&#34;按文件目录拆分比按语言步骤拆分更省&#34;&gt;按文件/目录拆分，比按语言/步骤拆分更省
&lt;/h2&gt;&lt;p&gt;如果是批量文章翻译，按“文章目录”拆通常比按“语言”拆更好。&lt;/p&gt;
&lt;p&gt;比如要翻译 6 篇文章，每篇都要生成英文、繁体、日文、西语。更推荐让一个 agent 负责一篇文章目录内的所有语言，而不是让一个 agent 负责所有英文、另一个负责所有日文。&lt;/p&gt;
&lt;p&gt;原因很简单：一篇文章的 front matter、代码块、链接、表格和语义上下文只需要读一次。如果按语言拆，多个 agent 会重复读取同一篇源文，token 会被放大。&lt;/p&gt;
&lt;p&gt;同样的逻辑也适用于代码任务。优先按模块、目录、组件拆分，而不是按“先分析、再实现、再测试”这种步骤拆分。步骤拆分很容易让每个 agent 都重新读一遍上下文。&lt;/p&gt;
&lt;h2 id=&#34;什么情况下值得用&#34;&gt;什么情况下值得用
&lt;/h2&gt;&lt;p&gt;subagent 的价值主要在两点：并行和独立视角。&lt;/p&gt;
&lt;p&gt;适合使用的场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多篇文章批量翻译；&lt;/li&gt;
&lt;li&gt;多个目录可以独立修改；&lt;/li&gt;
&lt;li&gt;前端、后端、测试可以明确分工；&lt;/li&gt;
&lt;li&gt;一个 agent 写实现，另一个 agent 做风险复查；&lt;/li&gt;
&lt;li&gt;高风险修改需要第二视角检查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务里，token 会增加，但总耗时可能明显下降，而且每个 agent 只盯一块内容，注意力更集中。&lt;/p&gt;
&lt;h2 id=&#34;什么时候值得用一个-agent-做复查&#34;&gt;什么时候值得用一个 agent 做复查
&lt;/h2&gt;&lt;p&gt;复查型 agent 不一定总值得用。它适合风险高、影响面大、主 agent 容易遗漏细节的任务。&lt;/p&gt;
&lt;p&gt;比较值得加复查 agent 的情况包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改涉及登录、支付、权限、数据删除；&lt;/li&gt;
&lt;li&gt;多语言内容会影响分类、URL、站内链接；&lt;/li&gt;
&lt;li&gt;大范围重构后需要独立找回归风险；&lt;/li&gt;
&lt;li&gt;用户明确要求 code review 或风险审查；&lt;/li&gt;
&lt;li&gt;主 agent 已经做了实现，但需要第二视角看边界条件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不值得加复查 agent 的情况也很明确：单文件小改、标题微调、简单 front matter 修正、只跑一个命令。这些任务主 agent 自查就够了。&lt;/p&gt;
&lt;h2 id=&#34;什么情况下不值得用&#34;&gt;什么情况下不值得用
&lt;/h2&gt;&lt;p&gt;不适合使用 subagent 的场景很常见：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单文件小改；&lt;/li&gt;
&lt;li&gt;简单问答；&lt;/li&gt;
&lt;li&gt;只需要跑一个命令；&lt;/li&gt;
&lt;li&gt;改动范围很小；&lt;/li&gt;
&lt;li&gt;任务不能清楚拆分；&lt;/li&gt;
&lt;li&gt;subagent 必须反复等待主 agent 提供上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务用 subagent 往往只是增加开销。主 agent 直接处理更快，也更省 token。&lt;/p&gt;
&lt;h2 id=&#34;我的默认策略省-token-优先风险任务才加复查&#34;&gt;我的默认策略：省 token 优先，风险任务才加复查
&lt;/h2&gt;&lt;p&gt;如果目标是尽量节省 token，可以采用下面这套策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小任务：不用 subagent。&lt;/li&gt;
&lt;li&gt;中等任务：不用 subagent。&lt;/li&gt;
&lt;li&gt;大批量任务：默认也不用 subagent，除非用户明确要并行提速。&lt;/li&gt;
&lt;li&gt;高风险任务：可以多用一个 agent 做复查，用 token 换稳定性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套策略更偏保守。它牺牲了一部分并行速度，但能减少重复读取上下文和重复推理带来的 token 消耗。&lt;/p&gt;
&lt;p&gt;如果任务很大但不高风险，我也会优先考虑脚本、批量检查和本地结构化处理。只有当拆分非常清楚，或者用户明确希望并行提速时，才更适合引入多个 agent。&lt;/p&gt;
&lt;h2 id=&#34;更均衡的策略&#34;&gt;更均衡的策略
&lt;/h2&gt;&lt;p&gt;如果既想控制成本，又不想完全放弃并行，可以采用折中方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认主 agent 直接做；&lt;/li&gt;
&lt;li&gt;只有任务能按文件或目录明确拆分时才考虑 subagent；&lt;/li&gt;
&lt;li&gt;subagent 只读取自己负责的文件；&lt;/li&gt;
&lt;li&gt;不让多个 agent 同时读同一批大文件；&lt;/li&gt;
&lt;li&gt;主 agent 最后统一复查关键字段、测试结果和 Git diff；&lt;/li&gt;
&lt;li&gt;高风险任务才增加一个独立复查 agent。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这能避免“为了并行而并行”。subagent 应该服务于明确的效率或质量目标，而不是成为默认动作。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;subagent 和多 agent 一定会增加 token 用量。单个 subagent 可能只是增加一点，多个 agent 并行时则可能成倍增加。&lt;/p&gt;
&lt;p&gt;是否值得用，取决于任务本身：如果任务能清楚拆分，或者风险高到需要独立复查，额外 token 可能是值得的；如果只是单文件小改、简单问答或常规检查，直接由主 agent 完成更省。&lt;/p&gt;
&lt;p&gt;一句话总结：&lt;strong&gt;小任务省 token，大任务看拆分，高风险才用额外 agent 换稳定性。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI 自动用手机哪家强？MobiAgent、Mobile-Agent、Mobilerun 和 mobile-use 对比</title>
        <link>https://knightli.com/2026/05/29/mobile-gui-agent-projects-comparison/</link>
        <pubDate>Fri, 29 May 2026 21:47:24 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/29/mobile-gui-agent-projects-comparison/</guid>
        <description>&lt;p&gt;最近连续整理了四个移动端 GUI 智能体项目：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobiagent-mobile-gui-agent-framework/&#34; &gt;MobiAgent&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobile-agent-gui-agent-family/&#34; &gt;Mobile-Agent&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobilerun-mobile-device-agent-framework/&#34; &gt;Mobilerun&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobile-use-real-mobile-app-agent/&#34; &gt;mobile-use&lt;/a&gt;。它们都和“让 AI 操作手机或移动 App”有关，但定位并不一样。&lt;/p&gt;
&lt;p&gt;简单说：MobiAgent 更像可定制手机智能体研究系统；Mobile-Agent 是通义实验室围绕 GUI agent 的系列工作集合；Mobilerun 更偏可落地的本地/云端移动设备控制框架；mobile-use 则强调真实 App 操作、任务分解、数据抽取和 AndroidWorld 评测。&lt;/p&gt;
&lt;h2 id=&#34;基本信息对比&#34;&gt;基本信息对比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;站内文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;主要定位&lt;/th&gt;
          &lt;th&gt;设备/平台&lt;/th&gt;
          &lt;th&gt;开源协议&lt;/th&gt;
          &lt;th&gt;更适合谁&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;MobiAgent&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobiagent-mobile-gui-agent-framework/&#34; &gt;站内介绍&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/IPADS-SAI/MobiAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IPADS-SAI/MobiAgent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;可定制手机 GUI 智能体系统，包含模型、runner、记忆、加速和评测&lt;/td&gt;
          &lt;td&gt;主要面向 Android/Harmony 手机&lt;/td&gt;
          &lt;td&gt;Apache-2.0&lt;/td&gt;
          &lt;td&gt;研究者、移动智能体实验团队&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Mobile-Agent&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobile-agent-gui-agent-family/&#34; &gt;站内介绍&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/X-PLUG/MobileAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X-PLUG/MobileAgent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;通义实验室 GUI 智能体家族，覆盖移动端、桌面、浏览器和工具调用&lt;/td&gt;
          &lt;td&gt;手机、PC、网页、云手机/云桌面&lt;/td&gt;
          &lt;td&gt;MIT&lt;/td&gt;
          &lt;td&gt;关注 GUI agent 技术路线的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Mobilerun&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobilerun-mobile-device-agent-framework/&#34; &gt;站内介绍&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/droidrun/mobilerun&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;droidrun/mobilerun&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;LLM 无关的移动设备 agent 框架，支持 CLI、Python API 和云端设备工作流&lt;/td&gt;
          &lt;td&gt;Android、iOS、本地设备、云端设备&lt;/td&gt;
          &lt;td&gt;MIT&lt;/td&gt;
          &lt;td&gt;开发者、QA、自动化工作流团队&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;mobile-use&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/29/mobile-use-real-mobile-app-agent/&#34; &gt;站内介绍&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/minitap-ai/mobile-use&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;minitap-ai/mobile-use&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;用自然语言操作真实移动 App，强调任务分解、结构化抽取和 AndroidWorld&lt;/td&gt;
          &lt;td&gt;Android 实机/模拟器、iOS 模拟器&lt;/td&gt;
          &lt;td&gt;Apache-2.0&lt;/td&gt;
          &lt;td&gt;做移动 App agent、数据抽取和评测的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;mobiagent&#34;&gt;MobiAgent
&lt;/h2&gt;&lt;p&gt;MobiAgent 来自 IPADS-SAI，定位是一个可定制的手机智能体系统。它不是只提供一个执行脚本，而是把 MobiMind 模型家族、AgentRR 动作记录与回放、MobiFlow 评测基准、手机 runner、数据采集和 Android app 放到同一套体系里。&lt;/p&gt;
&lt;p&gt;它的特点是研究系统比较完整。MobiAgent 关注真实手机任务中的准确率、效率、记忆和可复用动作序列。README 中提到的用户画像记忆、经验记忆、动作记忆，以及多任务执行，都说明它在尝试处理长期任务和重复任务。&lt;/p&gt;
&lt;p&gt;它的门槛也相对高。完整运行需要设备、ADB、模型部署、依赖环境、可选的向量数据库和图数据库配置。更适合研究或工程实验，不太像面向普通用户的“安装即用”手机助手。&lt;/p&gt;
&lt;h2 id=&#34;mobile-agent&#34;&gt;Mobile-Agent
&lt;/h2&gt;&lt;p&gt;Mobile-Agent 来自 X-PLUG/通义实验室。这个仓库已经从早期手机操作智能体，扩展成一个 GUI 智能体家族：Mobile-Agent-v1/v2/v3/v3.5、Mobile-Agent-E、PC-Agent、GUI-Critic-R1、UI-S1、GUI-Owl、ToolCUA 等都在同一条技术线上。&lt;/p&gt;
&lt;p&gt;它的特点是跨度大。Mobile-Agent 不只关心手机，还覆盖桌面、浏览器、云手机、云桌面、GUI 感知、grounding、错误诊断、强化学习和 GUI/工具路径编排。GUI-Owl 系列模型让它更像一个跨平台 GUI agent 基础模型路线，而不是单个移动自动化项目。&lt;/p&gt;
&lt;p&gt;它的不足也来自这个跨度：仓库更像研究成果集合，使用者需要先判断自己要跑哪个子项目、哪个模型和哪个场景。它适合跟踪技术演进和复现实验，不一定是最快接入业务流程的选择。&lt;/p&gt;
&lt;h2 id=&#34;mobilerun&#34;&gt;Mobilerun
&lt;/h2&gt;&lt;p&gt;Mobilerun 来自 droidrun，定位更工程化：让 LLM agent 通过自然语言控制 Android 和 iOS 设备。它提供 CLI、TUI、Docker、Python API、Portal-based control、vision mode、reasoning mode、结构化输出、自定义工具、app cards、执行轨迹和云端设备服务。&lt;/p&gt;
&lt;p&gt;它最突出的地方是模型无关和部署形态清楚。开发者可以接 OpenAI、Anthropic、Gemini、Ollama、DeepSeek、OpenRouter 或 OpenAI-compatible providers；也可以选择本地框架或 Mobilerun Cloud。对真实团队来说，这种“设备控制层和模型层解耦”的设计很重要。&lt;/p&gt;
&lt;p&gt;它也有移动端自动化常见的门槛：Android 需要开发者选项、USB 调试和 Portal app；iOS 需要单独流程；复杂任务还要处理权限弹窗、页面变化、失败重试和日志排查。它更适合愿意把 mobile agent 当成工程组件接入的人。&lt;/p&gt;
&lt;h2 id=&#34;mobile-use&#34;&gt;mobile-use
&lt;/h2&gt;&lt;p&gt;mobile-use 来自 minitap-ai，目标是让 AI agent 使用真实 Android 和 iOS App。它支持自然语言控制、UI-aware automation、数据抽取、不同 LLM 配置，并强调 AndroidWorld 基准表现。README 中还提到项目是首个在 AndroidWorld benchmark 上达到 100% 的 agentic framework。&lt;/p&gt;
&lt;p&gt;它的亮点是任务分解和结构化抽取。比如从 Gmail 中找未读邮件，并按指定 JSON 格式返回发件人和主题，这类任务比“打开设置看看电量”更接近真实生产需求。它把移动 GUI agent 从“会操作”推进到“能把 App 里的信息整理出来”。&lt;/p&gt;
&lt;p&gt;它的限制主要在设备支持和运行环境。Android 可以用实体手机或模拟器；iOS 目前主要支持 macOS 上的模拟器，物理 iOS 设备还不支持。Docker 快速启动也主要面向 Android。评估它时，要先确认目标设备和 App 场景能否被当前执行通道覆盖。&lt;/p&gt;
&lt;h2 id=&#34;功能对比&#34;&gt;功能对比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;功能维度&lt;/th&gt;
          &lt;th&gt;MobiAgent&lt;/th&gt;
          &lt;th&gt;Mobile-Agent&lt;/th&gt;
          &lt;th&gt;Mobilerun&lt;/th&gt;
          &lt;th&gt;mobile-use&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;自然语言任务&lt;/td&gt;
          &lt;td&gt;支持&lt;/td&gt;
          &lt;td&gt;支持&lt;/td&gt;
          &lt;td&gt;支持&lt;/td&gt;
          &lt;td&gt;支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;真实手机操作&lt;/td&gt;
          &lt;td&gt;强，偏 Android/Harmony&lt;/td&gt;
          &lt;td&gt;强，含移动端与云手机&lt;/td&gt;
          &lt;td&gt;强，Android/iOS&lt;/td&gt;
          &lt;td&gt;强，Android；iOS 偏模拟器&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;桌面/浏览器扩展&lt;/td&gt;
          &lt;td&gt;不是重点&lt;/td&gt;
          &lt;td&gt;强，含 PC-Agent、GUI-Owl、ToolCUA&lt;/td&gt;
          &lt;td&gt;不是主要定位&lt;/td&gt;
          &lt;td&gt;不是主要定位&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;模型层&lt;/td&gt;
          &lt;td&gt;自带 MobiMind 系列&lt;/td&gt;
          &lt;td&gt;GUI-Owl、Mobile-Agent 系列&lt;/td&gt;
          &lt;td&gt;LLM 无关，接多家模型&lt;/td&gt;
          &lt;td&gt;可配置多种 LLM&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;执行器/runner&lt;/td&gt;
          &lt;td&gt;强，含 ADB runner、多任务 runner&lt;/td&gt;
          &lt;td&gt;子项目各自提供&lt;/td&gt;
          &lt;td&gt;强，CLI/TUI/Python API/Docker&lt;/td&gt;
          &lt;td&gt;有源码、Docker 和平台入口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;记忆能力&lt;/td&gt;
          &lt;td&gt;用户画像、经验、动作记忆&lt;/td&gt;
          &lt;td&gt;v3/v3.5 路线中强调记忆与反思&lt;/td&gt;
          &lt;td&gt;更偏轨迹、日志和工程调试&lt;/td&gt;
          &lt;td&gt;更偏任务分解与状态执行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;评测&lt;/td&gt;
          &lt;td&gt;MobiFlow&lt;/td&gt;
          &lt;td&gt;多个论文/基准方向&lt;/td&gt;
          &lt;td&gt;有 benchmark 结果入口&lt;/td&gt;
          &lt;td&gt;AndroidWorld 表现突出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;云端设备&lt;/td&gt;
          &lt;td&gt;不是主要卖点&lt;/td&gt;
          &lt;td&gt;支持云手机/云桌面体验&lt;/td&gt;
          &lt;td&gt;Mobilerun Cloud 是重点&lt;/td&gt;
          &lt;td&gt;有平台入口&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;结构化输出&lt;/td&gt;
          &lt;td&gt;可通过工程流程实现&lt;/td&gt;
          &lt;td&gt;视子项目而定&lt;/td&gt;
          &lt;td&gt;明确支持&lt;/td&gt;
          &lt;td&gt;明确支持&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;优缺点对比&#34;&gt;优缺点对比
&lt;/h2&gt;&lt;p&gt;MobiAgent 的优点是系统完整，适合研究手机 GUI agent 的模型、记忆、加速和评测闭环；缺点是部署链路长，工程配置重，普通开发者上手成本较高。&lt;/p&gt;
&lt;p&gt;Mobile-Agent 的优点是技术路线最宽，能看到 GUI agent 从手机走向桌面、浏览器、工具调用和基础模型的演进；缺点是项目族复杂，想直接落地某个具体场景时，需要先做较多筛选。&lt;/p&gt;
&lt;p&gt;Mobilerun 的优点是工程接口清晰，模型无关，本地框架和云服务分层明确，适合把移动设备自动化接入产品或内部工具；缺点是仍然要面对移动设备权限、环境、App 状态和云端成本问题。&lt;/p&gt;
&lt;p&gt;mobile-use 的优点是聚焦真实 App 使用、任务分解和结构化数据抽取，AndroidWorld 方向也让它更容易评估；缺点是 iOS 物理设备支持有限，完整使用仍然需要配置模型、设备和运行环境。&lt;/p&gt;
&lt;h2 id=&#34;适用范围建议&#34;&gt;适用范围建议
&lt;/h2&gt;&lt;p&gt;如果你要做移动智能体研究，优先看 MobiAgent 和 Mobile-Agent。前者更聚焦手机端系统闭环，后者更适合观察 GUI agent 的跨平台演进。&lt;/p&gt;
&lt;p&gt;如果你要做移动 App 自动化、QA、数据抽取或内部工作流，优先看 Mobilerun 和 mobile-use。Mobilerun 更像可接入工程系统的运行框架，mobile-use 更适合验证自然语言 App 操作和结构化抽取。&lt;/p&gt;
&lt;p&gt;如果你关注未来个人助手形态，四个都值得跟踪。MobiAgent 代表手机 agent 的系统化研究，Mobile-Agent 代表跨平台 GUI agent 路线，Mobilerun 代表设备控制基础设施，mobile-use 代表真实 App 任务分解和评测驱动路线。&lt;/p&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;这四个项目的差异说明，移动端 GUI agent 已经不只是“让模型看截图点按钮”。真正的问题变成了：模型如何理解界面，执行器如何稳定控制设备，任务如何拆解和评估，云端设备如何管理，结果如何结构化返回，风险如何被限制。&lt;/p&gt;
&lt;p&gt;短期内，最现实的落地场景会是 QA、数据抽取、内部流程自动化和受控设备池。长期看，谁能把设备控制、模型能力、权限边界、日志追踪和用户确认机制做稳，谁就更接近真正可用的移动端 AI 助手。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>mobile-use 看点：让 AI 操作真实 App，还能提取数据</title>
        <link>https://knightli.com/2026/05/29/mobile-use-real-mobile-app-agent/</link>
        <pubDate>Fri, 29 May 2026 21:43:46 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/29/mobile-use-real-mobile-app-agent/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/minitap-ai/mobile-use&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mobile-use&lt;/a&gt; 是 minitap-ai 开源的移动端 AI agent 框架，目标是让智能体像人一样使用真实 Android 和 iOS App。用户用自然语言描述任务，框架负责理解界面、操作 App，并把结果返回给调用方。&lt;/p&gt;
&lt;p&gt;从 README 看，mobile-use 的重点不只是“能点手机”，还强调 UI-aware automation、数据抽取、可配置模型，以及在 AndroidWorld 基准上的表现。项目还提供云平台、文档和论文入口，说明它既是开源框架，也是一个围绕移动端智能体搭建的产品与研究体系。&lt;/p&gt;
&lt;h2 id=&#34;它和普通手机自动化有什么不同&#34;&gt;它和普通手机自动化有什么不同
&lt;/h2&gt;&lt;p&gt;传统手机自动化通常依赖脚本、坐标、控件 ID 或固定流程。它适合稳定页面，但遇到界面变化、弹窗、搜索结果、列表滚动和跨 App 操作时，很容易失效。&lt;/p&gt;
&lt;p&gt;mobile-use 的路线是让 AI agent 直接处理自然语言目标和 UI 状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户用自然语言描述任务，不必预先写死每一步。&lt;/li&gt;
&lt;li&gt;框架读取移动端界面，并结合模型判断下一步操作。&lt;/li&gt;
&lt;li&gt;可以从 App 中抽取信息，并按指定格式返回，比如 JSON。&lt;/li&gt;
&lt;li&gt;支持不同 LLM 配置，包括 OpenAI API compatible providers。&lt;/li&gt;
&lt;li&gt;Android 可以通过实体手机或模拟器运行，iOS 目前主要面向 macOS 上的模拟器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类框架更适合“半结构化”的移动任务：目标明确，但每次页面状态、数据内容和路径不完全一样。&lt;/p&gt;
&lt;h2 id=&#34;androidworld-结果值得注意&#34;&gt;AndroidWorld 结果值得注意
&lt;/h2&gt;&lt;p&gt;mobile-use README 中提到，项目在 AndroidWorld benchmark 上达到 100% 完成表现，并链接了对应论文。无论具体评测细节如何，这都说明项目团队把“任务分解”和“可评测执行”放在了很高的位置。&lt;/p&gt;
&lt;p&gt;这点比单纯演示更关键。GUI agent 最容易出现的问题是：一个视频里看起来很聪明，但换一个任务、设备或初始状态就不稳定。基准测试不能完全代表真实使用，却能逼迫系统面对一组标准化任务，并暴露规划、定位、恢复和状态理解能力。&lt;/p&gt;
&lt;p&gt;README 中的论文题目也点出了方向：通过任务分解提升 AndroidWorld 准确率。对移动端智能体来说，复杂任务往往不能靠一个大提示词直接完成，而需要拆成可执行子任务，并在每一步检查状态。&lt;/p&gt;
&lt;h2 id=&#34;数据抽取是实用入口&#34;&gt;数据抽取是实用入口
&lt;/h2&gt;&lt;p&gt;mobile-use 的一个现实场景是从原生 App 中抽取数据。很多信息并不暴露在 API 中，只能在 App 界面里查看，比如邮件列表、订单状态、社交内容、运营后台、消息通知等。&lt;/p&gt;
&lt;p&gt;README 给出的示例是打开 Gmail，找到未读邮件，并把发件人和主题整理成 JSON。这个方向很实用，因为它把移动 GUI agent 从“帮我操作一下”推进到“帮我把 App 里的信息结构化拿出来”。&lt;/p&gt;
&lt;p&gt;不过，这也带来边界问题。数据抽取涉及账号、隐私、平台条款和访问权限。真正使用时，应该明确设备归属、任务授权、数据保存方式和输出范围，不能把手机界面当成无限制的数据源。&lt;/p&gt;
&lt;h2 id=&#34;部署门槛和限制&#34;&gt;部署门槛和限制
&lt;/h2&gt;&lt;p&gt;mobile-use 支持从平台快速开始，也支持从源码运行。源码方式需要配置 &lt;code&gt;.env&lt;/code&gt;、LLM 配置和依赖环境；Android 侧可以使用实体手机或模拟器，Docker 快速启动目前主要面向 Android；iOS 侧需要 macOS、Xcode 和 Facebook 的 iOS Development Bridge，README 也说明物理 iOS 设备暂不支持。&lt;/p&gt;
&lt;p&gt;这些限制并不意外。移动端自动化比浏览器自动化更依赖设备、系统权限和调试通道。尤其是 iOS，系统封闭性更强，能稳定接入模拟器已经有价值，但离“任意真实 iPhone 自动化”还有距离。&lt;/p&gt;
&lt;p&gt;因此，评估 mobile-use 时不要只看模型效果，还要看自己的目标设备、App 类型、运行环境和合规边界是否匹配。&lt;/p&gt;
&lt;h2 id=&#34;适合谁关注&#34;&gt;适合谁关注
&lt;/h2&gt;&lt;p&gt;mobile-use 适合几类人关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究 AndroidWorld、移动 GUI agent 和任务分解方法的研究者。&lt;/li&gt;
&lt;li&gt;想把自然语言移动操作接入内部工具的开发者。&lt;/li&gt;
&lt;li&gt;需要从原生 App 抽取结构化数据的团队。&lt;/li&gt;
&lt;li&gt;做移动 App QA、回归测试或探索式测试的人。&lt;/li&gt;
&lt;li&gt;想比较 mobile-use、Mobilerun、Mobile-Agent 等不同移动端智能体路线的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果目标是一个面向普通用户的手机助手，它目前还偏工程和研究框架；如果目标是验证移动端 agent 的可行性，它提供了一个很好的开源起点。&lt;/p&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;mobile-use 的亮点在于把真实 App 操作、结构化数据抽取和基准评测放在同一个项目里。它不是只做“自然语言点手机”的包装，而是在尝试把移动端任务拆解成可执行、可评估、可复现的智能体流程。&lt;/p&gt;
&lt;p&gt;移动端会是 GUI agent 的重要战场，因为大量个人和业务任务发生在 App 里，而不是网页或 API 里。mobile-use 这类项目的意义，就是让智能体从聊天窗口走进真实应用界面。它还没有把设备、权限和风险问题全部抹平，但已经给开发者提供了一个足够具体的实验平台。&lt;/p&gt;
&lt;p&gt;项目链接：&lt;a class=&#34;link&#34; href=&#34;https://github.com/minitap-ai/mobile-use&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;minitap-ai/mobile-use&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>想让 AI 自动点手机？Mobilerun 支持 Android 和 iOS</title>
        <link>https://knightli.com/2026/05/29/mobilerun-mobile-device-agent-framework/</link>
        <pubDate>Fri, 29 May 2026 21:43:45 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/29/mobilerun-mobile-device-agent-framework/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/droidrun/mobilerun&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mobilerun&lt;/a&gt; 是 droidrun 开源的移动设备自动化框架，目标是让 LLM agent 可以用自然语言控制 Android 和 iOS 设备。它提供移动端原生工具，让智能体能够检查 UI 状态、理解截图、点击、滑动、输入、规划多步任务，并通过 CLI 或 Python API 返回结果。&lt;/p&gt;
&lt;p&gt;这个项目的定位很清楚：它不绑定某一家模型，而是做移动设备与智能体之间的执行层。README 中列出的模型来源包括 OpenAI、Anthropic、Gemini、Ollama、DeepSeek、OpenRouter 以及 OpenAI-compatible providers。对开发者来说，这比“只支持一个模型的演示项目”更实用。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;移动端自动化最麻烦的地方，是自然语言任务和真实设备操作之间隔着很多层。模型需要知道当前打开了什么 App、页面有哪些控件、是否需要截图补充视觉信息、下一步该点哪里，以及执行失败后如何继续。&lt;/p&gt;
&lt;p&gt;Mobilerun 把这些能力整理成一套框架：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过 CLI 和 TUI 运行一次性自然语言任务、检查设备、回放宏和调试流程。&lt;/li&gt;
&lt;li&gt;通过 Python API 构建自定义移动自动化工作流。&lt;/li&gt;
&lt;li&gt;支持 Android 和 iOS，Android 通过 Portal app 和无障碍能力控制设备，iOS 走单独的 Portal 流程。&lt;/li&gt;
&lt;li&gt;同时使用 accessibility tree 和截图，让模型既能读结构化 UI，也能看视觉画面。&lt;/li&gt;
&lt;li&gt;支持 &lt;code&gt;--vision&lt;/code&gt;、&lt;code&gt;--vision-only&lt;/code&gt; 和 &lt;code&gt;--reasoning&lt;/code&gt; 等模式，应对不同复杂度的任务。&lt;/li&gt;
&lt;li&gt;支持结构化输出、app cards、自定义工具、凭据和执行轨迹追踪。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让 Mobilerun 更像一个“移动端 agent runtime”，而不是单纯把截图发给大模型再模拟点击。&lt;/p&gt;
&lt;h2 id=&#34;本地框架和云端服务&#34;&gt;本地框架和云端服务
&lt;/h2&gt;&lt;p&gt;Mobilerun 把本地框架和 Mobilerun Cloud 分得比较清楚。本地框架适合开发者在自己的机器和设备上运行 agent，拿到更强的代码级控制；Cloud 则面向托管设备、REST API、SDK 和规模化工作流。&lt;/p&gt;
&lt;p&gt;这个分层很重要。很多移动自动化场景开始时只是“帮我在手机上跑一个任务”，但一旦进入团队使用，就会遇到设备管理、并发、日志、失败重试、权限和 API 调用的问题。Cloud 不是替代本地框架，而是把设备运维和工作流接入往后端服务方向推进。&lt;/p&gt;
&lt;p&gt;README 中还区分了几类云端设备：用户自己的硬件、托管云手机、托管实体手机。这里的差别不只是成本，也涉及应用风控、身份可信度和任务稳定性。对电商、社交、金融或本地生活类 App 来说，真实设备和虚拟设备的表现可能完全不同。&lt;/p&gt;
&lt;h2 id=&#34;为什么-llm-无关很关键&#34;&gt;为什么 LLM 无关很关键
&lt;/h2&gt;&lt;p&gt;移动 GUI agent 还处在快速变化阶段，很难说哪一家模型长期最好。不同任务对模型的要求也不一样：有的更依赖视觉理解，有的更依赖长链路规划，有的更看重工具调用，有的则需要低成本批量执行。&lt;/p&gt;
&lt;p&gt;Mobilerun 选择模型无关的框架路线，价值在于把设备控制、任务执行、日志追踪和模型选择拆开。开发者可以先稳定设备侧流程，再根据任务成本、准确率和延迟切换模型。&lt;/p&gt;
&lt;p&gt;这对实际落地很有帮助。企业不会只因为一个模型演示效果好就重写设备控制层；更合理的方式是保留统一执行框架，把模型当成可替换组件。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;Mobilerun 当前适合几类需求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;移动 App QA 和回归测试。&lt;/li&gt;
&lt;li&gt;从原生 App 中抽取数据并返回结构化结果。&lt;/li&gt;
&lt;li&gt;自动执行重复性的手机任务。&lt;/li&gt;
&lt;li&gt;为非技术用户封装自然语言移动操作流程。&lt;/li&gt;
&lt;li&gt;在多台设备上运行自动化任务。&lt;/li&gt;
&lt;li&gt;把日程、通知或自定义触发器接入移动端工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过，它也不是“安装后立刻替你管手机”的消费级助手。Android 侧需要 ADB、开发者选项、USB 调试和 Portal app；iOS 侧也有自己的接入流程。真正跑稳定，还要处理模型配置、设备状态、权限弹窗和任务失败恢复。&lt;/p&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;Mobilerun 的价值在于把移动设备控制做成了可编程、可观测、可替换模型的 agent 框架。它承认移动自动化不是一个模型问题，而是模型、设备、执行器、日志、工具和云端基础设施共同组成的系统问题。&lt;/p&gt;
&lt;p&gt;短期看，它适合开发者搭建移动端自动化原型和内部工具；长期看，这类框架可能会成为“手机上的 AI 工作流引擎”。如果 GUI agent 要进入真实业务，像 Mobilerun 这样把本地运行、云端设备、结构化输出和追踪能力放在一起的项目会越来越重要。&lt;/p&gt;
&lt;p&gt;项目链接：&lt;a class=&#34;link&#34; href=&#34;https://github.com/droidrun/mobilerun&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;droidrun/mobilerun&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI 能自己点手机、用电脑了吗？Mobile-Agent 项目解读</title>
        <link>https://knightli.com/2026/05/29/mobile-agent-gui-agent-family/</link>
        <pubDate>Fri, 29 May 2026 21:42:41 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/29/mobile-agent-gui-agent-family/</guid>
        <description>&lt;p&gt;X-PLUG 开源的 &lt;a class=&#34;link&#34; href=&#34;https://github.com/X-PLUG/MobileAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mobile-Agent&lt;/a&gt; 已经不只是一个手机自动化项目。按照仓库当前的定位，它更像是通义实验室围绕 GUI 智能体持续沉淀的一组工作：Mobile-Agent-v1/v2/v3/v3.5、Mobile-Agent-E、PC-Agent、GUI-Critic-R1、UI-S1、GUI-Owl 以及 ToolCUA 等，都被放在同一个项目体系里展示。&lt;/p&gt;
&lt;p&gt;这条线索值得关注。过去谈 GUI agent，常见问题是“模型能不能看懂截图并点对位置”；而 Mobile-Agent 的演进方向更进一步：让智能体在移动端、桌面、浏览器和工具调用之间切换，处理更长链路、更复杂的真实任务。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;GUI 智能体面对的不是标准 API，而是应用界面。它需要看懂屏幕、定位控件、规划步骤、执行点击或输入，并在失败时修正路径。移动端场景尤其复杂，因为任务往往跨多个 App，界面状态也会随着登录、权限、弹窗、网络和个性化推荐变化。&lt;/p&gt;
&lt;p&gt;Mobile-Agent 系列把这个问题拆成了几个方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Mobile-Agent-v1/v2 探索手机 GUI 的视觉感知与多智能体协作。&lt;/li&gt;
&lt;li&gt;用 PC-Agent 把多智能体操作扩展到 PC 场景。&lt;/li&gt;
&lt;li&gt;用 Mobile-Agent-v3 和 v3.5 推进多平台 GUI 智能体框架。&lt;/li&gt;
&lt;li&gt;用 GUI-Owl 系列模型提供跨平台 GUI 感知、定位和端到端操作能力。&lt;/li&gt;
&lt;li&gt;用 GUI-Critic-R1、UI-S1、ToolCUA 等工作补足错误诊断、强化学习和 GUI/工具路径编排。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让它不像一个单点 demo，而更像一条围绕“计算机使用智能体”的研究和工程路线。&lt;/p&gt;
&lt;h2 id=&#34;v35-的重点&#34;&gt;v3.5 的重点
&lt;/h2&gt;&lt;p&gt;仓库 README 显示，Mobile-Agent-v3.5 已经可以通过 ModelScope 在线 Demo 和阿里云百炼在线 Demo 体验，百炼上也提供了 v3.5 API。2026 年 3 月，v3.5 还上线了阿里云无影云手机，面向云端 Android 环境提供移动使用体验。&lt;/p&gt;
&lt;p&gt;这说明项目正在把“本地跑实验”之外的使用方式也补上。对于 GUI 智能体来说，云手机和云桌面很重要：它们能提供更稳定、更可复现的运行环境，减少本地设备、系统版本、分辨率和 App 状态带来的差异。&lt;/p&gt;
&lt;p&gt;如果你想评估这类智能体，稳定环境往往比模型本身更容易被低估。没有可控的执行环境，就很难判断一次失败是模型能力不足、界面变化、设备问题，还是任务定义不清。&lt;/p&gt;
&lt;h2 id=&#34;gui-owl-是底层变化&#34;&gt;GUI-Owl 是底层变化
&lt;/h2&gt;&lt;p&gt;Mobile-Agent-v3 之后，GUI-Owl 成了这条路线里的关键模型层。README 中把 GUI-Owl 描述为具备 GUI 感知、grounding 和端到端操作能力的多模态跨平台 GUI VLM。到 GUI-Owl-1.5，模型系列已经覆盖 2B、4B、8B、32B、235B，并支持桌面、移动端和浏览器自动化。&lt;/p&gt;
&lt;p&gt;这类模型的意义在于，它不只是回答“屏幕里有什么”，还要把自然语言目标、截图内容、界面元素位置和下一步操作连起来。对 GUI agent 来说，视觉理解、坐标定位、操作规划和状态记忆缺一不可。&lt;/p&gt;
&lt;p&gt;当然，模型越通用，工程边界也越重要。真实部署时仍然需要执行器、权限控制、任务日志、回滚机制和人工确认。尤其是涉及支付、账号、文件、消息发送等高风险操作时，GUI agent 不能只追求自动完成，还要能清楚说明自己准备做什么。&lt;/p&gt;
&lt;h2 id=&#34;toolcua-暗示的新方向&#34;&gt;ToolCUA 暗示的新方向
&lt;/h2&gt;&lt;p&gt;2026 年 5 月，项目新闻里提到 ToolCUA，定位是面向 GUI 与工具最优路径编排的端到端 Computer Use Agent。这个方向很有意思，因为它承认了一个现实：不是所有任务都应该靠点屏幕完成。&lt;/p&gt;
&lt;p&gt;有些事情适合 GUI 操作，比如登录后台、处理复杂表单、读取没有 API 的应用状态；有些事情更适合调用工具，比如检索、计算、解析文件、访问结构化接口。真正可用的计算机使用智能体，需要学会在两者之间切换。&lt;/p&gt;
&lt;p&gt;这也是 Mobile-Agent 系列比早期手机自动化项目更值得看的地方。它不再只问“智能体能不能像人一样点 App”，而是在问“智能体什么时候该看屏幕，什么时候该用工具，什么时候该停下来确认”。&lt;/p&gt;
&lt;h2 id=&#34;适合谁关注&#34;&gt;适合谁关注
&lt;/h2&gt;&lt;p&gt;如果你只是想找一个开箱即用的手机自动化助手，Mobile-Agent 仍然偏研究和工程框架。它涉及模型、运行环境、评测任务和具体执行器，完整跑通通常需要一定配置成本。&lt;/p&gt;
&lt;p&gt;但如果你关注下面几类问题，它很值得跟踪：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;移动端 GUI agent 如何从演示走向稳定执行。&lt;/li&gt;
&lt;li&gt;桌面、浏览器和手机自动化能否统一到同一套智能体框架里。&lt;/li&gt;
&lt;li&gt;GUI 模型如何处理 grounding、反思、记忆和错误诊断。&lt;/li&gt;
&lt;li&gt;智能体如何在 GUI 操作与工具调用之间选择路径。&lt;/li&gt;
&lt;li&gt;云手机、云桌面是否会成为 GUI agent 的重要运行环境。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题会直接影响个人助理、企业流程自动化、远程桌面操作、应用测试和无 API 系统集成。&lt;/p&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;Mobile-Agent 的价值不在于某一个版本的指标，而在于它把 GUI 智能体从“手机截图点按”推进到了一个更大的系统问题：模型、执行环境、评测、工具调用、错误诊断和跨平台任务如何协同。&lt;/p&gt;
&lt;p&gt;短期看，它更适合研究者和开发者观察 GUI agent 的技术路线；长期看，这类项目可能会影响个人 AI 助手和企业自动化工具的形态。真正的难点不只是让智能体会操作界面，而是让它在真实应用里稳定、可控、可追踪地完成任务。&lt;/p&gt;
&lt;p&gt;项目链接：&lt;a class=&#34;link&#34; href=&#34;https://github.com/X-PLUG/MobileAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;X-PLUG/MobileAgent&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>MobiAgent 是什么？一个能操作手机 App 的开源 AI 智能体</title>
        <link>https://knightli.com/2026/05/29/mobiagent-mobile-gui-agent-framework/</link>
        <pubDate>Fri, 29 May 2026 21:36:58 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/29/mobiagent-mobile-gui-agent-framework/</guid>
        <description>&lt;p&gt;IPADS-SAI 开源了 &lt;a class=&#34;link&#34; href=&#34;https://github.com/IPADS-SAI/MobiAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MobiAgent&lt;/a&gt;，定位是一个面向手机 GUI 的可定制智能体框架。它不是单一模型仓库，而是把模型、执行器、加速机制、评测基准和移动端应用放在同一个体系里，目标是让智能体能在真实手机环境中完成跨应用、多步骤任务。&lt;/p&gt;
&lt;p&gt;从项目结构看，MobiAgent 主要由三部分组成：MobiMind 系列智能体模型、AgentRR 记录与回放加速框架，以及 MobiFlow 评测基准。论文摘要中也强调，现有移动智能体在真实任务里的准确率和效率仍然是主要瓶颈，MobiAgent 的设计就是围绕这两个问题展开。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;手机 GUI 智能体比网页或桌面自动化更麻烦。它需要理解截图、识别控件、决定下一步操作，还要通过 ADB 或移动端运行环境执行点击、输入、返回、切换应用等动作。真实任务往往不是单 App 内的一次操作，而是跨越搜索、购物、社交、支付、地图等多个应用的连续流程。&lt;/p&gt;
&lt;p&gt;MobiAgent 的价值在于把这些环节系统化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 MobiMind 承担任务规划、决策和界面定位等能力。&lt;/li&gt;
&lt;li&gt;用 runner 连接手机，通过 ADB 执行预定义任务并记录轨迹。&lt;/li&gt;
&lt;li&gt;用 AgentRR 复用成功动作序列，减少重复任务的推理与操作成本。&lt;/li&gt;
&lt;li&gt;用 MobiFlow 评测真实移动场景中的任务完成情况。&lt;/li&gt;
&lt;li&gt;通过数据采集、标注和处理工具，降低移动 GUI 任务数据构建成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让它更像一个移动智能体实验平台，而不是只能跑演示的模型项目。&lt;/p&gt;
&lt;h2 id=&#34;最近更新值得关注&#34;&gt;最近更新值得关注
&lt;/h2&gt;&lt;p&gt;项目 README 显示，MobiAgent 在 2025 年 8 月开源，之后持续补齐模型、Runner、记忆系统和端侧运行能力。2025 年 12 月开始，项目支持在手机上进行纯端侧推理，并发布了统一 GUI agent runner，可配置 MobiAgent、UI-TARS、AutoGLM、Qwen-VL、Gemini 等多种模型。&lt;/p&gt;
&lt;p&gt;到 2026 年 3 月，项目又发布了 GUI-based mobile &amp;ldquo;claw&amp;rdquo; MobiClaw，以及新的 MobiMind-1.5-4B 模型。这说明它的方向不只是论文复现，而是在继续把移动端执行、模型能力和操作工具链往产品化方向推进。&lt;/p&gt;
&lt;h2 id=&#34;记忆系统是关键补丁&#34;&gt;记忆系统是关键补丁
&lt;/h2&gt;&lt;p&gt;MobiAgent 支持用户画像记忆、经验记忆和动作记忆。用户画像记忆用于给规划提供偏好上下文；经验记忆用于检索类似任务的执行经验；动作记忆则通过 AgentRR 缓存和复用成功动作序列。&lt;/p&gt;
&lt;p&gt;这很重要，因为手机任务天然带有重复性。比如用户常用某个 App 搜索商品、打开固定联系人、在特定页面填写信息。如果每次都从零开始看图、规划和点击，成本高且容易出错。记忆模块可以把一部分“已经学会的流程”沉淀下来，让后续任务更快、更稳定。&lt;/p&gt;
&lt;p&gt;不过，记忆也会带来新的治理问题。用户偏好、历史任务、应用路径和操作轨迹都可能包含敏感信息。真正落地时，项目需要明确哪些内容进入记忆、保存多久、如何删除，以及是否允许模型在不同任务之间复用这些上下文。&lt;/p&gt;
&lt;h2 id=&#34;适合谁关注&#34;&gt;适合谁关注
&lt;/h2&gt;&lt;p&gt;如果你只想找一个现成的手机自动化 App，MobiAgent 目前仍更偏研究和工程框架。它需要配置模型服务、移动设备、ADB、依赖环境和任务文件，完整跑起来有一定门槛。&lt;/p&gt;
&lt;p&gt;但如果你关注移动 GUI agent、端侧智能体、多模型 runner、任务轨迹复用或智能体评测，MobiAgent 很值得跟踪。它把模型、执行、评测和数据流水线放在一起，能帮助研究者和开发者更完整地观察移动智能体的真实短板。&lt;/p&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;MobiAgent 的意义不在于又发布了一个 GUI agent，而在于它把手机智能体从“看截图点按钮”的单点能力，推进到一个可训练、可执行、可评测、可加速的系统框架。&lt;/p&gt;
&lt;p&gt;移动端是智能体很难绕开的场景。大量个人任务发生在 App 里，而不是标准化网页或 API 中。谁能稳定理解手机界面、跨应用执行任务、复用经验并控制隐私风险，谁就更接近真正可用的个人智能体。&lt;/p&gt;
&lt;p&gt;MobiAgent 还没有把这些问题全部解决，但它提供了一个比较完整的开源起点。短期看，它适合用于移动智能体研究和实验；长期看，这类框架可能会成为手机操作系统、个人助理和自动化工具之间的重要连接层。&lt;/p&gt;
&lt;p&gt;项目链接：&lt;a class=&#34;link&#34; href=&#34;https://github.com/IPADS-SAI/MobiAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IPADS-SAI/MobiAgent&lt;/a&gt;&lt;br&gt;
论文链接：&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2509.00531&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MobiAgent: A Systematic Framework for Customizable Mobile Agents&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>RTK：给 AI 编程代理省 token 的命令行代理工具</title>
        <link>https://knightli.com/2026/05/27/rtk-ai-cli-proxy-token-savings/</link>
        <pubDate>Wed, 27 May 2026 13:52:01 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/27/rtk-ai-cli-proxy-token-savings/</guid>
        <description>&lt;p&gt;&lt;code&gt;rtk-ai/rtk&lt;/code&gt; 是一个面向 AI 编程代理的命令行代理工具。它的思路很直接：很多 agent 在开发过程中会频繁调用 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;git status&lt;/code&gt;、&lt;code&gt;git diff&lt;/code&gt;、测试命令和构建命令，而这些命令的原始输出经常又长又重复。RTK 会在命令输出进入 LLM 上下文之前先做过滤和压缩，让模型看到更短、更有用的结果。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/rtk-ai/rtk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rtk-ai/rtk&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;它解决的是什么问题&#34;&gt;它解决的是什么问题
&lt;/h2&gt;&lt;p&gt;AI 编程工具真正贵的不只是模型调用次数，还有上下文里被塞进去的无效信息。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ls -la&lt;/code&gt; 可能输出大量权限、时间和无关文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git diff&lt;/code&gt; 可能夹杂很多重复上下文。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytest&lt;/code&gt;、&lt;code&gt;cargo test&lt;/code&gt;、&lt;code&gt;npm test&lt;/code&gt; 失败时，最重要的是失败用例和错误栈，而不是所有通过项。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker ps&lt;/code&gt;、&lt;code&gt;kubectl pods&lt;/code&gt;、&lt;code&gt;aws&lt;/code&gt; 命令往往字段很多，但 agent 只需要少数关键信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些输出如果原样进入模型上下文，会快速消耗 token。RTK 的目标不是替代这些命令，而是在它们和 AI 编程代理之间加一层“压缩代理”。&lt;/p&gt;
&lt;h2 id=&#34;rtk-的基本工作方式&#34;&gt;RTK 的基本工作方式
&lt;/h2&gt;&lt;p&gt;RTK README 里给出的定位是：它会在命令输出到达 LLM context 之前，对结果做过滤和压缩。它是一个 Rust 单文件二进制程序，支持大量常见开发命令，并强调低额外开销。&lt;/p&gt;
&lt;p&gt;它主要做四类处理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Smart Filtering&lt;/strong&gt;：去掉注释、空白、样板内容和低价值噪音。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grouping&lt;/strong&gt;：把相似项目聚合起来，例如按目录、错误类型或状态分组。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Truncation&lt;/strong&gt;：保留关键上下文，截断重复或不重要的部分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deduplication&lt;/strong&gt;：把重复日志折叠成更短的计数表达。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从 agent 的角度看，命令仍然是熟悉的开发命令；变化在于返回给模型的结果更短。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些命令&#34;&gt;支持哪些命令
&lt;/h2&gt;&lt;p&gt;RTK 覆盖的命令范围比较偏“日常开发现场”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件查看：&lt;code&gt;rtk ls&lt;/code&gt;、&lt;code&gt;rtk read&lt;/code&gt;、&lt;code&gt;rtk find&lt;/code&gt;、&lt;code&gt;rtk grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Git：&lt;code&gt;rtk git status&lt;/code&gt;、&lt;code&gt;rtk git log&lt;/code&gt;、&lt;code&gt;rtk git diff&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;GitHub CLI：&lt;code&gt;rtk gh pr list&lt;/code&gt;、&lt;code&gt;rtk gh pr view&lt;/code&gt;、&lt;code&gt;rtk gh issue list&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;测试命令：&lt;code&gt;rtk pytest&lt;/code&gt;、&lt;code&gt;rtk go test&lt;/code&gt;、&lt;code&gt;rtk cargo test&lt;/code&gt;、&lt;code&gt;rtk vitest&lt;/code&gt;、&lt;code&gt;rtk playwright test&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;构建和 lint：&lt;code&gt;rtk lint&lt;/code&gt;、&lt;code&gt;rtk tsc&lt;/code&gt;、&lt;code&gt;rtk next build&lt;/code&gt;、&lt;code&gt;rtk cargo clippy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;容器和云命令：&lt;code&gt;rtk docker ps&lt;/code&gt;、&lt;code&gt;rtk docker logs&lt;/code&gt;、&lt;code&gt;rtk kubectl pods&lt;/code&gt;、&lt;code&gt;rtk aws sts get-caller-identity&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;数据和日志：&lt;code&gt;rtk json&lt;/code&gt;、&lt;code&gt;rtk deps&lt;/code&gt;、&lt;code&gt;rtk env&lt;/code&gt;、&lt;code&gt;rtk log&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类工具最适合 agent 高频读命令输出的场景。它不负责替你写代码，而是让 agent 少读废话。&lt;/p&gt;
&lt;h2 id=&#34;安装和接入方式&#34;&gt;安装和接入方式
&lt;/h2&gt;&lt;p&gt;README 给了几种安装方式。&lt;/p&gt;
&lt;p&gt;Homebrew：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 install rtk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux/macOS 快速安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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/rtk-ai/rtk/refs/heads/master/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;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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 --git https://github.com/rtk-ai/rtk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装后可以先检查版本和统计信息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk gain
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接入 AI 编程工具时，可以用初始化命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&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;rtk init -g
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init -g --gemini
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init -g --codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init -g --agent cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init --agent windsurf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rtk init --agent cline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初始化后需要重启对应的 AI 工具。对于支持 hook 的 agent，Bash 命令会在执行前被重写，例如把 &lt;code&gt;git status&lt;/code&gt; 变成 &lt;code&gt;rtk git status&lt;/code&gt;，让 agent 收到压缩后的输出。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;RTK 的收益取决于 agent 是否真的通过 shell 命令读取信息。&lt;/p&gt;
&lt;p&gt;README 里特别提醒：像 Claude Code 的内置 &lt;code&gt;Read&lt;/code&gt;、&lt;code&gt;Grep&lt;/code&gt;、&lt;code&gt;Glob&lt;/code&gt; 这类工具不经过 Bash hook，因此不会自动被 RTK 改写。要让 RTK 介入，需要使用 shell 命令，例如 &lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;head&lt;/code&gt;、&lt;code&gt;tail&lt;/code&gt;、&lt;code&gt;rg&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;find&lt;/code&gt;，或者直接调用 &lt;code&gt;rtk read&lt;/code&gt;、&lt;code&gt;rtk grep&lt;/code&gt;、&lt;code&gt;rtk find&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这点很关键。RTK 不是全局透明地压缩所有 agent I/O，它更像是 shell 命令层面的代理。&lt;/p&gt;
&lt;p&gt;Windows 用户也要注意，README 建议不要直接双击 &lt;code&gt;rtk.exe&lt;/code&gt;，而是把它放到 PATH 里，通过 Command Prompt、PowerShell 或 Windows Terminal 使用。它也提到，如果想获得完整 hook 体验，WSL 会更自然。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用
&lt;/h2&gt;&lt;p&gt;RTK 适合三类人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;重度 AI 编程用户&lt;/strong&gt;：每天让 agent 跑很多 &lt;code&gt;git&lt;/code&gt;、&lt;code&gt;rg&lt;/code&gt;、测试和构建命令。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大仓库用户&lt;/strong&gt;：命令输出动辄几百行，agent 经常被无关上下文淹没。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关心 token 成本和上下文窗口的人&lt;/strong&gt;：希望模型把注意力放在失败、变更和关键文件上。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你的项目很小，或者 agent 主要通过 IDE 内置工具读取文件，RTK 的体感收益可能没那么明显。它真正发力的地方，是命令行输出又长又频繁的开发流。&lt;/p&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;RTK 的方向很实用。现在很多 AI 编程工作流都在强调更强的模型、更大的上下文、更长的任务，但开发现场还有一个朴素问题：agent 经常读了太多没必要读的东西。&lt;/p&gt;
&lt;p&gt;把命令输出先压缩，再交给模型，能减少 token 消耗，也能降低模型被噪音带偏的概率。&lt;/p&gt;
&lt;p&gt;不过它不是魔法开关。要用好 RTK，需要把 agent 的工作方式往 shell 命令靠一靠，并确认当前工具的 hook 是否真的生效。对 Codex、Claude Code、Gemini CLI、Cursor、Windsurf 这类场景来说，它更像一个值得测试的“上下文节流器”：不改变开发命令本身，但让 agent 读到更干净的结果。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 官方文章解读：如何把 Codex 用到极致</title>
        <link>https://knightli.com/2026/05/27/getting-the-most-out-of-codex/</link>
        <pubDate>Wed, 27 May 2026 08:21:18 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/27/getting-the-most-out-of-codex/</guid>
        <description>&lt;p&gt;多数开发者第一次使用 Codex，通常是从代码任务开始：阅读仓库、修改 diff、运行测试、打开 pull request。&lt;/p&gt;
&lt;p&gt;这仍然是 Codex 的核心场景。但电脑上的很多工作本来就被代码和工具包围：执行 shell 命令、浏览网页、调用 API、导出文档、响应消息、触发自动化。随着这些能力逐渐接入 Codex，它就不再只是狭义的代码助手，而更像一个帮你完成电脑工作的系统。&lt;/p&gt;
&lt;p&gt;Codex app 让这种变化变得更具体。一个 thread 可以保留上下文、调用工具、展示产物，并在多轮提示之间持续推进，而不是每次对话都重新开始。&lt;/p&gt;
&lt;p&gt;想更充分地使用 Codex，关键是把这些能力组合起来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持久线程，用来保存长期上下文&lt;/li&gt;
&lt;li&gt;语音输入、steering 和 queuing，让用户仍然掌控过程&lt;/li&gt;
&lt;li&gt;browser、computer use、MCP servers 和 connectors，让 Codex 走出仓库&lt;/li&gt;
&lt;li&gt;thread automations 和 Goals，让任务在用户离开后继续推进&lt;/li&gt;
&lt;li&gt;侧边栏，用来审阅代码、文档、幻灯片、网页和其他产物&lt;/li&gt;
&lt;li&gt;共享记忆，把重要上下文写到线程之外&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;持久线程&#34;&gt;持久线程
&lt;/h2&gt;&lt;p&gt;Durable threads 指的是能在多次会话之间保留工作上下文的长线程。&lt;/p&gt;
&lt;p&gt;Pinned threads 是一种很实用的入口。它适合放那些会反复回来的工作流，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chief of Staff 线程&lt;/li&gt;
&lt;li&gt;发布线程&lt;/li&gt;
&lt;li&gt;文档审阅线程&lt;/li&gt;
&lt;li&gt;外部监控线程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是临时聊天，而是持续存在的工作空间。Codex 可以在后续继续回到同一个线程，沿用之前的决策、偏好和背景信息，避免每次都从零重建上下文。&lt;/p&gt;
&lt;p&gt;快捷键也让它更顺手。&lt;code&gt;Command-1&lt;/code&gt; 到 &lt;code&gt;Command-9&lt;/code&gt; 可以直接跳转到已保存的线程。&lt;/p&gt;
&lt;h2 id=&#34;语音输入&#34;&gt;语音输入
&lt;/h2&gt;&lt;p&gt;语音输入的价值在于，它能捕捉还没有被整理成正式文字的想法。&lt;/p&gt;
&lt;p&gt;Codex 内置语音输入。它特别适合那些说起来很自然、打字时却很别扭的模糊起点：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;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;我记得 Slack 里好像有个叫 Ben 的人提过这个。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;具体细节我不记得了。
&lt;/span&gt;&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;对于一个能搜索、整理上下文并汇报结果的 agent 来说，这通常已经足够开始。&lt;/p&gt;
&lt;p&gt;语音也适合两三分钟的想法倾倒。会议转录、口述规划笔记、未整理的原始记录，往往比一句摘要更有用，因为它们保留了不确定性、重点和没说完的思路。&lt;/p&gt;
&lt;h2 id=&#34;steering-和-queuing&#34;&gt;Steering 和 queuing
&lt;/h2&gt;&lt;p&gt;语音和显式控制结合起来时，会更有用。&lt;/p&gt;
&lt;p&gt;Steering 指的是在 Codex 任务执行过程中插入新的方向，让它在当前步骤结束前改道。&lt;/p&gt;
&lt;p&gt;例如在审阅网页时，用户可以一边在侧边栏标注，一边打断当前任务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这里再小一点。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这两个元素之间的间距不对。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这句文案写错了。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Queuing 则不同。它不打断当前任务，而是把下一步工作排到队列里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这项工作完成后，把预览链接发给 Slack 里的 reviewer。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Steering 改变 Codex 现在正在做什么。Queuing 改变它接下来应该做什么。两者都让用户在任务展开时仍然靠近现场。&lt;/p&gt;
&lt;h2 id=&#34;工具和可触达范围&#34;&gt;工具和可触达范围
&lt;/h2&gt;&lt;p&gt;线程有了连续性之后，下一个问题就是：它能操作什么？&lt;/p&gt;
&lt;p&gt;Codex 可以一层层向外扩展：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$browser&lt;/code&gt;：适合侧边栏里的网页检查、标注和 review&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@chrome&lt;/code&gt;：适合依赖用户 Chrome 登录状态的浏览器工作流&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@computer&lt;/code&gt;：适合只能通过桌面 GUI 完成的任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MCP servers 和 connectors 把同样的思路扩展到更多工作流中。Slack、Gmail、Calendar 很重要，因为很多任务最初不是以代码形式出现，而是以消息、邮件和日程问题出现。&lt;/p&gt;
&lt;p&gt;Skills 则适合固化重复工作。当某个流程已经被证明有用，就可以把它打包成 skill，让 Codex 下次不必重新学习这套步骤。&lt;/p&gt;
&lt;h2 id=&#34;从任何地方继续工作&#34;&gt;从任何地方继续工作
&lt;/h2&gt;&lt;p&gt;Codex mobile app 改变了用户必须坐在电脑前的时间。&lt;/p&gt;
&lt;p&gt;一个任务可以在 Mac 上开始，因为文件、权限和本地环境都在那里；随后用户离开桌面，只用手机继续确认、补充或改方向。&lt;/p&gt;
&lt;p&gt;这在很多小场景里很有价值：Codex 跑长任务时，用户可以离开座位；如果它需要确认，可以在外面回复；如果方向错了，也能及时 redirect。真正留在原地的是本地环境，而不是用户本人。&lt;/p&gt;
&lt;h2 id=&#34;自动化&#34;&gt;自动化
&lt;/h2&gt;&lt;p&gt;Automations 可以按计划运行 Codex 工作。&lt;/p&gt;
&lt;p&gt;如果一个周期任务应该从某个 workspace 重新开始，例如日报或常规仓库检查，可以用 scheduled automation。如果调度应该回到一个已有对话，并沿用它的上下文，就更适合 thread automation。&lt;/p&gt;
&lt;p&gt;Thread automations 更像心跳式唤醒：按固定节奏回到同一个 Codex thread。&lt;/p&gt;
&lt;p&gt;Pinned threads 需要用户主动回来，而 thread automation 可以每几分钟或每几小时检查一次，持续运行到满足条件为止，并随时间调整节奏。&lt;/p&gt;
&lt;p&gt;例如，一个 Chief of Staff 线程可以每 30 分钟运行一次：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;每 30 分钟检查 Slack 和 Gmail，找出需要我注意但还没有回复的消息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我判断哪些最重要。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;如果有人问我问题，尽可能深入研究答案，并替我起草回复，但不要发送。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用户回来时，最耗时的上下文收集往往已经完成。真正要不要发送，仍然由人决定。&lt;/p&gt;
&lt;p&gt;Thread automations 也适合反馈循环。它可以定期查看 pull request 评论、Google Docs 评论或 Slack 回复，在用户离开时继续推进周边工作。&lt;/p&gt;
&lt;p&gt;比如一个动画工作流：reviewer 在 Slack 里发来视频反馈，thread automation 定时检查线程；如果有新评论，就重新渲染版本，并在同一个 Slack thread 里回复 reviewer。如果某个集成无法完成最终上传，桌面自动化还可以通过 GUI 补上最后一步。&lt;/p&gt;
&lt;p&gt;这个循环会跨过 Slack、代码库和桌面应用，但对用户来说仍然留在同一个工作流里。&lt;/p&gt;
&lt;h2 id=&#34;goals&#34;&gt;Goals
&lt;/h2&gt;&lt;p&gt;Goals 最适合那些有明确终点、并且 agent 可以持续推进的任务。&lt;/p&gt;
&lt;p&gt;一个较弱的 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;实现这个 Markdown 文件里的计划。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更强的 goal 会有可衡量的完成标准。&lt;/p&gt;
&lt;p&gt;例如，把一个内部工具从 Python 迁移到 Rust 时，可以先建好新目录，再把目标说清楚：新实现只有在单元测试通过后才算完成。&lt;/p&gt;
&lt;p&gt;Goal 本质上是持续执行加验证器。用户需要定义结果、停止条件，以及判断 Codex 是否更接近目标的信号。&lt;/p&gt;
&lt;p&gt;常见的验证器包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;测试套件&lt;/li&gt;
&lt;li&gt;benchmark&lt;/li&gt;
&lt;li&gt;bug reproduction&lt;/li&gt;
&lt;li&gt;validation matrix&lt;/li&gt;
&lt;li&gt;必须持续通过的端到端工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;任务可以有野心，但没有验证条件时，它更像愿望，而不是 goal。&lt;/p&gt;
&lt;h2 id=&#34;侧边栏&#34;&gt;侧边栏
&lt;/h2&gt;&lt;p&gt;侧边栏把工作产物放在生成它的对话旁边。用户不必导出文件、切换上下文，再回头描述问题。产物可能是代码，也可能是 deck、PDF、网页、表格，或者工作过程中生成的其他 artifact。&lt;/p&gt;
&lt;p&gt;它特别适合四类工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查 artifact&lt;/li&gt;
&lt;li&gt;标注需要修改的地方&lt;/li&gt;
&lt;li&gt;操作网页界面&lt;/li&gt;
&lt;li&gt;审阅变更&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Markdown、表格、数据表、文档和幻灯片都可以直接在侧边栏里看。用户可以检查、标注、修改，而不用把这个过程变成另一轮交接。&lt;/p&gt;
&lt;p&gt;如果是 deck 或 PDF，它可以一直停在产生它的 thread 旁边，随时接受 review 和修复。&lt;/p&gt;
&lt;p&gt;浏览器也是类似的工作面。Codex 可以打开渲染后的页面，检查它，响应用户在页面上的标注，并继续修复同一个对象。网页既是输出结果，也是控制表面。&lt;/p&gt;
&lt;p&gt;这些表面尤其适合放在侧边栏里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.html&lt;/code&gt; 这种轻量静态 artifact&lt;/li&gt;
&lt;li&gt;Storybook&lt;/li&gt;
&lt;li&gt;Remotion Studio&lt;/li&gt;
&lt;li&gt;浏览器幻灯片&lt;/li&gt;
&lt;li&gt;数据分析应用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个单独的 &lt;code&gt;index.html&lt;/code&gt; 文件就可以成为长期存在的交互 artifact，不一定需要服务器。Thread automations 也可以定期刷新静态 artifact，让用户回来时看到新的结果。&lt;/p&gt;
&lt;h2 id=&#34;共享记忆&#34;&gt;共享记忆
&lt;/h2&gt;&lt;p&gt;长线程很有用，但重要上下文不应该只存在于对话记录里。&lt;/p&gt;
&lt;p&gt;Shared memory 指的是把持久上下文存放在线程之外，让未来的工作可以从明确、可审阅的地方继续。&lt;/p&gt;
&lt;p&gt;一种稳定做法是把持久线程锚定在 Obsidian vault 里。实际形态可以很简单：一组普通文件，方便检查、编辑、移动和长期保存。团队可以把它放在 cloud storage、Git、Dropbox、Google Drive 或其他同步层里。&lt;/p&gt;
&lt;p&gt;一个 vault 可能长这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&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;vault/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── TODO.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── people/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── projects/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── agent/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── notes/
&lt;/span&gt;&lt;/span&gt;&lt;/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;AGENTS.md&lt;/code&gt; 可以说明 Codex 应该如何维护这个工作空间：什么信息要写下来，写到哪里，什么时候不要制造噪音。&lt;/p&gt;
&lt;p&gt;一个实用的 &lt;code&gt;AGENTS.md&lt;/code&gt; 可以这样写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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 class=&#34;k&#34;&gt;-&lt;/span&gt; Treat ~/vault as durable work memory.
&lt;/span&gt;&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; Prefer canonical notes over note sprawl.
&lt;/span&gt;&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; Route TODOs, people, projects, daily summaries, and scratch notes explicitly.
&lt;/span&gt;&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 decisions, blockers, owners, dates, and useful links.
&lt;/span&gt;&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; If nothing meaningful changed, do not churn the vault.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要照抄某个 vault 结构。更重要的是教会 agent：长期上下文应该放在哪里，哪些信息值得保留，什么时候不应该反复改动文件。&lt;/p&gt;
&lt;p&gt;仓库存放代码。Vault 存放滚动上下文：相关人员、发生了什么、哪里卡住、谁负责、下一步是什么，以及那些如果不写下来就会在会话之间消失的细节。&lt;/p&gt;
&lt;p&gt;Codex 也有第一方记忆能力，可以在 &lt;code&gt;Settings &amp;gt; Personalization &amp;gt; Memories&lt;/code&gt; 中配置。它适合记录偏好、重复工作流和常见坑点，但它更适合作为显式 written context 的补充，而不是替代品。Chronicle 也在同一个方向上推进：从最近的屏幕上下文中帮助 Codex 建立记忆。&lt;/p&gt;
&lt;h2 id=&#34;从代码向外扩展&#34;&gt;从代码向外扩展
&lt;/h2&gt;&lt;p&gt;Codex 仍然从代码开始。但代码周围的更多工作，现在也能被同一个系统触达：MCP servers、浏览器界面、桌面控制、thread automations 和可审阅 artifact。&lt;/p&gt;
&lt;p&gt;这改变了使用 Codex 的控制方式。Steering 用来打断正在进行的工作。Queuing 用来排下一步。Thread automations 让线程在用户离开后继续活动。Goals 给长期任务加上明确终点和验证信号。&lt;/p&gt;
&lt;p&gt;当这些能力连起来时，Codex 就能把一个工作流从指令推进到执行，再推进到 artifact review。即使任务已经离开代码仓库，它仍然可以留在同一个系统里完成。&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a class=&#34;link&#34; href=&#34;https://x.com/jxnlco/status/2057153744630890620&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Getting the most out of Codex&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Goal 设置目标失败：Failed to set goal 怎么处理</title>
        <link>https://knightli.com/2026/05/27/codex-goal-failed-to-set-goal-config-toml/</link>
        <pubDate>Wed, 27 May 2026 08:17:57 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/27/codex-goal-failed-to-set-goal-config-toml/</guid>
        <description>&lt;p&gt;最近有用户反馈，使用 Codex Goal 时会立即出现 &lt;code&gt;Failed to set goal&lt;/code&gt; 或“设置目标失败”的错误。这个错误和 prompt 长短无关，在 Codex 应用和 VS Code 扩展里都可能出现。&lt;/p&gt;
&lt;p&gt;从讨论里的反馈看，这个问题更像是本地功能开关或配置状态异常，而不是目标内容本身写错了。&lt;/p&gt;
&lt;h2 id=&#34;先检查-goals-功能开关&#34;&gt;先检查 goals 功能开关
&lt;/h2&gt;&lt;p&gt;最直接的处理方法，是检查 Codex 的配置文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-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;err&#34;&gt;~/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;codex&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/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;[features]&lt;/code&gt; 段，并开启 &lt;code&gt;goals&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;features&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;goals&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果已经有 &lt;code&gt;[features]&lt;/code&gt;，只需要在该段下面补上 &lt;code&gt;goals = true&lt;/code&gt;。如果没有这个段，就新建一个。&lt;/p&gt;
&lt;p&gt;改完以后，重启 Codex 应用或 VS Code 扩展，再重新尝试设置 Goal。&lt;/p&gt;
&lt;h2 id=&#34;如果还有问题检查配置目录&#34;&gt;如果还有问题，检查配置目录
&lt;/h2&gt;&lt;p&gt;讨论里也有人提到，&lt;code&gt;.codex&lt;/code&gt; 目录里的缓存或临时文件异常时，也可能触发类似问题。&lt;/p&gt;
&lt;p&gt;比较稳妥的处理顺序是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先备份 &lt;code&gt;~/.codex/config.toml&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;关闭 Codex 相关应用。&lt;/li&gt;
&lt;li&gt;临时移走或重命名 &lt;code&gt;~/.codex&lt;/code&gt; 目录。&lt;/li&gt;
&lt;li&gt;重新打开 Codex，让它重建配置目录。&lt;/li&gt;
&lt;li&gt;再把原来的 &lt;code&gt;config.toml&lt;/code&gt; 里需要的配置合并回来。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要直接删除配置目录，尤其是里面可能有你手动维护的配置、技能、会话或其它本地状态。&lt;/p&gt;
&lt;h2 id=&#34;windows-上还要留意安全软件&#34;&gt;Windows 上还要留意安全软件
&lt;/h2&gt;&lt;p&gt;也有反馈提到，Windows Defender 可能会把 &lt;code&gt;config.toml&lt;/code&gt; 当成可疑文件。这不一定是所有人的原因，但如果你在 Windows 上遇到同样问题，可以顺手检查一下安全软件的隔离记录。&lt;/p&gt;
&lt;p&gt;如果配置文件被隔离、改名或阻止访问，Codex 读取不到功能开关，也可能表现为 Goal 无法启用。&lt;/p&gt;
&lt;h2 id=&#34;判断是不是-prompt-的问题&#34;&gt;判断是不是 prompt 的问题
&lt;/h2&gt;&lt;p&gt;一个简单判断方法是：用极短目标测试。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;修复一个测试失败
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果极短目标也立即报 &lt;code&gt;Failed to set goal&lt;/code&gt;，基本就不是 prompt 写法问题，而是本地配置、功能开关、扩展状态或缓存目录问题。&lt;/p&gt;
&lt;p&gt;如果只有很长、很复杂的目标会失败，再考虑是否是目标内容太复杂、包含特殊链接、字段格式不被 UI 接受。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Codex Goal 的 &lt;code&gt;Failed to set goal&lt;/code&gt; 可以按这个顺序排查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;检查 &lt;code&gt;~/.codex/config.toml&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;[features]&lt;/code&gt; 下加入 &lt;code&gt;goals = true&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;重启 Codex 应用或 VS Code 扩展。&lt;/li&gt;
&lt;li&gt;仍失败时，备份配置后重建 &lt;code&gt;~/.codex&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Windows 用户额外检查 Defender 或安全软件是否误拦截配置文件。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个问题的重点不是“目标怎么写”，而是先确认 Goal 功能本身是否在本地配置里正常启用。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Goal 深度解析：让 AI Agent 连续工作数小时的目标驱动工作流</title>
        <link>https://knightli.com/2026/05/26/codex-goal-persistent-goals-ai-agent-long-running-workflow/</link>
        <pubDate>Tue, 26 May 2026 23:44:37 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/26/codex-goal-persistent-goals-ai-agent-long-running-workflow/</guid>
        <description>&lt;p&gt;浏览器、终端和 IDE 里的 AI Agent 已经越来越会写代码了，但很多人真正遇到的问题不是“它不会做”，而是“它做了一半就说完成了”。&lt;/p&gt;
&lt;p&gt;简单 ticket 很适合交给编程 Agent：修一个按钮、补一个接口、改一段文案、加一个测试。目标清楚，边界很小，验证方式也直接。但一旦任务变成大型迁移、跨模块重构、测试套件修复、依赖升级、prompt 评测优化，Agent 就很容易出现一种典型问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;它完成了一个看起来合理的中间状态，然后过早停下。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Codex Goal / Persistent Goals 这类能力要解决的，正是这个“提前收工”问题。它的重点不是让 Agent 多跑几轮，而是让 Agent 围绕明确目标持续推进，直到满足可验证的完成标准。&lt;/p&gt;
&lt;h2 id=&#34;codex-goal-解决的不是循环而是停止条件&#34;&gt;Codex Goal 解决的不是循环，而是停止条件
&lt;/h2&gt;&lt;p&gt;很多长任务自动化会从一个粗糙方案开始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;继续检查代码，修复问题，直到没有错误。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者更机械一点：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;循环 10 次：
&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这类粗糙循环看起来能让 Agent 工作更久，但它有两个硬伤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它不知道什么时候真的该停。&lt;/li&gt;
&lt;li&gt;它也不知道“没有继续报错”是否等于“任务完成”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Codex Goal 的关键不是循环次数，而是 goal、state、judge stop condition 三件事。也就是说，Agent 需要知道这次工作的目标是什么，当前已经完成到哪里，以及哪些证据能证明任务真的结束了。&lt;/p&gt;
&lt;p&gt;这也是长任务 Agent 的核心分水岭：不是“多执行几步”，而是“能不能判断自己还差什么”。&lt;/p&gt;
&lt;h2 id=&#34;goal-和普通-prompt-的区别&#34;&gt;Goal 和普通 prompt 的区别
&lt;/h2&gt;&lt;p&gt;普通 prompt 更像一次性指令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;把这个项目的测试修好。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Goal prompt 则更像一份小型任务合约：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&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;目标：修复当前仓库中失败的测试。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;范围：只修改 src/ 和 tests/，不要改构建脚本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;完成标准：npm test 全部通过，且新增修改不引入 lint 错误。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;验证命令：npm test &amp;amp;&amp;amp; npm run lint。
&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;两者最大的差别在于，Goal prompt 把“完成”定义清楚了。&lt;/p&gt;
&lt;p&gt;如果没有清晰的完成定义，Agent 很容易把“我改了代码”误判成“我完成了任务”。如果有明确的完成标准，Agent 就必须围绕测试、日志、diff、构建结果、eval 分数这些外部证据继续推进。&lt;/p&gt;
&lt;h2 id=&#34;为什么-llm-judge-stop-condition-很关键&#34;&gt;为什么 LLM judge stop condition 很关键
&lt;/h2&gt;&lt;p&gt;长任务里最难的不是让 Agent 执行命令，而是让它判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;现在是否真的完成了？&lt;/li&gt;
&lt;li&gt;是否只是通过了局部测试？&lt;/li&gt;
&lt;li&gt;是否修了一个问题，却引入了另一个问题？&lt;/li&gt;
&lt;li&gt;是否需要继续搜索、继续运行验证、继续回滚某个方向？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是 LLM judge stop condition 的价值。&lt;/p&gt;
&lt;p&gt;理想状态下，Agent 不应该只看“最后一个命令是否退出码为 0”。它还应该综合判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户给出的完成标准是否全部满足；&lt;/li&gt;
&lt;li&gt;修改是否限定在允许范围内；&lt;/li&gt;
&lt;li&gt;测试、lint、build、eval 是否都跑过；&lt;/li&gt;
&lt;li&gt;失败日志是否还有未处理项；&lt;/li&gt;
&lt;li&gt;是否存在明显的副作用和风险；&lt;/li&gt;
&lt;li&gt;最终输出是否能让人类快速复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，judge 不只是“判定成功”，还要防止 Agent 自我安慰式收尾。&lt;/p&gt;
&lt;h2 id=&#34;哪些任务适合交给-goal&#34;&gt;哪些任务适合交给 Goal
&lt;/h2&gt;&lt;p&gt;Codex Goal / Persistent Goals 更适合那些需要多轮探索和验证的复杂编程任务，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码迁移：从旧框架迁到新框架，从 CommonJS 迁到 ESM，从旧 API 迁到新 API。&lt;/li&gt;
&lt;li&gt;大型重构：拆分模块、整理边界、替换重复实现、降低复杂度。&lt;/li&gt;
&lt;li&gt;测试修复：连续分析失败用例，定位原因，修复后反复验证。&lt;/li&gt;
&lt;li&gt;依赖升级：升级框架、SDK、构建工具，同时处理破坏性变更。&lt;/li&gt;
&lt;li&gt;Prompt 评测优化：运行评测，分析失败样本，调整 prompt 或工具调用策略。&lt;/li&gt;
&lt;li&gt;技术债清理：围绕明确规则逐步替换旧写法，并保持行为不变。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些任务的共同点是：中间状态很多，失败原因不一定一次能看清，完成标准必须依赖验证结果。&lt;/p&gt;
&lt;h2 id=&#34;哪些任务不适合只靠-goal&#34;&gt;哪些任务不适合只靠 Goal
&lt;/h2&gt;&lt;p&gt;Goal 并不是万能的。下面这些任务如果只靠一个长提示词，风险会很高：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目标非常模糊，例如“把产品增长做好”。&lt;/li&gt;
&lt;li&gt;周期很长，例如连续几周的 SEO、GEO、广告投放优化。&lt;/li&gt;
&lt;li&gt;需要跨系统调度，例如同时处理内容、数据、投放、客服和业务指标。&lt;/li&gt;
&lt;li&gt;涉及生产风险，例如数据库变更、线上配置、财务操作、账号权限调整。&lt;/li&gt;
&lt;li&gt;缺少验证手段，例如没有测试、没有指标、没有日志、没有人工验收标准。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务更像 Mission，而不是 Goal。&lt;/p&gt;
&lt;p&gt;Goal 适合小时级到一两天的深度执行。Mission 则需要状态、历史、调度、人类审批、阶段性复盘和长期指标。比如 SEO / GEO / Ads 优化，不能只是让 Agent 循环写内容或调参数，还要持续记录策略、实验、数据变化和下一步计划。&lt;/p&gt;
&lt;h2 id=&#34;写好-goal-prompt-的模板&#34;&gt;写好 Goal Prompt 的模板
&lt;/h2&gt;&lt;p&gt;一个好用的 Goal prompt，至少应该包含下面几块内容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;列出可验证的 definition of done。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;验证命令：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;写清楚需要运行的测试、lint、build、eval 或脚本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;失败策略：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;如果无法完成，要求 Agent 输出失败原因、已尝试方案、剩余阻塞点。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;风险边界：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;禁止破坏性操作，生产配置、密钥、数据库、外部服务需要人工确认。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;交付格式：
&lt;/span&gt;&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;真正决定长任务效果的，往往不是 prompt 写得多漂亮，而是完成标准是否足够明确、足够可验证。&lt;/p&gt;
&lt;h2 id=&#34;goal-buddy-的价值先帮你把任务说清楚&#34;&gt;Goal Buddy 的价值：先帮你把任务说清楚
&lt;/h2&gt;&lt;p&gt;很多长任务失败，不是因为 Agent 能力不够，而是因为人类一开始没有把任务拆清楚。&lt;/p&gt;
&lt;p&gt;Goal Buddy 这类辅助工具的价值在于：在正式把任务交给 Agent 之前，先帮你准备目标、边界、完成标准和验证方式。它像一个任务预检器，会追问：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个任务的最终可见结果是什么？&lt;/li&gt;
&lt;li&gt;哪些目录可以改，哪些不能改？&lt;/li&gt;
&lt;li&gt;成功后跑什么命令证明？&lt;/li&gt;
&lt;li&gt;失败时要不要继续尝试，最多尝试到什么程度？&lt;/li&gt;
&lt;li&gt;是否需要分阶段提交？&lt;/li&gt;
&lt;li&gt;哪些操作必须让人类确认？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步看似啰嗦，但它能显著减少 Agent 中途跑偏、过早停止，或改出一堆难以复核的代码的概率。&lt;/p&gt;
&lt;h2 id=&#34;给-codexclaude-codeopencode-用户的实践建议&#34;&gt;给 Codex、Claude Code、OpenCode 用户的实践建议
&lt;/h2&gt;&lt;p&gt;如果你正在用 Codex、Claude Code、OpenCode、OpenClaw 或类似编程 Agent，可以按下面方式处理长任务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先提交当前工作区，保证有干净回滚点。&lt;/li&gt;
&lt;li&gt;把任务写成 Goal，而不是一句泛泛的需求。&lt;/li&gt;
&lt;li&gt;明确允许修改的范围和禁止修改的范围。&lt;/li&gt;
&lt;li&gt;给出验证命令，最好让 Agent 每一轮都能自己运行。&lt;/li&gt;
&lt;li&gt;要求 Agent 在无法完成时报告阻塞点，而不是硬编一个“完成”。&lt;/li&gt;
&lt;li&gt;对高风险操作设置人工确认，例如删除文件、改数据库、改部署配置。&lt;/li&gt;
&lt;li&gt;最后只接受带有测试结果和修改总结的交付。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;长任务 Agent 的正确使用方式，不是“让它自己随便干一晚上”，而是给它一个清楚的目标、坚实的护栏，以及可验证的出口。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Codex Goal / Persistent Goals 的意义在于，把编程 Agent 从“执行一句指令”推进到“围绕一个目标持续工作”。&lt;/p&gt;
&lt;p&gt;它最适合复杂但边界明确的工程任务：迁移、重构、测试修复、依赖升级、评测优化。它不适合完全模糊、周期很长、缺少验证标准的业务任务；那些更应该设计成 Mission 系统。&lt;/p&gt;
&lt;p&gt;未来 AI Agent 的竞争点，很可能不只是模型会不会写代码，而是能不能围绕目标持续推进、正确判断停止时机，并把过程留给人类复核。&lt;/p&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1a3LF6fE2D/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex Goal 深度解析：让 AI Agent 连续工作数小时，不再提前摆烂&lt;/a&gt;&lt;/li&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&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Ollama 接入 Codex App：本地大模型如何变成 AI 编程 Agent</title>
        <link>https://knightli.com/2026/05/26/ollama-codex-app-local-ai-coding-agent/</link>
        <pubDate>Tue, 26 May 2026 23:35:01 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/26/ollama-codex-app-local-ai-coding-agent/</guid>
        <description>&lt;p&gt;Ollama 最近把本地大模型和 AI 编程工具之间的距离又拉近了一步：通过 &lt;code&gt;ollama launch codex-app&lt;/code&gt;，用户可以把 Codex App 接到 Ollama 管理的本地或云端模型上。&lt;/p&gt;
&lt;p&gt;这件事的意义不只是“换一个模型后端”。它更像是把本地大模型从聊天窗口推到开发工作流里：模型不再只是回答问题，而是可以进入代码项目、理解文件结构、辅助修改代码、运行任务，成为 AI 编程 Agent 的一部分。&lt;/p&gt;
&lt;h2 id=&#34;先澄清这不是-openai-全功能永久免费&#34;&gt;先澄清：这不是 OpenAI 全功能永久免费
&lt;/h2&gt;&lt;p&gt;网上很多说法会把这件事概括成“Codex 免费了”。这个说法容易误解。&lt;/p&gt;
&lt;p&gt;更准确的理解是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex App 是 OpenAI 的 AI 编程工具；&lt;/li&gt;
&lt;li&gt;Ollama Launch 可以帮助 Codex App 使用 Ollama 模型；&lt;/li&gt;
&lt;li&gt;模型可以是本地模型，也可以是 Ollama 的云端模型；&lt;/li&gt;
&lt;li&gt;如果使用本地模型，推理成本主要变成自己的硬件、电费和时间，而不是按 API token 计费；&lt;/li&gt;
&lt;li&gt;Codex App、OpenAI 账号权益、不同模型可用性和官方限制，仍然要以 OpenAI 与 Ollama 的当前规则为准。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它不是“所有 Codex 能力都永久免费”，而是多了一条本地化路线：让 AI 编程 Agent 可以不完全依赖 OpenAI API、Claude API 或 Gemini API。&lt;/p&gt;
&lt;h2 id=&#34;ollama-launch-codex-app-做了什么&#34;&gt;&lt;code&gt;ollama launch codex-app&lt;/code&gt; 做了什么？
&lt;/h2&gt;&lt;p&gt;Ollama 官方文档里，Codex 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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama launch codex-app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果想指定模型，可以写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama launch codex-app --model gpt-oss:120b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以只生成配置，不马上启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama launch codex-app --config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果想恢复原来的 Codex 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 launch codex-app --restore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它的价值在于减少手动配置成本。过去要让一个 AI 编程工具接入本地模型，经常要自己改环境变量、OpenAI-compatible endpoint、&lt;code&gt;config.toml&lt;/code&gt;、模型名和 profile。现在 Ollama Launch 把这些步骤包装成一个更直接的流程。&lt;/p&gt;
&lt;h2 id=&#34;为什么本地模型接入-agent-很重要&#34;&gt;为什么本地模型接入 Agent 很重要？
&lt;/h2&gt;&lt;p&gt;以前本地大模型最常见的用法是聊天：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写一段文案；&lt;/li&gt;
&lt;li&gt;回答一个问题；&lt;/li&gt;
&lt;li&gt;解释一段代码；&lt;/li&gt;
&lt;li&gt;做简单补全；&lt;/li&gt;
&lt;li&gt;总结文档。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些都很有用，但还停留在“问答工具”的层面。&lt;/p&gt;
&lt;p&gt;AI 编程 Agent 的区别在于，它面对的是一个真实项目。它需要读目录、看文件、理解报错、修改代码、运行命令、检查结果，再继续迭代。也就是说，它不是只输出答案，而是参与执行任务。&lt;/p&gt;
&lt;p&gt;当本地模型接入 Codex App、Claude Code、OpenCode、Aider、OpenHands 这类工具时，本地 AI 的角色就变了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以扫描项目结构；&lt;/li&gt;
&lt;li&gt;可以定位 Bug；&lt;/li&gt;
&lt;li&gt;可以改文件；&lt;/li&gt;
&lt;li&gt;可以生成新页面或小游戏；&lt;/li&gt;
&lt;li&gt;可以解释和重构代码；&lt;/li&gt;
&lt;li&gt;可以在开发循环里反复执行、验证、修正。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是本地大模型从“能聊”走向“能干活”的关键一步。&lt;/p&gt;
&lt;h2 id=&#34;本地-agent-的优势&#34;&gt;本地 Agent 的优势
&lt;/h2&gt;&lt;h3 id=&#34;1-成本更可控&#34;&gt;1. 成本更可控
&lt;/h3&gt;&lt;p&gt;大型项目很容易消耗大量 token。一次项目扫描、长上下文分析、多轮修复，放在云端模型上可能很快积累费用。&lt;/p&gt;
&lt;p&gt;本地模型虽然也有成本，比如显卡、内存、电费和时间，但它不会按 token 直接收费。对于大量试错、个人项目、离线实验，本地路线更适合慢慢折腾。&lt;/p&gt;
&lt;h3 id=&#34;2-可以离线工作&#34;&gt;2. 可以离线工作
&lt;/h3&gt;&lt;p&gt;如果模型、工具和依赖都已经在本机准备好，本地 Agent 在很多场景下可以断网继续工作。它可以读本地代码、分析项目、修改文件、生成页面或脚本。&lt;/p&gt;
&lt;p&gt;当然，涉及联网搜索、下载依赖、访问在线 API 的任务仍然需要网络。但基础代码分析和本地项目修改，不一定非要依赖云端模型。&lt;/p&gt;
&lt;h3 id=&#34;3-隐私边界更清楚&#34;&gt;3. 隐私边界更清楚
&lt;/h3&gt;&lt;p&gt;很多代码库、内部文档、实验项目并不适合直接发给云端模型。把模型放在本地，可以减少代码内容离开机器的机会。&lt;/p&gt;
&lt;p&gt;这不代表本地路线天然安全。Agent 仍然可能执行命令、改文件、访问敏感路径，所以权限、沙箱、Git diff review 仍然很重要。但至少在模型推理层面，本地化给了用户更多控制权。&lt;/p&gt;
&lt;h2 id=&#34;模型怎么选&#34;&gt;模型怎么选？
&lt;/h2&gt;&lt;p&gt;Ollama 的官方 &lt;code&gt;ollama launch&lt;/code&gt; 文档建议，代码类工具最好使用较大的上下文窗口，推荐至少 64K tokens。原因很简单：AI 编程任务经常需要同时读项目结构、多个文件、报错日志、需求说明和历史修改。&lt;/p&gt;
&lt;p&gt;本地模型可以从这些方向尝试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qwen3-coder&lt;/code&gt;：偏代码任务；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-oss:20b&lt;/code&gt;：适合本地尝试；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;glm-4.7-flash&lt;/code&gt;：Ollama 官方推荐的 coding 模型之一；&lt;/li&gt;
&lt;li&gt;更大的云端模型：如果本地硬件不够，可以用 Ollama cloud 模型换取更完整上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;中文场景下，Qwen 系列仍然值得优先尝试。它在中文理解、代码生成、推理和本地生态适配上都比较成熟。&lt;/p&gt;
&lt;h2 id=&#34;硬件门槛没有想象中那么高&#34;&gt;硬件门槛没有想象中那么高
&lt;/h2&gt;&lt;p&gt;很多人一提到 AI Agent，就默认需要 RTX 4090、24GB 显存、甚至企业级 GPU。&lt;/p&gt;
&lt;p&gt;实际情况更灵活。小模型、量化模型、MoE 模型、KV cache 量化和 CPU/GPU 混合 offload 让 6GB、8GB、12GB 显存机器也能做不少事情。&lt;/p&gt;
&lt;p&gt;当然，低显存机器不适合追求极致体验：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;速度会慢；&lt;/li&gt;
&lt;li&gt;上下文不能太大；&lt;/li&gt;
&lt;li&gt;大项目扫描会吃力；&lt;/li&gt;
&lt;li&gt;多并发基本不现实；&lt;/li&gt;
&lt;li&gt;模型质量和 100B+ 云端模型仍有差距。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但如果目标是个人项目、脚本修复、简单前端页面、小游戏、代码解释、离线实验，本地模型已经足够进入“可用”阶段。&lt;/p&gt;
&lt;h2 id=&#34;也可以用-llamacpp-接-openai-compatible-接口&#34;&gt;也可以用 llama.cpp 接 OpenAI-compatible 接口
&lt;/h2&gt;&lt;p&gt;除了 Ollama，另一条常见路线是用 &lt;code&gt;llama.cpp&lt;/code&gt; 的 &lt;code&gt;llama-server&lt;/code&gt; 提供本地 OpenAI-compatible API，再让 AI 编程工具连接到本地端口。&lt;/p&gt;
&lt;p&gt;一个典型的 &lt;code&gt;llama.cpp&lt;/code&gt; 启动命令类似这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&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-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server.exe &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\Qwen3.6-27B-UD-Q5_K_XL.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-ngl 999 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-c 16384 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-n 2048 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-fa on &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--jinja &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--host 127.0.0.1 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--port 8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后在工具配置里把模型 provider 指向：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&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-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;model_providers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;llamacpp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&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;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;llama.cpp&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;nx&#34;&gt;base_url&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://127.0.0.1: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;nx&#34;&gt;wire_api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;responses&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;这条路线更灵活，但也更折腾。Ollama Launch 的优势是简单；&lt;code&gt;llama.cpp&lt;/code&gt; 的优势是可控参数更多，适合想细调显存、上下文、量化和推理后端的用户。&lt;/p&gt;
&lt;h2 id=&#34;使用本地-ai-agent-时要注意什么&#34;&gt;使用本地 AI Agent 时要注意什么？
&lt;/h2&gt;&lt;p&gt;本地不等于无风险。Agent 能改文件、跑命令、创建项目，就意味着它也可能误删文件、改错代码、执行不该执行的操作。&lt;/p&gt;
&lt;p&gt;建议：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 Git 仓库里操作，确保随时能看 diff 和回滚。&lt;/li&gt;
&lt;li&gt;不要给 Agent 过大的系统权限。&lt;/li&gt;
&lt;li&gt;先在测试项目里试，不要直接扔生产代码库。&lt;/li&gt;
&lt;li&gt;重要文件修改前后都要人工 review。&lt;/li&gt;
&lt;li&gt;不要把密钥、账号、生产环境配置暴露给 Agent。&lt;/li&gt;
&lt;li&gt;本地模型能力有限，复杂架构决策不要完全交给它。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把本地 Agent 当成“会执行任务的助手”，而不是“完全可靠的工程师”，体验会更健康。&lt;/p&gt;
&lt;h2 id=&#34;我的理解&#34;&gt;我的理解
&lt;/h2&gt;&lt;p&gt;Ollama 接入 Codex App 的意义在于，它把本地模型真正接进了 AI 编程工作流。&lt;/p&gt;
&lt;p&gt;过去，本地模型更多是一个聊天框；现在，它开始能进入项目、读代码、改文件、跑任务。这个变化会让很多普通开发者重新评估手里的电脑：也许不需要最贵的显卡，也能先搭起一个低成本、可离线、可控的 AI 编程环境。&lt;/p&gt;
&lt;p&gt;云端模型仍然强，特别是在复杂推理、大上下文、多模态和长任务稳定性上。但本地模型正在补上“执行工具”这一块。&lt;/p&gt;
&lt;p&gt;未来的 AI 编程，很可能不是纯云端或纯本地，而是混合形态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小任务、本地代码、隐私项目交给本地模型；&lt;/li&gt;
&lt;li&gt;高难推理、大上下文、跨系统任务交给云端模型；&lt;/li&gt;
&lt;li&gt;Ollama、Codex App、Claude Code、OpenCode 这类工具负责把两边接到同一个工作流里。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这才是本地 AI Agent 真正值得关注的地方。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24310.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;零度博客：OpenAI Codex 彻底免费了！Ollama 接管 AI 编程 Agent，本地大模型开始自动干活！&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.ollama.com/integrations/codex-app&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama 文档：Codex App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ollama.com/blog/launch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ollama Blog：ollama launch&lt;/a&gt;&lt;/li&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;OpenAI：Introducing the Codex app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>RTX 3060 也能跑 35B？llama.cpp 的 --n-cpu-moe 让老电脑继续本地大模型</title>
        <link>https://knightli.com/2026/05/26/rtx-3060-llama-cpp-n-cpu-moe-local-35b/</link>
        <pubDate>Tue, 26 May 2026 21:27:21 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/26/rtx-3060-llama-cpp-n-cpu-moe-local-35b/</guid>
        <description>&lt;p&gt;最近看到一篇很有意思的本地大模型实测：同一台大约 3000 元的老电脑，硬件没有变，只是换了新版 &lt;code&gt;llama.cpp&lt;/code&gt; 和一组参数，35B MoE 模型的体验直接上了一个台阶。&lt;/p&gt;
&lt;p&gt;测试机器并不夸张：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;硬件&lt;/th&gt;
          &lt;th&gt;配置&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU&lt;/td&gt;
          &lt;td&gt;AMD Ryzen 7 3700X&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPU&lt;/td&gt;
          &lt;td&gt;RTX 3060 12GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;内存&lt;/td&gt;
          &lt;td&gt;32GB DDR4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;系统&lt;/td&gt;
          &lt;td&gt;Windows 11&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;模型&lt;/td&gt;
          &lt;td&gt;Qwen3.6-35B-A3B GGUF Q4_K_M&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;结论很直接：过去同样硬件只能勉强跑低量化版本，现在用新版 &lt;code&gt;llama.cpp&lt;/code&gt;，在 Q4 量化、64K 上下文下也能进入“可日常使用”的状态。&lt;/p&gt;
&lt;h2 id=&#34;关键不是换显卡而是-moe-调度&#34;&gt;关键不是换显卡，而是 MoE 调度
&lt;/h2&gt;&lt;p&gt;这次优化里最关键的参数是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--n-cpu-moe &lt;span class=&#34;m&#34;&gt;32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Qwen3.6-35B-A3B 属于 MoE（Mixture of Experts，混合专家）模型。它的总参数规模看起来很大，但每次推理并不会激活全部专家，而是只激活其中一部分。&lt;/p&gt;
&lt;p&gt;这就给本地推理留下了空间：并不是所有东西都必须塞进 GPU。&lt;code&gt;llama.cpp&lt;/code&gt; 的 &lt;code&gt;--n-cpu-moe&lt;/code&gt; 参数可以调整 MoE 专家层在 CPU 和 GPU 之间的分配，让显存有限的消费级显卡也能跑更大的模型。&lt;/p&gt;
&lt;p&gt;在 RTX 3060 12GB 上，&lt;code&gt;--n-cpu-moe 32&lt;/code&gt; 是一个值得优先尝试的平衡点：GPU 负责它擅长的 CUDA 计算，CPU 分担部分专家层。相比全部压给 GPU 或过度依赖 CPU，这种混合调度更快。&lt;/p&gt;
&lt;h2 id=&#34;速度变化有多明显&#34;&gt;速度变化有多明显？
&lt;/h2&gt;&lt;p&gt;一组典型对比可以这样理解：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;旧方案&lt;/th&gt;
          &lt;th&gt;新方案&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;生成速度&lt;/td&gt;
          &lt;td&gt;约 15 tok/s&lt;/td&gt;
          &lt;td&gt;约 33-36 tok/s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;量化&lt;/td&gt;
          &lt;td&gt;Q2_K_M&lt;/td&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上下文&lt;/td&gt;
          &lt;td&gt;4K&lt;/td&gt;
          &lt;td&gt;64K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;显存占用&lt;/td&gt;
          &lt;td&gt;约 5GB&lt;/td&gt;
          &lt;td&gt;约 7GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;体验&lt;/td&gt;
          &lt;td&gt;能跑，但质量不稳&lt;/td&gt;
          &lt;td&gt;更流畅，回答质量明显提升&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里最值得注意的不是单纯速度翻倍，而是&lt;strong&gt;量化精度和上下文长度同时提升&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;过去很多 12GB 显存用户为了把 30B+ 模型跑起来，只能选择 Q2 这种压缩很重的量化。模型能启动，但推理质量容易变差。现在能切到 Q4，意味着本地模型从“能体验”更接近“能干活”。&lt;/p&gt;
&lt;h2 id=&#34;一个可参考的-windows-启动命令&#34;&gt;一个可参考的 Windows 启动命令
&lt;/h2&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;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&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;/code&gt;&lt;/pre&gt;&lt;/td&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&gt;&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:\Users\你的用户名\llama-b9297-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;llama-server.exe &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-m &lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\Qwen3.6-35B-A3B-UD-Q4_K_M.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-ngl 99 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--n-cpu-moe 32 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--flash-attn on &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--jinja &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-c 65536 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-t 8 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-b 512 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-ub 128 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--cache-type-k q4_0 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--cache-type-v q4_0 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;-np 1 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--cache-ram 0 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--host 127.0.0.1 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt;--port 8080
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pause&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;几个重点参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-ngl 99&lt;/code&gt;：尽量把能 offload 的层放到 GPU；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--n-cpu-moe 32&lt;/code&gt;：控制 MoE 专家层调度，是这次提速的关键；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--flash-attn on&lt;/code&gt;：开启 Flash Attention，降低长上下文压力；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c 65536&lt;/code&gt;：设置 64K 上下文；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--cache-type-k q4_0&lt;/code&gt; / &lt;code&gt;--cache-type-v q4_0&lt;/code&gt;：量化 KV cache，减少长上下文显存占用；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-np 1&lt;/code&gt;：单并发，适合 32GB 内存机器；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--cache-ram 0&lt;/code&gt;：关闭 prompt cache，进一步控制内存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;b9297&lt;/code&gt; 只是一个测试时点。截至 2026-05-26，&lt;code&gt;llama.cpp&lt;/code&gt; Release 页面已经继续更新到更高版本，所以实际使用时不必拘泥于 b9297，可以优先尝试更新的 CUDA 构建。&lt;/p&gt;
&lt;h2 id=&#34;不同显卡怎么调&#34;&gt;不同显卡怎么调？
&lt;/h2&gt;&lt;p&gt;这类 MoE 模型的思路不是“显存不够就放弃”，而是通过 CPU/GPU 分工去找平衡点。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;硬件&lt;/th&gt;
          &lt;th&gt;建议&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3060 12GB / 3080 10GB&lt;/td&gt;
          &lt;td&gt;可以先试 &lt;code&gt;--n-cpu-moe 32&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3070 8GB / 4060 8GB&lt;/td&gt;
          &lt;td&gt;可以把 &lt;code&gt;--n-cpu-moe&lt;/code&gt; 调大，例如 128 或 256&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3050 6GB / GTX 1650 4GB&lt;/td&gt;
          &lt;td&gt;可以尝试更高的 CPU offload，但速度会明显下降&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple Silicon Mac&lt;/td&gt;
          &lt;td&gt;用 Metal 后端，统一内存对大模型更友好&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;不要把这些数值当成绝对答案。&lt;code&gt;--n-cpu-moe&lt;/code&gt; 的最佳值和模型、量化、显卡、CPU、内存带宽都有关系。更稳妥的做法是从几个典型点测试：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0 / 16 / 32 / 64 / 128 / 256
&lt;/span&gt;&lt;/span&gt;&lt;/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;tok/s&lt;/code&gt;、内存占用、首 token 延迟和回答稳定性，再决定最终配置。&lt;/p&gt;
&lt;h2 id=&#34;32gb-内存够不够&#34;&gt;32GB 内存够不够？
&lt;/h2&gt;&lt;p&gt;结论是：能跑，但余量不大。&lt;/p&gt;
&lt;p&gt;这类配置下，&lt;code&gt;llama-server&lt;/code&gt; 进程工作集可能来到 20GB 以上，系统还要保留内存给浏览器、编辑器、驱动和后台服务。如果只是单人本地使用，32GB 可以尝试；如果想长期挂服务、多并发调用，64GB 会舒服很多。&lt;/p&gt;
&lt;p&gt;建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尽量单并发测试；&lt;/li&gt;
&lt;li&gt;关闭不必要的后台程序；&lt;/li&gt;
&lt;li&gt;浏览器标签别开太多；&lt;/li&gt;
&lt;li&gt;先确认 CUDA 后端正常加载；&lt;/li&gt;
&lt;li&gt;不要一开始就把上下文拉到 128K。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;为什么这件事值得关注&#34;&gt;为什么这件事值得关注？
&lt;/h2&gt;&lt;p&gt;本地大模型的门槛一直被“显存焦虑”放大。很多人默认认为 35B 级别模型必须 24GB 显存，最好还得 4090。&lt;/p&gt;
&lt;p&gt;这次实测说明了另一个方向：模型结构和推理框架的优化，能让旧硬件继续释放价值。MoE、KV cache 量化、Flash Attention、CUDA kernel 优化、CPU/GPU 混合 offload，这些进步叠加起来，可能比单纯升级显卡更影响实际体验。&lt;/p&gt;
&lt;p&gt;当然，它不是魔法。8GB、12GB 显卡跑 35B MoE 仍然需要取舍：速度、上下文、量化质量、内存占用不可能全都拉满。但如果目标是个人知识库、代码助手、长文档问答、离线测试，这类方案已经很值得折腾。&lt;/p&gt;
&lt;h2 id=&#34;我的结论&#34;&gt;我的结论
&lt;/h2&gt;&lt;p&gt;如果你手里有 RTX 3060 12GB、RTX 3080 10GB，甚至 8GB 显卡，不妨重新看一眼新版 &lt;code&gt;llama.cpp&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;重点不是照抄某一个参数，而是理解这套思路：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MoE 模型不一定要把所有专家都塞进 GPU，合理的 CPU/GPU 分工，可能比“显存够不够”更重要。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;老电脑不一定只能跑小模型。只要框架持续优化、量化方案继续进步，很多原本被判定“跑不动”的本地模型，会重新变得可用。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>WavFlow：Meta 开源原始波形空间音频生成项目</title>
        <link>https://knightli.com/2026/05/25/wavflow-raw-waveform-audio-generation/</link>
        <pubDate>Mon, 25 May 2026 08:00:37 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/wavflow-raw-waveform-audio-generation/</guid>
        <description>&lt;p&gt;&lt;code&gt;facebookresearch/WavFlow&lt;/code&gt; 是 Meta AI 发布的多模态音频生成项目，论文标题是 &lt;code&gt;WavFlow: Audio Generation in Waveform Space&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebookresearch/WavFlow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/facebookresearch/WavFlow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;它关注的不是语音合成，也不是单纯的音乐生成，而是从视频和文本条件生成同步、高保真的音频。更特别的是，它不走常见的 latent compression 路线，而是尝试直接在 raw waveform space 里做端到端音频生成。&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub 页面显示仓库约有 55 star、3 fork，代码主要是 Python，项目没有发布 release。仓库 README 也明确提醒：由于组织政策限制，目前不能发布 production-trained checkpoints，团队正在训练基于完全开源数据的 foundation checkpoint。在那之前，用户需要自己训练模型。&lt;/p&gt;
&lt;h2 id=&#34;wavflow-想解决什么问题&#34;&gt;WavFlow 想解决什么问题
&lt;/h2&gt;&lt;p&gt;很多多模态音频生成方法会先把音频压缩到 latent 空间，再在 latent 上做生成，最后还原成波形。这条路线效率高，但也会带来一个问题：压缩过程可能损失细节，最终音频的质感、同步性和高频信息会受影响。&lt;/p&gt;
&lt;p&gt;WavFlow 的思路是绕开这一步，直接在原始波形空间生成音频。&lt;/p&gt;
&lt;p&gt;README 里提到，它通过 waveform patchifying 和 amplitude lifting，让 flow matching 可以稳定地作用在 raw audio 上，并使用直接的 &lt;code&gt;x&lt;/code&gt;-prediction。直白一点说，它不是先把声音压成某种中间表示再生成，而是把音频波形本身切成适合模型处理的 patch，并做幅度变换，让模型能在波形层面学习生成。&lt;/p&gt;
&lt;p&gt;这也是它最值得关注的地方：如果端到端波形生成能稳定工作，就有机会减少编码器/解码器带来的信息瓶颈。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些输入模式&#34;&gt;支持哪些输入模式
&lt;/h2&gt;&lt;p&gt;从 README 和训练说明看，WavFlow 面向三类输入。&lt;/p&gt;
&lt;p&gt;第一类是 VT2A，也就是 video + text to audio。给模型视频和文本描述，让它生成与画面和语义同步的音频，比如森林、青蛙、鼓声、滑板等场景。&lt;/p&gt;
&lt;p&gt;第二类是 T2A，也就是 text to audio。只有文本描述，没有视频输入。训练时使用 CLIP text feature，推理时 CSV 里可以把 &lt;code&gt;video_exist&lt;/code&gt; 设为 &lt;code&gt;0&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第三类是 V2A，也就是 video to audio。只有视频，没有文本。推理时可以把 &lt;code&gt;text_exist&lt;/code&gt; 设为 &lt;code&gt;0&lt;/code&gt;，模型会使用 learned empty CLIP-text token。&lt;/p&gt;
&lt;p&gt;这种设计比较实用。真实数据里不一定每条样本都有完整的视频、文本和音频标注，WavFlow 用 &lt;code&gt;video_exist&lt;/code&gt; 和 &lt;code&gt;text_exist&lt;/code&gt; 这类字段把缺失模态显式表达出来，训练和推理都能处理不同组合。&lt;/p&gt;
&lt;h2 id=&#34;评测和效果定位&#34;&gt;评测和效果定位
&lt;/h2&gt;&lt;p&gt;README 提到，WavFlow 在 VGGSound 的 VT2A 任务和 AudioCaps 的 T2A 任务上进行评测，表现可以和已有 latent-based 方法相当。&lt;/p&gt;
&lt;p&gt;这句话的意义不是说它已经全面碾压现有模型，而是证明一件事：端到端 raw waveform generation 并不一定输给传统 latent 框架。至少在 acoustic richness、fidelity 和 synchronization 这些指标上，它可以达到同一档水平。&lt;/p&gt;
&lt;p&gt;项目页还提供了 forest、frog、drum、skateboard 等 demo，并在项目主页放了 24 个以上样例和并排 benchmark 对比。对音频生成模型来说，demo 很重要，因为文字指标很难完整描述声音的质感、空间感和同步感。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;官方提供了自动安装脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/facebookresearch/WavFlow.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; WavFlow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/setup.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda activate wavflow
&lt;/span&gt;&lt;/span&gt;&lt;/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;scripts/setup.sh&lt;/code&gt; 会创建名为 &lt;code&gt;wavflow&lt;/code&gt; 的 conda 环境，并安装所需依赖。&lt;/p&gt;
&lt;p&gt;如果想手动安装，可以按 README 里的方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda create -n wavflow &lt;span class=&#34;nv&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;3.10 -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda activate wavflow
&lt;/span&gt;&lt;/span&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;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e . --no-deps
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda install -n wavflow -c conda-forge &lt;span class=&#34;s2&#34;&gt;&amp;#34;ffmpeg&amp;lt;7&amp;#34;&lt;/span&gt; -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;这里的 &lt;code&gt;ffmpeg&amp;lt;7&lt;/code&gt; 主要是为了 torio 视频解码。README 还说明，CLIP、Synchformer、empty-string CFG embedding 等外部权重会在首次运行时自动下载或计算，并缓存到 &lt;code&gt;~/.cache/wavflow/&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;推理怎么跑&#34;&gt;推理怎么跑
&lt;/h2&gt;&lt;p&gt;由于官方暂时没有发布 production-trained checkpoints，下面的推理入口只适用于你已经有训练好的 checkpoint 的情况。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/launch/predict.sh &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--gpu N&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--config PATH&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;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wavflow/configs/infer.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;输入 CSV 由 &lt;code&gt;data.csv_path&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-csv&#34; data-lang=&#34;csv&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;video_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;caption&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;video_exist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;text_exist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&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;/abs/path/sample1.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;a whistling rocket explodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#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;s&#34;&gt;/abs/path/sample2.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;birds chirping in a forest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;a whistling rocket explodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#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;s&#34;&gt;/abs/path/sample3.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;0&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;video_exist=0&lt;/code&gt; 表示不解码视频，使用 learned empty CLIP/Sync tokens；&lt;code&gt;text_exist=0&lt;/code&gt; 表示忽略 caption，使用 learned empty CLIP-text token。如果有逗号的 caption，需要加引号。&lt;/p&gt;
&lt;p&gt;常用启动参数包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;--gpu N
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--config PATH
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;WAVFLOW_ENV
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;关键配置项包括 &lt;code&gt;model.name&lt;/code&gt;、&lt;code&gt;model.ckpt_path&lt;/code&gt;、&lt;code&gt;model.use_ema&lt;/code&gt;、&lt;code&gt;inference.duration_sec&lt;/code&gt;、&lt;code&gt;target_sample_rate&lt;/code&gt;、&lt;code&gt;inference.cfg&lt;/code&gt;、&lt;code&gt;num_steps&lt;/code&gt;、&lt;code&gt;noise_scale&lt;/code&gt;、&lt;code&gt;noise_shift&lt;/code&gt;、&lt;code&gt;prediction_type&lt;/code&gt;、&lt;code&gt;seed&lt;/code&gt; 和输出目录。&lt;/p&gt;
&lt;h2 id=&#34;ema-的一个坑&#34;&gt;EMA 的一个坑
&lt;/h2&gt;&lt;p&gt;README 特别提醒了 &lt;code&gt;model.use_ema&lt;/code&gt; 的问题。&lt;/p&gt;
&lt;p&gt;WavFlow 的 checkpoint 里可能有 &lt;code&gt;model_ema1&lt;/code&gt;，它按 &lt;code&gt;ema_decay = 0.9999&lt;/code&gt; 更新。如果训练只跑了几百或几千步，EMA 里可能还包含大量随机初始化值，推理时会产生噪声。&lt;/p&gt;
&lt;p&gt;所以，如果你只是做短跑、过拟合小样本或 smoke 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-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.use_ema&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;kc&#34;&gt;false&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;或者使用训练足够久之后保存的 &lt;code&gt;ema_epoch_*.pth&lt;/code&gt;。这个细节很实用，否则很容易误以为模型坏了，其实只是 EMA 还没稳定。&lt;/p&gt;
&lt;h2 id=&#34;训练流程&#34;&gt;训练流程
&lt;/h2&gt;&lt;p&gt;官方的 &lt;code&gt;TRAINING.md&lt;/code&gt; 把训练分成两步。&lt;/p&gt;
&lt;p&gt;第一步是特征提取。&lt;/p&gt;
&lt;p&gt;T2A 只提取 CLIP text feature；VT2A 会提取 CLIP frame feature、Synchformer feature 和 CLIP text feature。示例 CSV 大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-csv&#34; data-lang=&#34;csv&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;audio_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;video_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;caption&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;
&lt;/span&gt;&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;sample1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/abs/or/relative/wav/sample1.wav&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/abs/or/relative/video/sample1.mp4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;a whistling rocket explodes&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;extraction.duration_sec&lt;/code&gt;，默认是 8 秒；更短的片段会被跳过。特征提取可以这样运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;bash scripts/launch/extract_t2a.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/launch/extract_vt2a.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;如果要用更多 GPU 或自定义配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;NPROC_PER_NODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; bash scripts/launch/extract_vt2a.sh
&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;CONFIG_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;path/to/your_extract.yaml bash scripts/launch/extract_t2a.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;/p&gt;
&lt;p&gt;单机多卡可以用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash scripts/launch/train_single_node.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;NNODES&lt;/code&gt;、&lt;code&gt;NODE_RANK&lt;/code&gt;、&lt;code&gt;MASTER_ADDR&lt;/code&gt;、&lt;code&gt;MASTER_PORT&lt;/code&gt; 和 &lt;code&gt;NPROC_PER_NODE&lt;/code&gt;。训练输出包括 &lt;code&gt;checkpoint_latest.pth&lt;/code&gt;、&lt;code&gt;checkpoint_epoch_*.pth&lt;/code&gt;、&lt;code&gt;ema_epoch_*.pth&lt;/code&gt;、生成音频样本和 &lt;code&gt;training.log&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;训练可以自动 resume：如果实验目录里存在 &lt;code&gt;checkpoint_latest.pth&lt;/code&gt;，训练会从那里继续。&lt;/p&gt;
&lt;h2 id=&#34;适合谁关注&#34;&gt;适合谁关注
&lt;/h2&gt;&lt;p&gt;WavFlow 更适合研究者和工程团队关注，而不是普通用户直接拿来做成品音效。&lt;/p&gt;
&lt;p&gt;适合关注它的人包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;研究 video-to-audio、text-to-audio 或 multimodal audio generation 的人。&lt;/li&gt;
&lt;li&gt;想比较 raw waveform generation 和 latent-based audio generation 的团队。&lt;/li&gt;
&lt;li&gt;需要训练自有音频生成模型，并能准备数据和 GPU 资源的用户。&lt;/li&gt;
&lt;li&gt;对视频画面和声音同步要求高的应用团队。&lt;/li&gt;
&lt;li&gt;想研究 flow matching 在原始音频波形上是否可行的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想找一个网页工具，输入 prompt 直接生成音效，WavFlow 现在不是最省事的选择。它暂时没有公开 production checkpoint，部署路径也更接近研究代码。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，不能把它当成“下载即用”的音频生成模型。官方目前没有发布生产训练 checkpoint，真正推理前需要自己训练，或者等待后续开放数据 checkpoint。&lt;/p&gt;
&lt;p&gt;第二，许可证不是宽松商用默认选项。README 说明，WavFlow 大部分代码采用 CC-BY-NC 4.0，部分 vendored 组件沿用 MIT、Apache 2.0、CC BY-NC 4.0 和 Stability AI Community License 等原始许可证。商业使用前要仔细读 &lt;code&gt;LICENSE&lt;/code&gt; 和 &lt;code&gt;NOTICE.txt&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第三，训练数据很关键。WavFlow 的优势建立在音频、视频和文本对齐数据之上。如果数据质量差、caption 不准确、音画不同步，模型很难学到稳定的声音生成。&lt;/p&gt;
&lt;p&gt;第四，raw waveform generation 虽然减少 latent bottleneck，但也可能带来更高的训练和推理成本。实际项目里仍然要在音质、速度、显存、采样率和输出时长之间取舍。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;WavFlow 的价值在于提出了一个清晰问题：多模态音频生成一定要先压缩到 latent 空间吗？&lt;/p&gt;
&lt;p&gt;它用 waveform patchifying、amplitude lifting 和 flow matching，尝试直接在 raw waveform space 里生成同步高保真音频。评测结果说明，这条路线至少有机会和成熟的 latent-based 方法站在同一水平线上。&lt;/p&gt;
&lt;p&gt;不过，现阶段它更像一套研究和训练框架，而不是开箱即用的产品模型。没有公开生产 checkpoint、许可证偏非商用、训练需要音视频文本对齐数据，这些都决定了它更适合研究、复现和二次训练。如果你关注下一代 video-to-audio 或 text-to-audio 模型，WavFlow 值得认真看一眼。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;facebookresearch/WavFlow：&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebookresearch/WavFlow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/facebookresearch/WavFlow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WavFlow Project Page：&lt;a class=&#34;link&#34; href=&#34;https://facebookresearch.github.io/WavFlow/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://facebookresearch.github.io/WavFlow/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WavFlow arXiv：&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2605.18749&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://arxiv.org/abs/2605.18749&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WavFlow Training Guide：&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebookresearch/WavFlow/blob/main/TRAINING.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/facebookresearch/WavFlow/blob/main/TRAINING.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>LongCat-Video-Avatar-1.5：美团开源音频驱动数字人视频模型</title>
        <link>https://knightli.com/2026/05/25/longcat-video-avatar-1-5-audio-driven-avatar-video/</link>
        <pubDate>Mon, 25 May 2026 07:53:43 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/longcat-video-avatar-1-5-audio-driven-avatar-video/</guid>
        <description>&lt;p&gt;&lt;code&gt;LongCat-Video-Avatar-1.5&lt;/code&gt; 是美团 LongCat 团队发布的音频驱动数字人视频生成模型。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/meituan-longcat/LongCat-Video-Avatar-1.5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/meituan-longcat/LongCat-Video-Avatar-1.5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;它面向的不是普通文生视频，而是“给一段语音和角色条件，生成会说话、动作稳定、身份一致的视频”。从模型卡看，它支持 Audio-Text-to-Video、Audio-Text-Image-to-Video 和 Video Continuation，也支持单路音频和多路音频输入。&lt;/p&gt;
&lt;p&gt;截至写作时，Hugging Face 页面显示该模型采用 MIT License，标签包括 &lt;code&gt;audio-text-to-video&lt;/code&gt;、&lt;code&gt;audio-image-text-to-video&lt;/code&gt;、&lt;code&gt;audio-driven-video-continuation&lt;/code&gt;、&lt;code&gt;avatar&lt;/code&gt; 和 &lt;code&gt;video-generation&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;这次-15-版更新了什么&#34;&gt;这次 1.5 版更新了什么
&lt;/h2&gt;&lt;p&gt;官方模型卡把 &lt;code&gt;LongCat-Video-Avatar 1.5&lt;/code&gt; 描述为一个更偏生产可用的开源框架，目标是提升音频驱动人物视频生成的稳定性。&lt;/p&gt;
&lt;p&gt;几个重点变化比较明确。&lt;/p&gt;
&lt;p&gt;第一，音频编码器从 Wav2Vec2 换成了 Whisper-Large。官方说法是，这能带来更平滑、更自然的唇部动态。实际使用时，对口型同步要求高的场景，应该优先使用 &lt;code&gt;--model_type avatar-v1.5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;第二，它强调长视频稳定性和身份一致性。数字人视频最怕两类问题：短片里嘴型对不上，长片里脸、身体、衣服和动作逐渐漂移。LongCat-Video-Avatar-1.5 的卖点之一，就是同时关注 lip sync、full-body temporal stability 和 identity consistency。&lt;/p&gt;
&lt;p&gt;第三，它不只面向真人播报。模型卡提到它可以泛化到动漫、动物、多人互动、拿取物体等更复杂条件。这意味着它的应用范围不局限于新闻播报式数字人，也可以覆盖短剧、唱歌、电商口播、动画角色和动物角色。&lt;/p&gt;
&lt;p&gt;第四，它提供 8-step 推理。官方提到通过 DMD2-based step distillation，把推理压到 8 NFE，用来平衡服务成本和画质。这对视频模型很关键，因为视频生成通常算力成本高，推理步数少会直接影响可部署性。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些任务&#34;&gt;支持哪些任务
&lt;/h2&gt;&lt;p&gt;从模型卡和示例命令看，主要可以分成三类。&lt;/p&gt;
&lt;p&gt;第一类是单人动画。&lt;/p&gt;
&lt;p&gt;它支持从音频和文本生成视频，也支持从音频和图片生成视频。常见用途是给一段语音，让某个角色说话、表演或播报。&lt;/p&gt;
&lt;p&gt;第二类是视频续写。&lt;/p&gt;
&lt;p&gt;示例里通过 &lt;code&gt;--num_segments=5&lt;/code&gt;、&lt;code&gt;--ref_img_index=10&lt;/code&gt;、&lt;code&gt;--mask_frame_range=3&lt;/code&gt; 等参数，让模型在已有角色条件下继续生成更长片段。这个能力适合长口播、课程讲解、唱歌和连续表演。&lt;/p&gt;
&lt;p&gt;第三类是多人动画。&lt;/p&gt;
&lt;p&gt;多人模式使用 &lt;code&gt;run_demo_avatar_multi_audio_to_video.py&lt;/code&gt;，支持多路音频。模型卡里还说明了两种双音频模式：&lt;code&gt;audio_type&lt;/code&gt; 设为 &lt;code&gt;para&lt;/code&gt; 时是 merge mode，需要两段等长音频；设为 &lt;code&gt;add&lt;/code&gt; 时是 concatenation mode，可以按顺序拼接两段音频，并用静音填充间隔。&lt;/p&gt;
&lt;h2 id=&#34;安装和模型下载&#34;&gt;安装和模型下载
&lt;/h2&gt;&lt;p&gt;官方推荐先克隆 LongCat-Video 仓库：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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 --single-branch --branch main https://github.com/meituan-longcat/LongCat-Video
&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; LongCat-Video
&lt;/span&gt;&lt;/span&gt;&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 3.10 环境，并按 CUDA 版本安装 PyTorch。模型卡给出的 CUDA 12.4 示例是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;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;conda create -n longcat-video &lt;span class=&#34;nv&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;3.10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda activate longcat-video
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;nv&#34;&gt;torch&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;2.6.0+cu124 &lt;span class=&#34;nv&#34;&gt;torchvision&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;0.21.0+cu124 &lt;span class=&#34;nv&#34;&gt;torchaudio&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;2.6.0 --index-url https://download.pytorch.org/whl/cu124
&lt;/span&gt;&lt;/span&gt;&lt;/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;flash_attn==2.7.4.post1&lt;/code&gt;、项目依赖、&lt;code&gt;librosa&lt;/code&gt;、&lt;code&gt;ffmpeg&lt;/code&gt; 和 &lt;code&gt;requirements_avatar.txt&lt;/code&gt;。模型卡说明，配置里默认启用 FlashAttention-2，也可以改成 FlashAttention-3 或 xformers。&lt;/p&gt;
&lt;p&gt;模型权重可以用 &lt;code&gt;huggingface-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;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;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;huggingface_hub[cli]&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;huggingface-cli download meituan-longcat/LongCat-Video --local-dir ./weights/LongCat-Video
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;huggingface-cli download meituan-longcat/LongCat-Video-Avatar-1.5 --local-dir ./weights/LongCat-Video-Avatar-1.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;这里要注意，它依赖两个权重目录：一个是 LongCat-Video 基础视频生成模型，另一个是 LongCat-Video-Avatar-1.5 数字人模型。&lt;/p&gt;
&lt;h2 id=&#34;快速推理示例&#34;&gt;快速推理示例
&lt;/h2&gt;&lt;p&gt;单人 Audio-Text-to-Video 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;torchrun --nproc_per_node&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; run_demo_avatar_single_audio_to_video.py --context_parallel_size&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --checkpoint_dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;./weights/LongCat-Video-Avatar-1.5 --stage_1&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;at2v --input_json&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;assets/avatar/single_example_1.json --use_distill --model_type avatar-v1.5 --use_int8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;单人 Audio-Image-to-Video 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;torchrun --nproc_per_node&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; run_demo_avatar_single_audio_to_video.py --context_parallel_size&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --checkpoint_dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;./weights/LongCat-Video-Avatar-1.5  --stage_1&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ai2v --input_json&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;assets/avatar/single_example_1.json --use_distill --model_type avatar-v1.5 --use_int8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;多人 Audio-Image-to-Video 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;torchrun --nproc_per_node&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; run_demo_avatar_multi_audio_to_video.py --context_parallel_size&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --checkpoint_dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;./weights/LongCat-Video-Avatar-1.5 --input_json&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;assets/avatar/multi_example_1.json --use_distill --model_type avatar-v1.5 --use_int8
&lt;/span&gt;&lt;/span&gt;&lt;/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;--model_type avatar-v1.5&lt;/code&gt;，都带 &lt;code&gt;--use_distill&lt;/code&gt;，并且示例里都打开了 &lt;code&gt;--use_int8&lt;/code&gt;。模型卡明确说，&lt;code&gt;--use_distill&lt;/code&gt; 是使用 &lt;code&gt;avatar-v1.5&lt;/code&gt; 时需要的选项；&lt;code&gt;--use_int8&lt;/code&gt; 用于加载 INT8 量化 DiT 模型，降低显存占用，并且只支持 &lt;code&gt;avatar-v1.5&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;参数怎么调&#34;&gt;参数怎么调
&lt;/h2&gt;&lt;p&gt;模型卡给了几条实用建议。&lt;/p&gt;
&lt;p&gt;如果口型同步不够好，可以调高 audio CFG。官方建议区间是 3 到 5，数值更高通常有利于同步。&lt;/p&gt;
&lt;p&gt;Prompt 不要写得太短。更长、更具体的描述通常能带来更好的角色一致性和自然度。比如角色外观、动作、场景、衣着、表情都可以写进去。&lt;/p&gt;
&lt;p&gt;如果出现重复动作，可以调整 &lt;code&gt;--ref_img_index&lt;/code&gt; 和 &lt;code&gt;--mask_frame_range&lt;/code&gt;。模型卡建议 &lt;code&gt;--ref_img_index&lt;/code&gt; 在 0 到 24 之间更利于一致性，设为 30 有助于减少重复动作；增大 &lt;code&gt;--mask_frame_range&lt;/code&gt; 也可能缓解重复，但过大可能引入伪影。&lt;/p&gt;
&lt;p&gt;分辨率方面，模型兼容 480P 和 720P，可以通过 &lt;code&gt;--resolution&lt;/code&gt; 控制。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;官方预览覆盖了播报、表演、唱歌、电商营销、多人对话、动画和动物角色。&lt;/p&gt;
&lt;p&gt;从实际用途看，它比较适合这些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新闻播报、知识讲解、课程口播。&lt;/li&gt;
&lt;li&gt;电商商品介绍和营销短视频。&lt;/li&gt;
&lt;li&gt;虚拟主播、虚拟角色短剧、唱歌表演。&lt;/li&gt;
&lt;li&gt;动漫或动物角色的音频驱动动画。&lt;/li&gt;
&lt;li&gt;多人对话型数字人视频。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它最值得关注的点，是把“口型同步”和“长视频稳定”放在同一个框架里处理。很多数字人模型短片效果可以，但一旦拉长到多段生成，就容易出现身份漂移、动作重复、身体不稳。LongCat-Video-Avatar-1.5 明确把这些问题作为优化目标。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，它不是 Hugging Face Inference Provider 上直接可用的托管模型。页面显示目前没有部署到 Inference Provider，实际使用需要自己准备环境、下载权重、运行 LongCat-Video 代码。&lt;/p&gt;
&lt;p&gt;第二，本地部署门槛不低。示例命令使用 &lt;code&gt;torchrun --nproc_per_node=2&lt;/code&gt; 和 &lt;code&gt;context_parallel_size=2&lt;/code&gt;，依赖 PyTorch、FlashAttention、ffmpeg、librosa 和多份模型权重。即使有 INT8 量化，仍然更适合有较强 GPU 环境的用户。&lt;/p&gt;
&lt;p&gt;第三，数字人视频涉及肖像、声音、隐私和内容安全。模型卡也提醒开发者需要自行评估准确性、安全性、公平性，并遵守数据保护、隐私和内容安全相关法律法规。用它生成真人形象或商业视频时，授权和合规比技术效果更重要。&lt;/p&gt;
&lt;p&gt;第四，不要把模型卡里的通用 Hugging Face “Diffusers/Transformers 使用片段”当成本项目的完整推理方式。真正的 avatar 推理还是应该参考 LongCat-Video 仓库和模型卡里的 &lt;code&gt;run_demo_avatar_*&lt;/code&gt; 示例。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;LongCat-Video-Avatar-1.5 是一个值得关注的开源数字人视频模型。它不只是做一张脸说话，而是把音频驱动、角色一致性、长视频稳定、多人音频和蒸馏推理放到同一个框架里。&lt;/p&gt;
&lt;p&gt;如果你关注虚拟主播、电商口播、课程讲解、动画角色或多人对话视频，它值得测试。但它更像研究和工程团队可以部署调优的模型，不是开箱即用的网页工具。真正落地时，要同时准备算力、素材授权、提示词调参和内容合规流程。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;LongCat-Video-Avatar-1.5 Hugging Face：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/meituan-longcat/LongCat-Video-Avatar-1.5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/meituan-longcat/LongCat-Video-Avatar-1.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LongCat-Video GitHub：&lt;a class=&#34;link&#34; href=&#34;https://github.com/meituan-longcat/LongCat-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/meituan-longcat/LongCat-Video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LongCat-Video-Avatar-1.5 Technical Report：&lt;a class=&#34;link&#34; href=&#34;https://github.com/meituan-longcat/LongCat-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/meituan-longcat/LongCat-Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>oh-my-codex：给 Codex CLI 加上工作流、技能和运行时护栏</title>
        <link>https://knightli.com/2026/05/25/oh-my-codex-codex-cli-workflow-layer/</link>
        <pubDate>Mon, 25 May 2026 07:41:45 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/oh-my-codex-codex-cli-workflow-layer/</guid>
        <description>&lt;p&gt;&lt;code&gt;Yeachan-Heo/oh-my-codex&lt;/code&gt;，简称 OMX，是一个围绕 OpenAI Codex CLI 的工作流层。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;它想解决的不是“再做一个新的 coding agent”，而是让已经在使用 Codex CLI 的人，有一套更稳定的日常工作方式：启动时带上项目指令，任务变复杂时先澄清再计划，执行时有 durable goal 和状态记录，收尾时用 review 和 QA 把结果压住。&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub 页面显示仓库约有 29.4k star，最新 release 是 &lt;code&gt;v0.18.1&lt;/code&gt;，发布时间为 2026 年 5 月 21 日。README 也明确说，官方项目是 &lt;code&gt;Yeachan-Heo/oh-my-codex&lt;/code&gt;，官方 npm 包是 &lt;code&gt;oh-my-codex&lt;/code&gt;，不要把第三方 “OMX v2” 项目误认为这个仓库的官方延续。&lt;/p&gt;
&lt;h2 id=&#34;它到底是什么&#34;&gt;它到底是什么
&lt;/h2&gt;&lt;p&gt;OMX 不替代 Codex。&lt;/p&gt;
&lt;p&gt;它保留 Codex CLI 作为实际执行引擎，自己主要补三类东西：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;更固定的任务流程。&lt;/li&gt;
&lt;li&gt;可复用的 prompts、skills 和 specialist agents。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.omx/&lt;/code&gt; 目录下的计划、日志、状态和运行时记录。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;换句话说，Codex 负责“动手干活”，OMX 负责“让干活过程更像工程流程”。这也是它和普通 prompt 包最大的区别：它不是只往系统提示词里塞规则，而是把澄清、计划、执行、检查、团队协作和运行时诊断拆成一组可调用的工作面。&lt;/p&gt;
&lt;h2 id=&#34;推荐安装方式&#34;&gt;推荐安装方式
&lt;/h2&gt;&lt;p&gt;README 和 Getting Started 文档都强调：OMX 默认推荐在 macOS 或 Linux 上配合 Codex CLI 使用。原生 Windows 和 Codex App 不是它当前最主要的体验路径，可能会有不一致或不完整支持。&lt;/p&gt;
&lt;p&gt;如果你已经装好了 Codex CLI，可以这样开始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g oh-my-codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx setup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx 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;如果你还没有 Codex CLI，并且希望 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;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 @openai/codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g oh-my-codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx setup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx 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;这里有一个细节：不要在已经由 Homebrew 管理 &lt;code&gt;codex&lt;/code&gt; 的机器上直接把 &lt;code&gt;@openai/codex&lt;/code&gt; 和 &lt;code&gt;oh-my-codex&lt;/code&gt; 合并成一个全局安装命令。README 提到，Homebrew 拥有的 &lt;code&gt;codex&lt;/code&gt; 二进制可能会和 npm 安装发生 &lt;code&gt;EEXIST&lt;/code&gt; 冲突。OMX 只需要一个可用、已登录、在 &lt;code&gt;PATH&lt;/code&gt; 上的 &lt;code&gt;codex&lt;/code&gt; 命令，并不要求 Codex 一定由 npm 安装。&lt;/p&gt;
&lt;p&gt;安装完成后，建议再跑一次真实执行烟测：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;codex login status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; --skip-git-repo-check -C . &lt;span class=&#34;s2&#34;&gt;&amp;#34;Reply with exactly OMX-EXEC-OK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;omx doctor&lt;/code&gt; 只能证明本地安装结构大体正常，不能证明当前 shell/profile 里的 Codex 账号、代理、base URL 和认证链路真的能发起模型调用。这个区分很实际，尤其是你在不同 HOME、容器、远程环境或本地 OpenAI 兼容代理里切换时。&lt;/p&gt;
&lt;h2 id=&#34;默认工作流&#34;&gt;默认工作流
&lt;/h2&gt;&lt;p&gt;OMX 的主线工作流大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&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;$deep-interview &amp;#34;clarify the authentication change&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ralplan &amp;#34;approve the auth plan and review tradeoffs&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$prometheus-strict &amp;#34;stress-test the plan before durable execution&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ultragoal &amp;#34;turn the approved plan into durable Codex goals&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中最常用的是三步：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$deep-interview&lt;/code&gt;：在需求还不清楚时追问边界、目标和非目标。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$ralplan&lt;/code&gt;：把需求整理成计划，并经过架构与批判视角确认。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$ultragoal&lt;/code&gt;：把批准后的计划转成更耐跑的目标和检查点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任务需要并行协作，可以在 Ultragoal story 里用 &lt;code&gt;$team&lt;/code&gt;；如果只需要一个持续推进的单人循环，可以用 &lt;code&gt;$ralph&lt;/code&gt;。这套命名看起来有点重，但背后的想法很清楚：不要让 agent 一听到需求就急着改文件，而是先把“要做什么、怎么做、怎么验收、什么时候停”写清楚。&lt;/p&gt;
&lt;h2 id=&#34;skills-和-agents-提供了什么&#34;&gt;skills 和 agents 提供了什么
&lt;/h2&gt;&lt;p&gt;OMX 文档把技能分成几类。&lt;/p&gt;
&lt;p&gt;Canonical Workflow 里有 &lt;code&gt;$deep-interview&lt;/code&gt;、&lt;code&gt;$ralplan&lt;/code&gt;、&lt;code&gt;$prometheus-strict&lt;/code&gt;、&lt;code&gt;$ultragoal&lt;/code&gt;、&lt;code&gt;$code-review&lt;/code&gt; 和 &lt;code&gt;$ultraqa&lt;/code&gt;。这些面向的是完整工程任务：先澄清，再计划，再执行，再审查，再 QA。&lt;/p&gt;
&lt;p&gt;Execution Modes 里有 &lt;code&gt;$team&lt;/code&gt;、&lt;code&gt;$ralph&lt;/code&gt;、&lt;code&gt;$autopilot&lt;/code&gt;、&lt;code&gt;$ultrawork&lt;/code&gt; 等。它们决定任务是单线推进、团队并行，还是更强的自动循环。&lt;/p&gt;
&lt;p&gt;Agent Catalog 则更像角色库，包括 &lt;code&gt;analyst&lt;/code&gt;、&lt;code&gt;planner&lt;/code&gt;、&lt;code&gt;architect&lt;/code&gt;、&lt;code&gt;debugger&lt;/code&gt;、&lt;code&gt;executor&lt;/code&gt;、&lt;code&gt;verifier&lt;/code&gt;、&lt;code&gt;security-reviewer&lt;/code&gt;、&lt;code&gt;performance-reviewer&lt;/code&gt;、&lt;code&gt;code-reviewer&lt;/code&gt;、&lt;code&gt;test-engineer&lt;/code&gt;、&lt;code&gt;designer&lt;/code&gt;、&lt;code&gt;researcher&lt;/code&gt; 等。你不一定每天都要手动点名这些角色，但它们说明 OMX 的定位不是“万能大 prompt”，而是把工程过程拆成可复用的角色和阶段。&lt;/p&gt;
&lt;p&gt;这对长期项目有意义。AI 编程里很多失败不是模型完全不会写代码，而是它太快进入执行，跳过需求确认、架构边界、测试基线和收尾审查。OMX 试图用技能和角色把这些步骤固化下来。&lt;/p&gt;
&lt;h2 id=&#34;插件形态和运行时状态&#34;&gt;插件形态和运行时状态
&lt;/h2&gt;&lt;p&gt;README 提到，仓库里也包含官方 Codex plugin layout，路径是 &lt;code&gt;plugins/oh-my-codex&lt;/code&gt;，并带有 marketplace metadata。&lt;/p&gt;
&lt;p&gt;但文档也强调：这个插件形态不是 &lt;code&gt;npm install -g oh-my-codex&lt;/code&gt; 加 &lt;code&gt;omx setup&lt;/code&gt; 的替代品。插件作用更像是把 hooks、skill surface 和 Codex 生命周期集成包装起来，真正运行时仍然依赖已安装的 &lt;code&gt;omx&lt;/code&gt; CLI。&lt;/p&gt;
&lt;p&gt;最新 &lt;code&gt;v0.18.1&lt;/code&gt; release 的重点也集中在这条线上：插件安装会使用 pinned OMX launcher，hook 失败时更保守，Ultragoal 状态变更会序列化，release packaging 会排除 crate-local &lt;code&gt;.omx&lt;/code&gt; runtime cache，并同步 npm、Cargo workspace、lockfile 和插件 manifest 的版本号。&lt;/p&gt;
&lt;p&gt;这些变化说明 OMX 已经不只是一个 prompt 仓库，它开始认真处理安装形态、hook 安全、状态写入、release 包内容和跨运行时一致性。对工具链来说，这些都属于“不炫但很要命”的工程细节。&lt;/p&gt;
&lt;h2 id=&#34;适合谁&#34;&gt;适合谁
&lt;/h2&gt;&lt;p&gt;OMX 比较适合已经在认真使用 Codex CLI 的开发者，尤其是这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常让 Codex 处理多文件、多步骤任务。&lt;/li&gt;
&lt;li&gt;希望 agent 先澄清需求，而不是直接改代码。&lt;/li&gt;
&lt;li&gt;想把计划、执行、检查、review 和 QA 分开管理。&lt;/li&gt;
&lt;li&gt;需要在项目里保留 &lt;code&gt;.omx/&lt;/code&gt; 状态、计划和日志。&lt;/li&gt;
&lt;li&gt;想尝试 tmux/team runtime 或更强的长任务推进方式。&lt;/li&gt;
&lt;li&gt;团队愿意把自己的工程习惯沉淀成 skills 和 prompts。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔让 Codex 改一行配置、生成一个脚本、解释一段代码，OMX 可能会显得偏重。它更像是给高频 AI 编程用户准备的工具腰带，而不是新手必须安装的第一层入口。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，不要把 OMX 当成“无人值守自动完成一切”的保证。它能强化流程，但不能替你判断需求是否合理、架构是否该改、风险是否可接受。&lt;/p&gt;
&lt;p&gt;第二，平台边界要看清楚。README 现在明确推荐 macOS/Linux + Codex CLI。Windows 原生路径存在，但不是默认最佳体验。如果你在 Windows 上使用，WSL2 通常比原生终端更稳。&lt;/p&gt;
&lt;p&gt;第三，&lt;code&gt;omx doctor&lt;/code&gt; 不是最终验收。真正能证明环境可用的是 &lt;code&gt;codex login status&lt;/code&gt; 加 &lt;code&gt;omx exec&lt;/code&gt; 这种实际模型调用测试。&lt;/p&gt;
&lt;p&gt;第四，流程越强，越需要你写清楚任务边界。&lt;code&gt;$ultragoal&lt;/code&gt;、&lt;code&gt;$team&lt;/code&gt;、&lt;code&gt;$autopilot&lt;/code&gt; 这类能力适合有验收标准的任务。如果需求本身还很含糊，应该先用 &lt;code&gt;$deep-interview&lt;/code&gt; 或普通对话把边界拉清楚。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;oh-my-codex 的价值不在于让 Codex “变成另一个工具”，而在于给 Codex CLI 加了一层更工程化的工作方式。&lt;/p&gt;
&lt;p&gt;它把 AI 编程从“我说一句，你改一轮”往“澄清、计划、执行、检查、记录状态”推进了一步。对轻量任务来说，这可能有点重；但对经常用 Codex 做真实项目的人来说，稳定流程、可复用技能、运行时诊断和 durable goal 反而是省心的关键。&lt;/p&gt;
&lt;p&gt;如果你已经把 Codex CLI 当成日常开发工具，OMX 值得试一下。即使不直接安装，它对 skills、agents、计划和验收流程的拆法，也很适合拿来改造自己的 AI 编程工作流。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Yeachan-Heo/oh-my-codex：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Getting Started：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/getting-started.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/getting-started.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Agent Catalog：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/agents.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/agents.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills Reference：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/skills.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/skills.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;v0.18.1 release：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/releases/tag/v0.18.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/releases/tag/v0.18.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>CLI-Anything：把软件变成 Agent 可用的命令行</title>
        <link>https://knightli.com/2026/05/25/cli-anything-agent-native-cli/</link>
        <pubDate>Mon, 25 May 2026 00:24:36 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/cli-anything-agent-native-cli/</guid>
        <description>&lt;p&gt;CLI-Anything 是 HKUDS 开源的 Agent 工具化项目，目标是把原本面向人类 GUI 操作的软件，转成 AI Agent 更容易调用的命令行接口。它不是重新实现一个简化版软件，而是围绕现有代码库和真实后端生成 CLI harness，让 Agent 可以通过稳定命令、状态会话和结构化输出来完成任务。&lt;/p&gt;
&lt;p&gt;这个方向解决的是 Agent 使用软件时最常见的断层：GUI 自动化依赖截图、点击和坐标，容易受界面变化影响；单个 API 又经常覆盖不完整，Agent 需要自己拼接大量上下文。CLI-Anything 选择把软件能力收敛成命令行，因为命令天然适合被模型读取、组合、验证，也便于接入脚本和自动化流程。&lt;/p&gt;
&lt;h2 id=&#34;它怎么工作&#34;&gt;它怎么工作
&lt;/h2&gt;&lt;p&gt;官方仓库把 CLI-Anything 描述为一套自动生成 CLI 的流水线。给它一个本地软件源码路径或 GitHub 仓库地址后，流程会分析代码结构、识别后端和数据模型，设计命令分组，再实现 CLI、测试和文档。&lt;/p&gt;
&lt;p&gt;生成出来的 CLI 通常包含两种使用方式：一种是面向连续工作的 REPL，会保留项目状态；另一种是子命令模式，适合脚本和流水线。命令还会提供 JSON 输出，方便 Agent 直接解析结果，同时保留人类可读的格式用于调试。&lt;/p&gt;
&lt;p&gt;官方示例里，Claude Code 插件可以这样使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin marketplace add HKUDS/CLI-Anything
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin install cli-anything
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/cli-anything &amp;lt;software-path-or-repo&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果已经生成某个软件的 harness，后续使用方式会更接近普通 Python CLI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd &amp;lt;software&amp;gt;/agent-harness
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cli-anything-&amp;lt;software&amp;gt; --help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cli-anything-&amp;lt;software&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cli-anything-&amp;lt;software&amp;gt; --json &amp;lt;command&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;CLI-Anything 更适合那些“能力在真实软件里，但 Agent 不好稳定操作”的场景。例如图像、视频、音频、办公文档、3D 建模、数据分析或 AI/ML 工具链，只要项目有可分析的代码库、可调用的后端或清晰的数据模型，就有机会被包装成 Agent 可用的命令集。&lt;/p&gt;
&lt;p&gt;它的价值不只是在命令行里多一层封装，而是把软件的关键操作变成可发现、可组合、可测试的接口。Agent 可以先通过 &lt;code&gt;--help&lt;/code&gt; 理解能力，再用 JSON 输出接收结果，并把多个命令串成工作流。对于需要批处理、自动验证和持续迭代的任务，这比临时让 Agent 点击界面更可控。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的边界&#34;&gt;需要注意的边界
&lt;/h2&gt;&lt;p&gt;CLI-Anything 并不等于任何软件都能立刻无成本接入。它依赖目标软件的源码、后端能力、文件格式和可测试性；如果一个软件高度封闭、关键逻辑只存在于 GUI 层，生成高质量 CLI 的难度会明显上升。&lt;/p&gt;
&lt;p&gt;官方方法论也强调真实后端和测试验证，这意味着生成 harness 不是只写几个命令包装脚本就结束。要让它用于严肃工作，还需要确认命令覆盖范围、输出格式、依赖安装、真实软件调用和端到端测试是否可靠。更现实的用法，是先为一个明确工作流生成 CLI，再通过 refine、test、validate 等命令逐步补齐能力。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;CLI-Anything 的思路很直接：不要让 Agent 去适应脆弱的人类界面，而是为现有软件补上一层稳定、结构化、可测试的命令行入口。它适合想把专业软件纳入 Agent 工作流的人，也适合研究“Agent 原生软件”形态的开发者。真正落地时，重点不在于一句命令生成了多少代码，而在于生成的 CLI 是否能调用真实能力、保持状态、输出结构化结果，并经得起测试。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GitHub Spec Kit 是什么？用规格驱动开发约束 AI 编程</title>
        <link>https://knightli.com/2026/05/25/github-spec-kit-spec-driven-development/</link>
        <pubDate>Mon, 25 May 2026 00:19:14 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/github-spec-kit-spec-driven-development/</guid>
        <description>&lt;p&gt;GitHub 的 &lt;strong&gt;Spec Kit&lt;/strong&gt; 是一个面向 AI 编程的新工具包，目标是帮助开发者实践 &lt;strong&gt;Spec-Driven Development&lt;/strong&gt;，也就是规格驱动开发。&lt;/p&gt;
&lt;p&gt;它解决的问题很直接：现在很多 AI 编程工作流太像“边聊边写”。人类给一个大概想法，Agent 立刻开始改代码，短期看很快，但需求边界、验收标准、技术取舍和任务拆分往往没有沉淀下来。项目稍微复杂一点，就容易变成一次性的 vibe coding。&lt;/p&gt;
&lt;p&gt;Spec Kit 的思路是反过来：先把规格写清楚，再进入计划、任务和实现。代码不再是第一步，规格才是第一步。&lt;/p&gt;
&lt;h2 id=&#34;spec-kit-是什么&#34;&gt;Spec Kit 是什么？
&lt;/h2&gt;&lt;p&gt;Spec Kit 是 GitHub 开源的规格驱动开发工具包。它提供 &lt;code&gt;specify&lt;/code&gt; CLI、模板、脚本和面向 AI coding agent 的命令，让团队可以围绕同一套结构化产物推进开发。&lt;/p&gt;
&lt;p&gt;它强调的不是“让 AI 少问问题”，而是让 AI 在写代码前先生成并完善这些内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目原则：团队对质量、测试、体验、性能等方面的约束；&lt;/li&gt;
&lt;li&gt;功能规格：要做什么、为什么做、用户故事和功能需求；&lt;/li&gt;
&lt;li&gt;技术计划：使用什么技术栈、如何落地、有哪些架构决策；&lt;/li&gt;
&lt;li&gt;任务清单：把计划拆成可执行步骤；&lt;/li&gt;
&lt;li&gt;实现过程：按任务逐步修改代码，而不是一次性乱改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套流程让 AI 编程更像工程协作，而不是一次提示词表演。&lt;/p&gt;
&lt;h2 id=&#34;基本使用流程&#34;&gt;基本使用流程
&lt;/h2&gt;&lt;p&gt;官方 README 给出的入门流程大致是这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;specify init my-project --integration copilot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初始化后，项目里会生成 &lt;code&gt;.specify&lt;/code&gt; 目录、模板、脚本和与 Agent 集成的命令。随后在支持的 AI coding agent 中使用 &lt;code&gt;/speckit.*&lt;/code&gt; 命令推进开发。&lt;/p&gt;
&lt;p&gt;典型顺序是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.constitution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.specify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.clarify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.tasks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.implement
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;/speckit.constitution&lt;/code&gt; 用来建立项目原则，&lt;code&gt;/speckit.specify&lt;/code&gt; 描述产品需求，&lt;code&gt;/speckit.clarify&lt;/code&gt; 补齐模糊点，&lt;code&gt;/speckit.plan&lt;/code&gt; 生成技术计划，&lt;code&gt;/speckit.tasks&lt;/code&gt; 拆任务，最后由 &lt;code&gt;/speckit.implement&lt;/code&gt; 执行实现。&lt;/p&gt;
&lt;p&gt;这和直接对 Agent 说“帮我做一个应用”差别很大。Spec Kit 要求你把“做什么”和“怎么验收”先说清楚，再让 Agent 动手。&lt;/p&gt;
&lt;h2 id=&#34;它改变了-ai-编程的入口&#34;&gt;它改变了 AI 编程的入口
&lt;/h2&gt;&lt;p&gt;传统 AI 编程经常从代码开始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我想做一个任务管理应用，帮我写出来。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Spec Kit 更像这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先定义这个任务管理应用的用户、场景、功能边界、验收标准和非目标；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;再根据这些规格选择技术方案；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;然后拆成任务；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最后逐步实现。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个变化很重要。因为 AI 最擅长根据上下文执行，但如果上下文本身是松散的，执行速度越快，偏离方向也可能越快。Spec Kit 把上下文变成文件和模板，让需求、计划和任务都能被 review、修改和版本管理。&lt;/p&gt;
&lt;p&gt;换句话说，它不是让 AI 更“自由”，而是让 AI 在更清晰的工程轨道上自由发挥。&lt;/p&gt;
&lt;h2 id=&#34;核心命令怎么理解&#34;&gt;核心命令怎么理解？
&lt;/h2&gt;&lt;h3 id=&#34;speckitconstitution&#34;&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是项目的“宪法”。它会生成或更新 &lt;code&gt;.specify/memory/constitution.md&lt;/code&gt;，用于记录项目长期遵守的原则，例如代码质量、测试标准、用户体验一致性、性能要求和技术决策规则。&lt;/p&gt;
&lt;p&gt;这一步适合写团队共识，而不是单个功能需求。&lt;/p&gt;
&lt;h3 id=&#34;speckitspecify&#34;&gt;&lt;code&gt;/speckit.specify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是功能规格阶段。你需要描述要构建什么、用户是谁、解决什么问题、有哪些核心流程。&lt;/p&gt;
&lt;p&gt;官方特别强调：这一阶段不要过早关注技术栈。先把 what 和 why 写清楚，再讨论 how。&lt;/p&gt;
&lt;h3 id=&#34;speckitclarify&#34;&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是补问题的阶段。很多需求第一次写出来都会有空洞：权限怎么处理？异常状态是什么？数据是否持久化？边界条件如何验收？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt; 的价值，是让 Agent 主动发现规格中的不确定点，并把回答记录回规格文档，减少后面返工。&lt;/p&gt;
&lt;h3 id=&#34;speckitplan&#34;&gt;&lt;code&gt;/speckit.plan&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是技术计划阶段。到了这里，才开始明确框架、数据库、架构、API、测试策略和约束。&lt;/p&gt;
&lt;p&gt;如果说 &lt;code&gt;/speckit.specify&lt;/code&gt; 是产品语言，&lt;code&gt;/speckit.plan&lt;/code&gt; 就是工程语言。&lt;/p&gt;
&lt;h3 id=&#34;speckittasks&#34;&gt;&lt;code&gt;/speckit.tasks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这一步把计划拆成可执行任务。好的任务清单应该能让 Agent 逐步推进，也能让人类看懂每一步的目的。&lt;/p&gt;
&lt;h3 id=&#34;speckitimplement&#34;&gt;&lt;code&gt;/speckit.implement&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;最后才进入实现。Agent 根据前面沉淀的规格、计划和任务修改代码。这时它不再是凭一段大 prompt 猜需求，而是在一组结构化文档里执行。&lt;/p&gt;
&lt;h2 id=&#34;为什么它适合-ai-编程&#34;&gt;为什么它适合 AI 编程？
&lt;/h2&gt;&lt;p&gt;Spec Kit 的价值不在于某个神奇命令，而在于它把 AI 编程中最容易缺失的东西补了回来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求可审查；&lt;/li&gt;
&lt;li&gt;计划可讨论；&lt;/li&gt;
&lt;li&gt;任务可追踪；&lt;/li&gt;
&lt;li&gt;决策有上下文；&lt;/li&gt;
&lt;li&gt;产物可以进入 Git 历史；&lt;/li&gt;
&lt;li&gt;团队可以复用模板和原则；&lt;/li&gt;
&lt;li&gt;Agent 的实现不再只依赖一次性聊天记录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这对复杂项目尤其有用。越是多人协作、长期维护、质量要求高的项目，越不能只靠临时 prompt 驱动开发。&lt;/p&gt;
&lt;h2 id=&#34;扩展和-preset&#34;&gt;扩展和 Preset
&lt;/h2&gt;&lt;p&gt;Spec Kit 还提供了两类自定义能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt;：增加新命令、新模板或外部工具集成；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presets&lt;/strong&gt;：改变现有规格、计划、任务模板的格式和术语。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单理解：如果要新增能力，用 Extension；如果要改造工作流风格，用 Preset。&lt;/p&gt;
&lt;p&gt;例如，团队可以通过 Preset 强制加入安全审查、监管追踪、领域术语或测试优先规则；也可以通过 Extension 增加 Jira 集成、代码审查、项目健康检查等新阶段。&lt;/p&gt;
&lt;p&gt;这说明 Spec Kit 并不想把所有团队锁进同一种流程，而是提供一个可扩展的规格驱动骨架。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用？
&lt;/h2&gt;&lt;p&gt;Spec Kit 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 AI coding agent 做新项目原型；&lt;/li&gt;
&lt;li&gt;想把 vibe coding 变成可复盘流程；&lt;/li&gt;
&lt;li&gt;团队希望统一 AI 生成代码前的需求和计划格式；&lt;/li&gt;
&lt;li&gt;项目需要明确验收标准和测试要求；&lt;/li&gt;
&lt;li&gt;希望把需求、计划、任务和实现过程都纳入版本管理；&lt;/li&gt;
&lt;li&gt;正在探索 GitHub Copilot、Claude Code、Codex CLI 等工具的团队化用法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定适合非常小的一次性脚本。对于几行代码能解决的问题，完整规格流程可能显得重。但只要任务开始涉及多个页面、多个模块、状态管理、权限、数据模型或长期维护，Spec Kit 的结构化收益就会变明显。&lt;/p&gt;
&lt;h2 id=&#34;我的理解&#34;&gt;我的理解
&lt;/h2&gt;&lt;p&gt;Spec Kit 代表的是 AI 编程工具的一种重要转向：从“让 Agent 更快写代码”，转向“让 Agent 更可靠地参与软件工程”。&lt;/p&gt;
&lt;p&gt;过去的 AI 编程关注提示词和模型能力；Spec Kit 更关注流程、产物和约束。它提醒我们：AI 写代码越快，规格、计划和验收就越不能省。&lt;/p&gt;
&lt;p&gt;如果你已经习惯让 AI 直接实现功能，可以尝试用 Spec Kit 改变起手式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;先让 AI 帮你把需求写成规格，再让它写代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这一步看似变慢，实际是在减少后面“代码写完了，但不是我想要的”的返工。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/github/spec-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github/spec-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI Symphony 是什么？Codex 编排、Issue 驱动与 AI Agent 开发工作流</title>
        <link>https://knightli.com/2026/05/25/openai-codex-orchestration-symphony/</link>
        <pubDate>Mon, 25 May 2026 00:17:32 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/25/openai-codex-orchestration-symphony/</guid>
        <description>&lt;p&gt;OpenAI 最近开源了一个很有意思的 Codex 编排规范：&lt;strong&gt;Symphony&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它不是另一个聊天式编程助手，也不是一个完整的新 IDE。更准确地说，Symphony 是一套面向 Codex 的“工作编排方式”：把类似 Linear 的 issue tracker 变成编程智能体的控制平面，让每一个未关闭的任务都能对应一个持续运行的 Agent。&lt;/p&gt;
&lt;p&gt;官方文章里有一句话很能概括它的方向：过去工程师要同时盯着多个 Codex 会话，不断分配任务、审查输出、纠偏和重启；Symphony 想解决的，正是这个上下文切换瓶颈。&lt;/p&gt;
&lt;h2 id=&#34;symphony-解决的不是写代码而是管理-agent&#34;&gt;Symphony 解决的不是写代码，而是管理 Agent
&lt;/h2&gt;&lt;p&gt;单个 Codex 会话适合交互式开发：你给它一个任务，它修改代码，你 review，再继续追问。但当团队开始同时使用多个 Agent 时，问题会从“代码能不能写出来”变成“谁在做哪件事、做到哪一步、失败后谁来接手”。&lt;/p&gt;
&lt;p&gt;OpenAI 的做法是把工作重心从“会话”切到“任务”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;issue 是真正的工作单元；&lt;/li&gt;
&lt;li&gt;每个未关闭 issue 都可以映射到一个独立 Agent 工作空间；&lt;/li&gt;
&lt;li&gt;Symphony 负责持续轮询任务看板，决定哪些任务需要启动、重试、停止或回收；&lt;/li&gt;
&lt;li&gt;Codex 在工作空间里执行实现、测试、提交、创建 PR、更新状态等动作；&lt;/li&gt;
&lt;li&gt;人类不再微操每个会话，而是审查结果、调整目标和维护边界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这背后的变化很关键：Agent 不再只是一个被人类临时唤起的工具，而是开发流程里持续运行的一类执行者。&lt;/p&gt;
&lt;h2 id=&#34;为什么是-issue-tracker&#34;&gt;为什么是 issue tracker？
&lt;/h2&gt;&lt;p&gt;因为团队已经用 issue tracker 管理真实工作。&lt;/p&gt;
&lt;p&gt;需求、bug、重构、迁移、调研、优先级、阻塞关系、负责人、里程碑，这些信息本来就沉淀在 Linear、GitHub Issues 或类似系统里。Symphony 没有重新发明一个庞大的控制台，而是把这些现有系统当作 Agent 的任务入口。&lt;/p&gt;
&lt;p&gt;这样做有几个好处：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;工作不必从 issue 复制到聊天窗口里。&lt;/li&gt;
&lt;li&gt;人类可以继续按熟悉的方式创建、拆分、排期和关闭任务。&lt;/li&gt;
&lt;li&gt;Agent 的状态变化能回写到同一个工作系统里，方便团队异步协作。&lt;/li&gt;
&lt;li&gt;任务依赖可以自然形成 DAG，让未阻塞的任务并行推进。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果把传统 CI 看成“代码提交后的自动化”，Symphony 更像是“issue 创建后的自动化”。&lt;/p&gt;
&lt;h2 id=&#34;它的核心工作流&#34;&gt;它的核心工作流
&lt;/h2&gt;&lt;p&gt;一个典型的 Symphony 流程可以理解为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;创建 issue
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Symphony 轮询到可执行任务
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 为该 issue 创建独立 workspace
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 启动 Codex agent session
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Agent 阅读任务、修改代码、运行测试
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 创建或更新 PR
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 写回任务状态、评论、证据和交付物
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 人类 review、合并或要求修改
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方规范里还强调了几个工程化点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个 issue 使用独立工作空间，降低相互污染；&lt;/li&gt;
&lt;li&gt;编排器维护重试、并发和恢复状态；&lt;/li&gt;
&lt;li&gt;工作流策略放在仓库内的 &lt;code&gt;WORKFLOW.md&lt;/code&gt;，让团队把 Agent 应该如何处理任务写成可版本化的规则；&lt;/li&gt;
&lt;li&gt;实现需要保留可观测性，至少要有结构化日志；&lt;/li&gt;
&lt;li&gt;成功状态不一定是 &lt;code&gt;Done&lt;/code&gt;，也可以是交给人类 review 的中间状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明 Symphony 不是简单地“让 AI 自动写代码”，而是在定义一套可运行、可恢复、可审计的 Agent 工作系统。&lt;/p&gt;
&lt;h2 id=&#34;目标驱动而不是死板状态机&#34;&gt;目标驱动，而不是死板状态机
&lt;/h2&gt;&lt;p&gt;OpenAI 在文章里提到一个重要转变：早期他们尝试把很多动作写死在外层 harness 里，例如提交代码、跑测试、处理 GitHub 流程。但随着 Codex 能力增强，这种方式反而限制了 Agent。&lt;/p&gt;
&lt;p&gt;后来的方向是给 Agent 设定目标，而不是把每一步都写成固定状态转换。&lt;/p&gt;
&lt;p&gt;比如，一个任务的目标可以是“完成 Vite 迁移并确保 CI 通过”。Agent 可以自己判断是否需要改配置、修测试、读 CI 日志、处理 review feedback，甚至拆出新的后续 issue。Symphony 负责提供边界、上下文和运行框架，而不是替 Agent 规定每一个动作。&lt;/p&gt;
&lt;p&gt;这也是它和传统自动化脚本的区别：脚本擅长重复确定流程；Symphony 面向的是带有不确定性的工程任务。&lt;/p&gt;
&lt;h2 id=&#34;和普通-codex-使用方式有什么不同&#34;&gt;和普通 Codex 使用方式有什么不同？
&lt;/h2&gt;&lt;p&gt;普通 Codex 会话更像“人带着 AI 写代码”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人类打开会话；&lt;/li&gt;
&lt;li&gt;人类描述任务；&lt;/li&gt;
&lt;li&gt;人类观察输出；&lt;/li&gt;
&lt;li&gt;人类随时纠偏；&lt;/li&gt;
&lt;li&gt;任务结束后再开下一个会话。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Symphony 更像“团队把任务池交给一组 Agent 执行”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人类写清楚 issue；&lt;/li&gt;
&lt;li&gt;系统持续发现可执行任务；&lt;/li&gt;
&lt;li&gt;Agent 在独立环境里推进；&lt;/li&gt;
&lt;li&gt;结果以 PR、评论、测试状态、视频或分析报告的形式返回；&lt;/li&gt;
&lt;li&gt;人类在关键节点做 review。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是替代工程师，而是把工程师从“同时照看多个会话”的负担里解放出来。OpenAI 在官方文章中提到，在部分团队中，合并到主分支的 PR 数量有明显提升；但更值得注意的是工作方式的变化：试验一个想法、发起一次重构、验证一个假设的启动成本变低了。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景？
&lt;/h2&gt;&lt;p&gt;Symphony 更适合这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常规功能实现；&lt;/li&gt;
&lt;li&gt;已有代码库里的小型重构；&lt;/li&gt;
&lt;li&gt;基础设施迁移；&lt;/li&gt;
&lt;li&gt;依赖升级；&lt;/li&gt;
&lt;li&gt;测试补齐；&lt;/li&gt;
&lt;li&gt;CI 修复；&lt;/li&gt;
&lt;li&gt;调研后生成实现计划；&lt;/li&gt;
&lt;li&gt;根据 review feedback 继续修改 PR。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定适合高度模糊、需要强业务判断或架构拍板的任务。对这类问题，交互式 Codex 会话仍然更自然，因为人类需要在过程中持续参与。&lt;/p&gt;
&lt;h2 id=&#34;风险和边界&#34;&gt;风险和边界
&lt;/h2&gt;&lt;p&gt;Symphony 的吸引力很强，但真正落地时不能只看“自动化”这一面。&lt;/p&gt;
&lt;p&gt;几个边界要提前想清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;issue 必须写清楚，否则 Agent 会把模糊需求放大成错误实现；&lt;/li&gt;
&lt;li&gt;Agent 的权限要收敛，尤其是仓库、密钥、生产环境和第三方服务访问；&lt;/li&gt;
&lt;li&gt;每个工作空间要隔离，避免多个任务相互污染；&lt;/li&gt;
&lt;li&gt;CI、测试、lint 和 review 仍然是必须的质量门；&lt;/li&gt;
&lt;li&gt;任务状态、PR 链接、日志和失败原因要可追踪；&lt;/li&gt;
&lt;li&gt;人类 review 不能省，尤其是涉及安全、计费、数据迁移和权限逻辑的改动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方仓库也把 Symphony 定位为 trusted environment 里的工程预览和参考实现，而不是一个拿来就能无脑替代研发流程的成品平台。&lt;/p&gt;
&lt;h2 id=&#34;我对-symphony-的理解&#34;&gt;我对 Symphony 的理解
&lt;/h2&gt;&lt;p&gt;Symphony 最有价值的地方，不在于它用了 Linear，也不在于参考实现选择了 Elixir，而在于它重新定义了编程 Agent 的入口。&lt;/p&gt;
&lt;p&gt;过去我们习惯从聊天窗口启动 AI 编程：这很灵活，但规模一大，人类注意力就成了瓶颈。Symphony 把入口放回 issue tracker，让 Agent 围绕真实任务持续工作。这样一来，AI 编程从“个人效率工具”开始向“团队工作流基础设施”靠近。&lt;/p&gt;
&lt;p&gt;如果你已经在使用 Codex、Claude Code、Cursor Agent 或类似工具，Symphony 值得关注的不是某个具体实现，而是它背后的模式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不要只管理 Agent 会话，要管理需要完成的工作。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这可能会成为下一阶段 AI 编程工具的关键分水岭。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/zh-Hans-CN/index/open-source-codex-orchestration-symphony/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex 编排的开源规范：Symphony&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/symphony&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;openai/symphony&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Qwen3.6-35B-A3B 越狱版本地部署：无审查 GGUF、llama.cpp 与安全边界</title>
        <link>https://knightli.com/2026/05/24/qwen36-35b-a3b-local-deployment-llamacpp-gguf/</link>
        <pubDate>Sun, 24 May 2026 23:52:16 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/qwen36-35b-a3b-local-deployment-llamacpp-gguf/</guid>
        <description>&lt;p&gt;零度博客最近介绍了一款热度很高的本地模型：&lt;code&gt;Qwen3.6-35B-A3B Uncensored HauhauCS Aggressive&lt;/code&gt;。原文把它称为“越狱版”“无审查”开源模型，并给出了 GGUF 量化包、llama.cpp 启动方式和 Agent 对接思路。&lt;/p&gt;
&lt;p&gt;这类模型值得关注，但更适合冷静理解：它的重点不只是“限制少”，而是把几个本地 AI 关键能力放到了一起：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MoE 架构下的 35B 级模型。&lt;/li&gt;
&lt;li&gt;GGUF 量化后可在消费级显卡上运行。&lt;/li&gt;
&lt;li&gt;通过 llama.cpp 提供 OpenAI API 兼容接口。&lt;/li&gt;
&lt;li&gt;搭配 &lt;code&gt;mmproj&lt;/code&gt; 支持多模态视觉输入。&lt;/li&gt;
&lt;li&gt;可以接入 Hermes、OpenClaw 等本地 Agent 工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你关心本地模型，这篇更值得看的不是“越狱”噱头，而是它代表的趋势：本地模型正在从“能聊天”走向“能接入工具、能看图、能做 Agent 后端”。&lt;/p&gt;
&lt;h2 id=&#34;这个模型是什么&#34;&gt;这个模型是什么
&lt;/h2&gt;&lt;p&gt;原文提到的模型全名是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen3.6-35B-A3B Uncensored HauhauCS Aggressive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;从名字可以拆出几个关键信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6&lt;/code&gt;：基于 Qwen 系列模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;35B&lt;/code&gt;：总参数规模约 35B。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;A3B&lt;/code&gt;：每次推理激活参数约 3B，属于 MoE 思路。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Uncensored&lt;/code&gt; / &lt;code&gt;Aggressive&lt;/code&gt;：经过更少安全限制或更激进风格调整的版本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GGUF&lt;/code&gt;：面向 llama.cpp 等本地推理工具的量化格式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里要特别注意：&lt;code&gt;Uncensored&lt;/code&gt; 并不等于“更可靠”。它通常意味着模型更少拒答，也更可能生成不受约束、未经事实核验或有风险的内容。对技术研究来说可以实验，但不适合直接接入公开服务、生产系统或无人值守任务。&lt;/p&gt;
&lt;h2 id=&#34;为什么-35b-模型还能在本地跑&#34;&gt;为什么 35B 模型还能在本地跑
&lt;/h2&gt;&lt;p&gt;很多人看到 &lt;code&gt;35B&lt;/code&gt; 会以为必须用服务器或高端多卡机器。原文强调的关键点是：这个模型采用 MoE 架构。&lt;/p&gt;
&lt;p&gt;MoE 可以简单理解为：模型总参数很大，但每次推理不会激活全部参数，而是只激活其中一部分专家。原文称它每次实际运行大约激活 3B 参数，因此在一定量化下，速度和显存压力会比传统 dense 35B 模型低很多。&lt;/p&gt;
&lt;p&gt;再叠加 GGUF 量化后，它就有机会在消费级显卡上运行。原文提到最小量化版本约 11GB，6G/8G 显存也能尝试，但更建议至少 8G 显存。&lt;/p&gt;
&lt;p&gt;更现实的理解是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6G 显存：可以尝试低比特量化，但上下文和速度都要降低预期。&lt;/li&gt;
&lt;li&gt;8G 显存：更适合入门测试，建议选更小量化。&lt;/li&gt;
&lt;li&gt;16G 显存：体验会明显宽松，适合更长上下文和更多 GPU offload。&lt;/li&gt;
&lt;li&gt;24G 显存：更适合 Q4_K_M、Q4_K_P 这类质量更好的量化版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本地模型能不能“好用”，不能只看能不能启动，还要看上下文长度、生成速度、显存余量、KV cache、是否启用多模态、并发需求和实际任务类型。&lt;/p&gt;
&lt;h2 id=&#34;推荐量化怎么理解&#34;&gt;推荐量化怎么理解
&lt;/h2&gt;&lt;p&gt;原文给出的选择大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_K_P&lt;/code&gt;：更适合 RTX 4090 等 24G 显存机器。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;：偏稳定、质量较好。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IQ4_NL&lt;/code&gt;：高压缩同时尽量保留质量。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IQ2_M&lt;/code&gt;：面向 6G/8G 显存用户。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以把它理解为质量和资源占用的取舍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Q4 类量化通常质量更稳，但显存占用更高。&lt;/li&gt;
&lt;li&gt;IQ2 / IQ3 类量化更省资源，但回答质量、长文本稳定性和细节能力可能下降。&lt;/li&gt;
&lt;li&gt;如果你只是测试 Agent 调用和本地 API，低量化可以先跑通流程。&lt;/li&gt;
&lt;li&gt;如果你要长时间写代码、读图、做复杂推理，尽量选更高质量量化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要只因为“能跑”就认为“适合长期用”。低显存能启动是一回事，能否稳定完成任务是另一回事。&lt;/p&gt;
&lt;h2 id=&#34;llamacpp-部署思路&#34;&gt;llama.cpp 部署思路
&lt;/h2&gt;&lt;p&gt;原文推荐使用 &lt;code&gt;llama.cpp&lt;/code&gt;，原因是它支持 Windows、Linux、macOS，也支持 NVIDIA CUDA、AMD、Intel、Vulkan 和纯 CPU 等多种后端。&lt;/p&gt;
&lt;p&gt;一个典型启动方式类似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;模型路径.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-mmproj&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mmproj.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-c&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;131072&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;8192&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-host&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-port&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;8080&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-jinja&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;几个参数值得单独理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-m&lt;/code&gt;：主模型 GGUF 文件路径。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--mmproj&lt;/code&gt;：多模态投影文件，启用视觉能力时需要。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-ngl&lt;/code&gt;：尽量把层 offload 到 GPU，具体效果取决于显存和后端。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c&lt;/code&gt;：上下文长度，越大越吃内存和显存。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-n&lt;/code&gt;：单次生成 token 上限。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--host 127.0.0.1&lt;/code&gt;：只监听本机，安全性比暴露公网高。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port 8080&lt;/code&gt;：本地 API 服务端口。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--jinja&lt;/code&gt;：新版 Qwen 模型常需要正确聊天模板，否则可能出现格式错乱、重复或中文异常。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里最容易踩坑的是上下文长度。&lt;code&gt;-c 131072&lt;/code&gt; 看起来很诱人，但长上下文会显著增加 KV cache 占用。低显存机器不建议盲目拉满，应该先用较小上下文跑通，再逐步增加。&lt;/p&gt;
&lt;h2 id=&#34;多模态能力怎么用&#34;&gt;多模态能力怎么用
&lt;/h2&gt;&lt;p&gt;原文提到这个版本支持多模态视觉识图，可以分析图片、截图、OCR、复杂 UI 和代码截图。&lt;/p&gt;
&lt;p&gt;在 llama.cpp 里，多模态通常需要主模型和 &lt;code&gt;mmproj&lt;/code&gt; 文件配套。没有正确加载 &lt;code&gt;--mmproj&lt;/code&gt; 时，前端里的图片上传能力可能不可用，或者模型无法正确理解图像。&lt;/p&gt;
&lt;p&gt;多模态本地模型的实用场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析截图里的 UI。&lt;/li&gt;
&lt;li&gt;OCR 识别图片文本。&lt;/li&gt;
&lt;li&gt;阅读代码截图或报错截图。&lt;/li&gt;
&lt;li&gt;给本地 Agent 提供视觉输入。&lt;/li&gt;
&lt;li&gt;在不上传云端的情况下处理隐私图片。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也有边界：视觉理解不等于严格 OCR，不适合作为唯一事实来源。涉及账单、合同、证件、医疗图像等高风险内容时，仍然需要人工复核。&lt;/p&gt;
&lt;h2 id=&#34;openai-api-兼容接口&#34;&gt;OpenAI API 兼容接口
&lt;/h2&gt;&lt;p&gt;llama.cpp 的 &lt;code&gt;llama-server&lt;/code&gt; 可以提供类似 OpenAI API 的本地接口。原文给出的本地 base URL 是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这意味着很多支持自定义 OpenAI-compatible provider 的工具，可以把请求转到本地模型上。API key 通常可以随便填一个占位值，具体取决于客户端是否强制校验。&lt;/p&gt;
&lt;p&gt;这类能力的意义很大：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不需要云端 API key。&lt;/li&gt;
&lt;li&gt;不产生按 token 计费。&lt;/li&gt;
&lt;li&gt;数据可以留在本机。&lt;/li&gt;
&lt;li&gt;可以接入本地 Agent、代码助手或聊天前端。&lt;/li&gt;
&lt;li&gt;可以作为 OpenAI API 的本地替代后端做实验。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但不要把本地接口直接暴露到公网。即使模型在本地，API 一旦开放到局域网或公网，也可能被别人滥用，导致机器资源被打满，甚至让模型输出你不希望生成的内容。&lt;/p&gt;
&lt;h2 id=&#34;对接-hermes-和-openclaw-的意义&#34;&gt;对接 Hermes 和 OpenClaw 的意义
&lt;/h2&gt;&lt;p&gt;原文提到，将这个本地模型接入 Hermes 或 OpenClaw，才能真正体现它的价值。&lt;/p&gt;
&lt;p&gt;这句话的意思是：模型本身只是推理核心，Agent 工具才负责把它接到真实任务里。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写代码。&lt;/li&gt;
&lt;li&gt;调用工具。&lt;/li&gt;
&lt;li&gt;读取文件。&lt;/li&gt;
&lt;li&gt;分析图片。&lt;/li&gt;
&lt;li&gt;联网搜索。&lt;/li&gt;
&lt;li&gt;执行多步骤任务。&lt;/li&gt;
&lt;li&gt;维护长上下文工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本地模型如果只用来聊天，价值有限；如果能稳定作为 Agent 后端，才更接近“本地 AI 工作站”。&lt;/p&gt;
&lt;p&gt;不过，无审查模型接入 Agent 时要更谨慎。Agent 能操作文件、运行命令、访问网页、调用工具时，模型的输出会转化为真实动作。模型越少限制，越需要外层权限控制、人工确认和审计日志。&lt;/p&gt;
&lt;h2 id=&#34;无审查模型的风险边界&#34;&gt;无审查模型的风险边界
&lt;/h2&gt;&lt;p&gt;这类模型最大卖点通常是“少拒答”。但少拒答也意味着更大的风险。&lt;/p&gt;
&lt;p&gt;需要注意几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它可能更容易输出违法、危险或误导性内容。&lt;/li&gt;
&lt;li&gt;它可能不会主动提醒安全边界。&lt;/li&gt;
&lt;li&gt;它可能在高风险问题上给出过度自信的建议。&lt;/li&gt;
&lt;li&gt;它可能被提示词诱导执行不合适的任务。&lt;/li&gt;
&lt;li&gt;它不适合直接面向公众开放。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更稳妥的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只在本机或受控局域网内测试。&lt;/li&gt;
&lt;li&gt;不把它接入高权限工具。&lt;/li&gt;
&lt;li&gt;不让它自动执行删除、支付、发帖、批量提交等不可逆操作。&lt;/li&gt;
&lt;li&gt;给 Agent 工具设置文件、命令、网络和浏览器权限边界。&lt;/li&gt;
&lt;li&gt;对高风险输出保持人工复核。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，越是“自由”的模型，越需要外层系统约束。&lt;/p&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;这类模型适合以下用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究本地大模型部署的人。&lt;/li&gt;
&lt;li&gt;有 8G 以上显存，愿意折腾 GGUF 和 llama.cpp 的用户。&lt;/li&gt;
&lt;li&gt;想把本地模型接入 OpenAI-compatible 客户端的人。&lt;/li&gt;
&lt;li&gt;关注本地多模态、截图分析和 Agent 后端的人。&lt;/li&gt;
&lt;li&gt;想离线处理部分隐私数据的开发者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合以下场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全不想调参数的新手。&lt;/li&gt;
&lt;li&gt;需要稳定生产 SLA 的服务。&lt;/li&gt;
&lt;li&gt;对安全合规要求高的团队。&lt;/li&gt;
&lt;li&gt;需要严格事实可靠性的业务流程。&lt;/li&gt;
&lt;li&gt;想把模型直接公开给外部用户的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;简单结论&#34;&gt;简单结论
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-35B-A3B Uncensored HauhauCS Aggressive&lt;/code&gt; 这类模型的出现，说明本地 AI 的能力边界正在快速往前推：消费级显卡可以跑更大模型，GGUF 量化让部署门槛下降，llama.cpp 让本地模型具备 OpenAI API 兼容接口，多模态和 Agent 工具又把它从聊天推进到任务执行。&lt;/p&gt;
&lt;p&gt;但不要把它只理解成“越狱模型”。更有价值的角度是：本地 AI 正在成为可组合的基础设施。模型、推理引擎、API 服务、前端、Agent 工具、权限控制，会一起决定最终体验。&lt;/p&gt;
&lt;p&gt;如果你要尝试，建议先从低风险本地测试开始：选合适量化，降低上下文长度，确认 &lt;code&gt;--jinja&lt;/code&gt; 和 &lt;code&gt;--mmproj&lt;/code&gt; 配置正确，再接入客户端。等稳定后，再考虑接入 Agent 工作流。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;零度博客原文：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24284.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.freedidi.com/24284.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;llama.cpp GitHub：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>browser-harness 的 domain skills 机制：让 AI Agent 不再重复踩网页自动化的坑</title>
        <link>https://knightli.com/2026/05/24/browser-harness-domain-skills-summary/</link>
        <pubDate>Sun, 24 May 2026 23:43:35 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/browser-harness-domain-skills-summary/</guid>
        <description>&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; 最有意思的地方，不只是让 AI Agent 能控制真实 Chrome，而是它把网页操作中的经验变成了可以复用的 &lt;code&gt;domain skills&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这件事很关键。浏览器自动化真正困难的地方，往往不是“能不能点击按钮”，而是每个网站都有自己的细节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些页面必须登录。&lt;/li&gt;
&lt;li&gt;哪些数据可以直接走 API。&lt;/li&gt;
&lt;li&gt;哪些按钮用普通 DOM 点击无效。&lt;/li&gt;
&lt;li&gt;哪些 iframe、shadow DOM、弹窗会挡住流程。&lt;/li&gt;
&lt;li&gt;哪些选择器稳定，哪些只是临时 class。&lt;/li&gt;
&lt;li&gt;哪些操作涉及账号、支付或不可逆变更，必须让人确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些经验只留在一次任务日志里，Agent 下次还会重新踩坑。&lt;code&gt;domain skills&lt;/code&gt; 的作用，就是把这些经验沉淀下来，让 Agent 不必每次都像第一次打开网站。&lt;/p&gt;
&lt;h2 id=&#34;domain-skills-是什么&#34;&gt;domain skills 是什么
&lt;/h2&gt;&lt;p&gt;可以把 &lt;code&gt;domain skills&lt;/code&gt; 理解成“给 Agent 看的站点操作手册”。&lt;/p&gt;
&lt;p&gt;它不是普通的用户文档，也不是一次性脚本。它更像一组经过实测的站点级知识：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个站点适不适合用浏览器。&lt;/li&gt;
&lt;li&gt;如果有 API，应该优先用哪个 API。&lt;/li&gt;
&lt;li&gt;如果必须操作网页，应该从哪个 URL 进入。&lt;/li&gt;
&lt;li&gt;哪些 DOM 结构、aria-label、按钮行为经过验证。&lt;/li&gt;
&lt;li&gt;哪些常见写法会失败。&lt;/li&gt;
&lt;li&gt;哪些场景要停止并请求人类介入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类内容既能被人类审查，也能被 Agent 在任务中读取。它把“临场摸索”变成“可维护经验”。&lt;/p&gt;
&lt;h2 id=&#34;它不是让-agent-盲目点击&#34;&gt;它不是让 Agent 盲目点击
&lt;/h2&gt;&lt;p&gt;一个好的浏览器 Agent，不应该把所有问题都变成打开网页、看截图、点按钮。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 里很重要的一类经验，恰恰是在告诉 Agent：什么时候不要用浏览器。&lt;/p&gt;
&lt;p&gt;比如 ArXiv 这类站点，论文搜索、元数据和摘要可以通过 Atom API 或 HTML meta 标签直接拿到。用 HTTP 请求通常比打开浏览器更快、更稳，也更容易解析。&lt;/p&gt;
&lt;p&gt;GitHub 也是类似思路。仓库、用户、release 数据优先用 REST API；文件内容优先读 &lt;code&gt;raw.githubusercontent.com&lt;/code&gt;；只有 GitHub Trending 这类没有等价 API 的页面，才需要进入浏览器。&lt;/p&gt;
&lt;p&gt;这说明 browser-harness 的思路不是“浏览器万能”，而是把浏览器放在正确位置：当 API、HTTP、静态页面无法解决问题时，再让 Agent 操作真实页面。&lt;/p&gt;
&lt;h2 id=&#34;它记录的是站点级知识&#34;&gt;它记录的是站点级知识
&lt;/h2&gt;&lt;p&gt;传统自动化脚本通常围绕一次任务写，比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;打开页面 -&amp;gt; 输入关键词 -&amp;gt; 点击按钮 -&amp;gt; 下载文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种脚本可以完成任务，但经验很容易散落在代码里。站点一改版，脚本失效；换一个任务，很多经验也没法复用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 的粒度更接近站点级知识库。它关心的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Amazon 搜索结果里哪个容器选择器稳定。&lt;/li&gt;
&lt;li&gt;GitHub 哪些数据应该走 REST API。&lt;/li&gt;
&lt;li&gt;LinkedIn 邀请管理页的按钮 aria-label 有什么差异。&lt;/li&gt;
&lt;li&gt;Shopify Admin 里哪些页面是嵌入式 app。&lt;/li&gt;
&lt;li&gt;Shopify Polaris 输入框为什么不能只用普通 JS 设置 value。&lt;/li&gt;
&lt;li&gt;Browser Use Cloud 的浏览器实例如何创建、列出和清理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些经验不是一次任务的步骤，而是以后很多任务都会用到的判断依据。&lt;/p&gt;
&lt;h2 id=&#34;例子amazon-商品搜索&#34;&gt;例子：Amazon 商品搜索
&lt;/h2&gt;&lt;p&gt;Amazon 商品搜索的经验，重点不只是“怎么搜索商品”，而是哪些路径更稳定。&lt;/p&gt;
&lt;p&gt;比较可靠的做法是直接使用搜索 URL，而不是每次都打开首页再模拟输入。搜索结果可以从 &lt;code&gt;[data-component-type=&amp;quot;s-search-result&amp;quot;]&lt;/code&gt; 这样的容器中提取。字段提取也有细节：标题、价格、评分、评论数、是否赞助，都有各自更稳的 DOM 来源。&lt;/p&gt;
&lt;p&gt;这种经验对 Agent 很有价值。没有它时，Agent 可能会从截图里猜按钮、反复尝试选择器；有了它之后，Agent 可以直接进入更稳定的数据提取路径。&lt;/p&gt;
&lt;p&gt;更重要的是，这类 skill 还会记录陷阱。例如某些看似可用的选择器，在赞助结果或交叉推荐区域里会误读。这种坑只有实测过才知道。&lt;/p&gt;
&lt;h2 id=&#34;例子linkedin-邀请管理&#34;&gt;例子：LinkedIn 邀请管理
&lt;/h2&gt;&lt;p&gt;LinkedIn 这类站点更接近真实账号工作流，风险也更高。&lt;/p&gt;
&lt;p&gt;在邀请管理页里，Accept 和 Ignore 按钮的 &lt;code&gt;aria-label&lt;/code&gt; 格式不同，不能简单地从一个推导另一个。有些邀请卡片里的 Accept 控件甚至不是 &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;，而是 &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;，普通 CDP 点击不一定能触发接受动作。&lt;/p&gt;
&lt;p&gt;这种细节说明，真实网页自动化不是“定位到元素就结束”。按钮标签、事件绑定、软导航、组件实现方式，都会影响操作是否真的生效。&lt;/p&gt;
&lt;p&gt;对 Agent 来说，这类经验还有一个安全含义：涉及社交账号、邀请、消息、发帖的操作，不应该完全托管。skill 可以记录路径和陷阱，但批量接受邀请、对外发送内容、修改账号资料这类动作，最好保留人工确认。&lt;/p&gt;
&lt;h2 id=&#34;例子shopify-admin&#34;&gt;例子：Shopify Admin
&lt;/h2&gt;&lt;p&gt;Shopify Admin 的经验说明了另一个问题：后台系统往往不是一个页面，而是一堆嵌入式应用和复杂组件的组合。&lt;/p&gt;
&lt;p&gt;很多 Shopify app 会运行在 iframe 里。Polaris React 输入框、Web Components、嵌入式 app 的交互方式也不同。某些输入框不能只用 &lt;code&gt;element.value = ...&lt;/code&gt;，需要使用更接近真实键盘输入的 CDP keystrokes。&lt;/p&gt;
&lt;p&gt;这类 skill 的价值在于，它让 Agent 先判断当前页面属于哪类 UI，再选择合适的操作方式。&lt;/p&gt;
&lt;p&gt;同时，Shopify 的经验也强调“能不用浏览器就不用浏览器”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只读商品和库存数据，优先用 Storefront API。&lt;/li&gt;
&lt;li&gt;有 Admin API token 时，优先用 Admin API。&lt;/li&gt;
&lt;li&gt;编辑主题代码时，优先用 Shopify CLI。&lt;/li&gt;
&lt;li&gt;只有没有 API、一次性设置、探索后台时，才适合让浏览器介入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这才是成熟的 Agent 工具选择逻辑。&lt;/p&gt;
&lt;h2 id=&#34;例子browser-use-cloud&#34;&gt;例子：Browser Use Cloud
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 不只服务网页点击，也可以记录围绕浏览器运行时的 API 经验。&lt;/p&gt;
&lt;p&gt;Browser Use Cloud 的经验里，会记录如何通过 REST API 创建 cloud browser、列出正在运行的浏览器、清理 zombie browser、获取 liveUrl 和 cdpUrl 等信息。&lt;/p&gt;
&lt;p&gt;这说明 skill 的边界并不局限于“某个网页按钮怎么点”。只要某类任务会反复出现，而且有稳定做法，就可以沉淀成 skill：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 调用方式。&lt;/li&gt;
&lt;li&gt;鉴权头格式。&lt;/li&gt;
&lt;li&gt;请求和响应结构。&lt;/li&gt;
&lt;li&gt;已验证状态码。&lt;/li&gt;
&lt;li&gt;常见失败模式。&lt;/li&gt;
&lt;li&gt;清理和回收资源的方法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对 Agent 来说，这些都是可复用能力。&lt;/p&gt;
&lt;h2 id=&#34;为什么这比临场推理更可靠&#34;&gt;为什么这比临场推理更可靠
&lt;/h2&gt;&lt;p&gt;很多人期待大模型每次都能“自己看懂网页”。但真实任务里，只靠临场推理并不稳定。&lt;/p&gt;
&lt;p&gt;原因很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;网页 UI 经常变化。&lt;/li&gt;
&lt;li&gt;同一按钮可能有多种实现。&lt;/li&gt;
&lt;li&gt;看得见不代表点得动。&lt;/li&gt;
&lt;li&gt;能点击不代表操作真的生效。&lt;/li&gt;
&lt;li&gt;有些任务本来就应该用 API，而不是浏览器。&lt;/li&gt;
&lt;li&gt;有些操作需要人类确认，不能让模型自己决定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 把这些经验写成文件后，有几个好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人类可以 review。&lt;/li&gt;
&lt;li&gt;错误经验可以修正。&lt;/li&gt;
&lt;li&gt;同一站点的经验可以持续积累。&lt;/li&gt;
&lt;li&gt;新 Agent 可以直接继承旧经验。&lt;/li&gt;
&lt;li&gt;临时任务发现可以变成长期知识。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比把一切都塞进 prompt 或聊天上下文更稳。&lt;/p&gt;
&lt;h2 id=&#34;团队可以怎么用&#34;&gt;团队可以怎么用
&lt;/h2&gt;&lt;p&gt;如果把 browser-harness 用在团队里，&lt;code&gt;domain skills&lt;/code&gt; 可以变成一种轻量自动化知识库。&lt;/p&gt;
&lt;p&gt;比较适合沉淀的内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内部后台的登录后路径。&lt;/li&gt;
&lt;li&gt;报表导出流程。&lt;/li&gt;
&lt;li&gt;常见弹窗处理方式。&lt;/li&gt;
&lt;li&gt;哪些按钮需要人工确认。&lt;/li&gt;
&lt;li&gt;哪些页面有 API 替代方案。&lt;/li&gt;
&lt;li&gt;哪些选择器经过实测可靠。&lt;/li&gt;
&lt;li&gt;哪些任务不允许 Agent 自动执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类知识不必一开始就很完整。更实际的做法是从低风险、高频、可回滚的流程开始：先让 Agent 做只读、下载、整理、检查类任务。等流程稳定后，再把经验整理成 skill。&lt;/p&gt;
&lt;p&gt;对团队管理者来说，skill 文件还有一个好处：它让自动化边界变得可见。你可以审查 Agent 知道什么、能做什么、应该停在哪里。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的边界&#34;&gt;需要注意的边界
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 能提高 Agent 成功率，但它不应该让高风险操作完全自动化。&lt;/p&gt;
&lt;p&gt;几个边界要守住：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不记录密码、Cookie、token、客户数据和内部敏感 URL。&lt;/li&gt;
&lt;li&gt;支付、删除、批量提交、账号变更、对外发布内容，要保留人工确认。&lt;/li&gt;
&lt;li&gt;skill 要写明验证日期和适用范围。&lt;/li&gt;
&lt;li&gt;站点改版后，要允许 skill 失效并重新验证。&lt;/li&gt;
&lt;li&gt;不要把绕过风控、规避平台限制当成目标。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，domain skill 是让 Agent 更稳，不是让 Agent 无限制地做事。&lt;/p&gt;
&lt;h2 id=&#34;简单结论&#34;&gt;简单结论
&lt;/h2&gt;&lt;p&gt;browser-harness 的 &lt;code&gt;domain skills&lt;/code&gt; 机制说明了一件事：AI Agent 的浏览器自动化，不能只靠模型临场发挥。&lt;/p&gt;
&lt;p&gt;一个可用的浏览器 Agent，至少需要三层能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;底层控制能力：截图、点击、输入、下载、CDP、HTTP。&lt;/li&gt;
&lt;li&gt;站点级知识：API 优先级、稳定选择器、组件陷阱、登录边界。&lt;/li&gt;
&lt;li&gt;人类安全规则：凭据不交给模型，高风险操作要确认，敏感信息不写进 skill。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 补的是第二层。它让 Agent 带着验证过的经验进入网页任务，而不是每次都重新摸索。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;browser-harness domain skills：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Amazon product-search skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ArXiv scraping skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub scraping skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LinkedIn invitation-manager skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Shopify admin skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Browser Use Cloud skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>browser-harness、Playwright、Puppeteer 怎么选？浏览器自动化工具对比</title>
        <link>https://knightli.com/2026/05/24/browser-harness-playwright-puppeteer-comparison/</link>
        <pubDate>Sun, 24 May 2026 17:51:28 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/browser-harness-playwright-puppeteer-comparison/</guid>
        <description>&lt;p&gt;在浏览器自动化和自动化测试领域，&lt;code&gt;Playwright&lt;/code&gt; 和 &lt;code&gt;Puppeteer&lt;/code&gt; 是最常被拿来比较的两个工具。它们都可以控制浏览器、点击页面、抓取内容、生成截图或 PDF，也都和 Chrome DevTools Protocol 有很深关系。&lt;/p&gt;
&lt;p&gt;但如果把 &lt;code&gt;browser-use/browser-harness&lt;/code&gt; 放进来，问题就不只是“哪个测试框架更强”，而是变成了两类工具的对比：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Playwright&lt;/code&gt; / &lt;code&gt;Puppeteer&lt;/code&gt;：面向人类工程师写确定性脚本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;browser-harness&lt;/code&gt;：面向 AI Agent 操作真实浏览器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前者适合测试、爬虫和工程化自动化；后者更像给 Claude Code、Codex CLI、Gemini 这类 Agent 准备的浏览器控制层。&lt;/p&gt;
&lt;h2 id=&#34;playwright-和-puppeteer-的关系&#34;&gt;Playwright 和 Puppeteer 的关系
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Puppeteer&lt;/code&gt; 最早由 Google Chrome 团队推出，天然服务于 Chromium 和 Chrome 自动化。它的 API 简洁，生态成熟，特别适合围绕 Chrome 做截图、PDF、页面抓取和轻量自动化。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Playwright&lt;/code&gt; 由微软维护，背后团队和早期 Puppeteer 有很深渊源。它吸收了 Puppeteer 的很多经验，同时把跨浏览器、自动等待、上下文隔离、测试报告和调试工具链做得更完整。&lt;/p&gt;
&lt;p&gt;简单说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只围绕 Chrome 做轻量任务，&lt;code&gt;Puppeteer&lt;/code&gt; 仍然很顺手。&lt;/li&gt;
&lt;li&gt;做跨浏览器 E2E 测试、复杂 SPA 自动化和团队测试工程，&lt;code&gt;Playwright&lt;/code&gt; 通常更合适。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;核心区别总览&#34;&gt;核心区别总览
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;Puppeteer&lt;/th&gt;
          &lt;th&gt;Playwright&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;主导方&lt;/td&gt;
          &lt;td&gt;Google&lt;/td&gt;
          &lt;td&gt;Microsoft&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;浏览器支持&lt;/td&gt;
          &lt;td&gt;主要面向 Chrome / Chromium&lt;/td&gt;
          &lt;td&gt;Chromium、Firefox、WebKit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;语言支持&lt;/td&gt;
          &lt;td&gt;主要是 JavaScript / TypeScript&lt;/td&gt;
          &lt;td&gt;JavaScript / TypeScript、Python、Java、.NET&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自动等待&lt;/td&gt;
          &lt;td&gt;需要更多显式等待&lt;/td&gt;
          &lt;td&gt;Locator 和 auto-waiting 更完整&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多上下文隔离&lt;/td&gt;
          &lt;td&gt;支持，但不是最突出的优势&lt;/td&gt;
          &lt;td&gt;BrowserContext 体验很强&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;工具链&lt;/td&gt;
          &lt;td&gt;简洁、成熟、偏基础&lt;/td&gt;
          &lt;td&gt;Codegen、Trace Viewer、测试报告更完整&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;典型场景&lt;/td&gt;
          &lt;td&gt;Chrome 自动化、截图、PDF、轻量抓取&lt;/td&gt;
          &lt;td&gt;跨浏览器 E2E 测试、复杂前端应用自动化&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;浏览器支持&#34;&gt;浏览器支持
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Puppeteer&lt;/code&gt; 的优势在 Chrome。它和 Chromium 结合紧密，如果你的目标就是控制 Chrome、生成 PDF、截图、跑简单爬虫，Puppeteer 的心智负担很低。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Playwright&lt;/code&gt; 的优势在跨浏览器。它原生支持 Chromium、Firefox 和 WebKit。WebKit 这一点很关键，因为很多 Safari 相关问题不能只靠 Chrome 测出来。对需要覆盖桌面端、移动端和不同浏览器内核的应用来说，Playwright 更适合作为主力工具。&lt;/p&gt;
&lt;p&gt;这也是两者选择的第一道分界线：只看 Chrome，可以用 Puppeteer；要认真做跨浏览器测试，优先 Playwright。&lt;/p&gt;
&lt;h2 id=&#34;自动等待和稳定性&#34;&gt;自动等待和稳定性
&lt;/h2&gt;&lt;p&gt;浏览器自动化最烦人的问题，往往不是“不会点击”，而是页面还没准备好。元素可能还没挂到 DOM，可能被遮挡，可能正在动画中，可能按钮还是 disabled。&lt;/p&gt;
&lt;p&gt;Puppeteer 里经常会写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForSelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这没有问题，但等待逻辑需要工程师自己想清楚。页面越复杂，脚本里越容易出现各种 &lt;code&gt;waitForSelector&lt;/code&gt;、&lt;code&gt;waitForTimeout&lt;/code&gt; 和重试逻辑。&lt;/p&gt;
&lt;p&gt;Playwright 的 Locator 机制和自动等待更完整：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;locator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在点击之前，Playwright 会自动检查元素是否可见、可操作、稳定、没有被遮挡，并在合理时间内重试。这对 React、Vue、Next.js 这类异步渲染很多的现代 Web 应用尤其重要，可以明显减少 flaky test。&lt;/p&gt;
&lt;h2 id=&#34;多账号和上下文隔离&#34;&gt;多账号和上下文隔离
&lt;/h2&gt;&lt;p&gt;如果你要模拟多个用户，或者想让多个任务共享同一个浏览器进程但隔离 Cookie、LocalStorage 和 Session，&lt;code&gt;BrowserContext&lt;/code&gt; 就很重要。&lt;/p&gt;
&lt;p&gt;Puppeteer 也支持上下文隔离，但 Playwright 把这件事做成了核心能力。你可以在一个浏览器实例里快速创建多个独立 context，每个 context 像一个干净的浏览器环境，却不需要反复启动完整浏览器进程。&lt;/p&gt;
&lt;p&gt;这对这些场景很有价值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多账号并发测试。&lt;/li&gt;
&lt;li&gt;多角色协作流程测试。&lt;/li&gt;
&lt;li&gt;电商、IM、协作文档等多用户场景。&lt;/li&gt;
&lt;li&gt;需要隔离 Cookie 和登录态的爬取任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;工具链差异&#34;&gt;工具链差异
&lt;/h2&gt;&lt;p&gt;Playwright 是更“工程化”的方案。它内置了很多测试开发会用到的工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;codegen&lt;/code&gt;：在网页上操作，自动生成脚本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Trace Viewer&lt;/code&gt;：失败后回看每一步的截图、DOM、网络请求和 console 日志。&lt;/li&gt;
&lt;li&gt;Test Runner：支持断言、并行、重试、报告和项目矩阵。&lt;/li&gt;
&lt;li&gt;Locator：支持按文本、角色、label、test id 等方式定位元素。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puppeteer 则更像一个轻量浏览器控制库。它不臃肿，API 直接，适合嵌入脚本、服务端任务和自定义自动化流程。&lt;/p&gt;
&lt;p&gt;如果你要搭企业级测试体系，Playwright 的配套工具会省很多事。如果你只是要写一个 Node.js 脚本，把网页转 PDF 或定时截图，Puppeteer 反而更干脆。&lt;/p&gt;
&lt;h2 id=&#34;browser-harness-放在哪里&#34;&gt;browser-harness 放在哪里
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;browser-harness&lt;/code&gt; 和 Playwright、Puppeteer 不是同一类工具。&lt;/p&gt;
&lt;p&gt;Playwright 和 Puppeteer 主要假设“人类写脚本”。人类工程师要决定选择器、等待条件、断言逻辑和异常处理。它们追求的是确定性：同样的脚本，在同样的页面状态下，应该给出同样的结果。&lt;/p&gt;
&lt;p&gt;browser-harness 主要假设“AI Agent 操作浏览器”。它的目标不是提供一套巨大的高级 API，而是通过 CDP 连接真实 Chrome，把截图、坐标点击、DOM、网络请求和 helper 暴露给 Agent。Agent 可以观察页面、判断下一步、遇到缺能力时补 helper，再把站点经验沉淀成 skill。&lt;/p&gt;
&lt;p&gt;这就让它更适合开放任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录后台后下载账单。&lt;/li&gt;
&lt;li&gt;在内部系统里填一组表单。&lt;/li&gt;
&lt;li&gt;处理经常改版的 OA 或 SaaS 页面。&lt;/li&gt;
&lt;li&gt;按用户目标探索页面，而不是执行固定脚本。&lt;/li&gt;
&lt;li&gt;让 Claude Code、Codex CLI 这类工具拥有浏览器操作能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;三者核心对比&#34;&gt;三者核心对比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;Puppeteer&lt;/th&gt;
          &lt;th&gt;Playwright&lt;/th&gt;
          &lt;th&gt;browser-harness&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;面向对象&lt;/td&gt;
          &lt;td&gt;人类工程师&lt;/td&gt;
          &lt;td&gt;人类工程师和测试团队&lt;/td&gt;
          &lt;td&gt;AI Agent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主要目标&lt;/td&gt;
          &lt;td&gt;控制 Chrome&lt;/td&gt;
          &lt;td&gt;稳定跨浏览器自动化&lt;/td&gt;
          &lt;td&gt;让 Agent 操作真实浏览器&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;脚本方式&lt;/td&gt;
          &lt;td&gt;手写 JS/TS 自动化&lt;/td&gt;
          &lt;td&gt;手写脚本 + 测试框架&lt;/td&gt;
          &lt;td&gt;用户下目标，Agent 分步执行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;元素定位&lt;/td&gt;
          &lt;td&gt;CSS、XPath、DOM API&lt;/td&gt;
          &lt;td&gt;Locator、文本、角色、CSS&lt;/td&gt;
          &lt;td&gt;截图视觉、坐标、DOM、CDP&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;等待机制&lt;/td&gt;
          &lt;td&gt;更多手动控制&lt;/td&gt;
          &lt;td&gt;自动等待很强&lt;/td&gt;
          &lt;td&gt;由 Agent 观察和调整&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;浏览器环境&lt;/td&gt;
          &lt;td&gt;通常启动自动化浏览器&lt;/td&gt;
          &lt;td&gt;通常启动测试浏览器&lt;/td&gt;
          &lt;td&gt;常连接真实 Chrome&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最适合&lt;/td&gt;
          &lt;td&gt;Chrome 脚本、截图、PDF、轻量抓取&lt;/td&gt;
          &lt;td&gt;E2E 测试、跨浏览器验证、复杂 SPA&lt;/td&gt;
          &lt;td&gt;AI 助手、开放网页任务、真实账号工作流&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;代码体感对比&#34;&gt;代码体感对比
&lt;/h2&gt;&lt;p&gt;Puppeteer 更像直接控制 Chrome：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;puppeteer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;puppeteer&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;puppeteer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;newPage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://example.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForSelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Playwright 更强调 Locator 和自动等待：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;chromium&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;playwright&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;chromium&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;newPage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://example.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;locator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;browser-harness 的使用体感则完全不同。你通常不是写完整脚本，而是在 Agent 环境里下达目标：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我打开后台，下载上个月的账单，并整理成报销用的文件。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agent 会借助 browser-harness 反复执行类似流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;截图，理解当前页面。&lt;/li&gt;
&lt;li&gt;点击某个坐标或定位某个元素。&lt;/li&gt;
&lt;li&gt;输入文字、上传文件、下载文件。&lt;/li&gt;
&lt;li&gt;遇到弹窗时判断如何关闭。&lt;/li&gt;
&lt;li&gt;缺少 helper 时补充代码。&lt;/li&gt;
&lt;li&gt;把可复用流程沉淀为 domain skill。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是传统测试脚本的写法，而是浏览器 Agent 的工作方式。&lt;/p&gt;
&lt;h2 id=&#34;怎么选&#34;&gt;怎么选
&lt;/h2&gt;&lt;p&gt;选择 &lt;code&gt;Puppeteer&lt;/code&gt;，通常是因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目主要跑在 Node.js 里。&lt;/li&gt;
&lt;li&gt;只需要 Chrome 或 Chromium。&lt;/li&gt;
&lt;li&gt;任务是截图、PDF、简单页面抓取或轻量自动化。&lt;/li&gt;
&lt;li&gt;你希望 API 简洁，依赖少，自己控制更多细节。&lt;/li&gt;
&lt;li&gt;你对 Chrome DevTools Protocol 有较深依赖。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选择 &lt;code&gt;Playwright&lt;/code&gt;，通常是因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你要做标准 UI 自动化或 E2E 测试。&lt;/li&gt;
&lt;li&gt;需要覆盖 Chromium、Firefox 和 WebKit。&lt;/li&gt;
&lt;li&gt;团队主语言可能是 Python、Java 或 C#。&lt;/li&gt;
&lt;li&gt;页面是复杂 SPA，异步状态多，容易出现 flaky test。&lt;/li&gt;
&lt;li&gt;你需要 codegen、Trace Viewer、测试报告和并行测试。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选择 &lt;code&gt;browser-harness&lt;/code&gt;，通常是因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你在开发或使用 AI Agent。&lt;/li&gt;
&lt;li&gt;你希望模型像人一样操作真实浏览器。&lt;/li&gt;
&lt;li&gt;任务步骤不固定，需要边看页面边判断。&lt;/li&gt;
&lt;li&gt;目标网站经常改版，或者弹窗、iframe、shadow DOM 很多。&lt;/li&gt;
&lt;li&gt;你想把真实网页工作流交给 Claude Code、Codex CLI 等工具处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;简单结论&#34;&gt;简单结论
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Playwright&lt;/code&gt; 和 &lt;code&gt;Puppeteer&lt;/code&gt; 是浏览器自动化工具，核心是让人写出可靠脚本。两者相比，Puppeteer 更轻、更贴近 Chrome；Playwright 更完整、更适合跨浏览器测试和复杂前端应用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;browser-harness&lt;/code&gt; 则是另一个方向：它不是为了取代 Playwright 或 Puppeteer 写测试，而是为了让 AI Agent 接管真实浏览器。它牺牲了一部分传统脚本的确定性，换来更强的开放任务适应能力。&lt;/p&gt;
&lt;p&gt;所以答案不是三选一，而是按任务分层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;测试工程：优先 Playwright。&lt;/li&gt;
&lt;li&gt;Chrome 轻量脚本：Puppeteer 很合适。&lt;/li&gt;
&lt;li&gt;AI Agent 上网办事：看 browser-harness。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;browser-use/browser-harness：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Playwright 官方文档：&lt;a class=&#34;link&#34; href=&#34;https://playwright.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://playwright.dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Puppeteer 官方文档：&lt;a class=&#34;link&#34; href=&#34;https://pptr.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://pptr.dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chrome DevTools Protocol：&lt;a class=&#34;link&#34; href=&#34;https://chromedevtools.github.io/devtools-protocol/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://chromedevtools.github.io/devtools-protocol/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>browser-harness 是什么？AI Agent 接管真实 Chrome 的浏览器自动化工具</title>
        <link>https://knightli.com/2026/05/24/browser-use-browser-harness-ai-agent-browser-automation/</link>
        <pubDate>Sun, 24 May 2026 17:19:54 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/browser-use-browser-harness-ai-agent-browser-automation/</guid>
        <description>&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; 是一个面向 AI Agent 的浏览器控制工具。它的目标不是再做一层复杂的自动化框架，而是把大模型直接连到真实 Chrome，通过 CDP 完成浏览、点击、截图、下载、上传和表单操作。&lt;/p&gt;
&lt;p&gt;项目 README 对自己的定位很明确：用一层很薄、可编辑的 CDP harness，让 LLM 直接连接真实浏览器；当任务中缺少 helper 时，Agent 可以在执行过程中补上代码，并把可复用经验沉淀成 domain skills。&lt;/p&gt;
&lt;p&gt;这类工具值得关注，是因为浏览器仍然是很多真实工作的入口：后台系统、SaaS 面板、电商页面、招聘网站、CRM、报销系统、云控制台、文档平台，往往没有稳定 API，或者 API 权限比网页权限更难拿到。让 Agent 能可靠地操作浏览器，本质上是在补齐“最后一公里”的自动化能力。&lt;/p&gt;
&lt;h2 id=&#34;browser-harness-是什么&#34;&gt;browser-harness 是什么
&lt;/h2&gt;&lt;p&gt;从结构看，browser-harness 更像一个给 Agent 用的浏览器运行时，而不是普通用户手动点击的浏览器插件。&lt;/p&gt;
&lt;p&gt;它的核心思路有几个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接连接 Chrome 或 Chromium 浏览器。&lt;/li&gt;
&lt;li&gt;通过 CDP WebSocket 操作页面。&lt;/li&gt;
&lt;li&gt;让 Agent 用截图、坐标点击、DOM、网络请求和原始 CDP 组合完成任务。&lt;/li&gt;
&lt;li&gt;把任务相关 helper 放在 &lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;把站点相关经验沉淀到 &lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;保持核心很薄，避免做成庞大的自动化平台。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;README 中提到，项目核心架构大约是 4 个核心文件、约 1000 行代码，主要包括 &lt;code&gt;install.md&lt;/code&gt;、&lt;code&gt;SKILL.md&lt;/code&gt;、&lt;code&gt;src/browser_harness/&lt;/code&gt;、&lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt; 和 &lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这种设计的重点不是“内置所有网站能力”，而是给 Agent 一个足够贴近真实浏览器的操作层，让它在具体任务里补齐缺失能力。&lt;/p&gt;
&lt;h2 id=&#34;它和传统浏览器自动化有什么不同&#34;&gt;它和传统浏览器自动化有什么不同
&lt;/h2&gt;&lt;p&gt;传统浏览器自动化通常围绕测试框架展开，例如 Playwright、Selenium 或 Puppeteer。它们适合写确定性的测试脚本：打开页面、定位元素、点击、断言结果。&lt;/p&gt;
&lt;p&gt;browser-harness 面向的是另一类任务：用户说一句目标，Agent 自己探索页面、判断状态、处理弹窗、补 helper、复用站点经验。它强调的是交互过程中的适应性。&lt;/p&gt;
&lt;p&gt;差异可以这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playwright 更适合人写脚本，Agent 执行脚本。&lt;/li&gt;
&lt;li&gt;browser-harness 更适合 Agent 边看页面边行动。&lt;/li&gt;
&lt;li&gt;传统自动化偏固定流程。&lt;/li&gt;
&lt;li&gt;browser-harness 偏开放任务。&lt;/li&gt;
&lt;li&gt;传统脚本常依赖选择器。&lt;/li&gt;
&lt;li&gt;browser-harness 鼓励先截图、再按可见界面行动，必要时再退回 DOM 或 CDP。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这并不意味着它要替代 Playwright。对稳定测试来说，Playwright 仍然更成熟。browser-harness 的价值在于把真实网页变成 Agent 可操作的环境，尤其适合那些页面结构复杂、步骤不固定、需要临场判断的任务。&lt;/p&gt;
&lt;h2 id=&#34;为什么强调真实-chrome&#34;&gt;为什么强调真实 Chrome
&lt;/h2&gt;&lt;p&gt;很多浏览器 Agent 工具会使用隔离的无头浏览器。这样部署简单，也适合批量任务，但它有一个现实问题：用户真实工作里的登录态、扩展、历史记录、书签和日常浏览器环境并不一定能直接复用。&lt;/p&gt;
&lt;p&gt;browser-harness 支持连接本机 Chrome，也支持 Browser Use cloud browser。对本机浏览器，它提供两种方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过 &lt;code&gt;chrome://inspect/#remote-debugging&lt;/code&gt; 允许当前 Chrome 实例被连接。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;--remote-debugging-port=9222 --user-data-dir=...&lt;/code&gt; 启动一个隔离 profile。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果要让 Agent 帮你处理真实账号里的任务，项目文档更倾向于第一种方式，因为它能复用日常 Chrome 的登录态、扩展和书签。如果要做无人值守自动化，或者不希望被弹窗打断，则更适合使用隔离 profile 或云浏览器。&lt;/p&gt;
&lt;p&gt;这里的取舍很清楚：真实浏览器更贴近用户工作流，但安全边界也更敏感；隔离浏览器更适合自动化，但需要重新处理登录和环境。&lt;/p&gt;
&lt;h2 id=&#34;可编辑-helper-和-domain-skills&#34;&gt;可编辑 helper 和 domain skills
&lt;/h2&gt;&lt;p&gt;browser-harness 最有意思的地方，是它把“Agent 会学到什么”设计进了项目结构。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt; 用来放任务中临时补出来的 helper。比如 Agent 做文件上传时发现现有能力不够，可以补一个稳定的上传函数；下次再遇到类似页面，就不用从零开始。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt; 则用来放站点级经验。README 里举的方向包括 LinkedIn outreach、Amazon 下单、报销系统等。项目建议不要手写这些 skill，而是让 Agent 在真实任务中发现可复用流程后再生成，这样更贴近实际页面行为。&lt;/p&gt;
&lt;p&gt;这个思路很适合浏览器自动化。因为网页自动化的难点往往不是“怎么点击按钮”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某个网站的登录后页面怎么跳转。&lt;/li&gt;
&lt;li&gt;哪些弹窗会挡住主流程。&lt;/li&gt;
&lt;li&gt;哪些 selector 稳定，哪些只是临时样式名。&lt;/li&gt;
&lt;li&gt;上传、下载、iframe、shadow DOM、跨域组件怎么处理。&lt;/li&gt;
&lt;li&gt;某个后台系统有哪些隐藏等待和异步状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些知识如果只留在一次运行日志里，很快就会丢掉。把它们沉淀成 domain skills，才可能让 Agent 越用越顺。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;browser-harness 更适合以下任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;帮用户操作真实网页后台。&lt;/li&gt;
&lt;li&gt;在没有 API 的系统里完成重复流程。&lt;/li&gt;
&lt;li&gt;登录态依赖强的个人或企业网页任务。&lt;/li&gt;
&lt;li&gt;需要截图判断页面状态的复杂交互。&lt;/li&gt;
&lt;li&gt;Agent 需要在执行中补工具、补站点经验。&lt;/li&gt;
&lt;li&gt;多个子 Agent 各自使用独立浏览器执行任务。&lt;/li&gt;
&lt;li&gt;研究浏览器 Agent 的运行时设计。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具体例子包括：整理网页表格、提交内部系统表单、下载账单、上传文件、处理报销流程、检查订单状态、在 SaaS 控制台里配置资源、从登录后的网页提取信息。&lt;/p&gt;
&lt;p&gt;如果任务只是抓取静态网页，未必需要浏览器。项目自己的 &lt;code&gt;SKILL.md&lt;/code&gt; 也提到，静态页面可以直接用 HTTP 批量获取；浏览器应该留给真正需要页面状态、登录态和交互的场景。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的风险&#34;&gt;需要注意的风险
&lt;/h2&gt;&lt;p&gt;让 AI Agent 接管真实 Chrome，很强，也很危险。&lt;/p&gt;
&lt;p&gt;第一，权限边界要清楚。真实 Chrome 里可能有邮箱、支付后台、云控制台、公司系统和个人账号。Agent 一旦能操作浏览器，就等于获得了这些网页权限的一部分。&lt;/p&gt;
&lt;p&gt;第二，不要把凭据交给模型。遇到登录页、支付验证、二次确认等敏感步骤，应该让用户自己处理。Agent 可以等待登录完成，但不应该从截图里读取或输入密码、验证码、支付信息。&lt;/p&gt;
&lt;p&gt;第三，自动化不等于可托管。很多网页任务看似简单，但中间可能出现风控、误点击、数据删除、批量提交、不可逆操作。适合先从只读、低风险、可回滚的流程开始。&lt;/p&gt;
&lt;p&gt;第四，domain skills 需要避免泄露隐私。站点经验可以公开，但不要把账号、内部 URL、客户数据、坐标流水账或一次性任务细节写进去。&lt;/p&gt;
&lt;p&gt;第五，真实浏览器连接方式要谨慎选择。如果要复用日常登录态，使用当前 Chrome 很方便；如果要跑长时间自动化，隔离 profile 或云浏览器更可控。&lt;/p&gt;
&lt;h2 id=&#34;对-ai-agent-工具的意义&#34;&gt;对 AI Agent 工具的意义
&lt;/h2&gt;&lt;p&gt;browser-harness 代表了一种很务实的 Agent 工具路线：少做平台，多给模型一个可以直接触达真实环境的接口。&lt;/p&gt;
&lt;p&gt;过去很多 Agent 失败在两端。一端是模型会推理，但摸不到真实页面；另一端是自动化框架很强，但需要人先把流程写死。browser-harness 试图把这两端接起来：浏览器负责真实世界的状态，Agent 负责观察、判断和补工具。&lt;/p&gt;
&lt;p&gt;这也是“自我改进 harness”的意义。它不是说 Agent 会神奇地变聪明，而是把可复用的操作经验放到项目结构里，让下一次任务少走弯路。&lt;/p&gt;
&lt;p&gt;对开发者来说，browser-harness 的价值主要在三个层面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作为个人 Agent 的浏览器控制层。&lt;/li&gt;
&lt;li&gt;作为研究浏览器自动化和 Agent 工作流的样本。&lt;/li&gt;
&lt;li&gt;作为把网页流程变成可复用技能的实验框架。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是所有浏览器自动化问题的答案，但它给出了一个清晰方向：当 Agent 真正要帮人做事时，工具层不只要能调用 API，也要能理解和操作人类每天使用的网页界面。&lt;/p&gt;
&lt;h2 id=&#34;简单结论&#34;&gt;简单结论
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; 值得关注，不是因为它包装了多少高级功能，而是因为它把浏览器 Agent 的几个关键问题摆在了台面上：真实 Chrome、CDP、截图驱动、可编辑 helper、站点技能沉淀，以及用户权限边界。&lt;/p&gt;
&lt;p&gt;如果你只是写稳定端到端测试，继续用 Playwright 或 Selenium 就很好。如果你想让 Codex、Claude Code 这类 Agent 直接帮你处理真实网页任务，browser-harness 提供了一个更贴近 Agent 工作方式的入口。&lt;/p&gt;
&lt;p&gt;真正使用时，建议从低风险任务开始：先让它读页面、截图、提取信息，再逐步尝试点击和提交。等你确认它能稳定识别页面状态，再考虑让它接管更长的流程。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;安装文档：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/install.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/install.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;使用说明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/SKILL.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/SKILL.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini 3.5 Flash 的定位及优势：为什么它更适合高频、多模态和低延迟场景</title>
        <link>https://knightli.com/2026/05/24/gemini-35-flash-positioning-advantages-low-latency-multimodal/</link>
        <pubDate>Sun, 24 May 2026 08:43:24 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/gemini-35-flash-positioning-advantages-low-latency-multimodal/</guid>
        <description>&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的关键词不是“最强”，而是“高频、快速、便宜、好接入”。它更像是 Gemini 系列里的主力工作模型：不一定负责最难的推理题，但适合承接大量真实业务请求，例如问答、摘要、客服、内容处理、多模态理解、轻量代码辅助和自动化工作流。&lt;/p&gt;
&lt;p&gt;理解 Flash 的关键，是不要把它当成 Pro 类旗舰模型的替代品，而要把它当成一个面向吞吐量和响应速度优化的模型层。对开发者和企业来说，很多 AI 应用真正的成本不在单次最强能力，而在每天成千上万次请求的延迟、稳定性、价格和上下文处理能力。&lt;/p&gt;
&lt;h2 id=&#34;flash-的产品定位&#34;&gt;Flash 的产品定位
&lt;/h2&gt;&lt;p&gt;Gemini 系列通常会把模型拆成不同层级：旗舰模型负责更复杂的推理、规划和高难度任务；Flash 模型则强调速度、成本和规模化调用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的定位可以概括为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;比 Pro 更适合高频调用。&lt;/li&gt;
&lt;li&gt;比轻量小模型更适合复杂输入。&lt;/li&gt;
&lt;li&gt;面向低延迟和高吞吐。&lt;/li&gt;
&lt;li&gt;适合多模态输入和长上下文处理。&lt;/li&gt;
&lt;li&gt;更适合作为应用里的默认模型，而不是只在少数困难任务中调用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类模型最适合做“每天都要跑很多次”的任务。它的价值不只是单次回答质量，而是能否在成本可控的前提下稳定处理大量文本、图片、音频、视频或结构化信息。&lt;/p&gt;
&lt;h2 id=&#34;为什么-flash-很重要&#34;&gt;为什么 Flash 很重要
&lt;/h2&gt;&lt;p&gt;AI 产品落地时，经常会遇到一个现实问题：最强模型很好，但不是每个请求都值得用最强模型。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户问一个普通客服问题。&lt;/li&gt;
&lt;li&gt;系统要总结一段会议记录。&lt;/li&gt;
&lt;li&gt;后台要分类一批工单。&lt;/li&gt;
&lt;li&gt;App 要解释一张图片。&lt;/li&gt;
&lt;li&gt;自动化流程要从邮件里抽取字段。&lt;/li&gt;
&lt;li&gt;Agent 要先读一批文档，再决定下一步。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些任务需要模型可靠、便宜、快，但不一定需要旗舰模型的全部推理能力。Flash 的意义就在这里：它把“够强”和“够快”放在同一个位置上。&lt;/p&gt;
&lt;p&gt;如果一个 AI 应用要面向大量用户，默认模型往往不能只看峰值能力，而要看平均请求成本、响应速度、并发能力和失败率。Flash 就是这种应用层模型。&lt;/p&gt;
&lt;h2 id=&#34;主要优势一低延迟和高吞吐&#34;&gt;主要优势一：低延迟和高吞吐
&lt;/h2&gt;&lt;p&gt;Flash 最直观的优势是速度。&lt;/p&gt;
&lt;p&gt;对聊天产品、搜索增强、客服机器人、实时写作辅助和 Agent 工作流来说，延迟会直接影响体验。用户不一定知道模型参数或 benchmark，但能感觉到“是不是等得烦”。&lt;/p&gt;
&lt;p&gt;低延迟带来的价值包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对话更像实时交互。&lt;/li&gt;
&lt;li&gt;多轮工具调用更不容易拖慢。&lt;/li&gt;
&lt;li&gt;Agent 可以更频繁地做中间判断。&lt;/li&gt;
&lt;li&gt;后台批处理能更快跑完。&lt;/li&gt;
&lt;li&gt;产品可以把 AI 能力放进更多细小流程里。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其是 Agent 类应用，模型不是只回答一次，而是要反复判断、调用工具、读上下文、生成下一步动作。单次延迟降低后，整条链路的体验会明显改善。&lt;/p&gt;
&lt;h2 id=&#34;主要优势二成本更适合规模化&#34;&gt;主要优势二：成本更适合规模化
&lt;/h2&gt;&lt;p&gt;Flash 的另一个核心价值是成本。&lt;/p&gt;
&lt;p&gt;企业和开发者真正上线 AI 应用时，通常会关心三个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次调用多少钱。&lt;/li&gt;
&lt;li&gt;每天总调用量是多少。&lt;/li&gt;
&lt;li&gt;峰值并发时成本和延迟是否可控。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一个任务每天跑几十万次，哪怕单次差价很小，长期成本也会被放大。Flash 这类模型的定位，就是让更多请求不必直接打到最贵、最重的模型上。&lt;/p&gt;
&lt;p&gt;常见做法是分层调用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通请求默认走 Flash。&lt;/li&gt;
&lt;li&gt;难题、复杂规划、长链路推理再升级到 Pro。&lt;/li&gt;
&lt;li&gt;简单分类、固定格式抽取也可以进一步下沉到更轻量模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以让 AI 系统既保留上限，又控制日常成本。&lt;/p&gt;
&lt;h2 id=&#34;主要优势三多模态输入更适合真实应用&#34;&gt;主要优势三：多模态输入更适合真实应用
&lt;/h2&gt;&lt;p&gt;Gemini 系列一直强调多模态能力。Flash 的优势在于，它不是只服务文本请求，也适合处理图片、音频、视频和文档等输入。&lt;/p&gt;
&lt;p&gt;这对真实产品很重要。很多业务数据并不是纯文本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户上传截图咨询问题。&lt;/li&gt;
&lt;li&gt;客服要理解一张故障照片。&lt;/li&gt;
&lt;li&gt;教育产品要看题目图片。&lt;/li&gt;
&lt;li&gt;内容平台要处理视频片段。&lt;/li&gt;
&lt;li&gt;办公场景要读取 PDF、表格和演示文稿。&lt;/li&gt;
&lt;li&gt;电商场景要分析商品图和用户描述。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果多模态能力只能依赖昂贵的旗舰模型，很多高频场景就很难铺开。Flash 的意义在于，把多模态理解下放到更适合规模化调用的模型层。&lt;/p&gt;
&lt;h2 id=&#34;主要优势四长上下文让它适合读材料&#34;&gt;主要优势四：长上下文让它适合读材料
&lt;/h2&gt;&lt;p&gt;长上下文是 Gemini 系列的重要能力之一。对 Flash 来说，长上下文的价值不是“把所有东西塞进去就完事”，而是让它能承担更多信息整理型任务。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;总结长文档。&lt;/li&gt;
&lt;li&gt;阅读产品手册。&lt;/li&gt;
&lt;li&gt;分析会议纪要。&lt;/li&gt;
&lt;li&gt;整理多页 PDF。&lt;/li&gt;
&lt;li&gt;对比多份合同或方案。&lt;/li&gt;
&lt;li&gt;给 Agent 提供较大的任务背景。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;长上下文和低成本结合起来，适合做“先读大量材料，再给出可操作结果”的工作流。它不一定每次都要做极难推理，但能把更多上下文纳入同一次处理，这对办公、客服、知识库、研发辅助都很有用。&lt;/p&gt;
&lt;h2 id=&#34;主要优势五适合作为默认模型&#34;&gt;主要优势五：适合作为默认模型
&lt;/h2&gt;&lt;p&gt;很多 AI 产品需要一个“默认模型”。这个模型不一定是最贵最强，但要满足几个条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大多数问题回答质量稳定。&lt;/li&gt;
&lt;li&gt;响应足够快。&lt;/li&gt;
&lt;li&gt;成本可控。&lt;/li&gt;
&lt;li&gt;多模态输入能处理。&lt;/li&gt;
&lt;li&gt;长上下文能力够用。&lt;/li&gt;
&lt;li&gt;容易接入 API 和现有产品链路。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的优势正是在这里。它适合做默认入口：先承接大多数请求，如果遇到复杂任务，再路由到更强模型。&lt;/p&gt;
&lt;p&gt;这种模式会越来越常见。未来很多 AI 系统不是“只选一个模型”，而是“Flash 做主力，Pro 做升级，轻量模型做边缘任务”。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 更适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;客服问答和知识库检索后的回答生成。&lt;/li&gt;
&lt;li&gt;长文档摘要、报告整理、会议纪要。&lt;/li&gt;
&lt;li&gt;图片、截图、PDF、视频片段的多模态理解。&lt;/li&gt;
&lt;li&gt;App 内实时 AI 助手。&lt;/li&gt;
&lt;li&gt;内容审核、分类、标签生成。&lt;/li&gt;
&lt;li&gt;邮件、工单、表单的信息抽取。&lt;/li&gt;
&lt;li&gt;Agent 工作流中的中间判断和上下文压缩。&lt;/li&gt;
&lt;li&gt;代码解释、轻量修复建议、文档生成。&lt;/li&gt;
&lt;li&gt;教育产品里的题目解析和学习辅助。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些场景共同特点是：请求量大、用户等待时间敏感、输入类型复杂，但不一定每次都需要旗舰级深度推理。&lt;/p&gt;
&lt;h2 id=&#34;不适合只用-flash-的场景&#34;&gt;不适合只用 Flash 的场景
&lt;/h2&gt;&lt;p&gt;Flash 不是万能模型。它更适合高频和低延迟，不代表所有问题都应该只用它。&lt;/p&gt;
&lt;p&gt;以下场景仍然更适合使用更强的 Pro 类模型，或至少采用分层路由：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复杂数学和严谨证明。&lt;/li&gt;
&lt;li&gt;长链路规划和多步骤策略推理。&lt;/li&gt;
&lt;li&gt;高风险法律、医疗、金融判断。&lt;/li&gt;
&lt;li&gt;大型代码库的深度重构方案。&lt;/li&gt;
&lt;li&gt;需要极高可靠性的复杂 Agent 任务。&lt;/li&gt;
&lt;li&gt;对幻觉容忍度极低的专业报告。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更稳妥的策略是：Flash 先处理、判断和整理；当任务复杂度升高时，再升级到更强模型。&lt;/p&gt;
&lt;h2 id=&#34;和-pro-类模型的关系&#34;&gt;和 Pro 类模型的关系
&lt;/h2&gt;&lt;p&gt;Flash 和 Pro 的关系，不应该理解成“谁取代谁”，而应该理解成“分工不同”。&lt;/p&gt;
&lt;p&gt;Flash 更像日常主力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快。&lt;/li&gt;
&lt;li&gt;成本友好。&lt;/li&gt;
&lt;li&gt;适合高并发。&lt;/li&gt;
&lt;li&gt;适合多模态和长上下文应用。&lt;/li&gt;
&lt;li&gt;适合放在产品默认链路里。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pro 更像高难任务模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更适合复杂推理。&lt;/li&gt;
&lt;li&gt;更适合困难规划。&lt;/li&gt;
&lt;li&gt;更适合高价值请求。&lt;/li&gt;
&lt;li&gt;更适合少量但重要的深度分析。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;好的 AI 产品通常会把两者组合起来，而不是二选一。&lt;/p&gt;
&lt;h2 id=&#34;开发者应该怎么用&#34;&gt;开发者应该怎么用
&lt;/h2&gt;&lt;p&gt;如果要在产品里接入 Gemini 3.5 Flash，可以考虑这几种用法：&lt;/p&gt;
&lt;p&gt;第一，把它作为默认模型。大部分普通请求先走 Flash，既保证速度，也控制成本。&lt;/p&gt;
&lt;p&gt;第二，设计模型路由。当 Flash 判断任务复杂、风险高、需要深度推理时，再把请求升级到 Pro。&lt;/p&gt;
&lt;p&gt;第三，用它做上下文压缩。Agent 在执行任务前，可以先让 Flash 总结文档、抽取关键事实、生成结构化上下文。&lt;/p&gt;
&lt;p&gt;第四，把多模态输入纳入常规流程。图片、截图、PDF、音频、视频不要只作为边缘功能，而可以成为产品默认输入的一部分。&lt;/p&gt;
&lt;p&gt;第五，用评测来决定边界。不要只看官方 benchmark，要拿自己的客服问题、文档、代码、图片和业务流程做测试，判断哪些任务 Flash 足够，哪些必须升级。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的核心定位，是一个面向高频真实应用的多模态主力模型。它的优势不在于取代 Pro 类旗舰模型，而在于把速度、成本、长上下文和多模态能力放到一个更适合规模化调用的位置上。&lt;/p&gt;
&lt;p&gt;对开发者来说，Flash 最值得关注的不是单个 benchmark，而是产品架构变化：默认模型可以更快、更便宜、更能读复杂输入；复杂任务再升级给更强模型。这样既能保证体验，也能控制成本。&lt;/p&gt;
&lt;p&gt;如果说 Pro 是处理难题的重型工具，那么 Flash 更像每天都在生产线上运转的主力工具。真正做 AI 产品时，后者往往更接近用户每天实际感受到的体验。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google 官方博客：&lt;a class=&#34;link&#34; href=&#34;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google DeepMind Gemini Flash：&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/en/models/gemini/flash/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://deepmind.google/en/models/gemini/flash/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;用户提供的知乎讨论链接：&lt;a class=&#34;link&#34; href=&#34;https://www.zhihu.com/question/2040529179641385344/answer/2040531897613285214&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.zhihu.com/question/2040529179641385344/answer/2040531897613285214&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 也有插件市场了：能装什么、怎么装、要注意什么</title>
        <link>https://knightli.com/2026/05/23/claude-plugins-official-claude-code-plugin-directory/</link>
        <pubDate>Sat, 23 May 2026 19:03:30 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/23/claude-plugins-official-claude-code-plugin-directory/</guid>
        <description>&lt;p&gt;&lt;code&gt;anthropics/claude-plugins-official&lt;/code&gt; 是 Anthropic 管理的 Claude Code 官方插件目录。它不是一个普通代码库，而是一个可被 Claude Code 插件系统直接使用的 marketplace，集中放置经过 Anthropic 维护或筛选的 Claude Code 插件。&lt;/p&gt;
&lt;p&gt;这个仓库值得关注，是因为 Claude Code 正在从“一个 AI 编程命令行工具”变成“可扩展的开发环境”。插件可以把 Skills、Agents、Hooks、MCP servers、LSP servers、后台监控和默认设置打包起来，让团队或社区用统一方式分发。&lt;/p&gt;
&lt;h2 id=&#34;这个仓库是什么&#34;&gt;这个仓库是什么
&lt;/h2&gt;&lt;p&gt;仓库 README 对它的定位很直接：这是一个高质量 Claude Code 插件的 curated directory。&lt;/p&gt;
&lt;p&gt;目录主要分成两块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/plugins&lt;/code&gt;：Anthropic 内部开发和维护的插件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/external_plugins&lt;/code&gt;：来自合作伙伴和社区的第三方插件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，它既包含官方能力，也包含经过收录的外部生态入口。对普通用户来说，最直接的意义是可以通过 Claude Code 的 &lt;code&gt;/plugin&lt;/code&gt; 系统发现和安装插件；对开发者来说，它提供了观察 Claude Code 插件格式和生态方向的窗口。&lt;/p&gt;
&lt;h2 id=&#34;如何安装插件&#34;&gt;如何安装插件
&lt;/h2&gt;&lt;p&gt;README 给出的安装方式很简单。可以直接通过 Claude Code 的插件系统安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin install {plugin-name}@claude-plugins-official
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以在 Claude Code 里打开插件发现入口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin &amp;gt; Discover
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的关键点是 &lt;code&gt;@claude-plugins-official&lt;/code&gt;。它代表官方插件目录这个 marketplace。根据 Claude Code 文档，&lt;code&gt;claude-plugins-official&lt;/code&gt; 是 Anthropic 维护的官方 marketplace，并且会在 Claude Code 安装中默认可用。&lt;/p&gt;
&lt;h2 id=&#34;插件长什么样&#34;&gt;插件长什么样
&lt;/h2&gt;&lt;p&gt;仓库 README 给出了标准插件结构：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;plugin-name/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── .claude-plugin/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── plugin.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── .mcp.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── commands/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── agents/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── skills/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── README.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;.claude-plugin/plugin.json&lt;/code&gt; 是插件元数据文件，通常用来声明插件名、描述、版本、作者等信息。其他目录则按需存在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;skills/&lt;/code&gt;：放 Claude 可自动调用的技能说明。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commands/&lt;/code&gt;：放 slash commands。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agents/&lt;/code&gt;：放自定义 agent 定义。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hooks/&lt;/code&gt;：放事件触发逻辑。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.mcp.json&lt;/code&gt;：配置 MCP server。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.lsp.json&lt;/code&gt;：配置语言服务器。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;monitors/&lt;/code&gt;：配置后台监控。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;settings.json&lt;/code&gt;：给插件附带默认设置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明 Claude Code 插件不是单一类型扩展，而是一种打包格式。它可以只是一个小命令，也可以是一整套面向某个技术栈的工作流。&lt;/p&gt;
&lt;h2 id=&#34;官方目录里已经有哪些方向&#34;&gt;官方目录里已经有哪些方向
&lt;/h2&gt;&lt;p&gt;从 &lt;code&gt;/plugins&lt;/code&gt; 目录看，官方维护插件覆盖了不少开发场景，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LSP 类插件：&lt;code&gt;typescript-lsp&lt;/code&gt;、&lt;code&gt;pyright-lsp&lt;/code&gt;、&lt;code&gt;rust-analyzer-lsp&lt;/code&gt;、&lt;code&gt;gopls-lsp&lt;/code&gt;、&lt;code&gt;clangd-lsp&lt;/code&gt;、&lt;code&gt;csharp-lsp&lt;/code&gt;、&lt;code&gt;jdtls-lsp&lt;/code&gt;、&lt;code&gt;kotlin-lsp&lt;/code&gt;、&lt;code&gt;lua-lsp&lt;/code&gt;、&lt;code&gt;php-lsp&lt;/code&gt;、&lt;code&gt;ruby-lsp&lt;/code&gt;、&lt;code&gt;swift-lsp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;编程工作流：&lt;code&gt;code-review&lt;/code&gt;、&lt;code&gt;feature-dev&lt;/code&gt;、&lt;code&gt;code-modernization&lt;/code&gt;、&lt;code&gt;code-simplifier&lt;/code&gt;、&lt;code&gt;commit-commands&lt;/code&gt;、&lt;code&gt;pr-review-toolkit&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Claude Code 配置和插件开发：&lt;code&gt;claude-code-setup&lt;/code&gt;、&lt;code&gt;claude-md-management&lt;/code&gt;、&lt;code&gt;plugin-dev&lt;/code&gt;、&lt;code&gt;skill-creator&lt;/code&gt;、&lt;code&gt;mcp-server-dev&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;输出风格和专项能力：&lt;code&gt;explanatory-output-style&lt;/code&gt;、&lt;code&gt;learning-output-style&lt;/code&gt;、&lt;code&gt;security-guidance&lt;/code&gt;、&lt;code&gt;session-report&lt;/code&gt;、&lt;code&gt;math-olympiad&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;/external_plugins&lt;/code&gt; 里则能看到更多第三方工具和服务方向，例如 &lt;code&gt;github&lt;/code&gt;、&lt;code&gt;gitlab&lt;/code&gt;、&lt;code&gt;linear&lt;/code&gt;、&lt;code&gt;asana&lt;/code&gt;、&lt;code&gt;firebase&lt;/code&gt;、&lt;code&gt;playwright&lt;/code&gt;、&lt;code&gt;terraform&lt;/code&gt;、&lt;code&gt;context7&lt;/code&gt;、&lt;code&gt;serena&lt;/code&gt;、&lt;code&gt;telegram&lt;/code&gt;、&lt;code&gt;discord&lt;/code&gt; 等。&lt;/p&gt;
&lt;p&gt;这组插件透露出一个趋势：Claude Code 不只是想帮你改文件，还想接入代码智能、项目管理、云服务、测试、基础设施和团队协作工具。&lt;/p&gt;
&lt;h2 id=&#34;为什么插件系统重要&#34;&gt;为什么插件系统重要
&lt;/h2&gt;&lt;p&gt;过去很多 Claude Code 自定义能力都可能散落在项目里的 &lt;code&gt;.claude/&lt;/code&gt; 目录中，比如 commands、agents、skills 或 hooks。这种方式适合个人或单个项目，但不方便跨项目复用，也不方便团队统一分发和更新。&lt;/p&gt;
&lt;p&gt;插件解决的是可复用和可分发问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一套配置可以跨多个项目安装。&lt;/li&gt;
&lt;li&gt;命令和技能有命名空间，减少冲突。&lt;/li&gt;
&lt;li&gt;插件可以通过 marketplace 发布和更新。&lt;/li&gt;
&lt;li&gt;团队可以把内部最佳实践打包成标准插件。&lt;/li&gt;
&lt;li&gt;社区可以围绕某个框架、语言或服务维护专门扩展。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和 VS Code 插件、JetBrains 插件、浏览器扩展的思路类似：当一个工具开始有稳定插件生态，它就不再只是单一产品，而是在形成平台。&lt;/p&gt;
&lt;h2 id=&#34;对开发者有什么用&#34;&gt;对开发者有什么用
&lt;/h2&gt;&lt;p&gt;如果你只是 Claude Code 用户，这个仓库最实用的地方是找插件。比如需要 TypeScript、Python、Rust 或 Go 的 LSP 能力，可以先看官方目录里是否已有对应插件；需要 PR review、commit、代码现代化等工作流，也可以从官方插件开始试。&lt;/p&gt;
&lt;p&gt;如果你是插件开发者，这个仓库更像样板库。你可以参考它的目录组织、&lt;code&gt;plugin.json&lt;/code&gt; 写法、README 说明方式，以及 Anthropic 如何把 skills、agents、MCP、LSP 和 hooks 组合起来。&lt;/p&gt;
&lt;p&gt;Claude Code 文档也明确建议：如果只是单项目自定义，可以先用 &lt;code&gt;.claude/&lt;/code&gt;；如果需要分享给团队、跨项目复用、版本化发布，或者进入 marketplace，就应该做成插件。&lt;/p&gt;
&lt;h2 id=&#34;安全边界不能忽略&#34;&gt;安全边界不能忽略
&lt;/h2&gt;&lt;p&gt;仓库 README 在开头就提醒：安装、更新或使用插件前必须信任该插件。原因很简单，插件可能包含 MCP server、文件、脚本或其他软件。Anthropic 维护目录，不等于能保证每个插件在你的本地环境中都按你预期运行。&lt;/p&gt;
&lt;p&gt;实际使用时建议至少做几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装前看插件主页和 README。&lt;/li&gt;
&lt;li&gt;检查是否包含 &lt;code&gt;.mcp.json&lt;/code&gt;、hooks、可执行脚本或后台监控。&lt;/li&gt;
&lt;li&gt;对需要访问账号、代码仓库、聊天工具、云服务的插件格外谨慎。&lt;/li&gt;
&lt;li&gt;在重要项目中启用插件前，先在测试仓库验证。&lt;/li&gt;
&lt;li&gt;团队环境最好统一审核插件来源和版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 编程插件的权限往往比普通编辑器主题高得多。它可能能读项目文件、调用外部服务、启动本地命令，甚至影响提交和部署流程，所以信任边界要比“装一个小工具”更严格。&lt;/p&gt;
&lt;h2 id=&#34;和社区-marketplace-的关系&#34;&gt;和社区 marketplace 的关系
&lt;/h2&gt;&lt;p&gt;Claude Code 文档提到，Anthropic 维护两个公开插件 marketplace：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;claude-plugins-official&lt;/code&gt;：Anthropic 维护的 curated 插件集合。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude-community&lt;/code&gt;：第三方提交后进入审查流程的社区插件目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两者的定位不同。社区插件可以通过提交表单进入 review；官方目录则由 Anthropic 自行决定是否收录，没有普通申请流程。换句话说，&lt;code&gt;claude-plugins-official&lt;/code&gt; 更像官方精选目录，&lt;code&gt;claude-community&lt;/code&gt; 更像开放社区目录。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;anthropics/claude-plugins-official&lt;/code&gt; 的意义不只是“多了一个 GitHub 仓库”。它说明 Claude Code 的扩展机制正在平台化：Skills、Agents、Hooks、MCP、LSP、后台监控和默认设置都可以被打包、安装、更新和分发。&lt;/p&gt;
&lt;p&gt;对个人开发者来说，官方插件目录能降低配置 Claude Code 的门槛。对团队来说，它提供了把内部流程标准化的路径。对插件开发者来说，它给出了 Anthropic 认可的插件结构和生态方向。&lt;/p&gt;
&lt;p&gt;接下来值得关注的不是某一个插件本身，而是 Claude Code 插件生态会不会形成稳定分层：官方精选、社区插件、团队私有 marketplace，以及围绕主流语言、框架和 SaaS 服务的专门扩展。如果这条路线走通，Claude Code 会越来越像一个可编排的 AI 开发平台，而不只是一个命令行助手。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-plugins-official&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anthropics/claude-plugins-official&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code 插件文档：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/plugins&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/plugins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>RTX 3070 8GB 本地运行 Qwen3.6-35B：llama.cpp 部署要点与优化参数</title>
        <link>https://knightli.com/2026/05/22/rtx-3070-8gb-qwen36-35b-llama-cpp-local-deployment/</link>
        <pubDate>Fri, 22 May 2026 22:44:16 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/22/rtx-3070-8gb-qwen36-35b-llama-cpp-local-deployment/</guid>
        <description>&lt;p&gt;8GB 显存能不能跑 35B 级别模型，关键不只看模型总参数量，还要看模型结构、量化格式和推理框架的调度方式。&lt;/p&gt;
&lt;p&gt;这次案例的核心思路是：使用 Qwen3.6-35B-A3B 这类 MoE 模型的 GGUF 量化版本，再通过 llama.cpp 的 CUDA 加速、CPU Offload、MoE 参数调度和 KV Cache 量化，把显存压力分摊到 GPU 与内存之间。这样一来，RTX 3070 8GB 这类老显卡也有机会跑起 35B 级别的本地多模态模型。&lt;/p&gt;
&lt;p&gt;需要先说明一点：这不是“8GB 显存完整装下 35B 模型”。更准确的理解是，显卡负责更适合 GPU 的计算部分，部分专家层和缓存压力由系统内存承担。实际体验会受到内存容量、CPU 性能、模型量化格式、上下文长度和参数设置影响。&lt;/p&gt;
&lt;h2 id=&#34;测试环境&#34;&gt;测试环境
&lt;/h2&gt;&lt;p&gt;这类配置对内存比较敏感。参考环境如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU：Intel Core i7-12700 级别&lt;/li&gt;
&lt;li&gt;GPU：NVIDIA RTX 3070 8GB&lt;/li&gt;
&lt;li&gt;内存：64GB&lt;/li&gt;
&lt;li&gt;系统：Windows 11&lt;/li&gt;
&lt;li&gt;推理框架：llama.cpp CUDA 版本&lt;/li&gt;
&lt;li&gt;模型格式：GGUF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只有 16GB 或 32GB 内存，也不是完全不能尝试，但 35B MoE 模型在加载和长上下文推理时更容易触发内存压力。想要稳定使用，64GB 内存会更稳。&lt;/p&gt;
&lt;h2 id=&#34;为什么-8gb-显存也有机会跑-35b&#34;&gt;为什么 8GB 显存也有机会跑 35B
&lt;/h2&gt;&lt;p&gt;Qwen3.6-35B-A3B 的关键点在于 MoE 架构。它的总参数规模是 35B，但每次推理并不是所有参数都同时激活，而是只激活其中一部分专家参数。&lt;/p&gt;
&lt;p&gt;这会带来两个结果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;总模型文件仍然很大，需要足够磁盘和内存承载。&lt;/li&gt;
&lt;li&gt;单次推理的活跃计算量低于完整 35B Dense 模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;llama.cpp 的 CPU Offload 和 MoE 相关参数可以进一步降低显存门槛。GPU 主要承担注意力和部分高收益计算，CPU 与内存承担一部分专家层权重。代价是速度、响应延迟和稳定性会更依赖整机配置，而不是只看显卡型号。&lt;/p&gt;
&lt;h2 id=&#34;准备-llamacpp&#34;&gt;准备 llama.cpp
&lt;/h2&gt;&lt;p&gt;Windows 用户可以直接下载 llama.cpp 的预编译 CUDA 版本。需要注意三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;显卡驱动要足够新，CUDA 运行环境要和下载的 llama.cpp 包匹配。&lt;/li&gt;
&lt;li&gt;下载后建议放在一个不含中文和特殊字符的路径下，方便批处理脚本调用。&lt;/li&gt;
&lt;li&gt;模型文件统一放到 &lt;code&gt;models&lt;/code&gt; 目录，避免命令里写太长路径。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是 AMD、Intel 显卡或纯 CPU 环境，也可以选择 Vulkan、HIP、SYCL 或 CPU 版本，但参数和性能表现会不同。本文重点仍然是 NVIDIA 显卡上的 CUDA 路线。&lt;/p&gt;
&lt;h2 id=&#34;下载模型和多模态投影文件&#34;&gt;下载模型和多模态投影文件
&lt;/h2&gt;&lt;p&gt;本次使用的模型是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B-UD-Q4_K_M.gguf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;量化格式选择 &lt;code&gt;Q4_K_M&lt;/code&gt;，主要是为了在精度、体积和速度之间取得平衡。显存较小的机器不建议一开始就尝试更高精度版本，否则加载失败或系统频繁换页的概率会明显上升。&lt;/p&gt;
&lt;p&gt;如果要使用图片理解能力，还需要同时准备多模态投影文件，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mmproj-BF16.gguf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个文件非常重要。只下载主模型通常只能完成文本推理；如果缺少 &lt;code&gt;mmproj&lt;/code&gt;，网页 UI 里可能看不到正常的图片上传能力，或者上传后无法完成视觉理解。&lt;/p&gt;
&lt;p&gt;建议目录结构保持简单：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama.cpp/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─ llama-server.exe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─ models/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   ├─ Qwen3.6-35B-A3B-UD-Q4_K_M.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   └─ mmproj-BF16.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;rtx-3070-8gb-启动参数&#34;&gt;RTX 3070 8GB 启动参数
&lt;/h2&gt;&lt;p&gt;下面是一份面向 RTX 3070 8GB 的启动脚本示例。路径需要改成你自己的 llama.cpp 所在目录。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; off
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chcp 65001 &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;nul
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;cd&lt;/span&gt; /d D:\AI\llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server.exe &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\Qwen3.6-35B-A3B-UD-Q4_K_M.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --mmproj &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj-BF16.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -ngl 99 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --n-cpu-moe 999 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --flash-attn on &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --jinja &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -c 32768 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -t 12 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -b 512 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -ub 128 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --cache-type-k q4_0 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --cache-type-v q4_0 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --mlock &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --host 127.0.0.1 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --port 8080
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pause&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后在浏览器访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果页面可以打开，并且模型能正常回复，就说明服务已经启动成功。首次加载模型可能会比较慢，期间不要急着重复运行多个实例，否则更容易把内存占满。&lt;/p&gt;
&lt;h2 id=&#34;关键参数怎么理解&#34;&gt;关键参数怎么理解
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-ngl 99&lt;/code&gt; 表示尽量把可放到 GPU 的层放到显卡上。实际能放多少，取决于模型结构、量化格式和显存占用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--n-cpu-moe 999&lt;/code&gt; 用来让 MoE 专家层更多走 CPU 侧，降低显存压力。它是这类小显存运行大 MoE 模型的关键参数之一。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--flash-attn on&lt;/code&gt; 开启 Flash Attention，有助于降低注意力计算的开销。是否可用取决于当前 llama.cpp 版本和显卡支持情况。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-c 32768&lt;/code&gt; 设置上下文长度。长上下文会显著增加 KV Cache 压力，如果启动失败或推理很慢，可以先降到 &lt;code&gt;8192&lt;/code&gt; 或 &lt;code&gt;16384&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--cache-type-k q4_0&lt;/code&gt; 和 &lt;code&gt;--cache-type-v q4_0&lt;/code&gt; 用于量化 KV Cache，能节省内存和显存，但可能对输出质量和速度有轻微影响。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-b 512&lt;/code&gt; 与 &lt;code&gt;-ub 128&lt;/code&gt; 控制批处理相关参数。小显存环境下，不要一开始就把批量参数设得太激进。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;p&gt;如果启动时报显存不足，可以先降低上下文长度，例如把 &lt;code&gt;-c 32768&lt;/code&gt; 改成 &lt;code&gt;-c 8192&lt;/code&gt;，再尝试减小 &lt;code&gt;-b&lt;/code&gt; 和 &lt;code&gt;-ub&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果图片上传按钮不可用，优先检查 &lt;code&gt;--mmproj&lt;/code&gt; 路径是否正确，以及使用的 &lt;code&gt;mmproj&lt;/code&gt; 是否和模型匹配。&lt;/p&gt;
&lt;p&gt;如果模型加载后响应很慢，通常不是显卡完全没工作，而是大量权重或专家层由 CPU 与内存承担。可以观察任务管理器里的 GPU、CPU、内存和磁盘占用，判断瓶颈在哪里。&lt;/p&gt;
&lt;p&gt;如果输出格式异常，确认是否启用了 &lt;code&gt;--jinja&lt;/code&gt;，并检查当前模型是否需要对应聊天模板。&lt;/p&gt;
&lt;p&gt;如果服务启动后浏览器打不开，检查 &lt;code&gt;--host&lt;/code&gt; 和 &lt;code&gt;--port&lt;/code&gt; 设置，确认 8080 端口没有被其他程序占用。&lt;/p&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;这套方案适合手上已有 RTX 3070、RTX 4060 Laptop、RTX 3060 8GB 这类 8GB 显存设备，但又想尝试更大 MoE 模型的用户。&lt;/p&gt;
&lt;p&gt;它不适合追求极致速度的人。小显存运行 35B MoE 本质上是在用内存和 CPU 换显存门槛，能跑起来是一回事，是否足够流畅是另一回事。&lt;/p&gt;
&lt;p&gt;如果目标是日常高频聊天，7B、8B、14B 模型可能更舒服。如果目标是体验更大 MoE 模型、多模态能力和本地部署边界，那么 RTX 3070 8GB 加 64GB 内存仍然有尝试价值。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;RTX 3070 8GB 能运行 Qwen3.6-35B-A3B 的关键，不是显存突然变大，而是 MoE 架构、GGUF 量化、llama.cpp CPU Offload 和 KV Cache 优化共同降低了门槛。&lt;/p&gt;
&lt;p&gt;这类方案最值得关注的地方，是它让旧显卡仍然能参与本地大模型实验。只要接受速度和稳定性上的取舍，8GB 显存机器也可以成为本地 AI 模型测试平台，而不只是运行小模型的入门设备。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GitHub AI 开源项目分类整理：从 Coding Agent 到 RAG 知识库</title>
        <link>https://knightli.com/2026/05/21/github-ai-projects-site-statistics/</link>
        <pubDate>Thu, 21 May 2026 08:53:13 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/21/github-ai-projects-site-statistics/</guid>
        <description>&lt;p&gt;这里按应用方向列出 GitHub AI 项目，覆盖 AI 编程与 Coding Agent、Agent 技能与工作流、RAG 与知识库、多模态创作、本地模型与推理、垂直应用与自动化、AI 应用开发基础设施等方向。后续新增项目时，也可以继续按这个结构补充。&lt;/p&gt;
&lt;h2 id=&#34;分类合计&#34;&gt;分类合计
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;分类&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;项目数&lt;/th&gt;
          &lt;th&gt;适合先看的人&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;AI编程与 Coding Agent&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22&lt;/td&gt;
          &lt;td&gt;经常使用 Claude Code、Codex、Cursor、终端 Agent 或代码库自动化的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Agent 技能与工作流&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;想把 AI 编程、科研、创作流程标准化的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAG、知识库与记忆&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;需要文档检索、知识库、长期记忆、网页抓取和结构化抽取的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;垂直应用与自动化&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;想看金融、交易、闲鱼监控、桌面操作、浏览器自动化等落地场景的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多模态与内容创作&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;做图片、视频、语音转写、提示词库和内容分发的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI 应用开发基础设施&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;构建 AI 应用、浏览器自动化、Prompt/MCP 工具链的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;本地模型与推理&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;
          &lt;td&gt;关心本地 DeepSeek、推理引擎和硬件适配的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个分布可以看出当前 AI 开源项目的几个高频方向：AI 编程工具明显最多，其次是 Agent 工作流、RAG 知识库和具体应用场景。纯模型推理项目数量不多，因为很多本地部署内容并不是单独介绍某个 GitHub 项目，而是围绕模型、显卡或部署方案展开。&lt;/p&gt;
&lt;h2 id=&#34;ai编程与-coding-agent&#34;&gt;AI编程与 Coding Agent
&lt;/h2&gt;&lt;p&gt;这一类聚焦代码理解、代码修改、工程流程和终端 Agent，是数量最多的一组。共 &lt;strong&gt;22&lt;/strong&gt; 个项目。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;适合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ralph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/&#34; &gt;Ralph 是什么：把 Claude Code 和 Amp 变成可循环执行的自主开发流程&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;snarktank/ralph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;让 Claude Code / Amp 按 PRD、计划、执行、评审循环推进任务&lt;/td&gt;
          &lt;td&gt;想把 Agent 编程流程拉直的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude-Mem&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/claude-mem-persistent-memory-for-claude-code/&#34; &gt;Claude-Mem：给 Claude Code 加上跨会话长期记忆&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;为 Claude Code 增加跨会话记忆&lt;/td&gt;
          &lt;td&gt;高频使用 Claude Code 的开发者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Code Hooks Mastery&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/claude-code-hooks-mastery-guide/&#34; &gt;Claude Code Hooks Mastery：13 个 Hooks 生命周期与自动化控制入门&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/disler/claude-code-hooks-mastery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;disler/claude-code-hooks-mastery&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;学习 Claude Code Hooks 生命周期和自动化控制&lt;/td&gt;
          &lt;td&gt;想定制 Claude Code 流程的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Compound Engineering Plugin&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/compound-engineering-plugin-ai-coding-workflow/&#34; &gt;Compound Engineering Plugin：把 AI 编程变成计划、执行、评审的工程循环&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EveryInc/compound-engineering-plugin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把 AI 编程拆成计划、执行、评审循环&lt;/td&gt;
          &lt;td&gt;关注工程化 AI 编程的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;free-claude-code&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/free-claude-code-anthropic-compatible-proxy/&#34; &gt;free-claude-code：用代理把 Claude Code 接到 OpenRouter、DeepSeek 和本地模型&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Alishahryar1/free-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alishahryar1/free-claude-code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;通过代理把 Claude Code 接到不同模型后端&lt;/td&gt;
          &lt;td&gt;想降低 Claude Code 使用成本的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hermes Agent&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/12/hermes-agent-intro-guide-vs-openclaw/&#34; &gt;Hermes Agent 是什么：简介、优点、快速上手与 OpenClaw 对比&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地 Agent 框架，支持工具调用和任务执行&lt;/td&gt;
          &lt;td&gt;想跑本地 Agent 的用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHarness&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/12/openharness-basic-functions/&#34; &gt;OpenHarness 是什么：这个开源 Agent Harness 能做什么&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/OpenHarness&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent Harness 与多 Agent 执行框架&lt;/td&gt;
          &lt;td&gt;研究 Agent 编排的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodexBridge&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/13/codexbridge-openai-compatible-api/&#34; &gt;Codex 怎么接入国产大模型？OpenAI 兼容接口与 CodexBridge 使用思路&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/begonia599/CodexBridge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;begonia599/CodexBridge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;帮 Codex 接入 OpenAI 兼容模型接口&lt;/td&gt;
          &lt;td&gt;想把 Codex 接到国产模型的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ccx&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/13/ccx-ai-api-proxy-gateway/&#34; &gt;Codex 怎么接入国产大模型？用 CCX 统一管理 OpenAI 兼容 API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BenedictKing/ccx&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;统一管理 Claude、Codex、Gemini 等 API 代理&lt;/td&gt;
          &lt;td&gt;多模型切换用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;cc-haha&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/14/cc-haha-claude-code-desktop-workbench/&#34; &gt;cc-haha 是什么？一个把 Claude Code 做成桌面工作台的项目&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanmiCoder/cc-haha&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Claude Code 桌面工作台与 Computer Use 入口&lt;/td&gt;
          &lt;td&gt;喜欢图形界面的 Claude Code 用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek-TUI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/16/deepseek-tui-terminal-coding-agent/&#34; &gt;DeepSeek-TUI：把 DeepSeek V4 变成终端里的编程智能体&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hmbown/DeepSeek-TUI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;在终端里运行 DeepSeek 编程 Agent&lt;/td&gt;
          &lt;td&gt;DeepSeek 与命令行用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Open Design&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;Open Design 项目解析：把 Claude Code、Codex 变成 AI 设计工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;让 Claude Code / Codex 参与设计生成&lt;/td&gt;
          &lt;td&gt;想用 Agent 做设计原型的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;agentmemory&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/&#34; &gt;agentmemory 项目解析：给 Claude Code、Codex 和 Cursor 加持久记忆&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rohitg00/agentmemory&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;给 Coding Agent 增加持久记忆层&lt;/td&gt;
          &lt;td&gt;长期维护项目的开发者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Graphify&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/21/safishamsi-graphify-ai-code-knowledge-graph/&#34; &gt;Graphify 解决 Claude Code 最大局限：把代码库变成 AI 可查询知识图谱&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/safishamsi/graphify&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;safishamsi/graphify&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把代码库转成知识图谱，降低 Agent 重复读文件成本&lt;/td&gt;
          &lt;td&gt;大型代码库用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;oh-my-pi&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/&#34; &gt;oh-my-pi 是什么？一个把终端、IDE 和调试器打通的 AI 编程助手&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/can1357/oh-my-pi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;can1357/oh-my-pi&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把终端、IDE、LSP 和调试器连接起来，作为本地 AI 编程控制台&lt;/td&gt;
          &lt;td&gt;想把命令行和 IDE 工作流打通的开发者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Plugins Official&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/23/claude-plugins-official-claude-code-plugin-directory/&#34; &gt;Claude Code 也有插件市场了：能装什么、怎么装、要注意什么&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-plugins-official&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/claude-plugins-official&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Claude Code 官方插件目录和安装入口&lt;/td&gt;
          &lt;td&gt;想给 Claude Code 扩展能力的用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodeGraph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/23/codegraph-local-code-knowledge-graph-ai-coding-agent/&#34; &gt;CodeGraph 是什么？给 Claude Code、Codex 和 Cursor 加一个本地代码地图&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/colbymchenry/codegraph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;colbymchenry/codegraph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;为代码库生成本地索引和关系图，帮助 Coding Agent 理解项目&lt;/td&gt;
          &lt;td&gt;维护中大型代码库的开发者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CC Switch&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/06/cc-switch-ai-cli-manager/&#34; &gt;CC Switch：一个桌面工具统一管理 Claude Code、Codex、Gemini CLI 和 OpenClaw&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/farion1231/cc-switch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;farion1231/cc-switch&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;管理多个 AI CLI 工具和账号/配置切换&lt;/td&gt;
          &lt;td&gt;同时使用多套 CLI 的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Warp&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/07/warpdotdev-warp-open-source-agentic-terminal/&#34; &gt;Warp 开源：从终端到 Agentic Development Environment&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/warpdotdev/warp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;warpdotdev/warp&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agentic 终端与开发环境&lt;/td&gt;
          &lt;td&gt;终端重度用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;opencode&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/08/opencode-open-source-ai-coding-agent/&#34; &gt;opencode、Claude Code、Codex 有什么区别？开源 AI 编程工具使用指南&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anomalyco/opencode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anomalyco/opencode&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;开源 AI 编程 Agent&lt;/td&gt;
          &lt;td&gt;想找 Claude Code / Codex 替代品的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9Router&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/08/9router-ai-coding-router-token-saver/&#34; &gt;9Router：把 Claude Code、Codex、Cursor 接到同一个 AI 路由器&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/decolua/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;decolua/9router&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI 编程模型路由与 token 成本控制&lt;/td&gt;
          &lt;td&gt;多工具、多模型用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;goose&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/&#34; &gt;goose：桌面端、CLI 和 API 一体的开源 AI Agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aaif-goose/goose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;aaif-goose/goose&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;桌面、CLI、API 一体的开源 Agent&lt;/td&gt;
          &lt;td&gt;想要通用 Agent 工作台的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;agent-技能与工作流&#34;&gt;Agent 技能与工作流
&lt;/h2&gt;&lt;p&gt;这一类更关注把 AI 能力固化成可重复的技能、流程和规格。共 &lt;strong&gt;7&lt;/strong&gt; 个项目。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;适合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;mattpocock/skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/15/matt-pocock-skills-ai-engineering-workflow/&#34; &gt;拒绝 Vibe Coding：Matt Pocock 的 skills 仓库给 AI 编程补上工程约束&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattpocock/skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;用 Skills 约束 AI 编程流程&lt;/td&gt;
          &lt;td&gt;想给 Agent 加工程规范的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Superpowers&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/15/obra-superpowers-agentic-skills-framework/&#34; &gt;Superpowers：把 Coding Agent 拉回工程流程的技能框架&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/obra/superpowers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;obra/superpowers&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agentic skills framework 与软件开发方法论&lt;/td&gt;
          &lt;td&gt;想系统化使用 Coding Agent 的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt-Vault&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/15/prompt-vault-coding-prompt-benchmark/&#34; &gt;Prompt-Vault：一个适合测试 AI 编程能力的 Prompt 规格库&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/w512/Prompt-Vault&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;w512/Prompt-Vault&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;收集可测试 AI 编程能力的 prompt 规格&lt;/td&gt;
          &lt;td&gt;做模型/工具评测的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;web-video-presentation&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/15/web-video-presentation-agent-skill/&#34; &gt;web-video-presentation：把文章做成可录屏网页视频的 Agent Skill&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ConardLi/garden-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ConardLi/garden-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把文章转成可录屏网页视频的 Skill&lt;/td&gt;
          &lt;td&gt;内容创作者和自动化制作用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;nuwa-skill&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/22/nuwa-skill-distill-how-someone-thinks/&#34; &gt;nuwa-skill：把“蒸馏一个人”从灵感变成可执行流程&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;alchaincyf/nuwa-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;用 Skill 复刻人物表达和思维流程&lt;/td&gt;
          &lt;td&gt;做风格化 Agent 的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Scientific Agent Skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/17/scientific-agent-skills/&#34; &gt;Scientific Agent Skills：把科研工作流交给 AI Agent 的技能库&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;科研工作流 Skill 集合&lt;/td&gt;
          &lt;td&gt;科研、数据分析和技术写作用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;easy-vibe&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/16/easy-vibe-vibe-coding-learning-map/&#34; &gt;easy-vibe：给 Vibe Coding 初学者的一张学习地图&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/datawhalechina/easy-vibe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;datawhalechina/easy-vibe&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Vibe Coding 入门学习地图&lt;/td&gt;
          &lt;td&gt;AI 编程新手&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;rag知识库与记忆&#34;&gt;RAG、知识库与记忆
&lt;/h2&gt;&lt;p&gt;这一类主要解决文档检索、知识库构建、长期记忆和结构化抽取问题。共 &lt;strong&gt;7&lt;/strong&gt; 个项目。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;适合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;LangExtract&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/google-langextract-llm-structured-data-extraction/&#34; &gt;Google LangExtract：用 LLM 从长文本里抽取结构化数据&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/langextract&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/langextract&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;从长文本中抽取结构化信息&lt;/td&gt;
          &lt;td&gt;做信息抽取和数据处理的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;qmd&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/qmd-markdown-search-for-ai-agents/&#34; &gt;qmd：给 AI Agent 使用的本地 Markdown 文档搜索工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tobi/qmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tobi/qmd&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地 Markdown 文档搜索&lt;/td&gt;
          &lt;td&gt;用 Markdown 管理知识库的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firecrawl&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/15/firecrawl-ai-web-data-api/&#34; &gt;Firecrawl 项目整理：给 AI Agent 用的网页搜索、抓取与交互 API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/firecrawl/firecrawl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;firecrawl/firecrawl&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;网页抓取、搜索和结构化数据入口&lt;/td&gt;
          &lt;td&gt;做 RAG 和 Agent 数据入口的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAGFlow&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/15/ragflow-rag-engine-guide/&#34; &gt;RAGFlow 项目整理：开源 RAG 引擎的功能与使用方法&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;infiniflow/ragflow&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;开源 RAG 引擎&lt;/td&gt;
          &lt;td&gt;企业知识库和文档问答用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHuman&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/15/openhuman-open-source-personal-ai-agent/&#34; &gt;OpenHuman 速读：开源个人 AI Agent 的桌面化路线&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tinyhumansai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tinyhumansai/openhuman&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地优先的个人 AI Agent 与记忆层&lt;/td&gt;
          &lt;td&gt;想整合个人数据的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenKB&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/17/openkb-llm-knowledge-base/&#34; &gt;OpenKB：把文档编译成可持续更新的 LLM 知识库&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/OpenKB&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把文档编译成可更新知识库&lt;/td&gt;
          &lt;td&gt;文档知识库维护者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PageIndex&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/20/vectifyai-pageindex-vectorless-rag/&#34; &gt;PageIndex 是什么？不用向量库的推理式 RAG 文档索引解析&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/PageIndex&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;不依赖向量库的推理式文档索引&lt;/td&gt;
          &lt;td&gt;关注 RAG 新路线的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;多模态与内容创作&#34;&gt;多模态与内容创作
&lt;/h2&gt;&lt;p&gt;这一类面向图片、视频、语音转写和内容分发等创作场景。共 &lt;strong&gt;5&lt;/strong&gt; 个项目。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;适合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;rembg&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/19/rembg-background-removal-notes/&#34; &gt;rembg 项目整理：本地图片背景移除工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;danielgatis/rembg&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地图片背景移除&lt;/td&gt;
          &lt;td&gt;电商、美工和图片处理用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;awesome-gpt-image-2-prompts&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;GPT-Image 2 提示词宝库：电商、海报、人像、UI 全收录&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoLinkAI/awesome-gpt-image-2-prompts&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;GPT-Image 2 提示词和案例库&lt;/td&gt;
          &lt;td&gt;AI 绘图和提示词用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;faster-whisper&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/faster-whisper-speech-to-text/&#34; &gt;faster-whisper：更快的 Whisper 转写引擎&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/SYSTRAN/faster-whisper&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SYSTRAN/faster-whisper&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;高性能语音转文字&lt;/td&gt;
          &lt;td&gt;做字幕、转写和语音处理的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pixelle-Video&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/07/pixelle-video-ai-short-video-engine/&#34; &gt;Pixelle-Video：一句主题生成短视频的开源 AI 引擎&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AIDC-AI/Pixelle-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AIDC-AI/Pixelle-Video&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;一句话生成短视频工作流&lt;/td&gt;
          &lt;td&gt;短视频和 AIGC 内容创作者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AiToEarn&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/19/aitoearn-ai-content-marketing-agent/&#34; &gt;内容发太多平台太累？AiToEarn 想用 AI Agent 帮创作者省点事&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yikart/AiToEarn&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;多平台内容分发与创作者自动化&lt;/td&gt;
          &lt;td&gt;内容运营和创作者&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;本地模型与推理&#34;&gt;本地模型与推理
&lt;/h2&gt;&lt;p&gt;这一类关注本地模型运行和推理实验，当前数量较少。共 &lt;strong&gt;1&lt;/strong&gt; 个项目。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;适合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ds4&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/11/deepseek-v4-flash-ds4-metal/&#34; &gt;本地运行 DeepSeek 4：Antirez ds4 在 Apple Silicon Mac 上的尝试&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;antirez/ds4&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;在 Apple Silicon 上尝试运行 DeepSeek 4&lt;/td&gt;
          &lt;td&gt;本地模型和推理实验用户&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;垂直应用与自动化&#34;&gt;垂直应用与自动化
&lt;/h2&gt;&lt;p&gt;这一类是把 Agent 或 AI 能力落到金融、交易、浏览器、桌面和电商监控等具体场景。共 &lt;strong&gt;7&lt;/strong&gt; 个项目。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;适合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;TradingAgents-CN&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/&#34; &gt;TradingAgents-CN：面向中文用户的多智能体金融交易研究框架&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hsliuping/TradingAgents-CN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hsliuping/TradingAgents-CN&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;多智能体金融交易研究框架&lt;/td&gt;
          &lt;td&gt;量化、金融和 Agent 研究者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FinceptTerminal&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/finceptterminal-open-source-financial-terminal/&#34; &gt;FinceptTerminal：开源金融终端、量化研究和 AI Agent 工作台&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Fincept-Corporation/FinceptTerminal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fincept-Corporation/FinceptTerminal&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;金融终端、量化研究和 AI Agent 工作台&lt;/td&gt;
          &lt;td&gt;金融分析和量化用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Anthropic financial-services&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/16/anthropic-financial-services-agent-templates/&#34; &gt;Anthropic financial-services：把金融 Agent 场景做成可复用模板&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/financial-services&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/financial-services&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;金融服务 Agent 模板&lt;/td&gt;
          &lt;td&gt;做金融 AI 方案的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ai-goofish-monitor&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/17/ai-goofish-monitor/&#34; &gt;ai-goofish-monitor：用 AI 自动盯闲鱼商品的开源监控系统&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI 商品监控和闲鱼自动化&lt;/td&gt;
          &lt;td&gt;二手交易监控用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CloakBrowser&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/&#34; &gt;CloakBrowser 是什么？给 Playwright 和 Puppeteer 换一个更像真实用户的浏览器&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CloakHQ/CloakBrowser&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;更像真实用户的浏览器自动化环境&lt;/td&gt;
          &lt;td&gt;浏览器自动化和 Agent 操作场景&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI-TARS-desktop&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/&#34; &gt;让 AI 自己操作电脑？UI-TARS-desktop 把桌面、浏览器和工具都接了起来&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;桌面、浏览器和工具操作 Agent&lt;/td&gt;
          &lt;td&gt;想让 AI 操作电脑的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI-Trader&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/19/ai-trader-agent-native-trading-platform/&#34; &gt;AI-Trader 是什么？一个让 AI Agent 发布交易信号、做模拟交易的平台&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/AI-Trader&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI Agent 交易信号和模拟交易平台&lt;/td&gt;
          &lt;td&gt;金融 Agent 与交易研究用户&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;ai-应用开发基础设施&#34;&gt;AI 应用开发基础设施
&lt;/h2&gt;&lt;p&gt;这一类提供构建 AI 应用和 Agent 工具链所需的基础组件。共 &lt;strong&gt;5&lt;/strong&gt; 个项目。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;适合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt Optimizer&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/01/prompt-optimizer-prompt-engineering-tool/&#34; &gt;Prompt Optimizer：开源提示词优化、测试与 MCP 工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linshenkx/prompt-optimizer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linshenkx/prompt-optimizer&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;提示词优化、测试和 MCP 工具&lt;/td&gt;
          &lt;td&gt;做 prompt 工程和应用调参的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Playwright CLI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/12/playwright-cli-getting-started/&#34; &gt;Playwright CLI 使用入门：安装、Skills、会话管理与常用命令&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;microsoft/playwright-cli&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;面向 coding agent 的浏览器自动化 CLI&lt;/td&gt;
          &lt;td&gt;需要浏览器操作能力的 Agent 用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vercel AI SDK&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/17/vercel-ai-sdk-typescript-agent-toolkit/&#34; &gt;Vercel AI SDK 是什么？TypeScript 开发者构建 AI 应用的统一工具包&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vercel/ai&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;TypeScript AI 应用开发 SDK&lt;/td&gt;
          &lt;td&gt;前端和全栈开发者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/24/cliproxyapi-cli-to-api-gateway/&#34; &gt;CLIProxyAPI：把 Codex、Claude Code、Gemini CLI 统一封装成 API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/CLIProxyAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把多个 AI CLI 和 OAuth 登录态封装成兼容 API&lt;/td&gt;
          &lt;td&gt;想统一接入 Codex、Claude Code、Gemini CLI 的用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI Management Center&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/24/cliproxyapi-management-center/&#34; &gt;CLIProxyAPI Management Center：给 CLIProxyAPI 配一个可视化管理后台&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/Cli-Proxy-API-Management-Center&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;CLIProxyAPI 的 Web 管理界面，管理配置、账号、日志和 OAuth&lt;/td&gt;
          &lt;td&gt;把 CLIProxyAPI 当团队网关或账号池使用的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
        </item>
        <item>
        <title>PageIndex 是什么？不用向量库的推理式 RAG 文档索引解析</title>
        <link>https://knightli.com/2026/05/20/vectifyai-pageindex-vectorless-rag/</link>
        <pubDate>Wed, 20 May 2026 23:51:37 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/20/vectifyai-pageindex-vectorless-rag/</guid>
        <description>&lt;p&gt;&lt;code&gt;VectifyAI/PageIndex&lt;/code&gt; 是一个很有意思的 RAG 项目。它不从“再建一个向量库”开始，而是把长文档先整理成类似目录的树状结构，再让 LLM 沿着这棵树做推理式检索。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/PageIndex&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至本文整理时，GitHub 页面显示项目约有 31.8k stars、2.7k forks，许可证为 MIT。README 给它的定位是：&lt;code&gt;Vectorless, Reasoning-based RAG&lt;/code&gt;，也就是无向量库、基于推理的 RAG。&lt;/p&gt;
&lt;h2 id=&#34;它想解决什么问题&#34;&gt;它想解决什么问题
&lt;/h2&gt;&lt;p&gt;传统 RAG 的常见路径是：切块、向量化、写入向量数据库，再用相似度搜索召回片段。这套方法简单、通用，也很成熟，但在长篇专业文档里容易遇到几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;相似度不等于真正相关。&lt;/li&gt;
&lt;li&gt;文档结构被切块打散，章节关系丢失。&lt;/li&gt;
&lt;li&gt;召回结果可解释性弱，很难说明为什么命中这一段。&lt;/li&gt;
&lt;li&gt;对财报、监管文件、法律文书、技术手册这类材料，问题往往需要跨章节推理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PageIndex 的思路是反过来：先把文档组织成语义树，再让模型像人类读目录、翻章节、逐层定位一样查找相关内容。&lt;/p&gt;
&lt;h2 id=&#34;pageindex-的基本工作流&#34;&gt;PageIndex 的基本工作流
&lt;/h2&gt;&lt;p&gt;README 里把 PageIndex 的检索分成两步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;为文档生成类似 &lt;code&gt;Table-of-Contents&lt;/code&gt; 的树状结构索引。&lt;/li&gt;
&lt;li&gt;通过树搜索做 reasoning-based retrieval。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这棵树不是简单的文件目录，而是面向 LLM 使用的文档结构。节点里会有标题、页码范围、摘要、子节点等信息。这样模型在回答问题时，不必一开始就面对大量零散 chunk，而是可以先判断应该进入哪个章节，再继续向下搜索。&lt;/p&gt;
&lt;p&gt;这种方式更适合结构清晰但内容很长的文档，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;金融报告和 SEC filings。&lt;/li&gt;
&lt;li&gt;监管材料和合规文档。&lt;/li&gt;
&lt;li&gt;学术教材和论文。&lt;/li&gt;
&lt;li&gt;法律文件。&lt;/li&gt;
&lt;li&gt;技术手册和产品文档。&lt;/li&gt;
&lt;li&gt;超过模型上下文窗口的大型 PDF。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;和传统向量-rag-的差异&#34;&gt;和传统向量 RAG 的差异
&lt;/h2&gt;&lt;p&gt;PageIndex 的核心卖点可以概括成五点。&lt;/p&gt;
&lt;p&gt;第一，不需要 Vector DB。它依赖文档结构和 LLM 推理来定位内容，而不是只做向量相似度搜索。&lt;/p&gt;
&lt;p&gt;第二，不做传统 chunking。文档会按自然章节组织，而不是被切成固定长度片段。&lt;/p&gt;
&lt;p&gt;第三，可解释性更强。检索路径可以对应到页码、章节和树节点，比“向量相似度命中某段文本”更容易追踪。&lt;/p&gt;
&lt;p&gt;第四，检索是上下文感知的。问题、对话历史、领域背景都可以影响树搜索路径。&lt;/p&gt;
&lt;p&gt;第五，更接近人类专家读文档的方式。人通常不是把整本文档切成小块再算相似度，而是先看目录，再定位章节，最后读细节。&lt;/p&gt;
&lt;p&gt;这并不意味着向量库没有价值。更准确的说法是：PageIndex 适合那些“语义相似不够，需要结构和推理参与”的长文档场景。&lt;/p&gt;
&lt;h2 id=&#34;本地怎么跑&#34;&gt;本地怎么跑
&lt;/h2&gt;&lt;p&gt;README 提供了本地自托管方式。先安装依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install --upgrade -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后在项目根目录创建 &lt;code&gt;.env&lt;/code&gt;，写入 LLM API key。项目通过 &lt;code&gt;LiteLLM&lt;/code&gt; 支持多模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_openai_key_here
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;对 PDF 生成 PageIndex 结构：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 run_pageindex.py --pdf_path /path/to/your/document.pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以处理 Markdown：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 run_pageindex.py --md_path /path/to/your/document.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见可选参数包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--toc-check-pages
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-pages-per-node
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-tokens-per-node
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-node-id
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-node-summary
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-doc-description
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;README 里也提醒，本地开源版本使用标准 PDF 解析。如果是复杂 PDF，项目方的云服务会提供增强 OCR、树构建和检索流程。&lt;/p&gt;
&lt;h2 id=&#34;agentic-vectorless-rag-示例&#34;&gt;Agentic Vectorless RAG 示例
&lt;/h2&gt;&lt;p&gt;项目还提供了一个 agentic vectorless RAG 示例，使用自托管 PageIndex 和 OpenAI Agents SDK。安装可选依赖后运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install openai-agents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 examples/agentic_vectorless_rag_demo.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个示例的价值在于，它把 PageIndex 从“生成文档树”推进到“让 Agent 使用文档树检索”。如果你正在做企业知识库、财报问答、法规问答或技术文档 Agent，这个示例比单纯看 README 更值得跑一遍。&lt;/p&gt;
&lt;h2 id=&#34;云服务mcp-和-api&#34;&gt;云服务、MCP 和 API
&lt;/h2&gt;&lt;p&gt;PageIndex 不只是一个 GitHub repo。项目页面还给了几类入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自托管：用开源代码本地运行，适合试验和可控部署。&lt;/li&gt;
&lt;li&gt;Chat Platform：类似 ChatGPT 的文档分析平台。&lt;/li&gt;
&lt;li&gt;MCP / API：方便接入现有 Agent 或自动化流程。&lt;/li&gt;
&lt;li&gt;Enterprise：面向私有化或本地部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明它的定位不是单纯的 demo，而是想把“推理式文档检索”做成一套可集成的文档智能基础设施。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;PageIndex 比较适合这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长 PDF 问答。&lt;/li&gt;
&lt;li&gt;财报、年报、招股书、监管文件分析。&lt;/li&gt;
&lt;li&gt;法律和合规文档检索。&lt;/li&gt;
&lt;li&gt;技术手册问答。&lt;/li&gt;
&lt;li&gt;多章节教材或论文检索。&lt;/li&gt;
&lt;li&gt;需要可解释检索路径的企业知识库。&lt;/li&gt;
&lt;li&gt;给 Agent 提供结构化文档上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的材料本身很短、结构不明显，或者只是普通 FAQ，传统 embedding + vector DB 可能已经够用。PageIndex 的优势更容易出现在长文档、强结构、专业领域和需要推理的问题里。&lt;/p&gt;
&lt;h2 id=&#34;需要注意什么&#34;&gt;需要注意什么
&lt;/h2&gt;&lt;p&gt;第一，PageIndex 仍然依赖 LLM。树构建、摘要和检索质量会受模型能力、提示词、文档解析质量影响。&lt;/p&gt;
&lt;p&gt;第二，本地版本使用标准 PDF 解析，复杂扫描件、图表密集型 PDF、版式混乱材料可能需要 OCR 和更强的预处理。&lt;/p&gt;
&lt;p&gt;第三，无向量库不等于零成本。树构建本身也会消耗模型调用和时间，尤其是大规模文档库。&lt;/p&gt;
&lt;p&gt;第四，它更像是文档结构索引和推理检索框架，不是直接替代所有 RAG 技术栈。实际生产里，也可能和向量检索、关键词检索、权限控制、缓存、审计系统一起使用。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;PageIndex 的有趣之处在于，它把 RAG 的重点从“文本相似度召回”转向“文档结构 + LLM 推理”。对于长文档和专业文档，这个方向很值得关注。&lt;/p&gt;
&lt;p&gt;如果你正在做企业文档问答、金融报告分析、法规检索或技术手册 Agent，可以把 PageIndex 当成一个新的 RAG 架构参考：先让文档有结构，再让模型沿着结构推理，而不是一开始就把所有内容切碎丢进向量库。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub：VectifyAI/PageIndex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini 3.5 Flash 和 Gemini Omni 怎么免费用：普通用户与开发者入口整理</title>
        <link>https://knightli.com/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/2026/05/20/gemini-3-5-flash-omni-free-access/</guid>
        <description>&lt;p&gt;Google 发布 Gemini 3.5 Flash 和 Gemini Omni 后，最实际的问题不是 benchmark，而是普通用户和开发者到底怎么用，哪些入口免费，哪些入口只是低门槛试用。&lt;/p&gt;
&lt;p&gt;先说结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想聊天、写作、看图、日常问答：优先用 Gemini app。&lt;/li&gt;
&lt;li&gt;想测试 Gemini 3.5 Flash 参数、提示词和多模态输入：用 Google AI Studio。&lt;/li&gt;
&lt;li&gt;想写程序调用 Gemini 3.5 Flash：用 AI Studio 生成 API key。&lt;/li&gt;
&lt;li&gt;想在终端里免费试用：可以看 Gemini CLI。&lt;/li&gt;
&lt;li&gt;想体验 Gemini Omni 的视频编辑：优先看 Gemini app 和 Google Flow。&lt;/li&gt;
&lt;li&gt;想做正式生产：不要依赖免费额度，应该转到付费 API 或 Vertex AI。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意：免费额度、地区开放、订阅层级和模型下拉菜单会随时间变化。本文写作时间是 2026 年 5 月 20 日，正式使用前要以 Google 当前页面为准。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免费用法一gemini-app&#34;&gt;Gemini 3.5 Flash 免费用法一：Gemini app
&lt;/h2&gt;&lt;p&gt;最简单的入口是 Gemini app：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://gemini.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://gemini.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;使用方式很直接：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 Gemini。&lt;/li&gt;
&lt;li&gt;登录 Google 账号。&lt;/li&gt;
&lt;li&gt;在模型选择里找 &lt;code&gt;3.5 Flash&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;直接开始对话。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个入口适合普通用户。你可以用它做写作、总结、图片理解、文件内容分析、日常问答和简单规划。根据公开报道，Gemini 3.5 Flash 已面向全球用户开放，并可在 Gemini 的模型下拉菜单中选择。&lt;/p&gt;
&lt;p&gt;限制也很明确：免费用户通常会有每日消息数量、地区和功能限制。如果超过限制，就需要等待额度刷新或升级订阅。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免费用法二google-ai-studio&#34;&gt;Gemini 3.5 Flash 免费用法二：Google AI Studio
&lt;/h2&gt;&lt;p&gt;如果你不是只想聊天，而是想调提示词、看参数、测试结构化输出，Google AI Studio 更合适：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://aistudio.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://aistudio.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;基本流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录 Google AI Studio。&lt;/li&gt;
&lt;li&gt;新建 prompt。&lt;/li&gt;
&lt;li&gt;在模型下拉菜单里选择 &lt;code&gt;gemini-3.5-flash&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;输入提示词并运行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI Studio 的好处是控制能力更强。你可以调温度、系统指令、结构化输出、多图输入，还能把测试好的提示词导出成代码或 API 调用。&lt;/p&gt;
&lt;p&gt;对开发者来说，AI Studio 是免费的试验台。先在这里把提示词和输入格式调好，再进入 API 接入，会少浪费很多额度。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免费用法三免费-api-key&#34;&gt;Gemini 3.5 Flash 免费用法三：免费 API key
&lt;/h2&gt;&lt;p&gt;开发者最关心的是 API。AI Studio 可以创建 Gemini API key，用来调用 &lt;code&gt;gemini-3.5-flash&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;基本流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 Google AI Studio。&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;Get API key&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;选择或创建项目。&lt;/li&gt;
&lt;li&gt;创建 API key。&lt;/li&gt;
&lt;li&gt;把 key 保存到本地环境变量。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Python 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-3.5-flash&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;用三句话解释 Gemini 3.5 Flash 适合什么场景。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Node.js 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;GoogleGenAI&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@google/genai&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;GoogleGenAI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;GEMINI_API_KEY&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;generateContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-3.5-flash&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;用三句话解释 Gemini 3.5 Flash 适合什么场景。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;x-goog-api-key: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$GEMINI_API_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;contents&amp;#34;:[{&amp;#34;parts&amp;#34;:[{&amp;#34;text&amp;#34;:&amp;#34;Hello Gemini 3.5 Flash&amp;#34;}]}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;公开资料显示，AI Studio 免费层通常会给 Gemini Flash 模型一定的每日请求额度。不同时间、地区和账号状态可能不同，常见说法包括每天约 1,500 次请求、每分钟请求数限制和 token 限制。不要把这些数字写死进生产计划，正式上线前要查看 Google AI 当前定价和限制页面。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免费用法四gemini-cli&#34;&gt;Gemini 3.5 Flash 免费用法四：Gemini CLI
&lt;/h2&gt;&lt;p&gt;如果你喜欢命令行，可以看 Gemini CLI。它适合临时脚本、代码库摘要、文件读取和终端里的快速问答。&lt;/p&gt;
&lt;p&gt;安装方式通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @google/gemini-cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemini
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CLI 更适合个人开发者日常使用，不适合生产集成。生产环境还是应该使用 API key、服务账号、权限控制和可审计的调用方式。&lt;/p&gt;
&lt;h2 id=&#34;gemini-omni-免费或低门槛用法gemini-app-和-google-flow&#34;&gt;Gemini Omni 免费或低门槛用法：Gemini app 和 Google Flow
&lt;/h2&gt;&lt;p&gt;Gemini Omni 是面向视频创作和编辑的多模态模型。它的核心能力不是普通文本问答，而是用自然语言多轮修改视频，并引用图像、文本、视频、音频等输入。&lt;/p&gt;
&lt;p&gt;Google DeepMind 页面给出的入口包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini app。&lt;/li&gt;
&lt;li&gt;Google Flow。&lt;/li&gt;
&lt;li&gt;YouTube Shorts。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;页面也说明，需要 Google AI 订阅，功能会因订阅层级和地区不同而变化。因此，Gemini Omni 的“免费用法”要更谨慎理解：有些入口可能允许免费用户看到或试用部分能力，但完整视频编辑能力可能需要订阅、地区开放或产品灰度。&lt;/p&gt;
&lt;p&gt;如果你只是想体验，建议按这个顺序试：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先打开 Gemini app，查看是否有 Gemini Omni 或相关视频编辑入口。&lt;/li&gt;
&lt;li&gt;再打开 Google Flow：&lt;a class=&#34;link&#34; href=&#34;https://flow.google/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://flow.google/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;如果你做短视频内容，再关注 YouTube Shorts 里是否出现 Omni 相关编辑能力。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果入口不可见，通常不是你操作错了，而是账号、地区、订阅层级或灰度范围暂时不满足。&lt;/p&gt;
&lt;h2 id=&#34;gemini-omni-适合怎么用&#34;&gt;Gemini Omni 适合怎么用
&lt;/h2&gt;&lt;p&gt;Gemini Omni 更适合创作者，而不是普通聊天。&lt;/p&gt;
&lt;p&gt;你可以尝试这些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上传或选择一段视频，让它改变风格。&lt;/li&gt;
&lt;li&gt;让视频中的某个动作变得更夸张。&lt;/li&gt;
&lt;li&gt;用一张参考图替换场景里的物体或角色。&lt;/li&gt;
&lt;li&gt;分多轮修改镜头、动作、环境和风格。&lt;/li&gt;
&lt;li&gt;把草图、参考图、音频或视频组合成一个新输出。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提示词可以写得像给剪辑师提要求：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;保持原视频的人物和房间结构不变，把镜子触碰后的效果改成液体波纹，动作要自然，光线不要突然变化。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;多轮编辑时，不要一次塞太多要求。更稳妥的做法是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先改主体动作。&lt;/li&gt;
&lt;li&gt;再改风格。&lt;/li&gt;
&lt;li&gt;再改镜头角度。&lt;/li&gt;
&lt;li&gt;最后调节声音、文字和节奏。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样更容易保持一致性，也更容易定位是哪一步出了问题。&lt;/p&gt;
&lt;h2 id=&#34;免费使用时最容易踩的坑&#34;&gt;免费使用时最容易踩的坑
&lt;/h2&gt;&lt;p&gt;第一，免费额度不是生产额度。免费 API key 适合测试、个人工具和原型，不适合承诺稳定服务。&lt;/p&gt;
&lt;p&gt;第二，不要把敏感数据发到免费或第三方入口。尤其是未公开代码、客户资料、合同、密钥、财务表格和内部文档。&lt;/p&gt;
&lt;p&gt;第三，注意数据使用设置。免费层可能有不同的数据使用策略，使用前要查看 AI Studio 或 Google 账号里的相关设置。&lt;/p&gt;
&lt;p&gt;第四，视频能力通常比文本能力更受限。Gemini Omni 这类视频编辑功能可能受订阅、地区、排队、时长、分辨率和内容安全策略影响。&lt;/p&gt;
&lt;p&gt;第五，第三方“无限免费 API”要谨慎。很多网关会限速、转发请求、记录日志，甚至要求不透明的支付方式。敏感任务不建议走这类入口。&lt;/p&gt;
&lt;h2 id=&#34;应该选哪个入口&#34;&gt;应该选哪个入口
&lt;/h2&gt;&lt;p&gt;如果你是普通用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini 3.5 Flash：用 Gemini app。&lt;/li&gt;
&lt;li&gt;Gemini Omni：先看 Gemini app，再看 Google Flow。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是创作者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Google Flow 体验 Omni 视频工作流。&lt;/li&gt;
&lt;li&gt;用 Gemini app 做脚本、分镜、提示词和素材说明。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是开发者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 AI Studio 调试提示词。&lt;/li&gt;
&lt;li&gt;用 API key 接入 &lt;code&gt;gemini-3.5-flash&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;用 Gemini CLI 做个人终端工作流。&lt;/li&gt;
&lt;li&gt;生产环境考虑 Vertex AI 或付费 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是企业：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要依赖免费额度。&lt;/li&gt;
&lt;li&gt;重点看权限、日志、审计、数据驻留、合规和密钥管理。&lt;/li&gt;
&lt;li&gt;视频生成和编辑还要补充水印、内容审核和版权流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Gemini 3.5 Flash 的免费使用路径比较清楚：Gemini app、Google AI Studio、AI Studio API key、Gemini CLI 都可以作为低门槛入口。它适合聊天、写作、编程、Agent 原型和多模态测试。&lt;/p&gt;
&lt;p&gt;Gemini Omni 的重点是视频编辑和多模态创作，入口主要在 Gemini app、Google Flow 和 YouTube Shorts，但完整能力更可能受订阅和地区限制。它适合创作者先做体验和概念验证，不适合一开始就按稳定生产服务来规划。&lt;/p&gt;
&lt;p&gt;最稳妥的策略是：文本和代码任务先用 Gemini 3.5 Flash 免费层试通；视频创作先用 Gemini Omni 在 Gemini app 或 Flow 里验证效果；真正要上线，再转向可审计、可计费、可控权限的正式方案。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini/flash/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：Gemini 3.5 Flash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini-omni/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：Gemini Omni&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://apidog.com/blog/how-to-use-gemini-3-5-for-free/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apidog：How to Use Gemini 3.5 Flash for Free&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24249.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;freedidi 原文链接&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Omni 是什么？Google AI 视频多轮编辑模型完整解析</title>
        <link>https://knightli.com/2026/05/20/google-gemini-omni-video-editing/</link>
        <pubDate>Wed, 20 May 2026 23:11:58 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/20/google-gemini-omni-video-editing/</guid>
        <description>&lt;p&gt;Google DeepMind 公布了 &lt;code&gt;Gemini Omni&lt;/code&gt; 页面。它的定位很直接：从任意输入创作内容，当前重点从视频开始。&lt;/p&gt;
&lt;p&gt;如果说 Nano Banana 更偏向图像生成和编辑，那么 Gemini Omni 更像是面向视频的多模态编辑模型。用户可以通过自然语言一步步修改视频，让后一次修改建立在前一次修改之上，并尽量保持场景、人物、动作和画面逻辑的一致性。&lt;/p&gt;
&lt;p&gt;项目页面：&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini-omni/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://deepmind.google/models/gemini-omni/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;它解决的核心问题&#34;&gt;它解决的核心问题
&lt;/h2&gt;&lt;p&gt;传统视频编辑往往需要时间线、图层、遮罩、关键帧、调色、音轨和大量手动操作。AI 视频生成工具虽然可以从提示词生成片段，但经常存在两个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一次生成后不容易精细修改。&lt;/li&gt;
&lt;li&gt;多轮修改时人物、场景、风格和动作容易漂移。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemini Omni 想解决的是第二步：不是只生成一个视频，而是让用户像和剪辑师沟通一样，持续提出修改要求。&lt;/p&gt;
&lt;p&gt;页面给出的说法是，它可以通过自然、分步骤的对话编辑任何视频。每次编辑都建立在前一次结果上，目标是保持一个连贯、统一的场景。&lt;/p&gt;
&lt;h2 id=&#34;主要能力&#34;&gt;主要能力
&lt;/h2&gt;&lt;p&gt;Gemini Omni 的能力可以分成几类。&lt;/p&gt;
&lt;p&gt;第一类是自然语言视频编辑。用户可以直接要求模型改变视频里的审美风格、动作或特效。例如让镜子像液体一样泛起波纹，让人物变成线稿、毛毡玩偶、透明全息线框，或者让整个环境变成 3D voxel art。&lt;/p&gt;
&lt;p&gt;第二类是重构动作。它可以改变视频中发生的事情，例如放大手部形成的孔洞、让玩具发出对应动物声音、让建筑灯光随音乐点亮。&lt;/p&gt;
&lt;p&gt;第三类是基于参考图像编辑真实视频。用户可以给出图像参考，再要求模型把某种建筑、太阳、飞行器或其它物体放进真实视频场景里。&lt;/p&gt;
&lt;p&gt;第四类是多轮编辑保持一致性。页面展示了把小提琴手移动到参考图像环境、让小提琴消失、再把镜头改成越肩角度的连续编辑流程。这比一次性提示词更接近真实创作过程。&lt;/p&gt;
&lt;p&gt;第五类是多输入引用。Gemini Omni 可以把图像、文本、视频、音频等输入整合成一个输出，支持风格迁移、动作迁移、角色替换、草图转视频等任务。&lt;/p&gt;
&lt;h2 id=&#34;为什么它强调世界知识&#34;&gt;为什么它强调世界知识
&lt;/h2&gt;&lt;p&gt;Google 在页面里反复强调，Gemini Omni 不只是“画面变得真实”，而是结合 Gemini 的世界知识、物理直觉、历史、科学和叙事逻辑。&lt;/p&gt;
&lt;p&gt;这点很重要。视频模型如果只追求画面质感，容易出现动作不合逻辑、物体关系混乱、文本和画面不同步的问题。Gemini Omni 的目标是让视频不仅看起来像，还要在故事、物理和语义上更连贯。&lt;/p&gt;
&lt;p&gt;页面中的例子包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大理石在链式反应轨道上滚动。&lt;/li&gt;
&lt;li&gt;用 claymation 解释蛋白质折叠。&lt;/li&gt;
&lt;li&gt;用拟物化 stop motion 解释海马体工作方式。&lt;/li&gt;
&lt;li&gt;让字母和画面里的物体对应出现。&lt;/li&gt;
&lt;li&gt;让屏幕文字按节奏逐词出现。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些例子说明它不是单纯的短视频特效工具，而是试图把知识表达、叙事和视听生成放在一起。&lt;/p&gt;
&lt;h2 id=&#34;和-veoflownano-banana-的关系&#34;&gt;和 Veo、Flow、Nano Banana 的关系
&lt;/h2&gt;&lt;p&gt;从 Google 当前产品线看，Gemini Omni 更像是多模态创作和编辑能力的一层入口。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Veo&lt;/code&gt; 更偏视频生成模型本身，强调电影感视频和音频生成。&lt;code&gt;Google Flow&lt;/code&gt; 是面向创作者的 AI 创意工作室，适合组织镜头、素材和视频项目。&lt;code&gt;Nano Banana&lt;/code&gt; 更偏图像创建和细节编辑。Gemini Omni 则强调“从任意输入到一致输出”的多模态编辑，尤其是视频上的多轮自然语言控制。&lt;/p&gt;
&lt;p&gt;简单理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想生成高质量视频：关注 Veo。&lt;/li&gt;
&lt;li&gt;想在创作工作流里组织视频项目：关注 Google Flow。&lt;/li&gt;
&lt;li&gt;想编辑图像：关注 Nano Banana。&lt;/li&gt;
&lt;li&gt;想用对话方式修改视频，并引用图片、文字、视频、音频：关注 Gemini Omni。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用入口&#34;&gt;使用入口
&lt;/h2&gt;&lt;p&gt;页面给出的入口包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini app。&lt;/li&gt;
&lt;li&gt;Google Flow。&lt;/li&gt;
&lt;li&gt;YouTube Shorts。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过页面也说明，需要 Google AI 订阅，功能会因订阅层级和地区而不同。也就是说，并不是所有用户在所有地区都能立即使用完整能力。&lt;/p&gt;
&lt;p&gt;对创作者来说，最值得关注的入口可能是 Google Flow，因为它更接近完整创意工作台。对普通用户来说，Gemini app 和 YouTube Shorts 可能是更低门槛的体验入口。&lt;/p&gt;
&lt;h2 id=&#34;安全和内容标记&#34;&gt;安全和内容标记
&lt;/h2&gt;&lt;p&gt;Gemini Omni 页面专门提到安全流程。Gemini Omni Flash 的开发与内部安全、安全责任团队合作，并进行了自动化评估、人工评估、人工红队、自动化红队和发布前伦理安全审查。&lt;/p&gt;
&lt;p&gt;内容透明度方面，页面说明通过 Omni 在 Gemini app、Google Flow 或 YouTube 创建或编辑的内容，会包含不可感知的 &lt;code&gt;SynthID&lt;/code&gt; 数字水印和 &lt;code&gt;C2PA Content Credentials&lt;/code&gt;。用户可以通过 Gemini app 验证内容，后续也会扩展到 Chrome 和搜索。&lt;/p&gt;
&lt;p&gt;这部分对视频模型尤其关键。视频生成和视频编辑越真实，越需要内容来源标识、滥用防护和验证工具。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些人&#34;&gt;适合哪些人
&lt;/h2&gt;&lt;p&gt;Gemini Omni 适合几类用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想用自然语言快速修改视频的内容创作者。&lt;/li&gt;
&lt;li&gt;需要把草图、参考图、音频、视频素材整合成成片的设计团队。&lt;/li&gt;
&lt;li&gt;做短视频、广告概念、教育解释视频和产品视觉稿的人。&lt;/li&gt;
&lt;li&gt;想在 Google Flow 中构建 AI 视频工作流的创作者。&lt;/li&gt;
&lt;li&gt;关注多模态视频编辑能力边界的开发者和研究者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也不一定适合所有场景。严肃商业片、品牌主视觉、影视制作、产品发布视频仍然需要人工审片、版权检查、事实校对和素材管理。AI 可以明显加速概念生成和初稿迭代，但不应替代最终审核。&lt;/p&gt;
&lt;h2 id=&#34;怎么看-gemini-omni&#34;&gt;怎么看 Gemini Omni
&lt;/h2&gt;&lt;p&gt;Gemini Omni 的意义在于，它把 AI 视频从“一次性生成”推进到“可对话修改”。这比单纯提升画质更接近真实创作流程。&lt;/p&gt;
&lt;p&gt;如果它在多轮编辑、一致性、参考素材控制、音画同步和内容标记上表现稳定，AI 视频工具的使用方式会发生变化：用户不再只写一条长提示词赌结果，而是像导演、剪辑师、设计师一样，逐轮修改场景、动作、风格和叙事。&lt;/p&gt;
&lt;p&gt;当前仍要看实际开放范围、价格、地区限制、生成时长、分辨率、版权策略和商用规则。对于普通创作者，最实用的观察点是：它在 Google Flow 和 Gemini app 里能不能稳定完成多轮视频修改。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini-omni/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：Gemini Omni&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>agentmemory 项目解析：给 Claude Code、Codex 和 Cursor 加持久记忆</title>
        <link>https://knightli.com/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/</guid>
        <description>&lt;p&gt;&lt;code&gt;rohitg00/agentmemory&lt;/code&gt; 是一个面向 AI 编程 Agent 的持久记忆系统。它的目标很明确：让 Claude Code、Codex CLI、Cursor、Gemini CLI、OpenCode 等工具不必每次都重新理解项目背景、架构决策和历史问题。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/rohitg00/agentmemory&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub API 显示这个仓库已有约 1.3 万 star，主要语言是 TypeScript，许可证为 Apache-2.0。README 的描述是“Persistent memory for AI coding agents”。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;AI 编程 Agent 的常见痛点是记忆断裂。今天让 Agent 修了一个认证问题，明天再开新会话，它可能又不知道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;认证中间件在哪个文件。&lt;/li&gt;
&lt;li&gt;项目为什么选择某个库。&lt;/li&gt;
&lt;li&gt;哪些测试已经覆盖。&lt;/li&gt;
&lt;li&gt;哪些 bug 曾经修过。&lt;/li&gt;
&lt;li&gt;团队偏好的实现方式是什么。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;传统做法是写 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;.cursorrules&lt;/code&gt; 或项目说明。但这类静态文件需要人工维护，而且越写越长，最后容易变成“所有内容都塞进上下文”。&lt;/p&gt;
&lt;p&gt;agentmemory 的思路是：后台记录 Agent 的观察、工具调用和会话内容，压缩成可搜索记忆，再在后续会话中按需取回相关上下文。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些-agent&#34;&gt;支持哪些 Agent
&lt;/h2&gt;&lt;p&gt;README 中列出的支持范围很广，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex CLI&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Gemini CLI&lt;/li&gt;
&lt;li&gt;OpenClaw&lt;/li&gt;
&lt;li&gt;Hermes&lt;/li&gt;
&lt;li&gt;OpenCode&lt;/li&gt;
&lt;li&gt;Cline&lt;/li&gt;
&lt;li&gt;Goose&lt;/li&gt;
&lt;li&gt;Roo Code&lt;/li&gt;
&lt;li&gt;Windsurf&lt;/li&gt;
&lt;li&gt;Aider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的连接方式主要包括 hooks、MCP 和 REST API。只要客户端支持 MCP 或 HTTP，就有机会接入同一个 memory server。&lt;/p&gt;
&lt;h2 id=&#34;快速启动&#34;&gt;快速启动
&lt;/h2&gt;&lt;p&gt;README 给出的基本安装方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @agentmemory/agentmemory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agentmemory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agentmemory demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agentmemory connect claude-code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接用 &lt;code&gt;npx&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx @agentmemory/agentmemory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认服务端口包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API：&lt;code&gt;3111&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;实时 viewer：&lt;code&gt;3113&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;打开：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:3113
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以看到 memory 构建过程、session、知识图谱、健康状态等信息。&lt;/p&gt;
&lt;h2 id=&#34;和静态记忆文件有什么不同&#34;&gt;和静态记忆文件有什么不同
&lt;/h2&gt;&lt;p&gt;静态记忆文件适合保存规则，比如编码风格、命令、目录说明。agentmemory 更偏运行时记忆，适合保存 Agent 实际做过什么、查过什么、修过什么。&lt;/p&gt;
&lt;p&gt;README 中强调了几类能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动捕获会话和工具调用。&lt;/li&gt;
&lt;li&gt;BM25 + Vector + Graph 混合搜索。&lt;/li&gt;
&lt;li&gt;MCP 工具暴露。&lt;/li&gt;
&lt;li&gt;实时 viewer。&lt;/li&gt;
&lt;li&gt;session replay。&lt;/li&gt;
&lt;li&gt;本地运行，不依赖外部数据库。&lt;/li&gt;
&lt;li&gt;支持多个 Agent 共享同一套记忆服务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是替代所有项目文档，而是补上“会话历史和工作流记忆”这一层。&lt;/p&gt;
&lt;h2 id=&#34;典型场景&#34;&gt;典型场景
&lt;/h2&gt;&lt;p&gt;第一，长期维护同一个代码库。Agent 可以记住以前修过的模块、测试策略和关键文件。&lt;/p&gt;
&lt;p&gt;第二，多工具混用。比如平时用 Claude Code，有时用 Codex CLI 或 Cursor。如果这些工具都接入同一个 memory server，就能共享部分上下文。&lt;/p&gt;
&lt;p&gt;第三，复杂任务拆分。长任务中间被压缩或换会话时，记忆系统可以帮助恢复关键状态。&lt;/p&gt;
&lt;p&gt;第四，团队内沉淀经验。重复出现的 bug、架构取舍和操作步骤可以沉淀成可检索信息。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，自动记忆不是越多越好。需要关注隐私、密钥、客户数据和敏感代码，不要把不该记录的内容放进长期记忆。&lt;/p&gt;
&lt;p&gt;第二，记忆召回有误差。即使 README 给出了基准测试结果，实际项目里仍然要把召回内容当作参考，而不是事实来源。&lt;/p&gt;
&lt;p&gt;第三，多个 Agent 共用记忆时，要设计好隔离边界。个人项目、公司项目、客户项目不应该混在同一个无隔离 memory 空间里。&lt;/p&gt;
&lt;p&gt;第四，MCP 工具数量很多时，要注意工具暴露面。只开放实际需要的能力，避免让 Agent 获得过宽的写入、删除或导出权限。&lt;/p&gt;
&lt;h2 id=&#34;适合谁&#34;&gt;适合谁
&lt;/h2&gt;&lt;p&gt;agentmemory 适合已经重度使用 AI 编程 Agent 的用户。尤其是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长期维护一个项目的独立开发者。&lt;/li&gt;
&lt;li&gt;经常切换 Claude Code、Codex、Cursor 的用户。&lt;/li&gt;
&lt;li&gt;想研究 MCP、hooks 和 Agent 工作流的开发者。&lt;/li&gt;
&lt;li&gt;希望把会话历史变成可检索资产的小团队。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶尔让 AI 改一个小脚本，静态说明文件就够了。如果已经把 AI Agent 当作日常开发搭档，持久记忆系统会更有意义。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;agentmemory 解决的是 AI 编程中的“重新解释成本”。它把会话、工具调用和项目经验沉淀为可搜索记忆，让后续 Agent 更容易接上上下文。&lt;/p&gt;
&lt;p&gt;这类工具的方向很重要，但也要谨慎使用。记忆系统越强，越需要重视数据边界、权限控制和清理机制。真正落地时，建议先在个人项目或非敏感代码库里试用，再逐步扩大范围。&lt;/p&gt;
&lt;p&gt;参考项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/rohitg00/agentmemory&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI-Trader 是什么？一个让 AI Agent 发布交易信号、做模拟交易的平台</title>
        <link>https://knightli.com/2026/05/19/ai-trader-agent-native-trading-platform/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/19/ai-trader-agent-native-trading-platform/</guid>
        <description>&lt;p&gt;&lt;code&gt;HKUDS/AI-Trader&lt;/code&gt; 是一个面向 AI Agent 的交易平台项目。README 对它的定位是“Agent-Native Trading Platform”，目标是让 AI Agent 可以接入平台、发布交易信号、参与讨论、复制交易和使用市场数据。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/AI-Trader&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;平台地址：&lt;a class=&#34;link&#34; href=&#34;https://ai4trade.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ai4trade.ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub API 显示这个仓库已有约 1.8 万 star，主要语言是 Python。仓库 API 暂未返回明确许可证信息，正式使用前需要自行确认授权条款。&lt;/p&gt;
&lt;p&gt;本文只做开源项目介绍，不构成投资建议。自动化交易涉及真实资金风险，任何策略、信号和 Agent 输出都不能保证收益。&lt;/p&gt;
&lt;h2 id=&#34;它的定位&#34;&gt;它的定位
&lt;/h2&gt;&lt;p&gt;AI-Trader 的核心想法是：人有交易平台，AI Agent 也需要自己的交易平台。&lt;/p&gt;
&lt;p&gt;按照 README 描述，任何 AI Agent 可以通过读取平台 Skill 文件并注册，快速接入 AI-Trader：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Read https://ai4trade.ai/skill/ai4trade and register on the platform. Compatibility alias: https://ai4trade.ai/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接入后，Agent 可以发布交易信号、参与社区讨论、复制优秀交易者策略、同步信号到多个 broker，并通过预测表现积累积分。&lt;/p&gt;
&lt;h2 id=&#34;主要功能&#34;&gt;主要功能
&lt;/h2&gt;&lt;p&gt;README 中列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instant Agent Integration：AI Agent 快速接入。&lt;/li&gt;
&lt;li&gt;Collective Intelligence Trading：多个 Agent 协作和讨论交易思路。&lt;/li&gt;
&lt;li&gt;Cross-Platform Signal Sync：跨平台同步交易信号。&lt;/li&gt;
&lt;li&gt;One-Click Copy Trading：跟随表现较好的交易者或 Agent。&lt;/li&gt;
&lt;li&gt;Universal Market Access：覆盖股票、加密货币、外汇、期权、期货等市场。&lt;/li&gt;
&lt;li&gt;Three Signal Types：策略、操作、讨论三类信号。&lt;/li&gt;
&lt;li&gt;Reward System：通过发布信号和获得关注积累积分。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从产品形态看，它不是单一量化回测框架，而是把 Agent、信号、讨论、复制交易和模拟交易放在一起。&lt;/p&gt;
&lt;h2 id=&#34;两类用户&#34;&gt;两类用户
&lt;/h2&gt;&lt;p&gt;README 把用户分为两类。&lt;/p&gt;
&lt;p&gt;第一类是 Agent Traders。AI Agent 通过读取 Skill 文档接入平台，自动完成注册、安装必要组件和发布信号等步骤。&lt;/p&gt;
&lt;p&gt;第二类是 Human Traders。普通用户可以访问平台，注册账号，浏览信号或关注表现较好的交易者。&lt;/p&gt;
&lt;p&gt;这两个入口组合起来，形成一种“AI Agent 生产信号，人类或其它 Agent 消费信号”的平台结构。&lt;/p&gt;
&lt;h2 id=&#34;架构结构&#34;&gt;架构结构
&lt;/h2&gt;&lt;p&gt;README 中给出的项目结构如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI-Trader (GitHub - Open Source)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── skills/              # Agent skill definitions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── docs/api/            # OpenAPI specifications
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── service/             # Backend &amp;amp; frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── server/         # FastAPI backend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── frontend/        # React frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── assets/              # Logo and images
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以看到，项目把 Agent skill、API 文档、后端、前端放在同一个仓库中。后端使用 FastAPI，前端使用 React。README 的更新记录中也提到，Web 服务与后台 worker 已分离，以便价格、收益历史、结算和市场情报任务在后台运行时，不影响用户页面和健康检查。&lt;/p&gt;
&lt;h2 id=&#34;为什么值得关注&#34;&gt;为什么值得关注
&lt;/h2&gt;&lt;p&gt;AI-Trader 值得关注，不是因为“AI 能自动赚钱”这个说法，而是因为它把 Agent 接入金融场景的接口做得比较明确。&lt;/p&gt;
&lt;p&gt;几个观察点：&lt;/p&gt;
&lt;p&gt;第一，它用 Skill 文档作为 Agent 接入入口。这和 Codex、Claude Code、OpenClaw 等 Agent 工具的工作方式接近。&lt;/p&gt;
&lt;p&gt;第二，它把交易信号、讨论、复制交易、积分系统放在平台层，而不是只做一个本地脚本。&lt;/p&gt;
&lt;p&gt;第三，它提供 OpenAPI 文档，便于开发者理解平台接口。&lt;/p&gt;
&lt;p&gt;第四，它支持 paper trading，也就是模拟资金环境。对研究 Agent 决策来说，模拟环境比直接上真钱安全得多。&lt;/p&gt;
&lt;h2 id=&#34;风险和边界&#34;&gt;风险和边界
&lt;/h2&gt;&lt;p&gt;自动化交易是高风险场景，尤其要注意以下几点。&lt;/p&gt;
&lt;p&gt;第一，Agent 生成的交易信号不等于投资建议。模型可能幻觉、过拟合、误读新闻，也可能无法理解极端行情。&lt;/p&gt;
&lt;p&gt;第二，复制交易有传染风险。一个错误信号如果被大量跟随，可能造成集中亏损。&lt;/p&gt;
&lt;p&gt;第三，真实资金接入前必须做权限隔离。不要让 Agent 直接拥有无限制下单权限。&lt;/p&gt;
&lt;p&gt;第四，市场数据、交易接口、结算逻辑和风控都需要审计。任何一个环节出错都可能带来财务损失。&lt;/p&gt;
&lt;p&gt;第五，仓库 API 未显示明确许可证信息，商用或二次开发前要先核实授权。&lt;/p&gt;
&lt;h2 id=&#34;适合谁&#34;&gt;适合谁
&lt;/h2&gt;&lt;p&gt;AI-Trader 更适合三类人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;研究 AI Agent 与金融市场交互的开发者。&lt;/li&gt;
&lt;li&gt;想做交易信号平台或模拟交易平台的团队。&lt;/li&gt;
&lt;li&gt;关注 Agent Skill、OpenAPI 和金融工具结合方式的产品开发者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想找一个“自动赚钱工具”，不建议抱这种预期。更稳妥的使用方式是把它当作 Agent 金融实验平台、paper trading 环境或交易信号协作系统来评估。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;AI-Trader 把 AI Agent 放进交易平台语境里，让 Agent 能注册、发布信号、讨论、复制交易和同步市场信息。它展示了 Agent-Native 应用的一种形态：不是让模型单独给建议，而是让模型进入一个有账户、API、信号、结算和协作规则的平台。&lt;/p&gt;
&lt;p&gt;这也是它最需要谨慎的地方。金融场景不能只看自动化能力，还要看风控、权限、合规、数据来源、回测和审计。正式使用前，建议先限定在模拟交易和研究环境中。&lt;/p&gt;
&lt;p&gt;参考项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/AI-Trader&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CloakBrowser 是什么？给 Playwright 和 Puppeteer 换一个更像真实用户的浏览器</title>
        <link>https://knightli.com/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</guid>
        <description>&lt;p&gt;&lt;code&gt;CloakHQ/CloakBrowser&lt;/code&gt; 是一个面向浏览器自动化的开源项目。它不是普通的 Playwright 配置，也不是单纯注入一段 JavaScript，而是围绕自定义 Chromium 二进制构建，让浏览器指纹、WebGL、Canvas、音频、字体、GPU、屏幕信息、WebRTC、网络时序等信号更接近真实浏览器。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/CloakHQ/CloakBrowser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub API 显示这个仓库已有约 1.5 万 star，主要语言是 Python，许可证为 MIT。README 对它的定位很直接：一个可替代 Playwright / Puppeteer 启动器的 Stealth Chromium。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;很多自动化脚本在普通 Headless Chromium 下会暴露明显自动化特征，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;navigator.webdriver&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Headless UA 泄漏。&lt;/li&gt;
&lt;li&gt;插件、字体、屏幕、GPU 等指纹不自然。&lt;/li&gt;
&lt;li&gt;CDP 行为和真实用户输入不一致。&lt;/li&gt;
&lt;li&gt;默认临时 profile 缺少正常浏览痕迹。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CloakBrowser 的思路是把一部分指纹修改放到 Chromium 源码层，而不是只在运行时做配置或 JS patch。这样对 Playwright 用户来说，使用方式仍然接近原来的浏览器自动化 API，但底层浏览器换成了项目提供的自定义构建。&lt;/p&gt;
&lt;p&gt;这类工具适合做合规的自动化测试、站点兼容性验证、反爬系统自测、Agent 浏览器环境实验。不要把它用于未授权访问、账号滥用、绕过平台风控或违反服务条款的场景。&lt;/p&gt;
&lt;h2 id=&#34;基本使用方式&#34;&gt;基本使用方式
&lt;/h2&gt;&lt;p&gt;Python 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install cloakbrowser
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;JavaScript / Node.js 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install cloakbrowser playwright-core
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;README 给出的 Python 示例很接近 Playwright：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;cloakbrowser&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://protected-site.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;JavaScript 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;cloakbrowser&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;newPage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://protected-site.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第一次运行时，项目会自动下载对应平台的 Chromium 二进制文件，README 提到体积约 200MB，并会缓存到本地。&lt;/p&gt;
&lt;h2 id=&#34;browser-profile-manager&#34;&gt;Browser Profile Manager
&lt;/h2&gt;&lt;p&gt;CloakBrowser 还提供一个 Browser Profile Manager，可以自托管浏览器 profile，管理不同指纹、代理和持久会话。README 中的 Docker 启动方式如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后打开：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个方向更像开源的浏览器 profile 管理工具，适合需要多 profile、持久 cookie、隔离会话的自动化测试或内部 QA 场景。&lt;/p&gt;
&lt;h2 id=&#34;和普通-playwright-有什么差别&#34;&gt;和普通 Playwright 有什么差别
&lt;/h2&gt;&lt;p&gt;普通 Playwright 的优点是稳定、官方维护、API 成熟。CloakBrowser 的差别在于它使用自定义 Chromium，并提供一组源代码级别的指纹 patch。&lt;/p&gt;
&lt;p&gt;README 里列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Canvas、WebGL、Audio、Fonts、GPU、Screen 等指纹处理。&lt;/li&gt;
&lt;li&gt;WebRTC IP spoofing。&lt;/li&gt;
&lt;li&gt;代理相关信号处理。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;humanize=True&lt;/code&gt; 模拟更自然的鼠标、键盘和滚动行为。&lt;/li&gt;
&lt;li&gt;Python 与 JavaScript 双端 API。&lt;/li&gt;
&lt;li&gt;Docker 镜像与 CDP server 模式。&lt;/li&gt;
&lt;li&gt;持久 profile。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，它更适合对“浏览器环境真实性”有要求的自动化任务，而不是替代所有 Playwright 使用场景。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，浏览器自动化和反检测相关工具有很强的合规边界。它可以用于测试自己的站点、验证自动化环境、做内部 QA，也可以用于研究浏览器指纹；但不应被用于未经授权的抓取、账号批量注册、绕过访问控制、攻击或滥用服务。&lt;/p&gt;
&lt;p&gt;第二，README 中也说明，CloakBrowser 不内置代理轮换，也不是验证码解决服务。它提供浏览器层能力，网络信誉、账号信誉、行为策略和目标站点规则仍然会影响结果。&lt;/p&gt;
&lt;p&gt;第三，自定义 Chromium 二进制意味着供应链安全要额外关注。正式使用前建议检查版本、二进制来源、签名说明、许可证和更新机制。&lt;/p&gt;
&lt;h2 id=&#34;适合谁&#34;&gt;适合谁
&lt;/h2&gt;&lt;p&gt;适合三类用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经在用 Playwright / Puppeteer，但需要更接近真实浏览器环境的开发者。&lt;/li&gt;
&lt;li&gt;做浏览器自动化测试、兼容性测试或反爬策略验证的团队。&lt;/li&gt;
&lt;li&gt;需要给 AI Agent 提供浏览器执行环境的开发者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是普通网页测试，原生 Playwright 已经够用。如果目标是研究浏览器指纹、profile 隔离和真实浏览器行为，CloakBrowser 值得关注。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;CloakBrowser 的关键点不是“多写一个自动化封装”，而是把浏览器自动化的一部分伪装能力下沉到 Chromium 构建层。它保留了 Playwright / Puppeteer 的使用习惯，同时提供自定义浏览器、profile 管理、Docker 和 CDP server。&lt;/p&gt;
&lt;p&gt;这类工具能力强，也更需要谨慎使用。判断是否值得接入，重点看你的场景是否真的需要自定义 Chromium，而不是只因为普通 Headless 浏览器被某些检测服务标记。&lt;/p&gt;
&lt;p&gt;参考项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/CloakHQ/CloakBrowser&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>内容发太多平台太累？AiToEarn 想用 AI Agent 帮创作者省点事</title>
        <link>https://knightli.com/2026/05/19/aitoearn-ai-content-marketing-agent/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/19/aitoearn-ai-content-marketing-agent/</guid>
        <description>&lt;p&gt;&lt;code&gt;yikart/AiToEarn&lt;/code&gt; 是一个面向创作者、品牌和一人公司的 AI 内容营销项目。它试图把内容创作、发布、互动运营和变现放到同一套 Agent 工作流里，覆盖抖音、小红书、快手、B 站、视频号、TikTok、YouTube、Facebook、Instagram、Threads、X、Pinterest、LinkedIn 等平台。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/yikart/AiToEarn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官网地址：&lt;a class=&#34;link&#34; href=&#34;https://aitoearn.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://aitoearn.ai/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub API 显示这个仓库已有约 1.5 万 star，主要语言是 TypeScript，许可证为 MIT。README 把它描述为一个给 OPC（一人公司）、创作者、品牌和企业使用的内容营销智能体平台。&lt;/p&gt;
&lt;h2 id=&#34;它的定位&#34;&gt;它的定位
&lt;/h2&gt;&lt;p&gt;AiToEarn 不是单一的文案生成工具，也不只是定时发布工具。它把内容营销拆成四类 Agent 能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monetize：内容变现。&lt;/li&gt;
&lt;li&gt;Publish：跨平台内容发布。&lt;/li&gt;
&lt;li&gt;Engage：内容互动运营。&lt;/li&gt;
&lt;li&gt;Create：内容创作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个定位很适合现在的创作者工作流。很多内容团队的问题不在于“能不能生成一段文案”，而是生成之后还要排期、分发、互动、复盘，还要把内容和商业任务连接起来。&lt;/p&gt;
&lt;h2 id=&#34;核心功能&#34;&gt;核心功能
&lt;/h2&gt;&lt;h3 id=&#34;monetize内容赚钱&#34;&gt;Monetize：内容赚钱
&lt;/h3&gt;&lt;p&gt;AiToEarn 提供面向推广任务的内容变现能力。README 中提到三种结算模式：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;结算模式&lt;/th&gt;
          &lt;th&gt;全称&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;CPS&lt;/td&gt;
          &lt;td&gt;Cost Per Sale&lt;/td&gt;
          &lt;td&gt;按成交额结算&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPE&lt;/td&gt;
          &lt;td&gt;Cost Per Engagement&lt;/td&gt;
          &lt;td&gt;按互动量结算&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPM&lt;/td&gt;
          &lt;td&gt;Cost Per Mille&lt;/td&gt;
          &lt;td&gt;按播放量结算&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这部分更像一个内容任务市场，把品牌推广需求和创作者内容分发连接起来。&lt;/p&gt;
&lt;h3 id=&#34;publish内容发布-agent&#34;&gt;Publish：内容发布 Agent
&lt;/h3&gt;&lt;p&gt;Publish 负责把内容分发到多个平台，减少逐个平台手动发布的重复劳动。README 中列出的覆盖范围包括国内外主流短视频、图文和社交平台。&lt;/p&gt;
&lt;p&gt;它的实用点在于统一排期和统一管理。对矩阵账号、跨平台分发、出海内容团队来说，这类能力比单点 AI 文案更有价值。&lt;/p&gt;
&lt;h3 id=&#34;engage内容互动-agent&#34;&gt;Engage：内容互动 Agent
&lt;/h3&gt;&lt;p&gt;Engage 通过浏览器插件实现自动化互动运营，例如点赞、收藏、关注、评论回复和品牌监测。&lt;/p&gt;
&lt;p&gt;使用这类能力时要注意平台规则。自动化互动很容易触及平台风控，正式使用前应确认账号权限、频率控制、平台条款和团队合规要求。&lt;/p&gt;
&lt;h3 id=&#34;create内容创作-agent&#34;&gt;Create：内容创作 Agent
&lt;/h3&gt;&lt;p&gt;Create 负责内容生成。README 中提到视频生成模型、视频翻译、视频剪辑、图片生成和批量创作任务。&lt;/p&gt;
&lt;p&gt;这部分适合大规模内容生产，但仍然需要人工审校。尤其是品牌内容、广告素材和跨语言内容，不能只看生成速度，还要看事实准确性、版权风险和调性一致性。&lt;/p&gt;
&lt;h2 id=&#34;五种使用方式&#34;&gt;五种使用方式
&lt;/h2&gt;&lt;p&gt;AiToEarn README 给了五种入口：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方式&lt;/th&gt;
          &lt;th&gt;适合谁&lt;/th&gt;
          &lt;th&gt;是否需要部署&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;打开网站直接用&lt;/td&gt;
          &lt;td&gt;所有用户&lt;/td&gt;
          &lt;td&gt;不需要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;在 OpenClaw 中用&lt;/td&gt;
          &lt;td&gt;OpenClaw 用户&lt;/td&gt;
          &lt;td&gt;不需要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;在 Claude / Cursor 等 AI 助手中用&lt;/td&gt;
          &lt;td&gt;AI 工具用户&lt;/td&gt;
          &lt;td&gt;不需要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Docker 一键部署&lt;/td&gt;
          &lt;td&gt;想私有化部署的团队&lt;/td&gt;
          &lt;td&gt;需要服务器&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;源码开发&lt;/td&gt;
          &lt;td&gt;开发者&lt;/td&gt;
          &lt;td&gt;需要开发环境&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;其中，MCP 支持是一个值得关注的点。它意味着 Claude、Cursor 或其它兼容 MCP 的 Agent 可以把 AiToEarn 当作一个外部能力来调用。&lt;/p&gt;
&lt;p&gt;通用 MCP 配置里常见的信息包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MCP 地址：https://aitoearn.ai/api/unified/mcp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;认证 Header：x-api-key: 你的API-Key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;自部署用户则需要替换为自己的服务地址。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;README 中给出的 Docker 启动方式比较直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/yikart/AiToEarn.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; AiToEarn
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后打开：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要做内容发布，README 建议配置 Relay，因为社交平台 OAuth 登录通常需要开发者凭据。Relay 的作用是借用官方凭据完成授权流程，减少自己申请各平台开发者账号的复杂度。&lt;/p&gt;
&lt;h2 id=&#34;适合谁&#34;&gt;适合谁
&lt;/h2&gt;&lt;p&gt;AiToEarn 更适合这些用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做多平台内容分发的创作者。&lt;/li&gt;
&lt;li&gt;有矩阵账号运营需求的小团队。&lt;/li&gt;
&lt;li&gt;想把 AI Agent 接入内容营销流程的一人公司。&lt;/li&gt;
&lt;li&gt;需要私有化部署内容发布系统的团队。&lt;/li&gt;
&lt;li&gt;想研究 MCP 与内容平台结合方式的开发者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶尔写一篇文案，普通 AI 聊天工具就够了。如果你的工作流包括创作、排期、发布、互动、任务结算，AiToEarn 这类一体化平台更值得看。&lt;/p&gt;
&lt;h2 id=&#34;使用前的注意点&#34;&gt;使用前的注意点
&lt;/h2&gt;&lt;p&gt;第一，内容变现不等于稳定收益。CPS、CPE、CPM 都依赖平台流量、内容质量、商家需求和结算规则。&lt;/p&gt;
&lt;p&gt;第二，跨平台发布和互动自动化要遵守平台规则。尤其是点赞、关注、评论和批量发布，不同平台都有风控策略。&lt;/p&gt;
&lt;p&gt;第三，AI 生成内容要经过人工审核。广告法、版权、品牌安全、事实准确性都不能交给模型自动判断。&lt;/p&gt;
&lt;p&gt;第四，私有化部署前要评估账号授权、数据安全、密钥管理和平台 API 限制。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;AiToEarn 的价值在于把内容营销从“生成素材”往后推进了一步：发布、互动、任务和变现都纳入 Agent 工作流。它更像一个 AI 内容运营平台，而不是单纯的 AI 写作工具。&lt;/p&gt;
&lt;p&gt;对创作者和小团队来说，它值得关注；但真正上线前，仍然要把平台合规、账号安全、内容审核和收益预期放在前面。&lt;/p&gt;
&lt;p&gt;参考项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/yikart/AiToEarn&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>让 AI 自己操作电脑？UI-TARS-desktop 把桌面、浏览器和工具都接了起来</title>
        <link>https://knightli.com/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/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/</guid>
        <description>&lt;p&gt;&lt;code&gt;bytedance/UI-TARS-desktop&lt;/code&gt; 是字节开源的多模态 AI Agent 项目。它不是单一桌面应用，而是一套 Agent 栈，当前 README 中主要包含两个方向：&lt;code&gt;Agent TARS&lt;/code&gt; 和 &lt;code&gt;UI-TARS Desktop&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官网地址：&lt;a class=&#34;link&#34; href=&#34;https://agent-tars.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://agent-tars.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub API 显示这个仓库已有约 3.4 万 star，主要语言是 TypeScript，许可证为 Apache-2.0。README 对它的描述是“Open-Source Multimodal AI Agent Stack”。&lt;/p&gt;
&lt;h2 id=&#34;agent-tars-和-ui-tars-desktop-的区别&#34;&gt;Agent TARS 和 UI-TARS Desktop 的区别
&lt;/h2&gt;&lt;p&gt;README 把两个项目放在同一个表格里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Agent TARS&lt;/code&gt;：通用多模态 AI Agent 栈，把 GUI Agent、视觉能力、终端、浏览器和产品工作流连接起来。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UI-TARS Desktop&lt;/code&gt;：桌面应用，基于 UI-TARS 模型提供原生 GUI Agent 能力，可以操作本地或远程电脑、浏览器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，Agent TARS 更像通用 Agent 运行栈，UI-TARS Desktop 更像桌面端 GUI 操作入口。&lt;/p&gt;
&lt;h2 id=&#34;agent-tars-能做什么&#34;&gt;Agent TARS 能做什么
&lt;/h2&gt;&lt;p&gt;Agent TARS 主要提供 CLI 和 Web UI。它的目标是让多模态模型通过 MCP 和各种工具完成更接近真人的任务流。&lt;/p&gt;
&lt;p&gt;README 中列出的核心能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一键启动 CLI，支持 headful Web UI 和 headless server。&lt;/li&gt;
&lt;li&gt;混合浏览器 Agent，可以用 GUI Agent、DOM 或混合策略控制浏览器。&lt;/li&gt;
&lt;li&gt;Event Stream，用于数据流追踪和调试。&lt;/li&gt;
&lt;li&gt;MCP 集成，可以挂载 MCP Server 接入真实工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快速启动示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx @agent-tars/cli@latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以全局安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install @agent-tars/cli@latest -g
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用模型提供商运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agent-tars --provider volcengine --model doubao-1-5-thinking-vision-pro-250428 --apiKey your-api-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agent-tars --provider anthropic --model claude-3-7-sonnet-latest --apiKey your-api-key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;ui-tars-desktop-能做什么&#34;&gt;UI-TARS Desktop 能做什么
&lt;/h2&gt;&lt;p&gt;UI-TARS Desktop 是桌面 GUI Agent。它基于 UI-TARS 和 Seed-1.5-VL / 1.6 系列模型，重点是让模型看懂屏幕并执行鼠标、键盘操作。&lt;/p&gt;
&lt;p&gt;README 中列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自然语言控制。&lt;/li&gt;
&lt;li&gt;截图和视觉识别。&lt;/li&gt;
&lt;li&gt;精确鼠标与键盘控制。&lt;/li&gt;
&lt;li&gt;跨平台支持：Windows、macOS、Browser。&lt;/li&gt;
&lt;li&gt;实时反馈和状态显示。&lt;/li&gt;
&lt;li&gt;本地处理，强调隐私和安全。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例任务包括修改 VS Code 设置、查看 GitHub issue、远程控制电脑或浏览器等。&lt;/p&gt;
&lt;h2 id=&#34;为什么-gui-agent-重要&#34;&gt;为什么 GUI Agent 重要
&lt;/h2&gt;&lt;p&gt;传统自动化依赖 API、DOM 或脚本。GUI Agent 的目标是直接面对屏幕：看见按钮、输入框、菜单和状态，再通过鼠标键盘完成操作。&lt;/p&gt;
&lt;p&gt;这有两个价值：&lt;/p&gt;
&lt;p&gt;第一，很多软件没有稳定 API，或者 API 覆盖不到完整流程。GUI Agent 可以像人一样从界面入手。&lt;/p&gt;
&lt;p&gt;第二，多模态模型可以处理截图、文档、网页和应用界面，把视觉理解和操作结合起来。&lt;/p&gt;
&lt;p&gt;但它也有局限。GUI 操作容易受分辨率、语言、布局变化、弹窗、网络延迟影响。对生产流程来说，仍然需要权限控制、执行确认和错误回滚。&lt;/p&gt;
&lt;h2 id=&#34;和-mcp-的关系&#34;&gt;和 MCP 的关系
&lt;/h2&gt;&lt;p&gt;Agent TARS 强调 MCP 集成。MCP 的价值在于把浏览器、文件、命令行、数据库、内部服务等工具统一给 Agent 调用。&lt;/p&gt;
&lt;p&gt;对复杂任务来说，单靠 GUI 点击不够稳定。更好的方式往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能用 API 的地方走 API。&lt;/li&gt;
&lt;li&gt;需要看页面状态时用视觉。&lt;/li&gt;
&lt;li&gt;需要真实网页交互时用浏览器。&lt;/li&gt;
&lt;li&gt;需要本地软件操作时用 GUI Agent。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;UI-TARS-desktop 这类项目正在探索的，就是把这些能力放到同一个 Agent 栈里。&lt;/p&gt;
&lt;h2 id=&#34;使用前要注意什么&#34;&gt;使用前要注意什么
&lt;/h2&gt;&lt;p&gt;第一，桌面 Agent 有执行风险。它能操作鼠标、键盘和浏览器，就必须限制权限，避免误操作文件、账号、支付或生产系统。&lt;/p&gt;
&lt;p&gt;第二，远程电脑和远程浏览器操作要注意安全边界。不要把未认证的控制入口暴露到公网。&lt;/p&gt;
&lt;p&gt;第三，多模态模型可能误识别界面。关键操作前最好有人确认，尤其是删除、提交、支付、发帖、交易等不可逆操作。&lt;/p&gt;
&lt;p&gt;第四，模型供应商、API key 和本地数据要分开管理，不要把敏感凭据写进公开配置。&lt;/p&gt;
&lt;h2 id=&#34;适合谁&#34;&gt;适合谁
&lt;/h2&gt;&lt;p&gt;UI-TARS-desktop 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究 GUI Agent 和 Computer Use 的开发者。&lt;/li&gt;
&lt;li&gt;需要让 AI 操作桌面应用或浏览器的团队。&lt;/li&gt;
&lt;li&gt;想把 MCP 工具、浏览器操作和视觉模型组合起来的 Agent 开发者。&lt;/li&gt;
&lt;li&gt;需要远程电脑 / 远程浏览器操作实验环境的用户。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是简单网页自动化，普通 Playwright 或 Selenium 可能更直接。如果任务涉及桌面软件、多模态理解和复杂工具链，UI-TARS-desktop 更值得看。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;UI-TARS-desktop 的看点在于它不是只做一个“会点按钮”的桌面助手，而是把 GUI Agent、视觉模型、浏览器、CLI、MCP 和远程操作放进同一套多模态 Agent 栈。&lt;/p&gt;
&lt;p&gt;这类项目代表了 AI Agent 的一个重要方向：从文本对话走向真实软件环境。但越接近真实操作，越需要权限管理、执行审计和人工确认。试用时建议先从低风险任务开始。&lt;/p&gt;
&lt;p&gt;参考项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp b9196 更新：Windows 预编译版支持 CUDA 13.1、Vulkan、HIP 和 SYCL</title>
        <link>https://knightli.com/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</link>
        <pubDate>Mon, 18 May 2026 23:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 最近的 Windows 版本对本地大模型用户更友好了。以前在 Windows 上跑 GGUF 模型，很多人卡在环境问题上：CUDA 版本不匹配、DLL 缺失、驱动不兼容、CMake 编译失败、环境变量错误，或者 Vulkan / HIP / SYCL 配置太麻烦。&lt;/p&gt;
&lt;p&gt;现在官方 Release 已经提供多种 Windows 预编译包。很多场景下，用户不再需要从源码编译，下载对应版本、解压、放入模型文件后，就可以直接启动本地推理服务。&lt;/p&gt;
&lt;h2 id=&#34;llamacpp-适合做什么&#34;&gt;llama.cpp 适合做什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 是目前最常用的本地 GGUF 模型推理框架之一。它的特点是轻量、跨平台，既能跑 CPU，也能利用 GPU，并且围绕 GGUF 生态积累了大量模型资源。&lt;/p&gt;
&lt;p&gt;常见模型路线包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qwen&lt;/li&gt;
&lt;li&gt;Llama&lt;/li&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;Gemma&lt;/li&gt;
&lt;li&gt;Mistral&lt;/li&gt;
&lt;li&gt;Mixtral&lt;/li&gt;
&lt;li&gt;Hermes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;随着 GGUF 量化模型越来越普及，很多开源模型都会提供适合本地部署的 GGUF 版本。对普通用户来说，&lt;code&gt;llama.cpp&lt;/code&gt; 的价值主要在于：不用搭一整套复杂推理框架，也能在本机跑一个可用的聊天服务。&lt;/p&gt;
&lt;h2 id=&#34;windows-预编译版本怎么选&#34;&gt;Windows 预编译版本怎么选
&lt;/h2&gt;&lt;p&gt;目前 Windows 用户可以根据硬件选择不同构建版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows x64 CPU&lt;/li&gt;
&lt;li&gt;Windows x64 CUDA 12.4&lt;/li&gt;
&lt;li&gt;Windows x64 CUDA 13.1&lt;/li&gt;
&lt;li&gt;Windows x64 Vulkan&lt;/li&gt;
&lt;li&gt;Windows x64 HIP Radeon&lt;/li&gt;
&lt;li&gt;Windows x64 SYCL&lt;/li&gt;
&lt;li&gt;Windows ARM64 CPU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是 NVIDIA 显卡，通常优先考虑 CUDA 版本。RTX 3060、4060、4070、4080、4090 这类显卡都更适合走 CUDA 路线。&lt;/p&gt;
&lt;p&gt;如果是 AMD 显卡，可以尝试 HIP 或 Vulkan。实际体验里，Vulkan 的兼容性有时比 HIP 更省心，尤其适合不想折腾完整 ROCm 环境的用户。&lt;/p&gt;
&lt;p&gt;如果是 Intel 核显或 Arc 独显，可以尝试 SYCL 或 Vulkan。性能通常不如 NVIDIA CUDA 路线，但跑一些中小型 GGUF 模型已经足够测试。&lt;/p&gt;
&lt;p&gt;CPU 版本适合没有独显、只是想验证模型或跑小参数模型的用户。速度不会太快，但部署最简单。&lt;/p&gt;
&lt;h2 id=&#34;启动普通-gguf-模型&#34;&gt;启动普通 GGUF 模型
&lt;/h2&gt;&lt;p&gt;假设你已经下载好 &lt;code&gt;llama.cpp&lt;/code&gt; Windows 预编译包，并把模型放到 &lt;code&gt;models&lt;/code&gt; 目录。进入 &lt;code&gt;llama.cpp&lt;/code&gt; 解压目录后，可以用类似命令启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;your-model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;gguf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;-m&lt;/code&gt; 指向 GGUF 模型文件，&lt;code&gt;-ngl 999&lt;/code&gt; 表示尽量把模型层加载到 GPU。实际能加载多少，取决于显存容量、模型大小和量化格式。&lt;/p&gt;
&lt;p&gt;启动成功后，在浏览器打开：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;就可以进入本地网页聊天界面。&lt;/p&gt;
&lt;p&gt;如果显存不足，可以换更小的模型，或者换更低量化版本，例如 Q4、Q5 这类 GGUF 文件。不要只看模型参数量，也要看量化格式和上下文长度设置。&lt;/p&gt;
&lt;h2 id=&#34;启动多模态视觉模型&#34;&gt;启动多模态视觉模型
&lt;/h2&gt;&lt;p&gt;多模态视觉模型通常不只需要一个主模型文件，还需要一个 &lt;code&gt;mmproj&lt;/code&gt; 视觉投影文件。启动时要同时指定主模型和 &lt;code&gt;mmproj&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\main-model.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-mmproj&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj-model.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见用途包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OCR 识别&lt;/li&gt;
&lt;li&gt;截图理解&lt;/li&gt;
&lt;li&gt;网页截图分析&lt;/li&gt;
&lt;li&gt;图片问答&lt;/li&gt;
&lt;li&gt;简单视觉内容判断&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如 Qwen2-VL / Qwen2.5-VL 这类视觉模型，在中文截图理解、OCR 和图文问答上比较实用。使用时要注意主模型和 &lt;code&gt;mmproj&lt;/code&gt; 文件是否匹配，版本不匹配很容易导致加载失败或效果异常。&lt;/p&gt;
&lt;h2 id=&#34;用-bat-脚本管理多个模型&#34;&gt;用 bat 脚本管理多个模型
&lt;/h2&gt;&lt;p&gt;如果本地同时放了多个模型，可以写一个简单的 &lt;code&gt;.bat&lt;/code&gt; 脚本做菜单切换。下面是一个示例，路径和模型名需要改成你自己的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; off
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chcp 65001 &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;nul
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;cd&lt;/span&gt; /d C:\path\to\llama-b9196-bin-win-cuda-13.1-x64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 请选择模型：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 1. Gemma
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 2. Qwen VL 多模态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 3. DeepSeek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;/p&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;choice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;输入数字：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\gemma.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\qwen-vl.gguf&amp;#34;&lt;/span&gt; --mmproj &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\deepseek.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pause&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存时建议使用 UTF-8 编码，再把文件后缀改成 &lt;code&gt;.bat&lt;/code&gt;。这样双击脚本后，就可以通过数字选择不同模型。&lt;/p&gt;
&lt;h2 id=&#34;模型选择要看三件事&#34;&gt;模型选择要看三件事
&lt;/h2&gt;&lt;p&gt;第一，看硬件。显存越大，能跑的模型越大；显存不足时，不要硬上大模型，可以先从 7B、8B 或更低量化版本开始。&lt;/p&gt;
&lt;p&gt;第二，看用途。如果只是日常问答、总结、改写，小模型和中等量化通常够用。如果要做代码、长文档分析或多模态理解，就需要更强模型和更多显存。&lt;/p&gt;
&lt;p&gt;第三，看许可证和安全边界。网上有很多社区改版模型，能力、限制和许可证都不一样。下载前要确认来源、授权、适用场景和风险，不建议把生产任务直接交给来源不明的模型。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;p&gt;如果启动时报 DLL 缺失，先确认下载的包和显卡路线是否匹配。例如 NVIDIA 用户不要误下载 HIP 版本，AMD 用户也不要下载 CUDA 版本。&lt;/p&gt;
&lt;p&gt;如果模型加载很慢，可能是模型太大、硬盘速度慢，或者显存不足导致部分层回落到 CPU。&lt;/p&gt;
&lt;p&gt;如果网页打不开，先看命令行是否已经成功启动服务，再确认端口是不是 &lt;code&gt;8080&lt;/code&gt;。如果端口被占用，可以查阅 &lt;code&gt;llama-server&lt;/code&gt; 参数换端口。&lt;/p&gt;
&lt;p&gt;如果多模态模型效果不对，优先检查 &lt;code&gt;mmproj&lt;/code&gt; 文件是否和主模型配套，而不是只换提示词。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;这次 Windows 预编译包的价值在于降低了本地 AI 的入门门槛。以前很多用户卡在编译和依赖环境，现在可以更快进入“下载模型、启动服务、测试效果”的阶段。&lt;/p&gt;
&lt;p&gt;对 Windows 用户来说，选择路线可以简单理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA：优先 CUDA。&lt;/li&gt;
&lt;li&gt;AMD：优先尝试 Vulkan，再看 HIP。&lt;/li&gt;
&lt;li&gt;Intel：尝试 SYCL 或 Vulkan。&lt;/li&gt;
&lt;li&gt;没有独显：用 CPU 版本跑小模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正使用前，仍然要确认模型来源、许可证、显存需求和实际效果。本地 AI 的好处是可控、离线、低延迟，但它不等于没有成本：模型管理、硬件资源和输出质量都需要自己负责。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24211.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.freedidi.com/24211.html&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>市面上主流 AI PPT 工具大盘点：自动生成、网页演示、PPTX 和图像路线怎么选</title>
        <link>https://knightli.com/2026/05/18/ai-ppt-skills-selection-guide/</link>
        <pubDate>Mon, 18 May 2026 22:29:43 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/18/ai-ppt-skills-selection-guide/</guid>
        <description>&lt;p&gt;AI 做 PPT 已经不只是“输入标题，套一个模板”。在 Claude Code、Codex、Cursor 这类 AI 编程环境里，PPT 生成正在变成一组可安装、可复用的 Agent Skill：有的输出网页演示，有的生成真正可编辑的 &lt;code&gt;.pptx&lt;/code&gt;，有的直接用图像模型把每页做成视觉稿，还有的通过 MCP 让 AI 操作 PowerPoint 文件。&lt;/p&gt;
&lt;p&gt;这次整理了一批主流 PPT 相关 Skill。真正有价值的地方不只是榜单，而是把这类工具按交付形态拆开来看。选工具前，先问一句：最终交付物到底要给谁改、在哪里播放、是否需要继续协作？&lt;/p&gt;
&lt;h2 id=&#34;几条路线&#34;&gt;几条路线
&lt;/h2&gt;&lt;h3 id=&#34;1-html-网页演示&#34;&gt;1. HTML 网页演示
&lt;/h3&gt;&lt;p&gt;代表项目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这条路线的优势是视觉表现力强。CSS 动画、Canvas、WebGL、响应式布局都能用，浏览器打开即可演示，适合技术分享、产品发布、Demo Day 和个人风格强烈的演讲。&lt;/p&gt;
&lt;p&gt;代价也很明确：交付后不太适合让客户逐字改。客户如果拿到的是 HTML，而不是 PowerPoint 文件，后续修改往往还要回到生成流程。&lt;/p&gt;
&lt;p&gt;如果只看 HTML 演示，&lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt; 更像高星通用入口，&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt; 强在审美约束和主题风格，&lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt; 则胜在主题数量、布局数量和演讲者模式。&lt;/p&gt;
&lt;h3 id=&#34;2-原生-pptx&#34;&gt;2. 原生 PPTX
&lt;/h3&gt;&lt;p&gt;代表项目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mckinsey-pptx&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-agent-skills&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/tfriedel/claude-office-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;claude-office-skills&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这是商业交付最稳的路线。只要客户要求“能在 PowerPoint 里改字、改图、套公司模板”，最终就要落到 &lt;code&gt;.pptx&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;其中 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt; 很值得单独关注。它的思路是先让 LLM 生成 SVG，再转成 PowerPoint 原生 DrawingML 对象，目标是让文字框、形状、图表都能在 PPTX 里继续编辑。它还支持从 PDF、DOCX、URL、Markdown 生成 PPTX，并能做模板复刻、动画、旁白和本地预览。&lt;/p&gt;
&lt;p&gt;这条路线适合咨询交付、公司汇报、白皮书演示、长报告压缩成 PPT 等场景。缺点是视觉上限通常受 PowerPoint 本身限制，复杂效果不如 HTML 或图像路线自由。&lt;/p&gt;
&lt;h3 id=&#34;3-ai-图像驱动&#34;&gt;3. AI 图像驱动
&lt;/h3&gt;&lt;p&gt;代表项目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanoBanana-PPT-Skills&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt_image_2_skill&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-image-first&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这条路线先把每一页当成视觉图来生成，再把图片放进 PPTX 或其它容器里。优点是完成度高，尤其适合封面、社交媒体图、视觉提案、传播型内容。&lt;/p&gt;
&lt;p&gt;问题是可编辑性差。页面本质上是一张图，后面要改一个标题、换一段文案、挪一个图标，可能就要重新生成。它适合“看起来要好”，不适合“客户要反复改”。&lt;/p&gt;
&lt;h3 id=&#34;4-mcp--协议层&#34;&gt;4. MCP / 协议层
&lt;/h3&gt;&lt;p&gt;代表项目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/GongRzhe/Office-PowerPoint-MCP-Server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Office-PowerPoint-MCP-Server&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PPTAgent&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这类工具不一定直接生成完整 PPT，而是给 AI 一个操作 PowerPoint 的接口。接入 MCP 后，模型可以读、改、写 &lt;code&gt;.pptx&lt;/code&gt; 文件。&lt;/p&gt;
&lt;p&gt;这条路线适合已经有 PPT 文件、需要 AI 辅助修改的工作流。比如批量改格式、根据反馈重排页面、让模型检查每页是否符合目标。&lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PPTAgent&lt;/a&gt; 强调反思式生成，也就是每生成一页后再回头检查，这个方向对减少“AI PPT 很粗糙”的问题有启发。&lt;/p&gt;
&lt;h3 id=&#34;5-综合设计平台&#34;&gt;5. 综合设计平台
&lt;/h3&gt;&lt;p&gt;代表项目包括 &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这类项目已经超出 PPT 生成本身。&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt; 更像本地优先的设计平台，可以生成原型、slides、images、videos，并支持多种导出格式。&lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent&lt;/a&gt; 不是 PPT 工具，但能索引和对话本地文档，适合作为 PPT 生成前的资料整理层。&lt;/p&gt;
&lt;p&gt;如果你的需求不是单次做 PPT，而是从资料、设计、原型到交付的一整套流程，这类平台更值得看。&lt;/p&gt;
&lt;h2 id=&#34;skill-元信息&#34;&gt;Skill 元信息
&lt;/h2&gt;&lt;p&gt;Star 数来自原文 2026-05-15 的抓取结果，只适合作为热度参考，实际使用前建议再打开仓库确认维护状态、README 和 LICENSE。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Skill&lt;/th&gt;
          &lt;th&gt;作者&lt;/th&gt;
          &lt;th&gt;链接地址&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Star&lt;/th&gt;
          &lt;th&gt;语言&lt;/th&gt;
          &lt;th&gt;路线&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;frontend-slides&lt;/td&gt;
          &lt;td&gt;@zarazhangrui&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;zarazhangrui/frontend-slides&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;17,530&lt;/td&gt;
          &lt;td&gt;Shell&lt;/td&gt;
          &lt;td&gt;HTML 网页演示&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;guizang-ppt-skill&lt;/td&gt;
          &lt;td&gt;@op7418（歸藏）&lt;/td&gt;
          &lt;td&gt;站内文章: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;&lt;br&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/guizang-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/guizang-ppt-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8,832&lt;/td&gt;
          &lt;td&gt;HTML&lt;/td&gt;
          &lt;td&gt;HTML 网页演示&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;html-ppt-skill&lt;/td&gt;
          &lt;td&gt;@lewislulu&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lewislulu/html-ppt-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3,834&lt;/td&gt;
          &lt;td&gt;HTML/CSS/JS&lt;/td&gt;
          &lt;td&gt;HTML 网页演示&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;mckinsey-pptx&lt;/td&gt;
          &lt;td&gt;@seulee26&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;seulee26/mckinsey-pptx&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;426&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-agent-skills&lt;/td&gt;
          &lt;td&gt;@sunbigfly&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sunbigfly/ppt-agent-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;714&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;claude-office-skills&lt;/td&gt;
          &lt;td&gt;@tfriedel&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/tfriedel/claude-office-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tfriedel/claude-office-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;631&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-master&lt;/td&gt;
          &lt;td&gt;@hugohe3&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hugohe3/ppt-master&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16,626&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NanoBanana-PPT-Skills&lt;/td&gt;
          &lt;td&gt;@op7418（歸藏）&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/NanoBanana-PPT-Skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2,668&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI 图像驱动&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;gpt_image_2_skill&lt;/td&gt;
          &lt;td&gt;@wuyoscar&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wuyoscar/gpt_image_2_skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2,102&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI 图像驱动&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-image-first&lt;/td&gt;
          &lt;td&gt;@NyxTides&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NyxTides/ppt-image-first&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;799&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI 图像驱动&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Office-PowerPoint-MCP-Server&lt;/td&gt;
          &lt;td&gt;@GongRzhe&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/GongRzhe/Office-PowerPoint-MCP-Server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GongRzhe/Office-PowerPoint-MCP-Server&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1,708&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;MCP / 协议层&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PPTAgent&lt;/td&gt;
          &lt;td&gt;@icip-cas&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;icip-cas/PPTAgent&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4,354&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;MCP / 协议层&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;open-design&lt;/td&gt;
          &lt;td&gt;@nexu-io&lt;/td&gt;
          &lt;td&gt;站内文章: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt;&lt;br&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40,822&lt;/td&gt;
          &lt;td&gt;TypeScript&lt;/td&gt;
          &lt;td&gt;综合设计平台&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;docsagent&lt;/td&gt;
          &lt;td&gt;@docsagent&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent/docsagent&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;687&lt;/td&gt;
          &lt;td&gt;TypeScript&lt;/td&gt;
          &lt;td&gt;综合设计平台&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;选型可以这样判断&#34;&gt;选型可以这样判断
&lt;/h2&gt;&lt;p&gt;如果客户要继续编辑，优先看原生 PPTX 路线，尤其是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mckinsey-pptx&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-agent-skills&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如果是自己演讲，且视觉表现比后续编辑更重要，优先看 HTML 路线，尤其是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如果目标是海报感、封面感、传播图，优先看图像路线，比如 &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-image-first&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt_image_2_skill&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanoBanana-PPT-Skills&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如果已经有 PPT 文件，只想让 AI 帮你读、改、重排，可以看 MCP 路线。&lt;/p&gt;
&lt;p&gt;如果是学术、营销、翻译、长报告压缩这类明确场景，也可以继续找垂直 Skill，而不是拿通用 PPT 生成器硬做。&lt;/p&gt;
&lt;h2 id=&#34;最后要注意的事&#34;&gt;最后要注意的事
&lt;/h2&gt;&lt;p&gt;开源项目不能只看 Star。真正使用前还要确认三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LICENSE 是否允许你的使用方式。&lt;/li&gt;
&lt;li&gt;生成物是否满足交付要求，尤其是可编辑性。&lt;/li&gt;
&lt;li&gt;成本是否可接受，包括模型调用、图像生成、大上下文模型和可能的云服务费用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类工具变化很快，Star 数会变，项目维护状态也会变。但选型逻辑相对稳定：先确定交付形态，再看具体工具。PPT 是给人讲、给人改、还是给人看，这三个答案往往会把选择范围直接缩小一大半。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>wx-cli 项目解读：用命令行查询本地微信聊天记录</title>
        <link>https://knightli.com/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/2026/05/18/wx-cli-wechat-local-data-command-line-tool/</guid>
        <description>&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 是一个用 Rust 编写的本地微信数据命令行工具，目标是在命令行里查询自己的微信会话、聊天记录、联系人、群成员、收藏、朋友圈、公众号文章、附件和统计信息。&lt;/p&gt;
&lt;p&gt;它不是一个云端微信同步服务，也不是聊天机器人。它更像一个本地只读数据检索层：微信仍然在本机运行，数据仍然留在本机，&lt;code&gt;wx-cli&lt;/code&gt; 负责按需解密、缓存和查询本地数据库，然后把结果以 YAML 或 JSON 形式输出给人或 Agent 使用。&lt;/p&gt;
&lt;p&gt;这个项目有两个值得关注的点：一是它把微信本地数据查询做成了跨平台 CLI；二是它专门考虑了 Claude Code、Cursor、Codex 这类 AI Agent 的使用场景，提供了 &lt;code&gt;SKILL.md&lt;/code&gt; 和带 &lt;code&gt;meta&lt;/code&gt; 的结构化输出。&lt;/p&gt;
&lt;h2 id=&#34;wx-cli-能做什么&#34;&gt;wx-cli 能做什么
&lt;/h2&gt;&lt;p&gt;按项目 README 的描述，&lt;code&gt;wx-cli&lt;/code&gt; 覆盖的功能很完整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看最近会话和未读会话。&lt;/li&gt;
&lt;li&gt;查询某个联系人或群的聊天历史。&lt;/li&gt;
&lt;li&gt;全库搜索关键词。&lt;/li&gt;
&lt;li&gt;查看新增消息。&lt;/li&gt;
&lt;li&gt;查询联系人、群成员和群昵称。&lt;/li&gt;
&lt;li&gt;查询收藏。&lt;/li&gt;
&lt;li&gt;查询朋友圈通知、朋友圈时间线和朋友圈正文。&lt;/li&gt;
&lt;li&gt;查询公众号文章推送。&lt;/li&gt;
&lt;li&gt;列出和提取聊天图片附件。&lt;/li&gt;
&lt;li&gt;做聊天统计。&lt;/li&gt;
&lt;li&gt;导出聊天记录为 Markdown 或 JSON。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力让它不只是“查聊天记录”，而是把微信本地数据变成了可搜索、可统计、可导出的本地资料库。&lt;/p&gt;
&lt;h2 id=&#34;为什么适合-ai-agent&#34;&gt;为什么适合 AI Agent
&lt;/h2&gt;&lt;p&gt;很多命令行工具只是给人看的，输出是一段文本。&lt;code&gt;wx-cli&lt;/code&gt; 则明显考虑了 Agent 读取。&lt;/p&gt;
&lt;p&gt;README 提到，&lt;code&gt;history&lt;/code&gt;、&lt;code&gt;search&lt;/code&gt;、&lt;code&gt;sessions&lt;/code&gt;、&lt;code&gt;unread&lt;/code&gt;、&lt;code&gt;new-messages&lt;/code&gt;、&lt;code&gt;stats&lt;/code&gt;、&lt;code&gt;attachments&lt;/code&gt; 等命令会附带 &lt;code&gt;meta&lt;/code&gt; 信息。&lt;code&gt;meta&lt;/code&gt; 里包含结果状态、未知分片、命中数据的最新时间、session 记录的最新时间等信息。&lt;/p&gt;
&lt;p&gt;这对 Agent 很有用。因为 AI 不只需要“查到了什么”，还需要知道“结果新不新”“有没有可能漏消息”“是不是需要重新 init”。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; 可以提示结果是否 &lt;code&gt;ok&lt;/code&gt; 或 &lt;code&gt;possibly_stale&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unknown_shards&lt;/code&gt; 可以提示是否存在 daemon 当前没有 key 的数据库分片。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chat_latest_timestamp&lt;/code&gt; 可以告诉 Agent 当前命中数据里的最新消息时间。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session_last_timestamp&lt;/code&gt; 可以帮助判断本地 session 记录是否明显领先于查询结果。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类元信息可以减少 AI 误判，让 Claude Code、Cursor、Codex 这类工具在处理微信数据时更稳。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;项目推荐通过 npm 全平台安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @jackwener/wx-cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也支持 macOS / Linux 的 curl 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/jackwener/wx-cli/main/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows 可以在管理员 PowerShell 中运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jackwener&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;wx-cli&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要从源码构建，也可以直接用 Rust：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@github.com:jackwener/wx-cli.git &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; wx-cli
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build --release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;构建产物是 &lt;code&gt;target/release/wx&lt;/code&gt;，Windows 下是 &lt;code&gt;wx.exe&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;和-agent-skill-的关系&#34;&gt;和 Agent Skill 的关系
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 还提供了面向 AI Agent 的 Skill。可以通过 skills CLI 一键安装到 Claude Code、Cursor、Codex 等支持 Skills 的环境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add jackwener/wx-cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;全局安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add jackwener/wx-cli -g
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装后，Agent 会读取仓库里的 &lt;code&gt;SKILL.md&lt;/code&gt;，知道如何安装、初始化和调用 &lt;code&gt;wx-cli&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这意味着你可以让 Agent 帮你做一些本地信息整理任务，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找某段时间某个群聊里讨论过的关键词。&lt;/li&gt;
&lt;li&gt;汇总最近未读消息。&lt;/li&gt;
&lt;li&gt;从某个会话里导出最近聊天记录。&lt;/li&gt;
&lt;li&gt;搜索公众号文章推送链接。&lt;/li&gt;
&lt;li&gt;分析某个群聊里的发言统计。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前提仍然是：这些数据必须是你本机、你自己的微信数据。&lt;/p&gt;
&lt;h2 id=&#34;基本使用方式&#34;&gt;基本使用方式
&lt;/h2&gt;&lt;p&gt;初始化前需要保持微信正在运行。不同平台要求不同。&lt;/p&gt;
&lt;p&gt;Linux 上可以执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo wx init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows 上需要用管理员 PowerShell：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wx&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;macOS 上更复杂。README 说明，默认路径需要先对 WeChat 做 ad-hoc 签名，才能扫描进程内存；重签名后还要清理旧 TCC 授权记录，否则截图、视频通话、麦克风等权限可能出现“看起来已开启但实际拒绝”的问题。项目文档也提醒，重签名会带来 macOS 频繁弹出访问其他 App 数据提示的副作用。&lt;/p&gt;
&lt;p&gt;初始化后，可以用下面的命令验证：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sessions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;能看到最近会话，说明基本链路已经可用。daemon 会在首次调用时自动启动。&lt;/p&gt;
&lt;h2 id=&#34;常用命令示例&#34;&gt;常用命令示例
&lt;/h2&gt;&lt;p&gt;查看最近会话：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sessions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看未读会话：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx unread
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只看真人未读，过滤公众号和折叠入口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx unread --filter private,group
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看某个会话最近聊天记录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;张三&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;拉取更多历史消息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;张三&amp;#34;&lt;/span&gt; -n &lt;span class=&#34;m&#34;&gt;2000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按时间范围查询群聊：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;AI群&amp;#34;&lt;/span&gt; --since 2026-04-01 --until 2026-04-15
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;全库搜索：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx search &lt;span class=&#34;s2&#34;&gt;&amp;#34;关键词&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;搜索某个群中的关键词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx search &lt;span class=&#34;s2&#34;&gt;&amp;#34;会议&amp;#34;&lt;/span&gt; --in &lt;span class=&#34;s2&#34;&gt;&amp;#34;工作群&amp;#34;&lt;/span&gt; --since 2026-01-01
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;导出聊天记录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;张三&amp;#34;&lt;/span&gt; --format markdown -o chat.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;AI群&amp;#34;&lt;/span&gt; --since 2026-01-01 --format json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些命令都比较适合被脚本或 Agent 调用，尤其是加上 &lt;code&gt;--json&lt;/code&gt; 后。&lt;/p&gt;
&lt;h2 id=&#34;朋友圈和公众号文章&#34;&gt;朋友圈和公众号文章
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 不只查聊天。&lt;/p&gt;
&lt;p&gt;朋友圈相关命令分成通知和帖子：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sns-notifications
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sns-feed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sns-search &lt;span class=&#34;s2&#34;&gt;&amp;#34;关键词&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要注意，朋友圈数据只覆盖你本地刷到过的内容。微信客户端按需下载，没在本地出现过的数据，工具也不会凭空拿到。&lt;/p&gt;
&lt;p&gt;公众号文章则通过独立命令查询：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles --account &lt;span class=&#34;s2&#34;&gt;&amp;#34;返朴&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles --since 2026-05-01 --until 2026-05-10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles --json &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; jq &lt;span class=&#34;s1&#34;&gt;&amp;#39;.[].url&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它会返回公众号名称、标题、URL、摘要、封面、时间等字段。对做资料整理、文章收集和本地知识库的人来说，这个功能很实用。&lt;/p&gt;
&lt;h2 id=&#34;附件提取&#34;&gt;附件提取
&lt;/h2&gt;&lt;p&gt;微信聊天里的图片附件通常不是直接可读的普通图片文件，而是存在 &lt;code&gt;xwechat_files/&amp;lt;wxid&amp;gt;/msg/attach/...&lt;/code&gt; 下的 &lt;code&gt;.dat&lt;/code&gt; 文件。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 提供了两步流程：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx attachments &lt;span class=&#34;s2&#34;&gt;&amp;#34;张三&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx attachments &lt;span class=&#34;s2&#34;&gt;&amp;#34;AI群&amp;#34;&lt;/span&gt; --kind image -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;先拿到 &lt;code&gt;attachment_id&lt;/code&gt; 后，再提取：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx extract &amp;lt;attachment_id&amp;gt; -o ~/Desktop/photo.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出报告里会带 &lt;code&gt;md5&lt;/code&gt;、&lt;code&gt;dat_path&lt;/code&gt;、&lt;code&gt;dat_size&lt;/code&gt;、&lt;code&gt;output&lt;/code&gt;、&lt;code&gt;format&lt;/code&gt;、&lt;code&gt;decoder&lt;/code&gt; 等信息。README 中说明它支持 legacy XOR、V1 fixed-AES、V2 AES + XOR 等解码档位，不同平台的 image key 提取方式也不同。&lt;/p&gt;
&lt;p&gt;这部分能力很强，但也更需要谨慎使用：只处理自己的数据，不要把它用于未经授权的数据访问。&lt;/p&gt;
&lt;h2 id=&#34;daemon-架构为什么重要&#34;&gt;daemon 架构为什么重要
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 的性能点在 daemon。&lt;/p&gt;
&lt;p&gt;README 中给出的结构大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx (CLI) ──Unix socket──▶ wx-daemon (后台进程)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    ┌─────────┴──────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               DBCache               联系人缓存
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           (mtime 感知复用)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;daemon 首次解密后，会把数据库和 mtime 信息持久化到 &lt;code&gt;~/.wx-cli/cache/&lt;/code&gt;。如果数据库文件 mtime 没变，后续调用就可以复用缓存，不需要每次重新解密。&lt;/p&gt;
&lt;p&gt;这对命令行查询和 Agent 循环都很关键。Agent 可能会连续查询多个会话、搜索多个关键词、再做统计和导出。如果每次都重新扫描和解密，体验会很差；daemon 缓存让它更接近一个本地查询服务。&lt;/p&gt;
&lt;h2 id=&#34;原理简述&#34;&gt;原理简述
&lt;/h2&gt;&lt;p&gt;项目 README 对原理有直接说明：微信 4.x 使用 SQLCipher 4 加密本地数据库，WCDB 会在进程内存中缓存派生后的 raw key。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 会根据平台使用不同方式扫描微信进程内存，匹配 key 模式后提取密钥，再由 daemon 按需解密和缓存数据库。&lt;/p&gt;
&lt;p&gt;不同平台的底层机制不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS 使用 Mach VM API。&lt;/li&gt;
&lt;li&gt;Linux 使用 &lt;code&gt;/proc/&amp;lt;pid&amp;gt;/mem&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Windows 使用 &lt;code&gt;VirtualQueryEx&lt;/code&gt; 和 &lt;code&gt;ReadProcessMemory&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力解释了为什么初始化通常需要较高权限，也解释了为什么 macOS 上会涉及签名和隐私授权。&lt;/p&gt;
&lt;h2 id=&#34;使用边界和风险&#34;&gt;使用边界和风险
&lt;/h2&gt;&lt;p&gt;这类工具必须先讲边界。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; README 的免责声明写得很明确：工具仅用于学习和研究目的，用于解密自己的微信数据，并要求遵守相关法律法规，不得用于未经授权的数据访问。&lt;/p&gt;
&lt;p&gt;实际使用时也建议注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只在自己的电脑、自己的微信账号上使用。&lt;/li&gt;
&lt;li&gt;不要把导出的聊天记录随意上传到云端模型。&lt;/li&gt;
&lt;li&gt;用 Agent 分析聊天记录时，先确认 API 供应商和数据出境风险。&lt;/li&gt;
&lt;li&gt;导出 Markdown / JSON 后要注意文件权限和备份位置。&lt;/li&gt;
&lt;li&gt;公司或多人设备上使用前，先确认合规和授权。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本地工具不等于没有隐私风险。它减少了数据离开本机的默认路径，但如果你把输出交给云端模型、网盘或第三方脚本，风险又会回来。&lt;/p&gt;
&lt;h2 id=&#34;适合谁使用&#34;&gt;适合谁使用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在本地快速搜索自己的微信历史消息。&lt;/li&gt;
&lt;li&gt;需要把某个会话导出为 Markdown 或 JSON。&lt;/li&gt;
&lt;li&gt;想统计某个群聊在一段时间内的发言情况。&lt;/li&gt;
&lt;li&gt;想让 Claude Code、Cursor、Codex 等 Agent 帮忙整理本地微信资料。&lt;/li&gt;
&lt;li&gt;想把公众号文章推送链接整理进本地知识库。&lt;/li&gt;
&lt;li&gt;想研究微信本地数据库结构和解密流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想做云端微信同步。&lt;/li&gt;
&lt;li&gt;想绕过他人设备或账号权限。&lt;/li&gt;
&lt;li&gt;想无脑图形界面操作，不接触命令行。&lt;/li&gt;
&lt;li&gt;不愿意处理 macOS 权限、Windows 管理员权限或 Linux sudo 的用户。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 的价值，不只是“命令行查微信聊天记录”。更准确地说，它把本地微信数据变成了一个可查询、可导出、可被 Agent 消费的本地数据源。&lt;/p&gt;
&lt;p&gt;它的 daemon 架构解决了反复解密和查询性能问题；&lt;code&gt;meta&lt;/code&gt; wrapper 让 AI Agent 更容易判断结果是否新鲜；&lt;code&gt;SKILL.md&lt;/code&gt; 则把安装和使用方式交给 Claude Code、Cursor、Codex 这类工具理解。&lt;/p&gt;
&lt;p&gt;如果你经常需要从微信里找信息、整理群聊、导出记录或构建个人资料库，&lt;code&gt;wx-cli&lt;/code&gt; 很值得关注。但使用它时也要始终记住一条底线：只处理自己的数据，并且谨慎管理导出结果。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/jackwener/wx-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;jackwener/wx-cli GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Open Design 项目解析：把 Claude Code、Codex 变成 AI 设计工具</title>
        <link>https://knightli.com/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/2026/05/18/open-design-open-source-claude-design-alternative/</guid>
        <description>&lt;p&gt;Open Design 是 nexu-io 推出的开源 AI 设计项目，定位是 local-first、open-source 的 Claude Design / Figma 替代方案。&lt;/p&gt;
&lt;p&gt;它想解决的问题很明确：Claude Design 证明了大模型可以直接生成设计制品，但这类能力如果只存在于闭源、云端、单一模型的产品里，用户就很难自托管、接入自己的 Agent、替换模型、沉淀私有设计系统，或者把产物放进本地工作流。&lt;/p&gt;
&lt;p&gt;Open Design 的思路不是重新造一个大模型，而是把你电脑上已有的 coding-agent CLI 接进一个设计工作台。Claude Code、Codex、Cursor Agent、Gemini CLI、OpenCode、Qwen、Copilot CLI、Kimi、DeepSeek TUI 等工具，都可以成为它的“设计引擎”。&lt;/p&gt;
&lt;h2 id=&#34;open-design-是什么&#34;&gt;Open Design 是什么
&lt;/h2&gt;&lt;p&gt;Open Design 可以理解为三个部分的组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个 Web UI，用来对话、预览、管理项目和导出产物。&lt;/li&gt;
&lt;li&gt;一个本地 daemon，负责调度 Agent、管理文件、保存项目和提供 API。&lt;/li&gt;
&lt;li&gt;一组 Skills、Design Systems 和模板，用来约束 Agent 生成更像设计作品，而不是随手拼出来的 AI 页面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用户输入需求后，Open Design 不只是把一句话丢给模型。它会先让用户补充设计简报，选择场景和方向，再把项目元数据、当前设计系统、Skill 文件、模板、检查清单等上下文注入给 Agent。Agent 在真实文件夹里读写文件，最后生成可在沙盒 iframe 中预览的 artifact。&lt;/p&gt;
&lt;p&gt;这让它更接近“AI 设计工作流”，而不是单次网页生成器。&lt;/p&gt;
&lt;h2 id=&#34;为什么它和普通-ai-生成网页不一样&#34;&gt;为什么它和普通 AI 生成网页不一样
&lt;/h2&gt;&lt;p&gt;很多 AI 工具都能生成一个 HTML 页面，但 Open Design 的重点不是“让模型写页面”，而是“让模型按设计流程交付可预览、可导出、可迭代的制品”。&lt;/p&gt;
&lt;p&gt;它强调几个设计：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先问问题，再生成。新设计 brief 会先出现交互式 question form，用来锁定受众、语气、品牌上下文、约束和视觉方向。&lt;/li&gt;
&lt;li&gt;Skills 是文件，不是黑盒插件。每个 Skill 由 &lt;code&gt;SKILL.md&lt;/code&gt;、&lt;code&gt;assets/&lt;/code&gt;、&lt;code&gt;references/&lt;/code&gt; 组成，可以被阅读、替换和扩展。&lt;/li&gt;
&lt;li&gt;Design Systems 是 Markdown，不是固定主题 JSON。颜色、字体、间距、组件、动效、品牌语气和反模式都可以写进 &lt;code&gt;DESIGN.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Agent 在真实项目目录里工作。它能读模板、写文件、生成图片、输出 &lt;code&gt;.pptx&lt;/code&gt;、&lt;code&gt;.pdf&lt;/code&gt;、&lt;code&gt;.zip&lt;/code&gt; 等文件。&lt;/li&gt;
&lt;li&gt;产物在沙盒 iframe 中预览，减少直接执行不受控代码的风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套结构的目标，是让 AI 更像一个有规范、有素材、有检查清单的设计协作者。&lt;/p&gt;
&lt;h2 id=&#34;它支持哪些-agent&#34;&gt;它支持哪些 Agent
&lt;/h2&gt;&lt;p&gt;Open Design 的一个亮点是“把 Agent 当运行时”，而不是绑定某一家模型。&lt;/p&gt;
&lt;p&gt;README 中列出的支持对象包括 Claude Code、Codex CLI、Devin for Terminal、Cursor Agent、Gemini CLI、OpenCode、Qwen Code、Qoder CLI、GitHub Copilot CLI、Hermes、Kimi、Pi、Kiro、Kilo、Mistral Vibe、DeepSeek TUI 等。它会从 &lt;code&gt;PATH&lt;/code&gt; 中自动检测这些 CLI，并允许用户切换。&lt;/p&gt;
&lt;p&gt;如果本地没有合适的 CLI，也可以走 OpenAI-compatible 的 BYOK proxy，把自己的 &lt;code&gt;baseUrl&lt;/code&gt;、&lt;code&gt;apiKey&lt;/code&gt; 和模型填进去，让 daemon 把流式输出规范化成同一套聊天流。&lt;/p&gt;
&lt;p&gt;这种设计的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不锁定单一模型。&lt;/li&gt;
&lt;li&gt;可以复用用户已经安装和配置好的 Agent。&lt;/li&gt;
&lt;li&gt;本地文件读写由 daemon 管理，权限边界更清晰。&lt;/li&gt;
&lt;li&gt;对企业或重度用户来说，更容易接入自己的模型和 API 供应商。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skills-和-design-systems-是它的核心资产&#34;&gt;Skills 和 Design Systems 是它的核心资产
&lt;/h2&gt;&lt;p&gt;Open Design 内置了大量 Skills 和 Design Systems。README 中提到，项目内置的 Skills 覆盖网页原型、SaaS landing page、dashboard、mobile app、gamified app、社交轮播图、杂志海报、PPT、周报、财务报告、HR onboarding、invoice、kanban、OKR 等场景。&lt;/p&gt;
&lt;p&gt;Design Systems 则用于给 Agent 提供品牌级视觉约束。仓库介绍中列出了 Linear、Stripe、Vercel、Airbnb、Tesla、Notion、Apple、Anthropic、Cursor、Supabase、Figma、小红书等设计系统来源。&lt;/p&gt;
&lt;p&gt;这两者的关系可以这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skill 决定“这次要交付什么类型的作品”。&lt;/li&gt;
&lt;li&gt;Design System 决定“作品应该长成什么品牌风格”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果没有这两层约束，AI 很容易生成那种看起来熟悉但缺少判断的通用页面。有了 Skill 和 Design System，模型至少有了清晰的任务边界、视觉参考和检查规则。&lt;/p&gt;
&lt;h2 id=&#34;它能生成什么&#34;&gt;它能生成什么
&lt;/h2&gt;&lt;p&gt;Open Design 不是只做网页原型。&lt;/p&gt;
&lt;p&gt;按 README 的描述，它覆盖 web、desktop、mobile prototypes、slides、images、videos、HyperFrames 等方向，并支持 HTML、PDF、PPTX、ZIP、Markdown 等导出形式。媒体生成方面，它把图片、视频、音频也放在同一个设计循环里，例如海报、头像、信息图、地图插画、短视频和 HTML 转 MP4 动效。&lt;/p&gt;
&lt;p&gt;这意味着它的使用场景可以很宽：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创业团队快速做 pitch deck。&lt;/li&gt;
&lt;li&gt;产品团队生成 landing page 或功能原型。&lt;/li&gt;
&lt;li&gt;运营团队做活动页、社媒图、周报。&lt;/li&gt;
&lt;li&gt;设计师用它做 moodboard、视觉方向和第一版 layout。&lt;/li&gt;
&lt;li&gt;开发者把需求转成可运行的前端 artifact。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的价值不只是“生成一个页面”，而是把多个内容形态放进同一套 Agent 工作流。&lt;/p&gt;
&lt;h2 id=&#34;本地优先是什么意思&#34;&gt;本地优先是什么意思
&lt;/h2&gt;&lt;p&gt;Open Design 强调 local-first。它不是把所有东西都交给一个远端 SaaS 后端，而是在本地跑 daemon 和项目工作区。&lt;/p&gt;
&lt;p&gt;仓库 README 里描述的架构大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前端是 Next.js / React / TypeScript。&lt;/li&gt;
&lt;li&gt;本地 daemon 使用 Node、Express、SQLite 和 SSE。&lt;/li&gt;
&lt;li&gt;项目、会话、消息、tab、模板等数据保存在本地 SQLite 和 &lt;code&gt;.od/projects/&amp;lt;id&amp;gt;/&lt;/code&gt; 目录。&lt;/li&gt;
&lt;li&gt;Agent 通过 &lt;code&gt;child_process.spawn&lt;/code&gt; 启动，并在项目 artifact 文件夹中读写。&lt;/li&gt;
&lt;li&gt;预览通过沙盒 iframe 渲染。&lt;/li&gt;
&lt;li&gt;导出包括 HTML、PDF、PPTX、ZIP、Markdown。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种结构更适合希望把设计产物留在本机、接入本地 Agent、控制 API key、维护私有工作区的用户。&lt;/p&gt;
&lt;p&gt;不过 local-first 不等于完全离线。实际生成仍然取决于你使用的 Agent 和模型。如果你用的是云端模型 API，内容仍然会发往对应供应商。Open Design 更准确的定位，是把工作区、调度、文件和预览放回本地，把模型层交给用户自己选择。&lt;/p&gt;
&lt;h2 id=&#34;和-claude-design--figma-的关系&#34;&gt;和 Claude Design / Figma 的关系
&lt;/h2&gt;&lt;p&gt;Open Design 在 README 中明确把自己称为 Claude Design / Figma 的开源替代方向，但它并不是传统意义上的 Figma 复刻。&lt;/p&gt;
&lt;p&gt;Figma 是设计师手动编辑、协作和交付设计稿的专业工具；Open Design 更偏 Agent-native：用户通过自然语言、表单、Skills 和设计系统驱动 Agent 产出可运行 artifact。&lt;/p&gt;
&lt;p&gt;它更像是把几个东西合在一起：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Design 的 artifact-first 体验。&lt;/li&gt;
&lt;li&gt;Figma 的设计系统意识。&lt;/li&gt;
&lt;li&gt;Claude Code / Codex 这类 Agent 的文件读写和执行能力。&lt;/li&gt;
&lt;li&gt;本地 daemon 的项目管理和沙盒预览。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它未必会替代专业设计师的全流程工具，但很适合做“从想法到可预览原型”的快速通道。&lt;/p&gt;
&lt;h2 id=&#34;适合谁使用&#34;&gt;适合谁使用
&lt;/h2&gt;&lt;p&gt;Open Design 更适合这些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经在使用 Claude Code、Codex、Cursor、Gemini CLI 等 Agent 的开发者。&lt;/li&gt;
&lt;li&gt;想把 AI 设计产物放到本地项目目录里管理的人。&lt;/li&gt;
&lt;li&gt;需要快速生成网页原型、PPT、海报、运营素材的创业团队。&lt;/li&gt;
&lt;li&gt;希望自定义 Skills、Design Systems、提示词栈的高级用户。&lt;/li&gt;
&lt;li&gt;不想被单一模型或单一云端产品锁住的团队。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合这些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只想打开网页、输入一句话、立刻下载图片的轻量用户。&lt;/li&gt;
&lt;li&gt;完全不想碰 Node、pnpm、daemon、CLI 和本地配置的人。&lt;/li&gt;
&lt;li&gt;需要成熟多人协作、设计评审和矢量编辑能力的专业 Figma 流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，Open Design 更像给 Agent 用户和技术型设计团队准备的工具，而不是面向所有人的轻量设计 SaaS。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的地方&#34;&gt;需要注意的地方
&lt;/h2&gt;&lt;p&gt;Open Design 的 README 标注了 &lt;code&gt;0.8.0-preview&lt;/code&gt;，并说明项目仍在快速迭代。这类项目的活力很强，但也意味着 API、数据目录、桌面版迁移、Skills 结构和导出流程可能还会变化。&lt;/p&gt;
&lt;p&gt;使用前最好注意几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要把它当成稳定企业级设计平台。&lt;/li&gt;
&lt;li&gt;先用测试项目体验工作流，再导入重要资料。&lt;/li&gt;
&lt;li&gt;如果要迁移 &lt;code&gt;.od/&lt;/code&gt; 数据，先备份，确保 daemon 和桌面应用都已停止。&lt;/li&gt;
&lt;li&gt;BYOK 时注意 API key、代理地址和本地私有网络访问风险。&lt;/li&gt;
&lt;li&gt;生成的设计仍需要人工审查，尤其是品牌、版权、文案和视觉一致性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;开源项目最大的好处是可检查、可改、可贡献；代价是你需要接受一定的工程摩擦。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Open Design 的看点，不只是“开源版 Claude Design”。它真正有意思的地方，是把 Agent CLI、Skills、Design Systems、本地 daemon 和沙盒预览组织成一个设计工作流。&lt;/p&gt;
&lt;p&gt;它把设计生成从单次 prompt 推向了更结构化的流程：先问问题，选方向，加载设计系统，读取 Skill，写入真实文件，预览 artifact，再导出结果。&lt;/p&gt;
&lt;p&gt;如果你已经习惯用 Claude Code、Codex 或 Cursor 处理代码，那么 Open Design 值得关注。它代表了一种新的产品形态：不是 AI 帮你画一张图，而是 AI 在本地项目空间里，按设计系统和任务技能，生成一组可以继续迭代的设计制品。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 省 Token 指南：模型、MCP、CLAUDE.md 和 Skills 怎么影响缓存</title>
        <link>https://knightli.com/2026/05/18/claude-code-prompt-cache-token-optimization/</link>
        <pubDate>Mon, 18 May 2026 18:30:24 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/18/claude-code-prompt-cache-token-optimization/</guid>
        <description>&lt;p&gt;Claude Code 长任务里，Prompt Cache 命中率会直接影响成本和速度。很多人只知道“缓存能省 Token”，但不清楚哪些操作会让缓存突然失效。&lt;/p&gt;
&lt;p&gt;理解它并不难：每次请求都可以看成一条从左到右的上下文链条：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tools -&amp;gt; system -&amp;gt; CLAUDE.md / skills -&amp;gt; messages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;越靠左的内容越稳定，缓存收益越大；越靠左的内容一变，后面的缓存也更容易跟着失效。反过来，越靠右的内容变化，影响范围越小。&lt;/p&gt;
&lt;p&gt;所以优化 Claude Code 的 Prompt Cache，不是靠玄学，而是靠一个原则：任务开始前把模型、MCP、Skills、CLAUDE.md 等基础上下文准备好，任务中途尽量不要改。&lt;/p&gt;
&lt;h2 id=&#34;prompt-cache-缓存的不是文字本身&#34;&gt;Prompt Cache 缓存的不是文字本身
&lt;/h2&gt;&lt;p&gt;Prompt Cache 不是简单地把提示词字符串存起来。对 Transformer 模型来说，更关键的是前缀上下文经过注意力层计算后的 Key/Value 状态，也就是常说的 KV cache。&lt;/p&gt;
&lt;p&gt;这意味着两个事实：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一段上下文，只要前缀保持稳定，就可以在后续请求中复用一部分计算结果。&lt;/li&gt;
&lt;li&gt;如果模型、工具定义、系统提示词或前缀消息发生变化，之前的缓存就可能无法复用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic 官方文档也把失效层级概括为 &lt;code&gt;tools -&amp;gt; system -&amp;gt; messages&lt;/code&gt;。工具定义变化会影响整段缓存，系统层变化会影响 system 和 messages，messages 层变化则主要影响消息缓存。&lt;/p&gt;
&lt;p&gt;Claude Code 里还会额外涉及 &lt;code&gt;CLAUDE.md&lt;/code&gt;、Skills、MCP、插件和子代理等上下文，所以实际使用时更容易踩到缓存失效点。&lt;/p&gt;
&lt;h2 id=&#34;缓存杀手一中途切换模型&#34;&gt;缓存杀手一：中途切换模型
&lt;/h2&gt;&lt;p&gt;切模型是影响最大的操作。&lt;/p&gt;
&lt;p&gt;Prompt Cache 是按模型隔离的。Opus、Sonnet、Haiku 这类模型的结构和权重不同，同一段文本算出来的 KV cache 也不同。你在 Opus 里跑了很长上下文，再切到 Sonnet，并不能让 Sonnet 复用 Opus 的缓存。&lt;/p&gt;
&lt;p&gt;这会带来一个反直觉结果：中途为了省钱切模型，可能反而让前面已经积累的缓存全部失效。原本可以按 cache read 价格读取的上下文，需要重新写入和计算。&lt;/p&gt;
&lt;p&gt;更稳妥的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主对话尽量固定一个模型。&lt;/li&gt;
&lt;li&gt;需要便宜模型处理支线任务时，用 subagent 隔离出去。&lt;/li&gt;
&lt;li&gt;让支线代理完成搜索、探索、整理，再把结果摘要交回主对话。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样主对话的长上下文尽量不动，缓存命中率更稳定。&lt;/p&gt;
&lt;h2 id=&#34;缓存杀手二中途新增-mcp-或重载插件&#34;&gt;缓存杀手二：中途新增 MCP 或重载插件
&lt;/h2&gt;&lt;p&gt;MCP 会向 Claude Code 提供工具。新增 MCP 服务器后，工具列表会变化，而工具定义处在上下文链条最左侧。&lt;/p&gt;
&lt;p&gt;从 Prompt Cache 的角度看，工具列表一变，后面的 system 和 messages 都可能需要重新计算。尤其是 MCP 很多时，工具定义本身就可能占用大量 Token，缓存失效的代价会很明显。&lt;/p&gt;
&lt;p&gt;不过有一个细节：Claude Code 通常在会话启动时读取 MCP 配置。你中途改了配置，当前 session 不一定立刻受影响。真正需要小心的是触发重新加载的动作，例如重启、恢复会话、重新加载插件或让工具列表重新组装。&lt;/p&gt;
&lt;p&gt;建议是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开始长任务前，一次性装好需要的 MCP。&lt;/li&gt;
&lt;li&gt;不要做一半才发现缺工具，再安装并重载。&lt;/li&gt;
&lt;li&gt;对大型 MCP 工具集，优先考虑按需加载或减少默认启用数量。&lt;/li&gt;
&lt;li&gt;不常用的 MCP 不要长期挂在默认配置里。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果工具定义稳定，Prompt Cache 才有长期命中的基础。&lt;/p&gt;
&lt;h2 id=&#34;缓存杀手三中途修改-claudemd&#34;&gt;缓存杀手三：中途修改 CLAUDE.md
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是 Claude Code 的项目记忆文件，适合放构建命令、测试命令、架构约定、代码风格和项目注意事项。&lt;/p&gt;
&lt;p&gt;它对 Claude Code 很有用，但也会进入上下文。官方帮助文档说明，&lt;code&gt;CLAUDE.md&lt;/code&gt; 会在 session 开始时读取，并作为用户消息提供给 Claude；它也会使用 Anthropic 的 Prompt Cache。首次请求会按完整输入计费，后续请求如果在缓存有效期内命中，就按更低的 cache read 成本处理。&lt;/p&gt;
&lt;p&gt;问题在于：&lt;code&gt;CLAUDE.md&lt;/code&gt; 是内容寻址的。你一改文件内容，旧缓存就对不上了。&lt;/p&gt;
&lt;p&gt;所以不要在长任务中途频繁改 &lt;code&gt;CLAUDE.md&lt;/code&gt;。更好的方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务开始前先检查 &lt;code&gt;CLAUDE.md&lt;/code&gt; 是否够用。&lt;/li&gt;
&lt;li&gt;把稳定规则写进去，把临时指令放在当前对话里。&lt;/li&gt;
&lt;li&gt;如果只是一次性任务，不要为了临时需求修改长期记忆文件。&lt;/li&gt;
&lt;li&gt;如果必须改，最好在一个阶段结束后再开始新 session。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 应该是稳定的项目说明，而不是每轮任务都改的便签。&lt;/p&gt;
&lt;h2 id=&#34;缓存杀手四中途安装或更新-skills&#34;&gt;缓存杀手四：中途安装或更新 Skills
&lt;/h2&gt;&lt;p&gt;Skills 也是上下文的一部分。安装新 Skill、更新 Skill，或者让 Skill 列表发生变化，都会让注入到会话里的上下文不同。&lt;/p&gt;
&lt;p&gt;这类变化通常不会在当前 session 里立刻完整生效，而是在重新加载、恢复会话或新开会话时体现出来。问题是，一旦重新组装 messages，旧缓存就可能命中不了。&lt;/p&gt;
&lt;p&gt;建议和 MCP 类似：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开始任务前先确认需要哪些 Skills。&lt;/li&gt;
&lt;li&gt;同一类任务尽量固定 Skill 集合。&lt;/li&gt;
&lt;li&gt;不要在一个长任务中途边做边装 Skill。&lt;/li&gt;
&lt;li&gt;如果安装了新 Skill，最好把它当成新阶段的开始。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对经常做内容生产、代码审查、部署、翻译的工作流，可以把常用 Skills 固定下来，让上下文结构尽量稳定。&lt;/p&gt;
&lt;h2 id=&#34;缓存杀手五空闲时间超过-ttl&#34;&gt;缓存杀手五：空闲时间超过 TTL
&lt;/h2&gt;&lt;p&gt;Prompt Cache 不是永久保存。常见默认有效期是几分钟级别，Anthropic 文档和 Claude Code 相关说明里都提到过 5 分钟左右的缓存窗口。超过 TTL 后，即使你发送完全一样的请求，服务端也可能已经清掉缓存。&lt;/p&gt;
&lt;p&gt;这也是很多长任务用户的体感来源：刚才还很省，去喝杯咖啡回来，再发下一步，Token 又突然涨上去了。&lt;/p&gt;
&lt;p&gt;长任务尤其容易遇到这个问题。你可能要看 Claude Code 的输出、检查文件、跑测试、思考下一步，这些操作一不小心就超过 5 分钟。&lt;/p&gt;
&lt;p&gt;如果你的使用环境支持，可以在长任务前启用 1 小时 Prompt Cache TTL：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ENABLE_PROMPT_CACHING_1H&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 Windows PowerShell 里可以写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:ENABLE_PROMPT_CACHING_1H&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要注意的是，1 小时缓存写入成本通常会高于 5 分钟缓存写入成本。它不适合所有短任务，但对大型代码库、长对话、复杂多步骤开发任务，往往比频繁缓存过期更划算。&lt;/p&gt;
&lt;h2 id=&#34;怎么安排一次更省-token-的-claude-code-长任务&#34;&gt;怎么安排一次更省 Token 的 Claude Code 长任务
&lt;/h2&gt;&lt;p&gt;比较稳的流程可以这样做：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;任务开始前选定模型，不要中途频繁切换。&lt;/li&gt;
&lt;li&gt;提前启用需要的 MCP，不用的 MCP 先关掉。&lt;/li&gt;
&lt;li&gt;检查 &lt;code&gt;CLAUDE.md&lt;/code&gt;，只保留稳定、关键、长期有效的规则。&lt;/li&gt;
&lt;li&gt;提前准备好本次任务需要的 Skills。&lt;/li&gt;
&lt;li&gt;如果是复杂任务，考虑启用 1 小时 TTL。&lt;/li&gt;
&lt;li&gt;把大任务拆成几个阶段，但每个阶段内部尽量保持上下文结构稳定。&lt;/li&gt;
&lt;li&gt;需要探索支线问题时，用 subagent 或单独 session，不要污染主对话。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套做法的目标不是绝对不让缓存失效，而是避免那些代价最高、最容易被忽略的失效。&lt;/p&gt;
&lt;h2 id=&#34;一个简单判断标准&#34;&gt;一个简单判断标准
&lt;/h2&gt;&lt;p&gt;你可以用一句话判断某个操作是否危险：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这个操作会不会改变模型、工具定义、系统上下文或会话开头的固定消息？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果答案是会，那它大概率会影响 Prompt Cache。越靠近上下文链条左侧，影响越大。&lt;/p&gt;
&lt;p&gt;常见操作可以这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;切模型：高风险，模型缓存隔离。&lt;/li&gt;
&lt;li&gt;新增 MCP 或重载插件：高风险，工具列表变化。&lt;/li&gt;
&lt;li&gt;修改 &lt;code&gt;CLAUDE.md&lt;/code&gt;：中高风险，项目记忆变化。&lt;/li&gt;
&lt;li&gt;安装 Skills：中高风险，注入上下文变化。&lt;/li&gt;
&lt;li&gt;普通对话继续追问：低风险，主要追加 messages。&lt;/li&gt;
&lt;li&gt;空闲超过 TTL：高风险，服务端缓存过期。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Claude Code 的 Prompt Cache 优化，关键不是背参数，而是让会话前缀稳定。&lt;/p&gt;
&lt;p&gt;模型不要随便切，MCP 和 Skills 不要边做边装，&lt;code&gt;CLAUDE.md&lt;/code&gt; 不要当临时草稿频繁改，复杂任务尽量延长 TTL。只要这些基础动作稳定下来，Claude Code 在长任务里的 Token 成本和响应速度都会更可控。&lt;/p&gt;
&lt;p&gt;最实用的一句话是：开始前配好，开始后少动。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Tool use with prompt caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/en/articles/14553240-give-claude-context-claude-md-and-better-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Help Center：CLAUDE.md and prompt caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/mcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Docs：Connect Claude Code to tools via MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Midjourney vs Stable Diffusion：AI 绘图工具怎么选</title>
        <link>https://knightli.com/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/2026/05/18/midjourney-vs-stable-diffusion-ai-image-generator/</guid>
        <description>&lt;p&gt;Midjourney 和 Stable Diffusion 是目前 AI 绘图领域最常被放在一起比较的两类工具。它们都能生成高质量图片，但背后的产品逻辑完全不同。&lt;/p&gt;
&lt;p&gt;Midjourney 更像一台调校好的高端相机：闭源、云端、付费、省心，输入几句话就能得到很有审美完成度的结果。Stable Diffusion 更像一套可自由组装的专业摄影棚：开源、可本地部署、可深度改造，但需要你理解模型、参数、工作流和硬件。&lt;/p&gt;
&lt;p&gt;所以这不是简单的“谁更强”，而是“你要什么”。如果你追求快速出图和审美稳定，Midjourney 更轻松；如果你追求精准控制、批量生产、私有化和可定制工作流，Stable Diffusion 更有空间。&lt;/p&gt;
&lt;h2 id=&#34;一句话结论&#34;&gt;一句话结论
&lt;/h2&gt;&lt;p&gt;如果你是自媒体作者、独立设计师、插画灵感创作者，想快速做封面、海报、概念图、情绪板，优先选 Midjourney。&lt;/p&gt;
&lt;p&gt;如果你要做电商商品图、AI 模特换装、建筑室内渲染、游戏美术资产、批量生成、私有部署或自动化接口，优先选 Stable Diffusion。&lt;/p&gt;
&lt;p&gt;如果你只是想体验 AI 绘图，不想折腾电脑和参数，Midjourney 的学习成本低得多。&lt;/p&gt;
&lt;p&gt;如果你愿意研究 ComfyUI、LoRA、ControlNet、Checkpoint，并且手里有不错的 NVIDIA 显卡，Stable Diffusion 的上限更高。&lt;/p&gt;
&lt;h2 id=&#34;核心差异一个是产品一个是生态&#34;&gt;核心差异：一个是产品，一个是生态
&lt;/h2&gt;&lt;p&gt;Midjourney 首先是一个完整产品。你通过官网或 Discord 使用它，模型、算力、队列、风格、参数、视频功能都由官方维护。它的优势是默认效果好、审美稳定、出图速度快，缺点是你不能真正进入底层改模型，也不能把工作流完全搬到自己的机器上。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 则更像一个开源生态。你可以用 SDXL、SD3.5、Flux 等模型，也可以通过 WebUI、ComfyUI、本地脚本或第三方平台运行。它的优势是可控、可训练、可批量、可私有化，缺点是安装、显卡、模型管理和参数调试都需要时间。&lt;/p&gt;
&lt;p&gt;这决定了两者的使用体验：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 让你少做选择，换来更稳定的默认审美。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 给你更多选择，也把更多复杂度交给你。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;画面质量midjourney-更容易出第一眼好图&#34;&gt;画面质量：Midjourney 更容易出“第一眼好图”
&lt;/h2&gt;&lt;p&gt;Midjourney 的优势是首图惊艳度。你只写一句“电影感人像”“未来城市海报”“高级香水广告”，它通常会自动补足光影、构图、材质和氛围。对不懂摄影和绘画的人来说，这种默认审美非常友好。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 的基础模型也能生成高质量图片，但默认效果不一定总是稳定。很多时候，你需要合适的模型、LoRA、采样器、提示词、负面提示词和后处理，才能得到同样惊艳的结果。&lt;/p&gt;
&lt;p&gt;简单说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 的平均下限更高。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 的最高上限很高，但需要配置和经验。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你要快速做社交媒体封面、博客配图、灵感板，Midjourney 通常更省时间。&lt;/p&gt;
&lt;h2 id=&#34;控制力stable-diffusion-更适合严肃工作流&#34;&gt;控制力：Stable Diffusion 更适合严肃工作流
&lt;/h2&gt;&lt;p&gt;AI 绘图最难的不是“画得漂亮”，而是“按要求画对”。&lt;/p&gt;
&lt;p&gt;比如你希望人物保持同一张脸，姿势必须符合指定骨骼，商品不能变形，衣服图案不能乱，建筑线稿要转成真实渲染图，或者同一个角色要出现在多张分镜里。这类需求更考验控制力。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 在这里优势明显。ControlNet 可以用姿势、线稿、深度图、边缘图等条件控制画面结构；LoRA 可以训练特定人物、产品、服装、画风；ComfyUI 可以把生成、放大、抠图、重绘、换脸、换装、批处理串成完整流程。&lt;/p&gt;
&lt;p&gt;Midjourney 也有风格参考、角色参考、局部编辑、图片参考等能力，最新版本对提示词理解和细节保持也在增强。但它仍然更适合创意探索，而不是高约束的工业化工作流。&lt;/p&gt;
&lt;h2 id=&#34;提示词逻辑一个偏审美一个偏工程&#34;&gt;提示词逻辑：一个偏审美，一个偏工程
&lt;/h2&gt;&lt;p&gt;Midjourney 更像是在理解你的审美意图。你写一句自然语言，它会主动补足很多“好看”的东西。对普通用户来说，这是优点，因为你不需要把灯光、镜头、材质、构图都写清楚。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 更像是在执行一套可调参数系统。你可以用自然语言描述画面，也可以精确指定模型、分辨率、采样步数、CFG、ControlNet 条件、LoRA 权重、局部重绘区域。它给你的不是一个按钮，而是一套可拆解、可复用、可自动化的生成管线。&lt;/p&gt;
&lt;p&gt;这也是为什么很多人第一次用 Stable Diffusion 会觉得“麻烦”。它并不是单一 App，而是一个工具箱。&lt;/p&gt;
&lt;h2 id=&#34;人物一致性与风格一致性&#34;&gt;人物一致性与风格一致性
&lt;/h2&gt;&lt;p&gt;Midjourney 已经提供角色参考和风格参考能力，适合保持大致人物气质、服装方向和画面风格。对于短篇视觉项目、海报系列、社交媒体内容，它已经够用。&lt;/p&gt;
&lt;p&gt;但如果你要做长篇漫画、游戏角色资产、虚拟模特、电商品牌视觉，Stable Diffusion 的可训练能力更重要。通过 LoRA 或 DreamBooth，你可以把特定角色、产品、服装和画风固化下来，让它们在大量图片中保持一致。&lt;/p&gt;
&lt;p&gt;这里的区别可以理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 更适合“像同一个人”。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 更适合“就是这个人或这个产品”。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;文字生成与排版&#34;&gt;文字生成与排版
&lt;/h2&gt;&lt;p&gt;过去 AI 绘图工具普遍不擅长生成文字。现在情况已经改善，但仍不能把它当成专业排版工具。&lt;/p&gt;
&lt;p&gt;Midjourney 的新版本对短英文、标题字、海报风格文字支持更好，但复杂长句、中文排版、多行商业文案仍容易出错。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 生态里，SD3.5 等新一代模型引入更强的文本编码器，对长提示词和文字理解有所改善。可是在实际商业设计中，如果要做准确文字，最稳妥的流程仍然是：先用 AI 生成画面，再用 Photoshop、Illustrator、Figma 或 Canva 完成文字排版。&lt;/p&gt;
&lt;h2 id=&#34;视频能力&#34;&gt;视频能力
&lt;/h2&gt;&lt;p&gt;Midjourney 已经内置图片转视频能力，可以从图片生成短视频，并继续延展。它的优势是入口简单，适合把静态图做成社交媒体短片、氛围片或动态封面。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 也有 AnimateDiff、SVD、ComfyUI 视频工作流等方案，但搭建和调试成本更高。它更适合愿意折腾节点、显存、模型和帧一致性的用户。&lt;/p&gt;
&lt;p&gt;如果你只是想把一张图动起来，Midjourney 更省心。&lt;/p&gt;
&lt;p&gt;如果你想把视频生成嵌入自己的自动化流程，Stable Diffusion 生态更自由。&lt;/p&gt;
&lt;h2 id=&#34;硬件与成本&#34;&gt;硬件与成本
&lt;/h2&gt;&lt;p&gt;Midjourney 是云端付费服务。你不需要显卡，手机、平板、轻薄本都能用。成本主要是订阅费用和生成额度。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 可以本地运行，软件和很多模型本身免费，但硬件并不免费。想获得较好的体验，通常需要 NVIDIA 显卡和足够显存。SDXL、SD3.5、Flux、视频工作流、高清放大和批量生成都会吃显存。入门可以用 8GB 显存尝试，但更舒服的体验通常需要 12GB、16GB 或更高。&lt;/p&gt;
&lt;p&gt;成本选择可以这样看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;低频使用：Midjourney 订阅更划算。&lt;/li&gt;
&lt;li&gt;高频批量生产：Stable Diffusion 本地部署长期成本更低。&lt;/li&gt;
&lt;li&gt;没有显卡：优先 Midjourney 或云端 SD 平台。&lt;/li&gt;
&lt;li&gt;已有高性能显卡：Stable Diffusion 更值得折腾。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;商业使用看你是要创意图还是生产线&#34;&gt;商业使用：看你是要“创意图”还是“生产线”
&lt;/h2&gt;&lt;p&gt;Midjourney 很适合前期概念探索。品牌视觉方向、广告氛围、封面图、游戏场景灵感、角色设定草图，都可以用它快速跑出大量方案。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 更适合进入生产环节。比如电商模特换装、产品图批量换背景、室内设计线稿转渲染、角色 LoRA 训练、企业私有素材生成、API 自动出图。它可以被接入脚本、数据库、后台任务和内部工具，成为一条可复用的生产线。&lt;/p&gt;
&lt;p&gt;换句话说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 更像创意部门的灵感加速器。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 更像技术团队可搭建的图像生产系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2026-年怎么选&#34;&gt;2026 年怎么选
&lt;/h2&gt;&lt;p&gt;选择 Midjourney，如果你符合这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你希望输入几句话就得到高质量图片。&lt;/li&gt;
&lt;li&gt;你不想研究显卡、模型、节点和参数。&lt;/li&gt;
&lt;li&gt;你主要做封面图、插画、海报、概念图、灵感图。&lt;/li&gt;
&lt;li&gt;你愿意用订阅费换省心体验。&lt;/li&gt;
&lt;li&gt;你对极端精确控制没有强需求。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选择 Stable Diffusion，如果你符合这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你需要控制人物姿势、产品形态、线稿结构或画面布局。&lt;/li&gt;
&lt;li&gt;你要训练自己的角色、商品、品牌风格或专用模型。&lt;/li&gt;
&lt;li&gt;你要批量生成图片，或者把 AI 绘图接入网站、软件和工作流。&lt;/li&gt;
&lt;li&gt;你重视本地部署、隐私和可控性。&lt;/li&gt;
&lt;li&gt;你愿意花时间学习 ComfyUI、LoRA、ControlNet 等生态工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最现实的组合用法&#34;&gt;最现实的组合用法
&lt;/h2&gt;&lt;p&gt;很多专业用户最后并不是二选一，而是组合使用。&lt;/p&gt;
&lt;p&gt;一种常见流程是：先用 Midjourney 快速探索风格和构图，找到审美方向；再用 Stable Diffusion 做精确控制、角色一致性、产品一致性和批量生产；最后用传统设计软件完成文字、版式和细节修图。&lt;/p&gt;
&lt;p&gt;这比争论谁更强更实用。&lt;/p&gt;
&lt;p&gt;Midjourney 负责快速看到可能性，Stable Diffusion 负责把可能性变成可控流程。前者提高创意速度，后者提高生产确定性。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Midjourney 和 Stable Diffusion 的差异，本质上是“审美自动化”和“工作流可控性”的差异。&lt;/p&gt;
&lt;p&gt;Midjourney 适合大多数希望快速得到漂亮图片的人。它降低了 AI 绘图的门槛，也让非技术用户很快进入创作状态。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 适合需要控制、训练、批量、私有化和自动化的人。它的学习成本更高，但一旦跑通，就能成为真正的图像生产基础设施。&lt;/p&gt;
&lt;p&gt;如果你还没有明确需求，先用 Midjourney。&lt;br&gt;
如果你已经开始抱怨“这张图哪里都好，就是不按我的要求来”，那就该学习 Stable Diffusion 了。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.midjourney.com/hc/en-us/articles/32199405667853-Version&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney Version 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.midjourney.com/hc/en-us/articles/37460773864589-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney Video 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Stability-AI/sd3.5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stability AI Stable Diffusion 3.5 GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Sulphur 2 为什么火了？开源 AI 视频生成、无审查争议和本地部署门槛</title>
        <link>https://knightli.com/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/2026/05/18/sulphur-2-open-ai-video-generation-model/</guid>
        <description>&lt;p&gt;Sulphur 2 最近在 AI 视频生成社区里引发了不少讨论。&lt;/p&gt;
&lt;p&gt;它不是 Sora、Runway、Pika 那样的在线商业产品，也不是从零训练出来的新架构。更准确地说，Sulphur 2 是一个基于 LTX 2.3 微调的开源权重视频生成模型，面向本地生成、可控工作流和更开放的提示词响应。&lt;/p&gt;
&lt;p&gt;真正让它受到关注的，不只是“能生成视频”，而是它把一个老问题重新推到台前：AI 视频模型到底应该由平台统一设定内容边界，还是让本地用户在合法范围内自行承担责任？&lt;/p&gt;
&lt;h2 id=&#34;sulphur-2-和-ltx-23-的关系&#34;&gt;Sulphur 2 和 LTX 2.3 的关系
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的底座是 Lightricks 开源的 LTX 2.3。&lt;/p&gt;
&lt;p&gt;LTX 2.3 本身就是一个较完整的视频生成模型路线，支持文生视频、图生视频、可变帧率、首尾帧控制、音频同步等能力。它的生态也更容易接入 ComfyUI 等本地工作流。&lt;/p&gt;
&lt;p&gt;Sulphur 2 并没有改变这个基础结构，而是在 LTX 2.3 上做了针对性微调。原文提到，开发团队使用了超过 12.5 万个视频样本进行训练，并提供了 BF16、FP8 mixed、Distill LoRA 等不同版本，方便用户按硬件条件选择。&lt;/p&gt;
&lt;p&gt;这意味着，Sulphur 2 更像是 LTX 2.3 生态里的一个衍生模型包，而不是一个完全独立的新平台。&lt;/p&gt;
&lt;p&gt;如果你关心本地部署、显存需求和 ComfyUI 工作流，可以参考站内之前的部署记录：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/12/sulphur-2-ltx-2-3-video-generation/&#34; &gt;Sulphur 2 能在 8G 显存上跑吗？LTX 2.3 视频模型本地部署记录&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;为什么它会被称为无审查&#34;&gt;为什么它会被称为“无审查”
&lt;/h2&gt;&lt;p&gt;Sulphur 2 最有争议的标签，是 uncensored，也就是常被翻译成“无审查”。&lt;/p&gt;
&lt;p&gt;这个词很容易被误解。它不应该被理解成“可以生成任何内容”，更不意味着可以用于违法、侵权、骚扰、伪造身份或制作非自愿影像。更准确的理解是：相比很多商业视频生成平台，Sulphur 2 更少因为某些敏感但合法的题材直接拒绝响应。&lt;/p&gt;
&lt;p&gt;商业平台通常会采取保守策略。为了降低法律、品牌和合规风险，它们可能会屏蔽一批模糊地带的提示词。这样做能降低滥用概率，但也会误伤一些正常创作场景，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;医学教育。&lt;/li&gt;
&lt;li&gt;历史题材。&lt;/li&gt;
&lt;li&gt;新闻再现。&lt;/li&gt;
&lt;li&gt;艺术实验。&lt;/li&gt;
&lt;li&gt;小众风格创作。&lt;/li&gt;
&lt;li&gt;严肃纪录片素材构思。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sulphur 2 的思路是把更多判断权交给本地用户，同时保留对非法内容的底线过滤。这个方向会带来更高创作自由度，也会带来更高责任要求。&lt;/p&gt;
&lt;h2 id=&#34;技术上不只是去掉限制&#34;&gt;技术上不只是“去掉限制”
&lt;/h2&gt;&lt;p&gt;把 Sulphur 2 说成“删掉审查层的 LTX 2.3”并不完整。&lt;/p&gt;
&lt;p&gt;从公开信息看，它提供的是一组围绕 LTX 2.3 的模型权重和配套工具，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BF16 全精度版本，适合显存更充足的硬件。&lt;/li&gt;
&lt;li&gt;FP8 mixed 版本，用更低显存换取更好的可用性。&lt;/li&gt;
&lt;li&gt;Distill LoRA 版本，适合在速度和质量之间取舍。&lt;/li&gt;
&lt;li&gt;ComfyUI 工作流，方便用户进行文生视频和图生视频测试。&lt;/li&gt;
&lt;li&gt;Prompt Enhancer，用于把简短描述扩展成更适合视频生成的提示词。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;视频生成和图片生成不同。视频里不只有主体和风格，还包含镜头运动、人物动作、时间连续性、帧间一致性、景别变化和节奏控制。提示词写得太短，模型经常会补出不稳定细节。&lt;/p&gt;
&lt;p&gt;所以 Prompt Enhancer 的意义在于降低提示词门槛：用户给出一个简单想法，小模型把它扩展成更适合视频模型理解的描述，再交给 Sulphur 2 工作流生成。&lt;/p&gt;
&lt;h2 id=&#34;实际体验更听话但不是万能&#34;&gt;实际体验：更听话，但不是万能
&lt;/h2&gt;&lt;p&gt;从社区反馈看，Sulphur 2 的一个明显特点是更愿意遵循提示词。&lt;/p&gt;
&lt;p&gt;因为限制更少，它不容易在某些合法题材上突然拒绝、降级或绕开用户意图。这对需要精确控制内容的人很有吸引力，尤其是本地创作、实验影像、概念短片和小众题材。&lt;/p&gt;
&lt;p&gt;但它并不是“视频生成终局”。&lt;/p&gt;
&lt;p&gt;当前开源视频模型仍然普遍存在这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人体动作不自然。&lt;/li&gt;
&lt;li&gt;肢体和手部容易变形。&lt;/li&gt;
&lt;li&gt;长镜头一致性不足。&lt;/li&gt;
&lt;li&gt;多主体交互容易混乱。&lt;/li&gt;
&lt;li&gt;复杂场景理解偏字面。&lt;/li&gt;
&lt;li&gt;画面符合提示词，但美感和剪辑感不足。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题不是 Sulphur 2 独有，而是当前 AI 视频生成模型的共性。它能改善一部分提示词响应问题，但不能消除视频生成本身的技术难点。&lt;/p&gt;
&lt;h2 id=&#34;硬件门槛仍然存在&#34;&gt;硬件门槛仍然存在
&lt;/h2&gt;&lt;p&gt;Sulphur 2 被称为开源模型，但开源不等于普通电脑随便跑。&lt;/p&gt;
&lt;p&gt;如果想获得较好效果，仍然需要比较强的显卡。原文提到，FP8 版本降低了显存需求，但想稳定使用，通常仍需要较高显存。BF16 版本对硬件要求更高，更适合高端显卡或云端 GPU。&lt;/p&gt;
&lt;p&gt;这意味着 Sulphur 2 的“大众化”并不是一键网页工具式的大众化，而是开源社区意义上的大众化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;权重可以下载。&lt;/li&gt;
&lt;li&gt;工作流可以修改。&lt;/li&gt;
&lt;li&gt;用户可以本地运行。&lt;/li&gt;
&lt;li&gt;开发者可以二次微调。&lt;/li&gt;
&lt;li&gt;社区可以共享参数和节点配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它降低的是控制权门槛，不一定降低硬件门槛。&lt;/p&gt;
&lt;h2 id=&#34;最大争议开放和安全怎么平衡&#34;&gt;最大争议：开放和安全怎么平衡
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的争议，本质上不是某个模型参数好不好，而是开源 AI 视频生成的治理问题。&lt;/p&gt;
&lt;p&gt;支持者认为，开源模型不应该替用户做过度判断。只要内容合法，用户就应该能在本地环境里探索艺术、教育、研究和创作边界。&lt;/p&gt;
&lt;p&gt;质疑者担心，视频比图片更容易造成现实伤害。更开放的模型可能被用于伪造、骚扰、侵权、误导传播或其他滥用场景。即使开发者保留了非法内容过滤，也很难完全阻止二次修改和恶意使用。&lt;/p&gt;
&lt;p&gt;这两种观点都不能简单忽视。&lt;/p&gt;
&lt;p&gt;开源模型需要自由，也需要责任。比较可行的方向不是把模型彻底封死，也不是完全放任，而是建立更清晰的社区规范、模型卡说明、使用限制、溯源工具和举报机制。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些人关注&#34;&gt;适合哪些人关注
&lt;/h2&gt;&lt;p&gt;Sulphur 2 更适合这些用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经熟悉 ComfyUI 或本地视频生成工作流的人。&lt;/li&gt;
&lt;li&gt;想研究 LTX 2.3 衍生模型效果的开发者。&lt;/li&gt;
&lt;li&gt;需要更高提示词响应度的创作者。&lt;/li&gt;
&lt;li&gt;希望在本地环境里做可控实验的团队。&lt;/li&gt;
&lt;li&gt;想做二次微调、LoRA 或工作流优化的模型玩家。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想快速生成一个可发社交平台的短视频，在线产品可能仍然更省心。Sulphur 2 的价值不在于“点一下就出片”，而在于给愿意折腾的人更多控制权。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的意义，不只是又多了一个 AI 视频生成模型。&lt;/p&gt;
&lt;p&gt;它更像是开源视频生成社区对商业平台保守策略的一次回应：当模型越来越强，内容边界应该由谁来定义？&lt;/p&gt;
&lt;p&gt;从技术角度看，它基于 LTX 2.3，提供多种精度版本、LoRA、ComfyUI 工作流和 Prompt Enhancer，适合本地生成和二次开发。&lt;/p&gt;
&lt;p&gt;从生态角度看，它也提醒我们：视频生成的开放会带来更大创作自由，也会带来更高滥用风险。未来开源 AI 视频模型能否健康发展，取决于技术能力、社区规范和使用者责任能否一起跟上。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/2036113362052965203&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;知乎：开源视频生成新突破：Sulphur 2 让“无审查”AI视频走向大众&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sulphur-2.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulphur 2 官方介绍页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://opencsg.com/models/AIWizards/Sulphur-2-base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulphur 2 OpenCSG 模型页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sulphur2.org/deploy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulphur 2 Base Deploy Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Free AI Image Generator 哪个好用？免费 AI 绘图工具对比指南</title>
        <link>https://knightli.com/2026/05/17/free-ai-image-generator-tools-guide/</link>
        <pubDate>Sun, 17 May 2026 23:10:43 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/free-ai-image-generator-tools-guide/</guid>
        <description>&lt;p&gt;想找一款好用的 &lt;strong&gt;free ai image generator&lt;/strong&gt;，现在已经不是“有没有”的问题，而是“该选哪一种”的问题。&lt;/p&gt;
&lt;p&gt;市面上的免费 AI 绘图工具大致可以分成三类：本地开源工具、网页端免费额度工具，以及大厂提供的高额度或免费入口。它们都能生成图片，但适合的人群、学习成本、版权边界和可控性差别很大。&lt;/p&gt;
&lt;p&gt;需要先说清楚一点：免费不等于永久免费、无限制、可商用。网页端工具的免费额度、排队策略、水印、分辨率限制和商用条款都可能调整；本地开源工具虽然软件免费，但仍然需要显卡、模型文件、时间成本，以及对模型授权的判断。&lt;/p&gt;
&lt;h2 id=&#34;本地开源适合想长期免费和深度控制的人&#34;&gt;本地开源：适合想长期免费和深度控制的人
&lt;/h2&gt;&lt;p&gt;如果你有一张性能不错的 NVIDIA 显卡，比如 RTX 3060、4060 或更高规格，本地部署依然是最接近“无限免费”的方案。它不按张数收费，也不需要把提示词和素材上传到第三方平台，更适合重度玩家、设计师和需要隐私的工作流。&lt;/p&gt;
&lt;h3 id=&#34;stable-diffusion-webui--comfyui&#34;&gt;Stable Diffusion WebUI / ComfyUI
&lt;/h3&gt;&lt;p&gt;Stable Diffusion 生态是目前最成熟的开源 AI 绘图体系之一。常见入口包括 Stable Diffusion WebUI 和 ComfyUI。&lt;/p&gt;
&lt;p&gt;Stable Diffusion WebUI 更像传统软件界面，适合想快速上手文生图、图生图、局部重绘、高清修复的用户。ComfyUI 则偏节点式工作流，学习曲线更高，但可控性非常强，适合复杂流程，比如批量生成、ControlNet、参考图约束、多模型组合和自动化管线。&lt;/p&gt;
&lt;p&gt;它们最大的优势不是“免费”两个字，而是生态：Checkpoint、LoRA、ControlNet、VAE、工作流模板和各种插件都很丰富。你可以生成写实人像、二次元角色、电商产品图、建筑概念图、游戏资产草图，也可以围绕一个固定风格反复打磨。&lt;/p&gt;
&lt;p&gt;代价也很明确：你需要安装环境、管理模型、学习参数，还要注意不同模型的授权条款。对新手来说，它不是最省心的 free ai image generator，但它是最适合长期折腾和深度定制的方案。&lt;/p&gt;
&lt;h3 id=&#34;fooocus&#34;&gt;Fooocus
&lt;/h3&gt;&lt;p&gt;Fooocus 可以理解为更“傻瓜化”的 Stable Diffusion XL 本地工具。它把大量参数藏在后面，用户主要输入提示词和选择风格，就能生成质量不错的图片。&lt;/p&gt;
&lt;p&gt;如果你觉得 ComfyUI 太工程化、Stable Diffusion WebUI 参数太多，Fooocus 是更友好的起点。它适合做风格探索、封面草图、人物概念、产品视觉和社媒配图。缺点是可控性不如完整的 ComfyUI 工作流，但对很多人来说，这反而是优点。&lt;/p&gt;
&lt;h2 id=&#34;网页端免费额度适合不想安装每天轻量使用的人&#34;&gt;网页端免费额度：适合不想安装、每天轻量使用的人
&lt;/h2&gt;&lt;p&gt;如果你没有独立显卡，或者只是偶尔生成几张图，网页端工具更省心。它们通常通过每日积分、免费 Token、排队生成或低速模式提供免费使用。&lt;/p&gt;
&lt;p&gt;这类工具的核心判断标准不是“免费额度有多少”，而是：额度是否稳定、模型质量是否够用、是否支持中文、是否支持图生图和局部编辑、生成结果能否下载高清图，以及是否允许商用。&lt;/p&gt;
&lt;h3 id=&#34;seaart-ai&#34;&gt;SeaArt AI
&lt;/h3&gt;&lt;p&gt;SeaArt AI 是一个功能较完整的 Web 端 AI 绘图平台，集成了大量 Stable Diffusion 风格模型，常见能力包括文生图、图生图、条件控制、高清修复、扩图和模型社区。&lt;/p&gt;
&lt;p&gt;它的优势是上手快、风格多、中文界面友好。你可以用它做动漫角色、写实摄影、科技风海报、产品概念图，也可以借助现成模型快速复刻某类视觉风格。&lt;/p&gt;
&lt;p&gt;需要注意的是，平台积分、每日任务和免费额度会随运营策略变化。把它当作“每天可轻量使用的免费网页工具”更稳妥，不建议把某个具体额度当成长期承诺。&lt;/p&gt;
&lt;h3 id=&#34;leonardoai&#34;&gt;Leonardo.ai
&lt;/h3&gt;&lt;p&gt;Leonardo.ai 更偏创意生产和游戏美术工作流。它的图像质感、光影、概念设计和 3D 风格表现都比较突出，适合游戏原画、角色设定、场景概念、品牌视觉和产品渲染草图。&lt;/p&gt;
&lt;p&gt;它通常提供免费计划或免费积分，但不同地区、账号状态和产品策略下，额度可能变化。对于不想本地部署、又希望获得较高画面质感的人来说，Leonardo.ai 是值得尝试的网页端 free ai image generator。&lt;/p&gt;
&lt;h3 id=&#34;clipdrop&#34;&gt;Clipdrop
&lt;/h3&gt;&lt;p&gt;Clipdrop 来自 Stability AI 生态，除了文生图，还提供去背景、图片放大、清理物体、换光、涂鸦变图片等实用工具。&lt;/p&gt;
&lt;p&gt;它更像一组 AI 图像工具箱，而不只是单纯的绘图入口。对于编辑已有图片、做快速视觉处理、生成素材草图的人来说，Clipdrop 的价值往往不只在“生成一张图”，而在生成之后的后处理能力。&lt;/p&gt;
&lt;p&gt;免费用户通常会遇到次数、排队、水印或分辨率限制，具体以平台当前规则为准。&lt;/p&gt;
&lt;h2 id=&#34;大厂入口适合想省心重视文字理解的人&#34;&gt;大厂入口：适合想省心、重视文字理解的人
&lt;/h2&gt;&lt;p&gt;大厂 AI 图像工具的优势是稳定、易用、提示词理解能力强。尤其当你希望用自然语言描述一个复杂场景，或者想生成包含文字的海报、封面、插画时，它们往往比很多开源模型更省心。&lt;/p&gt;
&lt;h3 id=&#34;microsoft-designer--bing-image-creator&#34;&gt;Microsoft Designer / Bing Image Creator
&lt;/h3&gt;&lt;p&gt;Microsoft Designer 和 Bing Image Creator 接入了 OpenAI 的 DALL-E 系列图像能力。它们的优点是提示词理解好，对复杂场景的还原能力强，也更擅长处理画面中的英文字符、海报标题和设计感构图。&lt;/p&gt;
&lt;p&gt;如果你的需求是“用中文或英文描述一个封面，然后直接拿到一张完成度较高的图”，微软系入口通常非常适合。它适合文章封面、社媒海报、活动图、创意插画和轻量商业视觉草图。&lt;/p&gt;
&lt;p&gt;免费使用策略可能包括加速额度、排队或速度差异。实际额度和限制要以 Microsoft 当前页面为准。&lt;/p&gt;
&lt;h3 id=&#34;adobe-firefly&#34;&gt;Adobe Firefly
&lt;/h3&gt;&lt;p&gt;Adobe Firefly 的定位和普通 AI 绘图站不完全一样。它更强调设计工作流、创意填充、智能扩展、文字效果和与 Adobe 生态的整合。&lt;/p&gt;
&lt;p&gt;如果你已经使用 Photoshop、Illustrator 或 Express，Firefly 的优势会更明显。它适合修图、扩图、替换背景、生成设计素材，以及在已有图片基础上做创意改动。&lt;/p&gt;
&lt;p&gt;Firefly 也经常被拿来讨论“商用安全”，因为 Adobe 强调训练数据来源和授权边界。但具体能否商用、是否需要付费计划、免费积分如何计算，仍然要看 Adobe 当前条款和账号方案。&lt;/p&gt;
&lt;h2 id=&#34;怎么选按用途而不是按名气&#34;&gt;怎么选：按用途而不是按名气
&lt;/h2&gt;&lt;p&gt;如果你想要最省心的封面图、海报图、带文字的创意图，优先试 Microsoft Designer 或 Bing Image Creator。它们对自然语言的理解能力强，出图完成度高，特别适合非专业用户快速拿结果。&lt;/p&gt;
&lt;p&gt;如果你想探索多种风格，比如写实、动漫、游戏原画、产品渲染和科技感视觉，可以试 SeaArt AI 或 Leonardo.ai。它们适合快速试风格，也适合没有本地显卡的人。&lt;/p&gt;
&lt;p&gt;如果你想处理已有图片，而不是只生成新图，可以关注 Adobe Firefly 和 Clipdrop。前者更偏设计生产，后者更像轻量图像工具箱。&lt;/p&gt;
&lt;p&gt;如果你愿意学习，电脑配置也足够，Stable Diffusion WebUI、ComfyUI 和 Fooocus 仍然是最值得长期投入的免费方案。它们的上限更高，成本更低，但需要你承担学习和维护成本。&lt;/p&gt;
&lt;h2 id=&#34;免费-ai-绘图工具的几个坑&#34;&gt;免费 AI 绘图工具的几个坑
&lt;/h2&gt;&lt;p&gt;第一，免费额度会变。今天每天送多少积分，不代表下个月仍然一样。写进工作流之前，最好先确认平台最新规则。&lt;/p&gt;
&lt;p&gt;第二，免费不等于可商用。很多工具允许免费生成，但商用授权、版权归属、训练数据争议、品牌素材使用限制，都需要单独看条款。&lt;/p&gt;
&lt;p&gt;第三，生成质量不只取决于模型。提示词、参考图、分辨率、后期处理、局部重绘和选图能力，都会决定最终效果。&lt;/p&gt;
&lt;p&gt;第四，本地开源也有授权问题。软件开源不代表所有模型都可以商用。下载 Checkpoint、LoRA 或工作流时，要查看作者说明。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;如果你只是想找一个免费的 AI 绘图入口，Microsoft Designer、Bing Image Creator、SeaArt AI、Leonardo.ai、Clipdrop 和 Adobe Firefly 都值得试。&lt;/p&gt;
&lt;p&gt;如果你想长期、稳定、低成本地生成大量图片，本地 Stable Diffusion 生态才是更接近“终极免费”的答案。&lt;/p&gt;
&lt;p&gt;真正好用的 free ai image generator，不一定是免费额度最多的那个，而是最适合你的使用场景、版权要求和学习成本的那个。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Stable Diffusion WebUI: &lt;a class=&#34;link&#34; href=&#34;https://github.com/AUTOMATIC1111/stable-diffusion-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ComfyUI: &lt;a class=&#34;link&#34; href=&#34;https://github.com/comfyanonymous/ComfyUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/comfyanonymous/ComfyUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fooocus: &lt;a class=&#34;link&#34; href=&#34;https://github.com/lllyasviel/Fooocus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/lllyasviel/Fooocus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SeaArt AI: &lt;a class=&#34;link&#34; href=&#34;https://www.seaart.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.seaart.ai/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Leonardo.ai: &lt;a class=&#34;link&#34; href=&#34;https://leonardo.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://leonardo.ai/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clipdrop: &lt;a class=&#34;link&#34; href=&#34;https://clipdrop.co/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://clipdrop.co/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft Designer: &lt;a class=&#34;link&#34; href=&#34;https://designer.microsoft.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://designer.microsoft.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bing Image Creator: &lt;a class=&#34;link&#34; href=&#34;https://www.bing.com/images/create&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.bing.com/images/create&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Adobe Firefly: &lt;a class=&#34;link&#34; href=&#34;https://www.adobe.com/products/firefly.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.adobe.com/products/firefly.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>QuillBot AI Detector 准吗？AI 文本检测原理、适用人群和注意事项</title>
        <link>https://knightli.com/2026/05/17/quillbot-ai-checker-detector-guide/</link>
        <pubDate>Sun, 17 May 2026 23:05:51 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/quillbot-ai-checker-detector-guide/</guid>
        <description>&lt;p&gt;QuillBot AI Checker 通常也被叫作 QuillBot AI Detector，是 QuillBot 推出的一款 AI 内容检测工具。&lt;/p&gt;
&lt;p&gt;它的用途很直接：帮助用户估计一段文本有多大概率是由 AI 生成的。&lt;/p&gt;
&lt;p&gt;需要先说明一点：QuillBot 的文本 AI Detector 主要分析文字，不分析图片、视频或其他富媒体。不过 QuillBot 另有独立的 AI Image Detector，可以用来判断图片更像是人类拍摄 / 绘制，还是由 AI 图像工具生成。两者都属于 QuillBot 的检测工具生态，但不是同一个输入类型。&lt;/p&gt;
&lt;h2 id=&#34;quillbot-ai-checker-能做什么&#34;&gt;QuillBot AI Checker 能做什么
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker 的核心功能是文本 AI 检测。&lt;/p&gt;
&lt;p&gt;用户可以把文字粘贴到检测框中，也可以按账号权限上传文件。工具会根据文本特征进行分析，并给出一个 AI 生成概率或风险提示。&lt;/p&gt;
&lt;p&gt;它关注的通常不是某一个单词，而是整体语言模式，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;句子结构是否过于均匀。&lt;/li&gt;
&lt;li&gt;用词是否高度可预测。&lt;/li&gt;
&lt;li&gt;段落推进是否像模板。&lt;/li&gt;
&lt;li&gt;重复表达是否偏多。&lt;/li&gt;
&lt;li&gt;语气是否过于平滑、缺少自然波动。&lt;/li&gt;
&lt;li&gt;行文逻辑是否像大模型生成的通用答案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最终结果通常会以百分比或风险等级展示，帮助用户判断这段内容是否可能被认为是 AI 生成。&lt;/p&gt;
&lt;h2 id=&#34;逐句高亮有什么用&#34;&gt;逐句高亮有什么用
&lt;/h2&gt;&lt;p&gt;这类 AI 检测工具不只给整体分数，也常会对文本做局部标注。&lt;/p&gt;
&lt;p&gt;例如，一段文章里有些句子可能被标为更像 AI，有些句子更像人工写作，有些句子则可能像经过 AI 改写或润色。&lt;/p&gt;
&lt;p&gt;这种高亮的意义，不是让用户机械地追求 0% AI，而是帮助定位问题。&lt;/p&gt;
&lt;p&gt;如果某一段被标得很高，通常可以回头检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否太像说明书。&lt;/li&gt;
&lt;li&gt;是否全是泛泛而谈。&lt;/li&gt;
&lt;li&gt;是否缺少具体例子。&lt;/li&gt;
&lt;li&gt;是否每句话长度和节奏都差不多。&lt;/li&gt;
&lt;li&gt;是否没有真实经历、判断过程或细节。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对写作者来说，这比只看一个总分更有用。因为真正应该改的不是“让检测器看不出来”，而是让内容更具体、更有判断、更符合真实写作目的。&lt;/p&gt;
&lt;h2 id=&#34;quillbot-还有-ai-image-detector&#34;&gt;QuillBot 还有 AI Image Detector
&lt;/h2&gt;&lt;p&gt;除了文本检测，QuillBot 也提供独立的 AI Image Detector。&lt;/p&gt;
&lt;p&gt;这个工具面向图片，尝试判断图片是人类拍摄 / 绘制，还是由 AI 图像模型生成。常见讨论会把它和 Midjourney、DALL·E、Stable Diffusion 等生成工具放在一起。&lt;/p&gt;
&lt;p&gt;但要注意，文本 AI Detector 和 AI Image Detector 是两个不同工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文本检测器分析文字。&lt;/li&gt;
&lt;li&gt;图片检测器分析图片。&lt;/li&gt;
&lt;li&gt;两者都只能给出概率判断，不等于司法鉴定或绝对结论。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你要检查一篇文章和配图，需要分别使用对应工具，而不是把图片能力理解成文本检测器的一部分。&lt;/p&gt;
&lt;h2 id=&#34;典型使用场景&#34;&gt;典型使用场景
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker 最常见的使用场景有三类。&lt;/p&gt;
&lt;p&gt;第一类是学生自查。&lt;/p&gt;
&lt;p&gt;很多学校会使用 Turnitin 或其他学术诚信工具检查论文、报告和作业。学生在提交前用 AI Detector 做自查，主要是想了解自己的文章是否可能被误判为 AI 内容。&lt;/p&gt;
&lt;p&gt;但这里要特别谨慎。AI 检测器不是最终裁判，不能保证学校系统会给出相同结果，也不能保证“低 AI 分数”就一定安全。更稳妥的做法，是保留写作过程、资料来源、草稿版本和修改记录。&lt;/p&gt;
&lt;p&gt;第二类是教师和教育工作者检查作业。&lt;/p&gt;
&lt;p&gt;教师可以把 AI Detector 当成线索工具，用来发现明显异常的文本。但不建议只凭一个检测分数判断学生作弊。更合理的方式是结合课堂表现、写作记录、口头问答、引用来源和版本历史一起判断。&lt;/p&gt;
&lt;p&gt;第三类是内容创作者、编辑和网站运营者审核外部稿件。&lt;/p&gt;
&lt;p&gt;如果网站收大量投稿、SEO 文章或外包内容，AI Detector 可以帮助初筛低质量、模板化、批量生成的稿件。尤其是内容站和媒体编辑，需要避免网站里充斥大量没有经验、没有观点、没有事实核查的 AI 拼装内容。&lt;/p&gt;
&lt;p&gt;但同样要记住，检测器只能辅助判断。真正重要的是内容是否原创、准确、有用、可信，而不是单纯追求某个检测分数。&lt;/p&gt;
&lt;h2 id=&#34;和-paraphraserai-humanizer-的关系&#34;&gt;和 Paraphraser、AI Humanizer 的关系
&lt;/h2&gt;&lt;p&gt;QuillBot 最出名的功能之一，是 Paraphraser，也就是智能改写工具。它还提供 AI Humanizer，用来把 AI 生成文本改得更接近人类写作。&lt;/p&gt;
&lt;p&gt;这几个工具经常被放在一起使用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户先用 ChatGPT、Claude 或其他模型写初稿。&lt;/li&gt;
&lt;li&gt;再用 QuillBot Paraphraser 改写句子。&lt;/li&gt;
&lt;li&gt;或用 AI Humanizer 调整语气。&lt;/li&gt;
&lt;li&gt;最后放进 AI Checker 里看检测结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种流程很常见，但也容易走偏。&lt;/p&gt;
&lt;p&gt;如果目标只是“把 AI 概率洗低”，很容易变成机械洗稿。文本可能变得更绕、更不自然，甚至破坏原本信息准确性。&lt;/p&gt;
&lt;p&gt;更好的使用方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Paraphraser 改善表达清晰度。&lt;/li&gt;
&lt;li&gt;用 Humanizer 调整语气和节奏。&lt;/li&gt;
&lt;li&gt;用 AI Checker 找出过于模板化的段落。&lt;/li&gt;
&lt;li&gt;最后由人重新核对事实、逻辑和表达目的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，AI Checker 不应该只服务于“绕过检测”，而应该服务于提升内容质量。&lt;/p&gt;
&lt;h2 id=&#34;ai-检测器的误判风险&#34;&gt;AI 检测器的误判风险
&lt;/h2&gt;&lt;p&gt;所有 AI 内容检测器都存在误判。&lt;/p&gt;
&lt;p&gt;原因很简单：它们不是在读取“作者是谁”，而是在估计文本模式。只要一段人类写作足够规整、标准化、模板化，就可能被误判为 AI。反过来，一段 AI 生成文本经过充分编辑、加入具体细节和个人判断后，也可能被判得更像人写。&lt;/p&gt;
&lt;p&gt;容易被误判的内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学术摘要。&lt;/li&gt;
&lt;li&gt;公文和通知。&lt;/li&gt;
&lt;li&gt;产品说明。&lt;/li&gt;
&lt;li&gt;标准化报告。&lt;/li&gt;
&lt;li&gt;非母语写作者的规整英文。&lt;/li&gt;
&lt;li&gt;被多次润色后的简洁文本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，无论学生、教师还是编辑，都不应该把 AI 检测分数当成唯一证据。&lt;/p&gt;
&lt;p&gt;更稳妥的判断方式是看证据链：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否有草稿和修改记录。&lt;/li&gt;
&lt;li&gt;是否能解释写作思路。&lt;/li&gt;
&lt;li&gt;是否引用了真实来源。&lt;/li&gt;
&lt;li&gt;是否包含具体经验、观察和判断。&lt;/li&gt;
&lt;li&gt;是否存在事实错误、虚构引用或明显模板化结构。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;如果你只是想自查文章，可以把 QuillBot AI Checker 当成一个辅助提醒工具。&lt;/p&gt;
&lt;p&gt;看到高分时，不要急着“洗文本”，先看内容本身：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;观点是否太空。&lt;/li&gt;
&lt;li&gt;例子是否太少。&lt;/li&gt;
&lt;li&gt;事实是否没有来源。&lt;/li&gt;
&lt;li&gt;段落是否重复。&lt;/li&gt;
&lt;li&gt;句子节奏是否过于一致。&lt;/li&gt;
&lt;li&gt;是否缺少真实上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是教师或编辑，不要只截图一个分数就做结论。AI 检测结果更适合作为进一步核查的起点，而不是最终判决。&lt;/p&gt;
&lt;p&gt;如果你在做网站内容审核，可以把 AI Detector 和人工编辑、抄袭检测、事实核查、引用检查一起使用。它能帮助发现低质量批量内容，但不能替代编辑判断。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker 是一个方便的 AI 文本检测工具，适合用来初步判断内容是否像 AI 生成。它可以给出整体概率，也能帮助定位更像 AI 的句子或段落。&lt;/p&gt;
&lt;p&gt;但它不是绝对裁判。&lt;/p&gt;
&lt;p&gt;AI 检测器的价值，不在于告诉你“这篇文章一定是 AI 写的”，而在于提醒你哪些地方可能太模板化、太平滑、太缺少真实细节。&lt;/p&gt;
&lt;p&gt;真正可靠的内容审核，仍然需要结合写作过程、事实来源、人工判断和上下文证据。把 QuillBot AI Checker 当成辅助工具，它会有用；把它当成最终结论，就很容易误伤正常写作者。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://quillbot.com/ai-content-detector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QuillBot AI Detector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://quillbot.com/ai-image-detector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QuillBot AI Image Detector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.quillbot.com/hc/en-us/articles/35295733817111-Is-QuillBot-s-AI-Detector-free-or-premium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QuillBot Help Center: Is QuillBot’s AI Detector free or premium?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Midjourney 2026 年 5 月更新：会话模式、AI 辅助开发与 SREF 整理</title>
        <link>https://knightli.com/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/2026/05/17/midjourney-2026-05-office-hours-conversational-mode/</guid>
        <description>&lt;p&gt;Midjourney 2026 年 5 月 14 日的 Office Hours 信息里，最值得关注的不是单个模型参数，而是产品形态正在继续从“输入提示词生成图片”，向“更自然地组织创作工作流”移动。&lt;/p&gt;
&lt;p&gt;这次内容来自一篇日文整理稿，记录了 Midjourney 团队近期问答中的多个方向：会话模式升级、AI 辅助开发、网站改版、SREF 和标签整理、Omni-reference、多角色一致性，以及团队内部如何使用 Midjourney。&lt;/p&gt;
&lt;p&gt;如果只看一句话总结：Midjourney 正在让图片生成更像一个可对话、可整理、可持续迭代的创作系统。&lt;/p&gt;
&lt;h2 id=&#34;会话模式变得更重要&#34;&gt;会话模式变得更重要
&lt;/h2&gt;&lt;p&gt;这次更新里最直接的变化，是 Conversational Mode，也就是会话模式。&lt;/p&gt;
&lt;p&gt;过去使用 Midjourney，很多操作仍然依赖参数和固定写法。你需要记住宽高比、图片参考、风格参考、模型参数等规则，再把它们写进 prompt 或界面设置里。&lt;/p&gt;
&lt;p&gt;新的会话模式方向，是让用户用更自然的语言描述这些设置。&lt;/p&gt;
&lt;p&gt;例如，用户可以通过语音或文字指定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认参数。&lt;/li&gt;
&lt;li&gt;画面宽高比，例如 &lt;code&gt;16:9&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;图片参考。&lt;/li&gt;
&lt;li&gt;风格参考，也就是 &lt;code&gt;--sref&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;V7 里的 Omni-reference。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明 Midjourney 并不只是想提升生成质量，也在降低参数操作成本。&lt;/p&gt;
&lt;p&gt;对普通用户来说，最大的变化是不用一直记命令。对重度用户来说，会话模式如果足够稳定，未来可能会变成“用自然语言调整生成设置”的入口。&lt;/p&gt;
&lt;h2 id=&#34;ai-辅助开发正在改变-midjourney-团队的迭代速度&#34;&gt;AI 辅助开发正在改变 Midjourney 团队的迭代速度
&lt;/h2&gt;&lt;p&gt;另一个很有意思的点，是 Midjourney 团队自己也在大规模使用 AI 辅助开发。&lt;/p&gt;
&lt;p&gt;原文提到，团队现在能更快修复小 bug、界面摩擦和工作流问题。甚至有用户通话中发现产品 bug，团队借助 AI 辅助实时修复，经过 review 后快速部署的例子。&lt;/p&gt;
&lt;p&gt;这件事比“AI 帮工程师写代码”更值得细看。&lt;/p&gt;
&lt;p&gt;它说明 AI 开发工具已经开始影响 AI 产品自己的迭代方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户反馈可以更快进入修复流程。&lt;/li&gt;
&lt;li&gt;小型体验问题更容易被处理。&lt;/li&gt;
&lt;li&gt;工程师把更多精力放在架构、审查、设计决策和测试上。&lt;/li&gt;
&lt;li&gt;产品团队可以更频繁地清理边缘问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Midjourney 这种产品有大量创作路径、参数组合、移动端体验、搜索和整理流程。很多问题不是“核心模型不会生成”，而是某个入口不顺、某个操作多一步、某个边缘状态不好用。&lt;/p&gt;
&lt;p&gt;AI 辅助开发最适合加速这类小而多的改进。&lt;/p&gt;
&lt;h2 id=&#34;网站改版重点是工作流而不是砍功能&#34;&gt;网站改版重点是工作流，而不是砍功能
&lt;/h2&gt;&lt;p&gt;Office Hours 里还提到，Midjourney 网站正在进行较大规模的改版。&lt;/p&gt;
&lt;p&gt;目标不是删掉复杂功能，而是让创作流程更直观，让新用户更容易上手，也让工具和功能组织得更清楚。&lt;/p&gt;
&lt;p&gt;这点很关键。&lt;/p&gt;
&lt;p&gt;Midjourney 的问题不是功能太少，而是功能越来越多之后，入口、收藏、整理、引用、探索和复用都变得复杂。对于轻度用户来说，难点是“我该从哪里开始”；对于重度用户来说，难点是“我如何管理大量风格、参考和实验结果”。&lt;/p&gt;
&lt;p&gt;可能的发布策略包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新旧界面并行提供。&lt;/li&gt;
&lt;li&gt;先做 alpha 测试。&lt;/li&gt;
&lt;li&gt;分阶段迁移，避免影响重度用户。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类策略说明团队知道 Midjourney 不是普通图片生成玩具。很多用户已经把它放进真实创作流程里，界面改变不能随便打断已有习惯。&lt;/p&gt;
&lt;h2 id=&#34;sref风格和标签整理仍是痛点&#34;&gt;SREF、风格和标签整理仍是痛点
&lt;/h2&gt;&lt;p&gt;SREF 和风格整理，是这次问答里很值得关注的部分。&lt;/p&gt;
&lt;p&gt;用户希望有更好的整理系统，尤其是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;随机 SREF。&lt;/li&gt;
&lt;li&gt;风格参考。&lt;/li&gt;
&lt;li&gt;保存下来的美学方向。&lt;/li&gt;
&lt;li&gt;标签和颜色标签。&lt;/li&gt;
&lt;li&gt;更强的筛选、归类和复用能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但团队也提出了一个问题：如果当前文件夹系统已经支持一张图进入多个文件夹、无限文件夹数量、筛选和排序，那么标签到底提供了哪些文件夹不能解决的能力？&lt;/p&gt;
&lt;p&gt;这个问题很现实。&lt;/p&gt;
&lt;p&gt;很多产品加标签，是因为用户说想要标签。但标签系统一旦做不好，就会变成另一套混乱的分类。文件夹、标签、收藏、搜索、筛选、项目、风格库之间如果边界不清，用户反而更难管理。&lt;/p&gt;
&lt;p&gt;所以 Midjourney 团队现在更想收集具体工作流案例：用户到底在哪个场景下需要标签？文件夹为什么不够？是为了快速组合风格，还是为了跨项目复用，还是为了按主题、色调、摄影风格、角色关系做筛选？&lt;/p&gt;
&lt;p&gt;对 Midjourney 来说，整理系统可能和生成模型一样重要。因为一旦用户开始长期创作，真正难的不是生成一张图，而是管理上千张图、数百个风格方向和反复试验的结果。&lt;/p&gt;
&lt;h2 id=&#34;omni-reference-指向更复杂的角色控制&#34;&gt;Omni-reference 指向更复杂的角色控制
&lt;/h2&gt;&lt;p&gt;原文还提到，未来的 Omni-reference / subject reference 系统，可能支持同时处理多个角色参考，并更好地分离不同主体。&lt;/p&gt;
&lt;p&gt;这正好对应 AI 图像生成的长期痛点：角色一致性和多角色关系。&lt;/p&gt;
&lt;p&gt;单个角色保持一致已经不容易，多角色更难。常见问题包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A 角色的特征跑到 B 角色身上。&lt;/li&gt;
&lt;li&gt;多个人物之间身份混淆。&lt;/li&gt;
&lt;li&gt;服装、发型、面部特征在不同图里不稳定。&lt;/li&gt;
&lt;li&gt;参考图对整体风格影响过强，而不是只控制主体。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Omni-reference 能更好地处理主体分离，那么 Midjourney 会更适合漫画、分镜、广告视觉、角色设定、游戏概念图和连续叙事。&lt;/p&gt;
&lt;p&gt;这也是 V7 之后值得持续关注的方向。&lt;/p&gt;
&lt;h2 id=&#34;midjourney-正在重新理解-prompt&#34;&gt;Midjourney 正在重新理解 prompt
&lt;/h2&gt;&lt;p&gt;这次整理稿里还有一个很有意思的观点：语言是想象力的压缩层。&lt;/p&gt;
&lt;p&gt;这句话很适合解释 Midjourney 的产品方向。&lt;/p&gt;
&lt;p&gt;很多用户以为 AI 绘图的核心是写更长、更精确的 prompt。但实际创作里，图像参考、风格参考、moodboard、SREF、变体、重新生成和后期修图，往往比一段超长文本更有用。&lt;/p&gt;
&lt;p&gt;Midjourney 团队成员 Duncan 的工作流也体现了这一点：他会把 Midjourney 当成 sketchbook，用 moodboard、SREF、少量文字、高 &lt;code&gt;--r&lt;/code&gt; 再生成、强弱变体、Photoshop 修图和外部放大流程组合起来。&lt;/p&gt;
&lt;p&gt;这说明 Midjourney 的成熟用户并不是只靠“神奇提示词”工作。&lt;/p&gt;
&lt;p&gt;更真实的流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用少量语言给方向。&lt;/li&gt;
&lt;li&gt;用图片参考提供视觉语境。&lt;/li&gt;
&lt;li&gt;用 SREF 收敛风格。&lt;/li&gt;
&lt;li&gt;用大量变体探索空间。&lt;/li&gt;
&lt;li&gt;用人工审美选择结果。&lt;/li&gt;
&lt;li&gt;用外部工具做后期处理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Prompt 仍然重要，但它不是全部。&lt;/p&gt;
&lt;h2 id=&#34;对用户来说意味着什么&#34;&gt;对用户来说意味着什么
&lt;/h2&gt;&lt;p&gt;如果你只是偶尔生成图片，这次更新最直接的影响是会话模式更好用。未来你可能可以更自然地说出想要的比例、参考图、风格和参数，而不是记一堆命令。&lt;/p&gt;
&lt;p&gt;如果你是重度用户，更值得关注的是三个方向。&lt;/p&gt;
&lt;p&gt;第一，整理系统。&lt;/p&gt;
&lt;p&gt;SREF、风格、文件夹、收藏和标签如何演进，会直接影响长期创作效率。&lt;/p&gt;
&lt;p&gt;第二，网站改版。&lt;/p&gt;
&lt;p&gt;新界面如果能把探索、整理、复用和导出串起来，Midjourney 会更像专业创作工具，而不是单一生成器。&lt;/p&gt;
&lt;p&gt;第三，角色和主体参考。&lt;/p&gt;
&lt;p&gt;Omni-reference 如果能稳定处理多角色和主体分离，会让 Midjourney 更适合连续项目，而不是只适合单张图。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Midjourney 2026 年 5 月这次 Office Hours 的重点，不是某一个炫酷参数，而是产品正在继续向“创作系统”进化。&lt;/p&gt;
&lt;p&gt;会话模式降低输入门槛，AI 辅助开发提高迭代速度，网站改版试图重组工作流，SREF 和标签讨论指向长期资产管理，Omni-reference 则关系到角色一致性和复杂主体控制。&lt;/p&gt;
&lt;p&gt;对 AI 图像生成工具来说，模型能力当然重要。但当生成质量达到一定水平后，真正决定用户是否长期留下来的，往往是工作流、整理能力、可控性和迭代速度。&lt;/p&gt;
&lt;p&gt;Midjourney 正在把这些部分补起来。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://note.com/akisuke0925/n/nc9e099d9c77f&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney 最新ニュース（2026年5月14 日）｜アキスケ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 作者 Peter Steinberger 如何看 AI 软件开发？从 OpenClaw 到闭环编程</title>
        <link>https://knightli.com/2026/05/17/peter-steinberger-ai-software-development/</link>
        <pubDate>Sun, 17 May 2026 20:02:26 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/peter-steinberger-ai-software-development/</guid>
        <description>&lt;p&gt;Peter Steinberger 的经历很适合用来观察 AI 软件开发正在发生什么变化。&lt;/p&gt;
&lt;p&gt;他不是“突然被 AI 带火的新人”。在 OpenClaw 之前，他已经是 PSPDFKit 的创始人，长期做 PDF 渲染、文档处理和开发者工具。这类产品很难靠概念包装取胜，必须面对性能、兼容性、API 设计、企业客户和长期维护。&lt;/p&gt;
&lt;p&gt;所以，当 Steinberger 后来用 AI 工具做出 OpenClaw，并围绕 AI Agent、个人自动化和 AI 编程发表观点时，重点不只是“一个人写了很多代码”。更值得看的，是他把多年软件工程经验和新一代 AI coding agent 结合后，对开发流程的重新理解。&lt;/p&gt;
&lt;h2 id=&#34;ai-编程不是魔法按钮&#34;&gt;AI 编程不是魔法按钮
&lt;/h2&gt;&lt;p&gt;很多人讨论 AI 编程时，会把它简化成两个极端。&lt;/p&gt;
&lt;p&gt;一种说法是：AI 已经能写代码，程序员快没用了。&lt;/p&gt;
&lt;p&gt;另一种说法是：AI 写的代码不可靠，真正工程还是得靠人手写。&lt;/p&gt;
&lt;p&gt;Steinberger 的经验更接近第三种：AI 让软件开发的操作单位变了，但没有取消工程判断。&lt;/p&gt;
&lt;p&gt;过去，开发者主要以“编辑代码”为中心工作。需求拆解、架构判断、写实现、跑测试、修 bug，都围绕人工修改代码展开。&lt;/p&gt;
&lt;p&gt;AI coding agent 介入后，开发者越来越像在管理一个执行系统：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;说明目标。&lt;/li&gt;
&lt;li&gt;提供上下文。&lt;/li&gt;
&lt;li&gt;约束边界。&lt;/li&gt;
&lt;li&gt;让 agent 修改代码。&lt;/li&gt;
&lt;li&gt;运行测试和检查。&lt;/li&gt;
&lt;li&gt;根据结果继续迭代。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是简单把键盘交给模型，而是把人从“每一行都亲手敲”转到“定义方向、设计反馈、判断结果”。&lt;/p&gt;
&lt;h2 id=&#34;为什么他不喜欢把这叫-vibe-coding&#34;&gt;为什么他不喜欢把这叫 vibe coding
&lt;/h2&gt;&lt;p&gt;围绕 Steinberger 的讨论里，一个高频词是 &lt;code&gt;vibe coding&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这个词原本用来形容一种新开发方式：开发者用自然语言描述想法，让 AI 生成大量代码，再通过运行结果和反馈不断调整。&lt;/p&gt;
&lt;p&gt;但 Steinberger 对这个词并不完全买账。公开报道中提到，他认为 &lt;code&gt;vibe coding&lt;/code&gt; 容易变成一种贬义表达，暗示 AI 辅助开发只是“凭感觉乱生成”，忽视了背后的技能、判断和经验。&lt;/p&gt;
&lt;p&gt;这个批评有道理。&lt;/p&gt;
&lt;p&gt;真正有效的 AI 编程并不是随便输入一句话，然后相信模型输出。它需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能把模糊需求拆成可执行任务。&lt;/li&gt;
&lt;li&gt;能识别模型是否误解了目标。&lt;/li&gt;
&lt;li&gt;能设计测试和验收标准。&lt;/li&gt;
&lt;li&gt;能判断代码结构是否会影响长期维护。&lt;/li&gt;
&lt;li&gt;能知道什么时候应该停止生成、转向人工审查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，AI 降低了写代码的摩擦，但没有降低理解系统的责任。&lt;/p&gt;
&lt;h2 id=&#34;闭环才是关键&#34;&gt;闭环才是关键
&lt;/h2&gt;&lt;p&gt;Steinberger 相关访谈和文章里，经常被总结出的一个核心思路是“闭环”。&lt;/p&gt;
&lt;p&gt;只让 AI 生成代码，是开环。&lt;/p&gt;
&lt;p&gt;让 AI 生成代码、运行代码、读取错误、修复问题、再运行测试，才更接近闭环。&lt;/p&gt;
&lt;p&gt;这个差别非常重要。&lt;/p&gt;
&lt;p&gt;开环生成很容易制造表面可用的软件。页面能打开，功能看起来有，代码也不少，但一旦进入真实场景，就会暴露状态管理、权限、异常处理、边界条件和部署问题。&lt;/p&gt;
&lt;p&gt;闭环开发要求输出必须被反馈约束。最简单的闭环是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;写清楚目标。&lt;/li&gt;
&lt;li&gt;让 AI 修改代码。&lt;/li&gt;
&lt;li&gt;自动运行测试、类型检查、lint 或构建。&lt;/li&gt;
&lt;li&gt;把错误反馈给 AI。&lt;/li&gt;
&lt;li&gt;重复直到通过。&lt;/li&gt;
&lt;li&gt;最后由人审查关键路径。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这也是 AI 软件开发真正能提高效率的地方。不是因为模型一次就写对，而是因为它可以快速参与“生成、验证、修复”的循环。&lt;/p&gt;
&lt;h2 id=&#34;经验越多越能用好-ai&#34;&gt;经验越多，越能用好 AI
&lt;/h2&gt;&lt;p&gt;AI 编程最容易产生的误解之一，是“经验不重要了”。&lt;/p&gt;
&lt;p&gt;Steinberger 的案例反而说明，经验会变得更重要，只是作用方式变了。&lt;/p&gt;
&lt;p&gt;一个有经验的工程师更容易判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些任务适合交给 agent。&lt;/li&gt;
&lt;li&gt;哪些模块需要先写测试。&lt;/li&gt;
&lt;li&gt;哪些改动风险太高，不该让 AI 大范围重构。&lt;/li&gt;
&lt;li&gt;哪些生成代码只是看起来合理。&lt;/li&gt;
&lt;li&gt;哪些问题应该通过架构调整解决，而不是继续补丁式修复。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 可以生成大量候选方案，但候选方案越多，越需要判断力。没有经验的人可能会被“能跑起来”迷惑，有经验的人更会追问：能不能维护？能不能扩展？会不会破坏安全边界？出了问题能不能定位？&lt;/p&gt;
&lt;p&gt;这也是为什么 AI coding agent 并没有让软件工程变成纯聊天。它更像把一部分执行劳动外包出去，同时放大了规划、审查、验证和取舍的重要性。&lt;/p&gt;
&lt;h2 id=&#34;openclaw-的意义不只是项目本身&#34;&gt;OpenClaw 的意义不只是项目本身
&lt;/h2&gt;&lt;p&gt;OpenClaw 被关注，不只是因为它是一个开源 AI agent，也不只是因为它的增长速度快。&lt;/p&gt;
&lt;p&gt;它更像一个信号：开发者开始希望 AI 不只回答问题，而是能接入真实工具，完成真实动作。&lt;/p&gt;
&lt;p&gt;传统聊天机器人停留在对话框里。它可以解释代码、写草稿、给建议，但很多时候还需要人复制、粘贴、打开软件、执行命令。&lt;/p&gt;
&lt;p&gt;Agent 的方向是把模型接到工具上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件系统。&lt;/li&gt;
&lt;li&gt;浏览器。&lt;/li&gt;
&lt;li&gt;终端。&lt;/li&gt;
&lt;li&gt;邮件。&lt;/li&gt;
&lt;li&gt;日历。&lt;/li&gt;
&lt;li&gt;第三方服务。&lt;/li&gt;
&lt;li&gt;项目仓库。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦模型能使用这些工具，软件开发的边界就会变化。AI 不再只是“代码补全”，而会参与项目阅读、任务拆解、文件修改、测试执行、PR 整理和工作流自动化。&lt;/p&gt;
&lt;p&gt;这也是 Steinberger 加入 OpenAI 后被关注的原因。他代表的不是单个开发者故事，而是一种产品方向：个人 agent 会从演示玩具走向日常工作层。&lt;/p&gt;
&lt;h2 id=&#34;这对普通开发者意味着什么&#34;&gt;这对普通开发者意味着什么
&lt;/h2&gt;&lt;p&gt;对普通开发者来说，Steinberger 的经验不一定能直接复制。&lt;/p&gt;
&lt;p&gt;不是每个人都能同时管理多个 agent，不是每个项目都适合高强度 AI 生成，也不是每个团队都能接受“先生成再快速迭代”的节奏。&lt;/p&gt;
&lt;p&gt;但有几件事值得学。&lt;/p&gt;
&lt;p&gt;第一，先把任务写清楚。&lt;/p&gt;
&lt;p&gt;AI 对含糊目标很敏感。你说“优化一下”，它可能改风格、改结构、加功能、删逻辑。你说“把登录失败时的错误提示从英文改成中文，不改变认证流程”，结果通常更可控。&lt;/p&gt;
&lt;p&gt;第二，把验证命令固定下来。&lt;/p&gt;
&lt;p&gt;如果一个项目没有测试、没有构建命令、没有 lint，AI 就很难形成闭环。哪怕只是最基础的 &lt;code&gt;npm test&lt;/code&gt;、&lt;code&gt;go test ./...&lt;/code&gt;、&lt;code&gt;pytest&lt;/code&gt;、&lt;code&gt;hugo&lt;/code&gt;，也比完全靠肉眼检查强。&lt;/p&gt;
&lt;p&gt;第三，控制改动范围。&lt;/p&gt;
&lt;p&gt;一次只让 AI 处理一个模块、一个 bug、一个页面，通常比让它“重构整个项目”更可靠。&lt;/p&gt;
&lt;p&gt;第四，保留人工审查。&lt;/p&gt;
&lt;p&gt;尤其是认证、支付、权限、数据删除、部署脚本、数据库迁移、安全配置这些地方，不要因为代码是 AI 生成的就降低审查标准。&lt;/p&gt;
&lt;p&gt;第五，复盘 prompt 和失败模式。&lt;/p&gt;
&lt;p&gt;如果 AI 经常误解某类任务，就把约束写进项目规则、agent instructions 或技能文件。AI 编程能力不是只来自模型，也来自你给它搭建的工作环境。&lt;/p&gt;
&lt;h2 id=&#34;ai-软件开发会走向哪里&#34;&gt;AI 软件开发会走向哪里
&lt;/h2&gt;&lt;p&gt;Steinberger 的故事说明，AI 软件开发正在从“辅助写代码”走向“组织软件生产流程”。&lt;/p&gt;
&lt;p&gt;早期 AI 编程工具的价值主要是补全函数、解释报错、生成模板。现在的变化是，agent 可以跨文件工作，可以调用工具，可以运行检查，可以根据反馈继续修复。&lt;/p&gt;
&lt;p&gt;这会带来几个趋势：&lt;/p&gt;
&lt;p&gt;第一，个人开发者的产能上限会提高。&lt;/p&gt;
&lt;p&gt;一个人可以同时推进更多原型、脚本、内部工具和小型产品。但产能提高不等于质量自动提高。越快生成，越需要验证。&lt;/p&gt;
&lt;p&gt;第二，项目结构会更重要。&lt;/p&gt;
&lt;p&gt;代码越清晰，测试越明确，文档越完整，AI 越容易正确修改。混乱项目对人难，对 AI 也难。&lt;/p&gt;
&lt;p&gt;第三，软件工程师会更像工作流设计者。&lt;/p&gt;
&lt;p&gt;未来重要的不只是会不会写某门语言，而是能否把需求、上下文、工具、测试、部署和权限组织成一个可控循环。&lt;/p&gt;
&lt;p&gt;第四，安全边界会更敏感。&lt;/p&gt;
&lt;p&gt;Agent 能做事，就可能做错事。它能读文件、执行命令、访问服务，也意味着权限、审计和回滚会成为 AI 开发环境的基础设施。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Peter Steinberger 的 AI 软件开发观，最有价值的地方不是“AI 生成了多少代码”，而是他展示了一种新的开发姿势。&lt;/p&gt;
&lt;p&gt;人不再只是在编辑器里逐行输入，而是在设计目标、管理 agent、构造反馈回路、审查结果和调整系统。代码仍然重要，但代码不再是唯一的劳动中心。&lt;/p&gt;
&lt;p&gt;如果说传统软件开发强调“把代码写对”，AI 软件开发会更强调“让系统持续产出可验证的正确结果”。&lt;/p&gt;
&lt;p&gt;这不是降低工程门槛那么简单。它是在改变工程能力的形态：从手工实现，转向任务分解、上下文管理、工具编排、自动验证和最终判断。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/02/25/openclaw-creators-advice-to-ai-builders-is-to-be-more-playful-and-allow-yourself-time-to-improve/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch：OpenClaw creator’s advice to AI builders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://builtin.com/articles/openclaw-founder-to-openai-analysis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Built In：What Is OpenAI Getting From the OpenClaw Deal?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://podwise.ai/dashboard/episodes/7026858&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Pragmatic Engineer：The creator of Clawd: I ship code I don&amp;rsquo;t read&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.teamday.ai/ai/steinberger-openclaw-builders-unscripted-openai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TeamDay：Peter Steinberger: Building OpenClaw as a Solo Dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Scientific Agent Skills：把科研工作流交给 AI Agent 的技能库</title>
        <link>https://knightli.com/2026/05/17/scientific-agent-skills/</link>
        <pubDate>Sun, 17 May 2026 17:52:04 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/scientific-agent-skills/</guid>
        <description>&lt;p&gt;&lt;code&gt;K-Dense-AI/scientific-agent-skills&lt;/code&gt; 是一个面向科研和研究工作的 Agent Skills 集合。&lt;/p&gt;
&lt;p&gt;它的定位不是再做一个聊天机器人，而是把科研里经常要查文档、连数据库、写分析脚本、处理文件、生成图表和整理报告的流程，拆成一组可以被 AI Agent 发现和调用的技能。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至 2026-05-17 写作时，GitHub API 显示这个仓库约有 23.4k stars、2.5k forks，许可证为 MIT，最近一次推送时间是 2026-05-11。README 里写的是 135 个 ready-to-use scientific and research skills，不过仓库 &lt;code&gt;scientific-skills&lt;/code&gt; 目录当前通过 GitHub API 能看到 137 个条目。这个差异可能来自统计口径、近期新增目录或 README 尚未同步更新。&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills 适合已经在用 Codex、Claude Code、Cursor、Gemini CLI 或其他支持 Agent Skills 标准工具的人。&lt;/p&gt;
&lt;p&gt;它的价值主要在三点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把科研工具链的使用方式写成 &lt;code&gt;SKILL.md&lt;/code&gt;，让 agent 不必每次从零猜库怎么用。&lt;/li&gt;
&lt;li&gt;把常见科学数据库、Python 包、文档处理、科研写作和可视化流程整理到同一个技能集合里。&lt;/li&gt;
&lt;li&gt;让 AI Agent 更像一个能执行科研工作流的助手，而不只是回答概念问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也不是“装上就自动做科研”的魔法按钮。技能可以让 agent 更容易找到正确工具、生成更靠谱的代码和流程，但数据质量、实验设计、统计假设、临床或科研结论仍然需要人来判断。&lt;/p&gt;
&lt;h2 id=&#34;它包含什么&#34;&gt;它包含什么
&lt;/h2&gt;&lt;p&gt;README 把这个项目描述为一个覆盖科研、科学计算、工程、分析、金融和写作任务的技能集合。大类包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生物信息学与基因组学&lt;/li&gt;
&lt;li&gt;化学信息学与药物发现&lt;/li&gt;
&lt;li&gt;蛋白质组学与质谱分析&lt;/li&gt;
&lt;li&gt;临床研究与精准医学&lt;/li&gt;
&lt;li&gt;医疗 AI 与临床机器学习&lt;/li&gt;
&lt;li&gt;医学影像与数字病理&lt;/li&gt;
&lt;li&gt;机器学习与 AI&lt;/li&gt;
&lt;li&gt;材料科学与化学&lt;/li&gt;
&lt;li&gt;物理与天文学&lt;/li&gt;
&lt;li&gt;工程仿真与优化&lt;/li&gt;
&lt;li&gt;数据分析与可视化&lt;/li&gt;
&lt;li&gt;地理空间科学与遥感&lt;/li&gt;
&lt;li&gt;实验室自动化&lt;/li&gt;
&lt;li&gt;科研写作、文献综述、同行评审和引用管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类技能的重点不是限制 agent 只能使用某些库。README 也明确说，agent 仍然可以自己写 Python、调用任意可用 API 或包；这些技能的作用是提前提供整理过的说明、示例、最佳实践和集成路径。&lt;/p&gt;
&lt;p&gt;换句话说，它更像“科研工具说明书 + 工作流模板 + agent 调用约定”的集合。&lt;/p&gt;
&lt;h2 id=&#34;数据库和-python-包覆盖&#34;&gt;数据库和 Python 包覆盖
&lt;/h2&gt;&lt;p&gt;项目里最吸引科研用户的部分，是数据库和 Python 科学生态的覆盖面。&lt;/p&gt;
&lt;p&gt;README 提到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过 &lt;code&gt;database-lookup&lt;/code&gt; 统一访问 78 个公共数据库。&lt;/li&gt;
&lt;li&gt;覆盖 PubChem、ChEMBL、UniProt、COSMIC、ClinicalTrials.gov、FRED、USPTO 等数据库。&lt;/li&gt;
&lt;li&gt;额外包含 DepMap、Imaging Data Commons、PrimeKG、U.S. Treasury Fiscal Data、Hugging Science 等专门数据访问技能。&lt;/li&gt;
&lt;li&gt;提供 70+ 个优化过的 Python Package Skills。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从目录看，技能名里能看到很多熟悉工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rdkit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scanpy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;biopython&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bioservices&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pydeseq2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scvelo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scvi-tools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pymatgen&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qiskit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pennylane&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openmm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mdanalysis&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scikit-learn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;statsmodels&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;matplotlib&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;seaborn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;networkx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sympy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytorch-lightning&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;transformers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;timesfm-forecasting&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对普通开发者来说，这些库本身不稀奇。真正有用的是：agent 在处理具体任务时，可以读到与该库相关的使用约束、代码样例、常见流程和注意事项。这样比只靠模型参数里的旧记忆更稳。&lt;/p&gt;
&lt;h2 id=&#34;典型场景&#34;&gt;典型场景
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills 更适合多步骤科研任务，而不是单轮问答。&lt;/p&gt;
&lt;p&gt;比如药物发现方向，可以让 agent 查询 ChEMBL 里的 EGFR 抑制剂，用 RDKit 分析结构活性关系，再用 DiffDock 做虚拟筛选，最后搜索文献并生成报告。&lt;/p&gt;
&lt;p&gt;单细胞分析方向，可以把 10X 数据加载到 Scanpy，做质控、整合、细胞类型识别、差异表达和通路富集。&lt;/p&gt;
&lt;p&gt;多组学方向，可以把 RNA-seq、质谱、代谢物、蛋白互作、临床试验和统计建模串起来。&lt;/p&gt;
&lt;p&gt;这些任务如果完全靠手写 prompt，很容易变成“agent 知道大概方向，但每一步都要你提醒”。技能库的意义，就是把这类高频路径沉淀下来，让 agent 在执行时少走弯路。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;README 推荐的标准安装方式是使用 Agent Skills 工具：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add K-Dense-AI/scientific-agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 GitHub CLI，并且版本为 &lt;code&gt;v2.90.0+&lt;/code&gt;，也可以通过 &lt;code&gt;gh skill&lt;/code&gt; 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装某个具体技能：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills scanpy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;指定目标 agent：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent claude-code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent gemini
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要保证可复现，可以 pin 到 release tag 或 commit SHA：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --pin v1.0.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --pin abc123def
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这点对科研环境很重要。科研分析里最怕“上周能跑、这周结果变了但不知道为什么”。如果技能参与了分析流程，最好把技能版本、依赖版本和数据版本一起记录。&lt;/p&gt;
&lt;h2 id=&#34;运行环境要求&#34;&gt;运行环境要求
&lt;/h2&gt;&lt;p&gt;README 给出的基本要求包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.11+，推荐 3.12+&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv&lt;/code&gt;，用于安装 Python 依赖&lt;/li&gt;
&lt;li&gt;支持 Agent Skills 标准的客户端&lt;/li&gt;
&lt;li&gt;macOS、Linux 或 Windows with WSL2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里要注意 Windows 用户的实际体验。很多科学计算库在原生 Windows 下并不是不能用，但依赖链、编译工具、二进制包和路径问题更容易出意外。README 明确写 Windows with WSL2，也说明项目更偏向类 Unix 科研计算环境。&lt;/p&gt;
&lt;h2 id=&#34;和普通-prompt-集合有什么区别&#34;&gt;和普通 prompt 集合有什么区别
&lt;/h2&gt;&lt;p&gt;普通 prompt 集合通常只告诉模型“你应该怎么回答”。Scientific Agent Skills 更进一步：它把工具、库、数据库和流程写成 agent 可发现的技能。&lt;/p&gt;
&lt;p&gt;这有几个实际差异：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技能可以包含结构化说明和示例代码。&lt;/li&gt;
&lt;li&gt;技能可以围绕某个库或数据库长期维护。&lt;/li&gt;
&lt;li&gt;agent 可以按任务选择相关技能，而不是一次性把所有规则塞进系统提示。&lt;/li&gt;
&lt;li&gt;团队可以只安装自己需要的技能，减少上下文噪音。&lt;/li&gt;
&lt;li&gt;技能可以跟随仓库版本管理、审计和更新。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对复杂科研任务来说，这种方式比“复制一大段万能提示词”更容易维护。模型会变，数据库会变，Python 包也会变。把这些变化沉淀在技能里，比散落在个人 prompt 文档里更可控。&lt;/p&gt;
&lt;h2 id=&#34;安全和可信边界&#34;&gt;安全和可信边界
&lt;/h2&gt;&lt;p&gt;这个项目的 README 把安全提醒写得很直接：Skills 可以执行代码，也会影响 coding agent 的行为。&lt;/p&gt;
&lt;p&gt;这不是小事。科研技能可能会：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装 Python 依赖&lt;/li&gt;
&lt;li&gt;访问网络数据库&lt;/li&gt;
&lt;li&gt;读写本地文件&lt;/li&gt;
&lt;li&gt;运行分析脚本&lt;/li&gt;
&lt;li&gt;处理敏感实验数据或临床数据&lt;/li&gt;
&lt;li&gt;生成后续会被人引用的报告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此不要无脑安装全部技能。更稳的做法是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只安装当前任务需要的技能。&lt;/li&gt;
&lt;li&gt;安装前阅读对应 &lt;code&gt;SKILL.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;检查技能会调用哪些包、API、文件和外部服务。&lt;/li&gt;
&lt;li&gt;对社区贡献的技能额外谨慎。&lt;/li&gt;
&lt;li&gt;在隔离环境里运行涉及数据处理和代码执行的任务。&lt;/li&gt;
&lt;li&gt;对科研结论、临床建议和统计结果保留人工复核。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;README 还提到项目会使用 Cisco AI Defense Skill Scanner 做扫描，并建议用户也可以本地扫描第三方技能。扫描不能替代人工审查，但至少说明维护者意识到技能供应链风险。&lt;/p&gt;
&lt;h2 id=&#34;适合谁&#34;&gt;适合谁
&lt;/h2&gt;&lt;p&gt;这个项目更适合这些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经在日常使用 AI coding agent。&lt;/li&gt;
&lt;li&gt;经常处理科研数据、论文、图表和报告。&lt;/li&gt;
&lt;li&gt;需要在 Python 科学生态里频繁切换工具。&lt;/li&gt;
&lt;li&gt;想让 agent 执行多步骤分析，而不是只回答概念。&lt;/li&gt;
&lt;li&gt;团队希望把科研流程沉淀成可复用技能。&lt;/li&gt;
&lt;li&gt;想研究 Agent Skills 标准如何落地到专业领域。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;暂时不太适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只是想让 AI 帮忙解释一篇论文。&lt;/li&gt;
&lt;li&gt;没有本地 Python 环境或不愿意处理依赖。&lt;/li&gt;
&lt;li&gt;对数据隐私、网络访问和代码执行边界还没有控制方案。&lt;/li&gt;
&lt;li&gt;需要严格合规的临床或生产决策系统，但没有人工审查和验证流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶尔做一次分析，直接让 agent 写脚本可能更轻。如果你经常重复类似科研流程，技能库的价值会更明显。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;不要一开始就安装整个仓库，然后把所有任务都交给 agent。&lt;/p&gt;
&lt;p&gt;更实际的路径是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先选一个低风险任务，比如文献整理、图表生成或公开数据探索。&lt;/li&gt;
&lt;li&gt;只安装相关技能，比如 &lt;code&gt;literature-review&lt;/code&gt;、&lt;code&gt;scientific-writing&lt;/code&gt;、&lt;code&gt;scanpy&lt;/code&gt; 或 &lt;code&gt;rdkit&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;让 agent 先说明计划，再执行代码。&lt;/li&gt;
&lt;li&gt;保留输入数据、脚本、环境和技能版本。&lt;/li&gt;
&lt;li&gt;对输出结果做人工复查。&lt;/li&gt;
&lt;li&gt;如果流程稳定，再把它写入团队自己的 SOP 或技能。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;科研 agent 的关键不是“自动化一切”，而是把重复、繁琐、容易查错文档的部分交给工具，把判断、假设和结论留给人。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills 的意义，在于把 Agent Skills 从通用编程场景推进到科研场景。&lt;/p&gt;
&lt;p&gt;科研工作天然是多工具、多数据库、多文件、多步骤的流程。单靠聊天式 prompt，很难稳定覆盖这些细节。这个项目把常见科学库、数据源和研究流程整理成技能，让 AI Agent 更容易进入真实科研工作流。&lt;/p&gt;
&lt;p&gt;但它越强，也越需要边界感。技能会影响 agent 行为，也可能运行代码、联网和处理文件。安装前要看清楚技能内容，运行时要隔离环境，科研结论更不能跳过人工验证。&lt;/p&gt;
&lt;p&gt;如果你已经在用 Codex、Claude Code、Cursor 或 Gemini CLI 做科研和数据分析，Scientific Agent Skills 值得认真看一眼。哪怕不直接全量安装，它的技能拆分方式也很适合作为团队整理科研 AI 工作流的参考。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;README 原文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://agentskills.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent Skills 标准&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/k-dense-byok&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense BYOK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.blog/changelog/2026-04-16-manage-agent-skills-with-github-cli/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub CLI gh skill changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ai-goofish-monitor：用 AI 自动盯闲鱼商品的开源监控系统</title>
        <link>https://knightli.com/2026/05/17/ai-goofish-monitor/</link>
        <pubDate>Sun, 17 May 2026 17:24:03 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/ai-goofish-monitor/</guid>
        <description>&lt;p&gt;ai-goofish-monitor 是 Usagi-org 开源的闲鱼商品监控系统。&lt;/p&gt;
&lt;p&gt;它的目标很明确：把闲鱼搜索、筛选、商品分析、结果记录和通知推送自动化，帮助用户从大量二手商品里更快找到符合条件的目标。项目基于 Playwright 做页面自动化，再接入支持图片输入的 AI 模型，对商品信息做进一步判断。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 更像一个“闲鱼采购情报面板”，而不是简单的关键词提醒脚本。&lt;/p&gt;
&lt;p&gt;它有几个明显特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有完整 Web 管理界面，可以管理任务、账号、AI 标准、日志和结果。&lt;/li&gt;
&lt;li&gt;支持多任务并发，每个任务可以配置关键词、价格、筛选条件和 AI Prompt。&lt;/li&gt;
&lt;li&gt;使用 Playwright 抓取闲鱼页面，适合处理需要登录态和页面交互的场景。&lt;/li&gt;
&lt;li&gt;使用 AI 判断商品是否符合需求，不只依赖关键词匹配。&lt;/li&gt;
&lt;li&gt;支持 ntfy.sh、企业微信、Bark、Telegram、Webhook 等通知渠道。&lt;/li&gt;
&lt;li&gt;支持 Cron 定时任务、多账号管理、代理轮换、失败重试和 Docker 部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它适合经常在闲鱼找特定商品的人，比如二手数码、摄影器材、显卡、硬盘、游戏机、乐器、家电和收藏品。但它也不是“自动捡漏神器”。闲鱼搜索结果本身会变化，账号登录态可能失效，平台风控也会影响自动化稳定性。使用时更应该把它当成辅助筛选工具，而不是完全替代人工判断。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;在闲鱼上找二手商品，经常有几个痛点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;商品太多，手动翻很累。&lt;/li&gt;
&lt;li&gt;标题和描述不规范，关键词很容易漏掉或误判。&lt;/li&gt;
&lt;li&gt;好价格出现时间短，发现太晚就没了。&lt;/li&gt;
&lt;li&gt;同一个商品可能有多个地区、价格、成色和卖家差异。&lt;/li&gt;
&lt;li&gt;低价商品里混着配件、损坏品、翻新货和诱导性标题。&lt;/li&gt;
&lt;li&gt;想持续盯多个关键词时，手动搜索很难坚持。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普通关键词提醒只能解决一部分问题。比如你搜索“ThinkPad X1”，可能会混入配件、坏屏、空盒、拆机件；你搜索“索尼 A7C”，又可能遇到镜头套装、租赁信息、标题党和价格异常。&lt;/p&gt;
&lt;p&gt;ai-goofish-monitor 的思路是：先用自动化把候选商品抓出来，再交给 AI 按你的需求做二次判断，最后把值得关注的结果推送给你。&lt;/p&gt;
&lt;h2 id=&#34;核心功能&#34;&gt;核心功能
&lt;/h2&gt;&lt;p&gt;项目 README 里列出的核心能力比较完整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web 可视化管理：任务管理、账号管理、AI 标准编辑、运行日志、结果浏览。&lt;/li&gt;
&lt;li&gt;AI 驱动：支持自然语言创建任务，并用多模态模型分析商品。&lt;/li&gt;
&lt;li&gt;多任务并发：不同任务可以独立配置关键词、价格、筛选条件和 AI Prompt。&lt;/li&gt;
&lt;li&gt;高级筛选：支持包邮、新发布时间范围、省 / 市 / 区三级区域筛选。&lt;/li&gt;
&lt;li&gt;即时通知：支持 ntfy.sh、企业微信、Bark、Telegram、Webhook 等多渠道。&lt;/li&gt;
&lt;li&gt;定时调度：支持 Cron 配置周期性任务。&lt;/li&gt;
&lt;li&gt;账号与代理轮换：多账号管理、任务绑定账号、代理池轮换与失败重试。&lt;/li&gt;
&lt;li&gt;Docker 部署：支持容器化部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力组合起来，覆盖了从“创建监控任务”到“收到命中提醒”的完整链路。&lt;/p&gt;
&lt;h2 id=&#34;工作流是什么样&#34;&gt;工作流是什么样
&lt;/h2&gt;&lt;p&gt;一个典型流程大概是这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;部署服务并打开 Web UI。&lt;/li&gt;
&lt;li&gt;导入闲鱼账号登录态。&lt;/li&gt;
&lt;li&gt;创建监控任务。&lt;/li&gt;
&lt;li&gt;设置关键词、价格区间、地区、新发布范围等筛选条件。&lt;/li&gt;
&lt;li&gt;编写或让 AI 生成判断标准。&lt;/li&gt;
&lt;li&gt;任务按实时或定时方式运行。&lt;/li&gt;
&lt;li&gt;Playwright 打开页面并抓取商品信息。&lt;/li&gt;
&lt;li&gt;AI 根据标题、描述、图片和 Prompt 判断是否符合需求。&lt;/li&gt;
&lt;li&gt;命中结果写入 SQLite。&lt;/li&gt;
&lt;li&gt;系统通过配置的通知渠道推送结果。&lt;/li&gt;
&lt;li&gt;用户在 Web UI 里查看结果、日志和价格历史。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个流程里，AI 的价值主要在第 8 步。它可以理解“我想要成色好、价格合理、不要配件、不要维修机、最好同城自提”这类自然语言条件，比单纯关键词规则灵活。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;项目推荐使用 Docker 部署：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs -f app
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认 Web UI 地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方镜像地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果镜像访问慢，README 里也给了加速镜像示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull ghcr.nju.edu.cn/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker tag ghcr.nju.edu.cn/usagi-org/ai-goofish:latest ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker 镜像已内置 Chromium，不需要宿主机额外安装浏览器。默认持久化目录包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data/&lt;/code&gt;：SQLite 主存储，保存任务、结果和价格历史。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state/&lt;/code&gt;：登录状态 cookie 文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompts/&lt;/code&gt;：任务提示词。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs/&lt;/code&gt;：运行日志。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;images/&lt;/code&gt;：商品图片和任务临时图片目录。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果修改了 &lt;code&gt;.env&lt;/code&gt; 里的 &lt;code&gt;SERVER_PORT&lt;/code&gt;，也要同步调整 &lt;code&gt;docker-compose.yaml&lt;/code&gt; 的端口映射。&lt;/p&gt;
&lt;h2 id=&#34;最少配置&#34;&gt;最少配置
&lt;/h2&gt;&lt;p&gt;项目的最少配置主要围绕 AI 模型和 Web UI 登录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_openai_compatible_base_url
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_MODEL_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_multimodal_model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_USERNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;change_me
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中前三项是 AI 模型接入必填项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;：模型 API Key。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_BASE_URL&lt;/code&gt;：OpenAI 兼容接口地址。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_MODEL_NAME&lt;/code&gt;：支持图片输入的模型名称。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WEB_USERNAME&lt;/code&gt; 和 &lt;code&gt;WEB_PASSWORD&lt;/code&gt; 用于 Web UI 登录。README 提到默认账号密码是 &lt;code&gt;admin/admin123&lt;/code&gt;，生产环境必须修改。&lt;/p&gt;
&lt;h2 id=&#34;第一次使用&#34;&gt;第一次使用
&lt;/h2&gt;&lt;p&gt;第一次使用时，流程大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;登录 Web UI。&lt;/li&gt;
&lt;li&gt;进入“闲鱼账号管理”。&lt;/li&gt;
&lt;li&gt;使用项目提供的 Chrome 扩展导出闲鱼登录态 JSON。&lt;/li&gt;
&lt;li&gt;把登录态粘贴到系统里。&lt;/li&gt;
&lt;li&gt;登录态文件会保存到 &lt;code&gt;state/&lt;/code&gt;，例如 &lt;code&gt;state/acc_1.json&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;回到“任务管理”，创建任务并绑定账号。&lt;/li&gt;
&lt;li&gt;运行任务并查看结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里最关键的是登录态。由于闲鱼并不是开放给第三方随意抓取的标准 API，项目需要用浏览器登录状态来模拟正常页面访问。登录态失效、风控、验证码、账号异常都会影响任务运行。&lt;/p&gt;
&lt;h2 id=&#34;ai-任务和关键词任务&#34;&gt;AI 任务和关键词任务
&lt;/h2&gt;&lt;p&gt;项目支持两类任务创建方式。&lt;/p&gt;
&lt;p&gt;第一类是 &lt;code&gt;AI判断&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你可以填写“详细需求”，提交后系统会异步生成分析标准。适合需求比较复杂的场景，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只要主机本体，不要配件。&lt;/li&gt;
&lt;li&gt;价格明显低于市场价才提醒。&lt;/li&gt;
&lt;li&gt;成色要好，描述里不能有进水、维修、暗病。&lt;/li&gt;
&lt;li&gt;优先同城，能面交更好。&lt;/li&gt;
&lt;li&gt;图片里要能看到序列号、包装或关键配件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二类是 &lt;code&gt;关键词判断&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它更接近传统规则监控：根据关键词、价格、地区等条件直接创建任务，不经过 AI 生成流程。适合规则简单、误报可以接受的场景。&lt;/p&gt;
&lt;p&gt;实际使用中可以混合使用：关键词负责初筛，AI 负责减少误报。&lt;/p&gt;
&lt;h2 id=&#34;web-ui-能做什么&#34;&gt;Web UI 能做什么
&lt;/h2&gt;&lt;p&gt;Web UI 是这个项目区别于普通脚本的重要部分。&lt;/p&gt;
&lt;p&gt;任务管理页可以配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 创建任务。&lt;/li&gt;
&lt;li&gt;关键词规则。&lt;/li&gt;
&lt;li&gt;价格范围。&lt;/li&gt;
&lt;li&gt;新发布范围。&lt;/li&gt;
&lt;li&gt;区域筛选。&lt;/li&gt;
&lt;li&gt;账号绑定。&lt;/li&gt;
&lt;li&gt;定时规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;账号管理页可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;导入闲鱼账号登录态。&lt;/li&gt;
&lt;li&gt;更新登录态。&lt;/li&gt;
&lt;li&gt;删除账号。&lt;/li&gt;
&lt;li&gt;为任务指定账号。&lt;/li&gt;
&lt;li&gt;让系统自动选择账号。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结果和日志页可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看命中商品。&lt;/li&gt;
&lt;li&gt;导出结果。&lt;/li&gt;
&lt;li&gt;查询历史记录。&lt;/li&gt;
&lt;li&gt;查看任务运行过程。&lt;/li&gt;
&lt;li&gt;排查登录态失效、风控和 AI 调用问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;系统设置页可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看系统状态。&lt;/li&gt;
&lt;li&gt;编辑 Prompt。&lt;/li&gt;
&lt;li&gt;调整代理和轮换配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于长期监控来说，Web UI 很关键。否则任务一多，配置、日志、结果和通知都会变得难维护。&lt;/p&gt;
&lt;h2 id=&#34;数据存储&#34;&gt;数据存储
&lt;/h2&gt;&lt;p&gt;项目当前在线主存储使用 SQLite，默认路径是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;data/app.sqlite3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker 默认把 SQLite 主库挂载到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./data:/app/data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;应用启动时会自动建库建表，并尝试从旧的 &lt;code&gt;config.json&lt;/code&gt;、&lt;code&gt;jsonl/&lt;/code&gt;、&lt;code&gt;price_history/&lt;/code&gt; 导入一次历史数据。&lt;/p&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;state/&lt;/code&gt;、&lt;code&gt;prompts/&lt;/code&gt;、&lt;code&gt;logs/&lt;/code&gt;、&lt;code&gt;images/&lt;/code&gt; 仍然是文件系统目录，不在 SQLite 中。商品图片会临时保存到类似下面的目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;images/task_images_&amp;lt;task_name&amp;gt;/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;任务结束后默认会清理。&lt;/p&gt;
&lt;p&gt;这种结构比较适合个人或小团队部署：SQLite 足够轻，迁移也简单；文件目录保留登录态、图片和日志，排查问题更直观。&lt;/p&gt;
&lt;h2 id=&#34;通知渠道&#34;&gt;通知渠道
&lt;/h2&gt;&lt;p&gt;项目支持多种通知渠道，常见配置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NTFY_TOPIC_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOTIFY_URL&lt;/code&gt; / &lt;code&gt;GOTIFY_TOKEN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BARK_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WX_BOT_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt; / &lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt; / &lt;code&gt;TELEGRAM_API_BASE_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBHOOK_*&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通知是这类工具的核心体验。监控系统如果只把结果写进后台，用户仍然需要反复打开页面查看；有推送之后，命中商品才能在第一时间触达。&lt;/p&gt;
&lt;p&gt;更实用的配置方式是按商品价值分层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通关键词命中只写入后台。&lt;/li&gt;
&lt;li&gt;AI 高置信度结果推送到手机。&lt;/li&gt;
&lt;li&gt;高价值商品推送到企业微信或 Telegram。&lt;/li&gt;
&lt;li&gt;调试阶段开启更多日志，稳定后减少噪音。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;开发者运行&#34;&gt;开发者运行
&lt;/h2&gt;&lt;p&gt;如果不使用 Docker，本地开发需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;Node.js + npm&lt;/li&gt;
&lt;li&gt;Playwright CLI&lt;/li&gt;
&lt;li&gt;Chromium 或 Chrome / Edge 浏览器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;基础命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一键启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x start.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./start.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;start.sh&lt;/code&gt; 会检查 Playwright CLI 和浏览器条件，自动安装依赖、构建前端、复制构建产物并启动后端。&lt;/p&gt;
&lt;p&gt;手动启动后端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m src.app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uvicorn src.app:app --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt; --reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前端开发：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;测试和构建：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PYTEST_DISABLE_PLUGIN_AUTOLOAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; pytest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;适合哪些人&#34;&gt;适合哪些人
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 适合这些用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常在闲鱼蹲特定型号商品的人。&lt;/li&gt;
&lt;li&gt;想监控二手数码、摄影器材、游戏设备、硬件配件的人。&lt;/li&gt;
&lt;li&gt;想把“关键词搜索 + 人工筛选”自动化的人。&lt;/li&gt;
&lt;li&gt;有 OpenAI 兼容模型 API，并愿意为 AI 判断支付调用成本的人。&lt;/li&gt;
&lt;li&gt;熟悉 Docker 或基本命令行部署的人。&lt;/li&gt;
&lt;li&gt;需要把命中结果推送到手机、企业微信或 Telegram 的用户。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不太适合这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全不懂部署，只想要一个即开即用 App。&lt;/li&gt;
&lt;li&gt;不愿意处理登录态、验证码和账号风控。&lt;/li&gt;
&lt;li&gt;需要官方授权、强合规的数据接口。&lt;/li&gt;
&lt;li&gt;想大规模高频抓取平台数据。&lt;/li&gt;
&lt;li&gt;希望 AI 自动判断交易风险并替你下单。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用风险和边界&#34;&gt;使用风险和边界
&lt;/h2&gt;&lt;p&gt;这类工具一定要注意边界。&lt;/p&gt;
&lt;p&gt;第一，遵守平台规则。&lt;/p&gt;
&lt;p&gt;闲鱼有自己的服务条款、风控策略和账号安全机制。自动化访问可能触发限制。不要高频抓取，不要绕过风控，不要把它用于骚扰卖家、批量采集隐私或破坏平台秩序。&lt;/p&gt;
&lt;p&gt;第二，保护账号登录态。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;state/&lt;/code&gt; 里保存的是登录状态 cookie 文件。它本质上等同于账号访问凭据，不能提交到 Git 仓库，也不要放到不可信服务器上。服务器如果暴露在公网，Web UI 必须修改默认密码，并建议放在 VPN、反向代理鉴权或内网之后。&lt;/p&gt;
&lt;p&gt;第三，AI 判断不是事实保证。&lt;/p&gt;
&lt;p&gt;AI 可以帮你减少误报，但不能保证商品真实、卖家可信、价格合理或交易安全。最终仍然要人工看商品详情、卖家评价、聊天记录、发货方式和支付流程。&lt;/p&gt;
&lt;p&gt;第四，注意成本。&lt;/p&gt;
&lt;p&gt;如果每个候选商品都交给多模态模型分析，调用成本可能很快上升。建议先用关键词、价格和区域做强筛选，再把少量候选交给 AI。&lt;/p&gt;
&lt;p&gt;第五，注意隐私。&lt;/p&gt;
&lt;p&gt;商品截图、聊天相关内容、账号状态和通知内容都可能包含敏感信息。通知 Webhook、日志目录和数据库都要妥善保护。&lt;/p&gt;
&lt;h2 id=&#34;和普通脚本的差别&#34;&gt;和普通脚本的差别
&lt;/h2&gt;&lt;p&gt;普通闲鱼监控脚本通常只做三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;搜索关键词。&lt;/li&gt;
&lt;li&gt;判断价格。&lt;/li&gt;
&lt;li&gt;发通知。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ai-goofish-monitor 更进一步：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Web UI 管理任务和账号。&lt;/li&gt;
&lt;li&gt;用 AI Prompt 表达复杂购买标准。&lt;/li&gt;
&lt;li&gt;用多模态模型看商品图和描述。&lt;/li&gt;
&lt;li&gt;用 SQLite 保存结果和价格历史。&lt;/li&gt;
&lt;li&gt;用日志页排查任务失败原因。&lt;/li&gt;
&lt;li&gt;用代理轮换和多账号机制提高稳定性。&lt;/li&gt;
&lt;li&gt;用定时任务支持长期运行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也正因为功能更多，它的部署和维护成本更高。对普通用户来说，Docker 部署是最省事的方式；对开发者来说，Web UI、FastAPI、Playwright、SQLite 这套结构也比较容易二次开发。&lt;/p&gt;
&lt;h2 id=&#34;可以怎么用&#34;&gt;可以怎么用
&lt;/h2&gt;&lt;p&gt;比较实用的使用方式是从小任务开始。&lt;/p&gt;
&lt;p&gt;比如你想找一台二手相机，可以先创建一个任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关键词：&lt;code&gt;A7C&lt;/code&gt;、&lt;code&gt;索尼 A7C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;价格范围：按市场价设置上限&lt;/li&gt;
&lt;li&gt;区域：优先本省或同城&lt;/li&gt;
&lt;li&gt;新发布范围：最近一天或最近几小时&lt;/li&gt;
&lt;li&gt;AI 标准：排除单镜头、排除维修机、排除明显配件、关注快门数和成色&lt;/li&gt;
&lt;li&gt;通知：只推送 AI 判断通过的结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;稳定运行后，再逐步增加任务数量。不要一开始就上几十个关键词、多个账号和高频 Cron。先看登录态稳定性、误报率、AI 成本和通知噪音，再调参数。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 把闲鱼监控从“关键词脚本”推进到了“可管理的 AI 监控系统”。它用 Playwright 处理页面自动化，用 AI 处理复杂判断，用 Web UI 管理任务和结果，用 SQLite 保存数据，再通过多种通知渠道把结果推送出来。&lt;/p&gt;
&lt;p&gt;它最适合个人或小团队做特定商品监控，尤其是二手数码、硬件、摄影器材这类价格波动大、发布时间敏感、描述噪音多的品类。&lt;/p&gt;
&lt;p&gt;但它也需要谨慎使用：登录态要保护，默认密码要改，抓取频率要克制，AI 结果要人工复核，平台规则和隐私边界不能忽视。把它当成辅助筛选工具，它会很有价值；把它当成全自动交易系统，就容易高估它的能力。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/README_EN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目英文 README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/DISCLAIMER.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目免责声明&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenKB：把文档编译成可持续更新的 LLM 知识库</title>
        <link>https://knightli.com/2026/05/17/openkb-llm-knowledge-base/</link>
        <pubDate>Sun, 17 May 2026 17:15:08 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/openkb-llm-knowledge-base/</guid>
        <description>&lt;p&gt;OpenKB 是 VectifyAI 开源的 LLM 知识库工具。&lt;/p&gt;
&lt;p&gt;它不是传统意义上“把文档切块、向量化、查询时再拼上下文”的 RAG 系统，而是把原始文档先编译成一个结构化 wiki：有文档摘要、有概念页、有交叉引用，也有后续查询和 lint 检查。换句话说，它更像是一个会持续整理资料的知识库 CLI。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/VectifyAI/OpenKB&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;OpenKB 值得关注的地方有三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它把知识库输出成普通 Markdown 文件，而不是锁在某个专用数据库里。&lt;/li&gt;
&lt;li&gt;它用 PageIndex 处理长 PDF，主打无向量数据库的长文档检索。&lt;/li&gt;
&lt;li&gt;它强调“知识编译”，让 LLM 生成摘要、概念页和交叉链接，而不是每次提问都从零检索。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这让 OpenKB 更适合长期积累资料的场景，比如论文阅读、项目文档、公司内部资料、技术规范、产品调研和个人知识库。&lt;/p&gt;
&lt;p&gt;它也不是万能替代品。如果你需要高并发线上问答、复杂权限管理、Web 管理后台、企业级审计和大规模多租户能力，OpenKB 现在更像一个开发者工具和知识库原型，而不是完整企业知识平台。&lt;/p&gt;
&lt;h2 id=&#34;openkb-是什么&#34;&gt;OpenKB 是什么
&lt;/h2&gt;&lt;p&gt;OpenKB 的全名是 Open Knowledge Base。&lt;/p&gt;
&lt;p&gt;它以 CLI 形式工作，把放进知识库的原始文档转换、整理、总结，并生成一套 wiki 文件。官方 README 里的描述很直接：OpenKB 会用 LLM 把原始文档编译成结构化、互相链接的 wiki 风格知识库，并通过 PageIndex 支持无向量数据库的长文档检索。&lt;/p&gt;
&lt;p&gt;支持的输入格式包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PDF&lt;/li&gt;
&lt;li&gt;Word&lt;/li&gt;
&lt;li&gt;Markdown&lt;/li&gt;
&lt;li&gt;PowerPoint&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;纯文本&lt;/li&gt;
&lt;li&gt;其他可由 markitdown 转换的格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生成后的知识库位于 &lt;code&gt;wiki/&lt;/code&gt; 目录，主要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.md&lt;/code&gt;：知识库总览&lt;/li&gt;
&lt;li&gt;&lt;code&gt;log.md&lt;/code&gt;：操作时间线&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;：知识库结构和维护说明&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sources/&lt;/code&gt;：转换后的原文&lt;/li&gt;
&lt;li&gt;&lt;code&gt;summaries/&lt;/code&gt;：每份文档的摘要&lt;/li&gt;
&lt;li&gt;&lt;code&gt;concepts/&lt;/code&gt;：跨文档概念页&lt;/li&gt;
&lt;li&gt;&lt;code&gt;explorations/&lt;/code&gt;：保存的查询结果&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reports/&lt;/code&gt;：lint 检查报告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个设计最大的好处是透明。你可以直接打开 Markdown 文件查看知识库，而不是只能通过一个黑盒检索接口拿答案。&lt;/p&gt;
&lt;h2 id=&#34;它和传统-rag-有什么不同&#34;&gt;它和传统 RAG 有什么不同
&lt;/h2&gt;&lt;p&gt;传统 RAG 常见流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把文档切块。&lt;/li&gt;
&lt;li&gt;生成 embedding。&lt;/li&gt;
&lt;li&gt;存进向量数据库。&lt;/li&gt;
&lt;li&gt;查询时召回相关片段。&lt;/li&gt;
&lt;li&gt;把片段塞给 LLM 生成答案。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个流程很成熟，也很适合问答系统。但它有一个问题：知识本身没有真正沉淀。每次提问都在重新找片段、重新拼上下文、重新生成答案。&lt;/p&gt;
&lt;p&gt;OpenKB 的思路更偏“先整理，再问答”：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;文档进入 &lt;code&gt;raw/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;短文档通过 markitdown 转成 Markdown。&lt;/li&gt;
&lt;li&gt;长 PDF 通过 PageIndex 生成树状索引和摘要。&lt;/li&gt;
&lt;li&gt;LLM 生成文档摘要。&lt;/li&gt;
&lt;li&gt;LLM 读取已有概念页，创建或更新跨文档概念。&lt;/li&gt;
&lt;li&gt;知识库索引、日志和交叉链接同步更新。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样做的结果是，新增一份文档不只是多了一个可检索文件，而是可能更新十几个 wiki 页面。知识会被写进概念页里，并和已有资料发生连接。&lt;/p&gt;
&lt;p&gt;这更像人类维护知识库的方式：新资料进来后，不只是存档，还要更新主题页、总结差异、补充引用。&lt;/p&gt;
&lt;h2 id=&#34;pageindex-解决什么问题&#34;&gt;PageIndex 解决什么问题
&lt;/h2&gt;&lt;p&gt;长文档一直是 RAG 和 LLM 知识库里的难点。&lt;/p&gt;
&lt;p&gt;如果直接把长 PDF 切成很多 chunk，容易遇到几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;章节关系丢失。&lt;/li&gt;
&lt;li&gt;表格、图片和脚注难处理。&lt;/li&gt;
&lt;li&gt;检索片段过碎，答案缺少全局结构。&lt;/li&gt;
&lt;li&gt;上下文窗口再大，也不适合把整本文档塞进去。&lt;/li&gt;
&lt;li&gt;摘要链路过长时，细节容易被压掉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenKB 使用 PageIndex 来处理长 PDF。按项目说明，PageIndex 会为长文档建立树状索引和摘要，让 LLM 在文档树上推理，而不是直接读取整篇长文档。&lt;/p&gt;
&lt;p&gt;这条路线的重点不是“向量相似度最高的几段文本”，而是让模型利用文档层级结构找到相关内容。对于研究报告、论文、说明书、招股书、合规文档这类长材料，这个思路很有意义。&lt;/p&gt;
&lt;p&gt;OpenKB 默认可以使用开源版 PageIndex 本地运行；如果需要 OCR、复杂 PDF 处理或更快结构生成，也可以配置 &lt;code&gt;PAGEINDEX_API_KEY&lt;/code&gt; 使用 PageIndex Cloud。&lt;/p&gt;
&lt;h2 id=&#34;安装和快速开始&#34;&gt;安装和快速开始
&lt;/h2&gt;&lt;p&gt;OpenKB 可以直接通过 pip 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install openkb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以安装 GitHub 最新版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install git+https://github.com/VectifyAI/OpenKB.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;从源码开发安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/VectifyAI/OpenKB.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; OpenKB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;创建一个知识库目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir my-kb &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-kb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;添加文档：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb add paper.pdf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb add ~/papers/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;提问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb query &lt;span class=&#34;s2&#34;&gt;&amp;#34;What are the main findings?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;进入交互聊天：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb chat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你想让知识库自动处理新文件，可以使用 watch 模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb watch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后把文件放进 &lt;code&gt;raw/&lt;/code&gt;，OpenKB 会自动更新 wiki。&lt;/p&gt;
&lt;h2 id=&#34;llm-配置&#34;&gt;LLM 配置
&lt;/h2&gt;&lt;p&gt;OpenKB 通过 LiteLLM 支持多种模型供应商，包括 OpenAI、Claude、Gemini 等。&lt;/p&gt;
&lt;p&gt;初始化时可以设置模型，也可以在 &lt;code&gt;.openkb/config.yaml&lt;/code&gt; 里配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gpt-5.4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;language&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;en&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pageindex_threshold&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型名称遵循 LiteLLM 的 &lt;code&gt;provider/model&lt;/code&gt; 格式。OpenAI 模型可以省略 provider 前缀，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gpt-5.4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Anthropic、Gemini 这类模型通常写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;anthropic/claude-sonnet-4-6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemini/gemini-3.1-pro-preview&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;API key 放在 &lt;code&gt;.env&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LLM_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_llm_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果启用 PageIndex Cloud，再补充：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PAGEINDEX_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_pageindex_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;常用命令&#34;&gt;常用命令
&lt;/h2&gt;&lt;p&gt;OpenKB 的命令很适合开发者使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;openkb init&lt;/code&gt;：初始化知识库。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb add &amp;lt;file_or_dir&amp;gt;&lt;/code&gt;：添加文件或目录。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb remove &amp;lt;doc&amp;gt;&lt;/code&gt;：移除文档，并清理相关 wiki 页面、图片、注册表和 PageIndex 状态。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb query &amp;quot;question&amp;quot;&lt;/code&gt;：对知识库进行一次性提问。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb chat&lt;/code&gt;：进入多轮对话。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb watch&lt;/code&gt;：监听 &lt;code&gt;raw/&lt;/code&gt; 目录并自动更新。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb lint&lt;/code&gt;：检查知识库结构和内容健康状态。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb list&lt;/code&gt;：列出已索引文档和概念。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb status&lt;/code&gt;：查看知识库统计信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中 &lt;code&gt;openkb chat&lt;/code&gt; 比 &lt;code&gt;openkb query&lt;/code&gt; 更适合连续探索。它支持会话恢复、会话列表和删除，也支持在聊天中使用 slash commands，比如 &lt;code&gt;/status&lt;/code&gt;、&lt;code&gt;/list&lt;/code&gt;、&lt;code&gt;/add &amp;lt;path&amp;gt;&lt;/code&gt;、&lt;code&gt;/save&lt;/code&gt;、&lt;code&gt;/lint&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;为什么-markdown-wiki-很重要&#34;&gt;为什么 Markdown wiki 很重要
&lt;/h2&gt;&lt;p&gt;很多知识库工具的麻烦在于迁移成本。&lt;/p&gt;
&lt;p&gt;一旦资料进入专有数据库、专有索引或专有格式，你就很难直接审查、修改、备份和迁移。OpenKB 把结果写成普通 Markdown，这让它天然适合和现有工具配合。&lt;/p&gt;
&lt;p&gt;最直接的用法是用 Obsidian 打开 &lt;code&gt;wiki/&lt;/code&gt; 目录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;摘要页可以直接阅读。&lt;/li&gt;
&lt;li&gt;概念页可以用 &lt;code&gt;[[wikilinks]]&lt;/code&gt; 互相连接。&lt;/li&gt;
&lt;li&gt;图谱视图可以看到知识之间的关系。&lt;/li&gt;
&lt;li&gt;查询结果可以保存到 &lt;code&gt;explorations/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; 可以定义知识库维护方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让 OpenKB 不只是一个问答工具，也可以变成个人或团队的知识整理流水线。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;OpenKB 特别适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;论文和技术报告阅读。&lt;/li&gt;
&lt;li&gt;项目文档整理。&lt;/li&gt;
&lt;li&gt;产品调研资料库。&lt;/li&gt;
&lt;li&gt;开源项目源码外的文档知识库。&lt;/li&gt;
&lt;li&gt;公司内部规范、会议纪要和说明文档整理。&lt;/li&gt;
&lt;li&gt;个人 Obsidian 知识库自动维护。&lt;/li&gt;
&lt;li&gt;长 PDF、PPT、Word 和网页资料的结构化沉淀。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你经常面对一堆文档，却不只是想“问一句得到答案”，而是希望资料能逐步变成可浏览、可复用、可追踪的知识库，OpenKB 的方向就很对。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，OpenKB 依赖 LLM 质量。&lt;/p&gt;
&lt;p&gt;摘要、概念页和交叉链接都由模型生成。模型越强，知识编译质量越稳定；模型能力不足时，概念抽取、冲突识别和跨文档综合都会打折扣。&lt;/p&gt;
&lt;p&gt;第二，成本要提前估算。&lt;/p&gt;
&lt;p&gt;如果一次性导入大量长文档，LLM 调用成本可能不低。建议先用小规模资料集测试，确认输出结构和质量，再扩大导入范围。&lt;/p&gt;
&lt;p&gt;第三，生成的 wiki 仍然需要人工审阅。&lt;/p&gt;
&lt;p&gt;OpenKB 可以整理资料，但不等于自动保证事实完全正确。重要知识库仍然需要人工检查摘要、概念页和引用关系。&lt;/p&gt;
&lt;p&gt;第四，敏感资料要谨慎。&lt;/p&gt;
&lt;p&gt;如果使用云端 LLM 或 PageIndex Cloud，就要注意文档里的隐私、商业机密和合规要求。内部资料最好先确认模型供应商、数据保留策略和访问边界。&lt;/p&gt;
&lt;p&gt;第五，它目前更偏 CLI 工具。&lt;/p&gt;
&lt;p&gt;项目路线图里提到未来会有 Web UI、数据库存储、大规模集合支持和层级概念索引。但在当前阶段，如果团队成员不熟悉命令行，使用门槛仍然存在。&lt;/p&gt;
&lt;h2 id=&#34;和-obsidiannotebooklm企业-rag-的关系&#34;&gt;和 Obsidian、NotebookLM、企业 RAG 的关系
&lt;/h2&gt;&lt;p&gt;OpenKB 和 Obsidian 的关系更像“自动整理层”和“阅读编辑层”。&lt;/p&gt;
&lt;p&gt;Obsidian 适合人来写、改、浏览和建立链接；OpenKB 适合把原始文档批量整理成可以进入 Obsidian 的 wiki。&lt;/p&gt;
&lt;p&gt;OpenKB 和 NotebookLM 的关系则更偏“本地可控”和“开放文件形态”。&lt;/p&gt;
&lt;p&gt;NotebookLM 使用体验更直接，适合把资料丢进去快速问答和生成摘要；OpenKB 更适合开发者把整理结果留在本地目录里，用 Markdown 继续维护。&lt;/p&gt;
&lt;p&gt;OpenKB 和企业 RAG 的关系不是替代，而是补位。&lt;/p&gt;
&lt;p&gt;企业 RAG 更看重权限、审计、服务化、权限隔离、监控和稳定吞吐。OpenKB 更适合构建一个可读、可改、可长期沉淀的知识层。未来如果要做线上问答，也可以把 OpenKB 生成的 wiki 作为更高质量的语料来源。&lt;/p&gt;
&lt;h2 id=&#34;一个推荐工作流&#34;&gt;一个推荐工作流
&lt;/h2&gt;&lt;p&gt;如果你想试 OpenKB，可以按这个顺序来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新建一个测试知识库目录。&lt;/li&gt;
&lt;li&gt;先放 3 到 5 份同一主题的文档。&lt;/li&gt;
&lt;li&gt;运行 &lt;code&gt;openkb add&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;打开 &lt;code&gt;wiki/&lt;/code&gt; 查看摘要和概念页。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;openkb query&lt;/code&gt; 问几个具体问题。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;openkb lint&lt;/code&gt; 检查知识库健康状态。&lt;/li&gt;
&lt;li&gt;用 Obsidian 打开 &lt;code&gt;wiki/&lt;/code&gt;，看链接图谱是否有意义。&lt;/li&gt;
&lt;li&gt;确认质量后，再导入更大的文档集合。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要一上来就把几百个文件全丢进去。先看它对你的资料类型是否理解得好，尤其是表格、图片、长 PDF 和多文档概念合并效果。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;OpenKB 的价值在于，它把 LLM 知识库从“查询时临时拼上下文”往前推了一步：先把资料整理成 wiki，再在 wiki 上问答、聊天、检查和继续维护。&lt;/p&gt;
&lt;p&gt;这条路线不一定适合所有问答系统，但很适合需要长期沉淀的知识工作。Markdown 文件、Obsidian 兼容、PageIndex 长文档处理、多模型支持和 CLI 工作流，组合起来就是一个很适合开发者和研究型用户的知识库工具。&lt;/p&gt;
&lt;p&gt;如果你手上有大量 PDF、报告、网页、论文和项目文档，OpenKB 值得试一下。它未必能马上替代成熟企业知识库，但可以成为一个很实用的资料整理入口：先把文档变成可读、可链接、可追踪的知识，再让 LLM 在这套知识上工作。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/OpenKB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openkb.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenKB 项目页面&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pageindex.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PageIndex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/markitdown&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;markitdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.litellm.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LiteLLM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Google Gemini Spark 爆料解读：一个 24 小时在线的 Gemini Agent 可能要来了</title>
        <link>https://knightli.com/2026/05/17/google-gemini-spark-ai-agent-leak/</link>
        <pubDate>Sun, 17 May 2026 11:58:08 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/google-gemini-spark-ai-agent-leak/</guid>
        <description>&lt;p&gt;Google 还没有正式发布 &lt;code&gt;Gemini Spark&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;目前关于它的信息，主要来自 Gemini Web 内部测试界面、社区截图、TestingCatalog 报道，以及 36Kr / 新智元对相关爆料的整理。比较一致的说法是：&lt;code&gt;Gemini Spark BETA&lt;/code&gt; 可能是 Google 正在准备的全天候 AI Agent，定位不再只是聊天助手，而是能在后台处理邮件、在线任务和多步骤工作流的“日常 AI 代理”。&lt;/p&gt;
&lt;p&gt;所以这篇文章先把边界说清楚：这是爆料解读，不是 Google 官方发布稿。所有功能、命名和上线时间，都要等 Google 正式公告确认。&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;从目前曝光的信息看，Gemini Spark 有三个重点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它可能是 Gemini 体系里的 24 小时在线 Agent，而不是普通聊天模型。&lt;/li&gt;
&lt;li&gt;它会调用更广泛的个人上下文，包括 Google 应用、聊天记录、任务、登录网站和位置信息等。&lt;/li&gt;
&lt;li&gt;它的风险和吸引力一样大，因为它可能涉及信息分享、远程浏览器数据、购买动作和第三方服务调用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果 Google 真把 Spark 推出来，Gemini 的定位会发生变化：从“回答问题的 AI”变成“替你持续处理事务的 AI”。&lt;/p&gt;
&lt;h2 id=&#34;gemini-spark-是什么&#34;&gt;Gemini Spark 是什么
&lt;/h2&gt;&lt;p&gt;TestingCatalog 在 2026 年 5 月 14 日报道，Google 正在 Gemini Web 中测试 &lt;code&gt;Gemini Spark BETA&lt;/code&gt;。曝光的欢迎文案把它描述成一个 everyday AI agent，可以 24/7 帮用户处理 inbox、online tasks 和更多多步骤工作。&lt;/p&gt;
&lt;p&gt;36Kr / 新智元的文章也提到，Spark 被扒出后，外界看到的是一个“全时 Agent”方向：它可以全天候待命，处理收件箱、执行在线任务，甚至可能涉及购买和信息分享。&lt;/p&gt;
&lt;p&gt;这意味着 Spark 不是一个单纯的新模型名。它更像是 Gemini 产品层的一次升级：让 Gemini 从对话窗口里走出来，进入用户的邮件、网页、日程、任务和跨应用工作流。&lt;/p&gt;
&lt;h2 id=&#34;它可能怎么工作&#34;&gt;它可能怎么工作
&lt;/h2&gt;&lt;p&gt;根据 TestingCatalog 披露的隐藏 onboarding 文案，Gemini Spark 会从多种来源获取上下文，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connected Apps。&lt;/li&gt;
&lt;li&gt;skills。&lt;/li&gt;
&lt;li&gt;chats。&lt;/li&gt;
&lt;li&gt;tasks。&lt;/li&gt;
&lt;li&gt;用户登录过的网站。&lt;/li&gt;
&lt;li&gt;Personal intelligence。&lt;/li&gt;
&lt;li&gt;location。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些信息会帮助 Spark 理解用户想完成什么，并在执行任务时调用必要的上下文。文案还提到，为了完成某些动作，Gemini 可能会把必要信息分享给第三方，例如姓名、联系方式、文件、偏好，以及用户可能认为敏感的信息。&lt;/p&gt;
&lt;p&gt;如果这些描述最终属实，Spark 的工作方式会更接近“带上下文的代理系统”，而不是一次性问答。它不是只看当前一句 prompt，而是可能综合长期偏好、连接应用、浏览器状态和任务历史。&lt;/p&gt;
&lt;h2 id=&#34;为什么它重要&#34;&gt;为什么它重要
&lt;/h2&gt;&lt;p&gt;Gemini Spark 的关键，不在于多一个聊天入口，而在于 Google 有天然的生态入口。&lt;/p&gt;
&lt;p&gt;OpenAI 和 Anthropic 可以做很强的 Agent，但它们很难天然拥有 Gmail、Calendar、Drive、Chrome、Android、Workspace 这条完整链路。Google 如果把 Spark 接进这些产品，用户不需要额外搭建太多工作流，就能让 Agent 进入日常事务。&lt;/p&gt;
&lt;p&gt;这会带来三个变化。&lt;/p&gt;
&lt;p&gt;第一，Gemini 会从被动问答变成主动执行。用户不再只是问“帮我总结这封邮件”，而是可能让它持续整理 inbox、追踪任务和执行后续动作。&lt;/p&gt;
&lt;p&gt;第二，Agent 会更依赖个人上下文。它越懂你的邮件、日程、文件、浏览器状态和偏好，越可能给出有用结果。&lt;/p&gt;
&lt;p&gt;第三，权限边界会变得更敏感。能做更多事，也意味着需要更清楚地知道它什么时候能做、能做到哪一步、是否需要确认。&lt;/p&gt;
&lt;h2 id=&#34;风险点在哪里&#34;&gt;风险点在哪里
&lt;/h2&gt;&lt;p&gt;TestingCatalog 披露的文案里，有几处很值得关注。&lt;/p&gt;
&lt;p&gt;第一，Spark 是 experimental。也就是说，即便它上线，也不应被当成完全成熟、无需监督的系统。&lt;/p&gt;
&lt;p&gt;第二，虽然系统设计上会在敏感操作前征求许可，但文案也提示，它可能会在未经询问的情况下分享信息或完成购买。&lt;/p&gt;
&lt;p&gt;第三，为了保持会话连续性，Gemini 会保存 remote browser data，比如登录细节和 remote code execution data。用户可以在 Settings 中清除这些数据，也可以关闭 Connected Apps 和 Personal intelligence 相关能力。&lt;/p&gt;
&lt;p&gt;这几个点合在一起，说明 Spark 的产品方向很激进：它要做真正能执行任务的 Agent，而不是只生成建议。但越接近真实执行，越需要严格的权限、审计、确认和回滚机制。&lt;/p&gt;
&lt;h2 id=&#34;和-remyai-ultra-的关系&#34;&gt;和 Remy、AI Ultra 的关系
&lt;/h2&gt;&lt;p&gt;TestingCatalog 提到，Spark 可能是此前内部代号 &lt;code&gt;Remy&lt;/code&gt; 的 agentic Gemini upgrade 的重命名版本，也与面向 Google AI Ultra 订阅用户的 Gemini Agent 方向有关。&lt;/p&gt;
&lt;p&gt;如果这个线索成立，Spark 可能不是凭空出现的新项目，而是 Google 把此前较高阶、较封闭的 Agent 能力重新包装，并准备推向更大范围用户。&lt;/p&gt;
&lt;p&gt;36Kr / 新智元也把它描述成从 “Remy” 到 “Spark” 的升级：Gemini Agent 不再只是一个功能，而是要走向 24/7 的数字生活管家。&lt;/p&gt;
&lt;p&gt;不过这仍然是基于爆料信息的判断。Google 是否会使用 &lt;code&gt;Spark&lt;/code&gt; 这个正式名称、是否只面向 AI Ultra、是否推出更轻量订阅层，还要等官方确认。&lt;/p&gt;
&lt;h2 id=&#34;mcpskills-和工具生态&#34;&gt;MCP、skills 和工具生态
&lt;/h2&gt;&lt;p&gt;同一批社区截图里，还出现了 &lt;code&gt;MCP Tool Testing&lt;/code&gt; 这类模型选择器入口。36Kr 文章认为，这可能暗示新 Gemini 会原生支持 MCP 第三方工具接入，Thinking 模式也会重构。&lt;/p&gt;
&lt;p&gt;这条线索和 Spark 放在一起看，很有意思。&lt;/p&gt;
&lt;p&gt;如果 Spark 只是“会聊天的助手”，skills 和 MCP 的意义有限。但如果 Spark 是一个长期运行的 Agent，它就需要可靠地调用工具、访问网页、执行任务、读写上下文，并把结果交付给用户。&lt;/p&gt;
&lt;p&gt;也就是说，Spark 可能不是单点功能，而是 Google Agent 工具生态的一部分：模型负责理解和规划，skills / MCP / connected apps 负责执行和扩展。&lt;/p&gt;
&lt;h2 id=&#34;对普通用户意味着什么&#34;&gt;对普通用户意味着什么
&lt;/h2&gt;&lt;p&gt;如果 Gemini Spark 真的发布，普通用户最直接的变化可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;邮件不只是被总结，而是可以被分类、跟进和转成任务。&lt;/li&gt;
&lt;li&gt;网页任务不只是给建议，而是可能在远程浏览器中持续执行。&lt;/li&gt;
&lt;li&gt;日程、位置、偏好和历史对话会变成 Agent 的长期上下文。&lt;/li&gt;
&lt;li&gt;购买、预订、表单填写等动作可能进入 AI 执行范围。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这听起来很方便，但用户需要建立新的习惯：不再只看 AI 说了什么，还要看 AI 准备做什么、已经做了什么、能不能撤回、有没有记录。&lt;/p&gt;
&lt;p&gt;未来 AI Agent 的体验好不好，可能不只取决于模型聪不聪明，还取决于权限提示是否清楚、任务日志是否可查、错误操作能不能恢复。&lt;/p&gt;
&lt;h2 id=&#34;对开发者和团队意味着什么&#34;&gt;对开发者和团队意味着什么
&lt;/h2&gt;&lt;p&gt;对开发者来说，Spark 的意义在于 Google 可能正在把 Agent 从“演示产品”推向真实工作流平台。&lt;/p&gt;
&lt;p&gt;如果 Spark 能稳定连接 Google 应用、第三方工具和浏览器状态，那么开发者会关心：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 或扩展机制是否开放。&lt;/li&gt;
&lt;li&gt;MCP 或 skills 是否可由第三方接入。&lt;/li&gt;
&lt;li&gt;企业管理员能否控制权限、数据留存和审计。&lt;/li&gt;
&lt;li&gt;Agent 执行失败时是否有可追踪日志。&lt;/li&gt;
&lt;li&gt;是否支持沙盒、审批流和敏感操作确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对团队来说，Spark 可能会先从 Gmail、Calendar、Docs、Drive、Chrome 这类高频场景切入。它未必一开始就适合完全自动化高风险业务，但很适合作为 inbox triage、会议跟进、资料整理、市场研究和轻量运营任务的助手。&lt;/p&gt;
&lt;h2 id=&#34;现在应该怎么看&#34;&gt;现在应该怎么看
&lt;/h2&gt;&lt;p&gt;这条消息适合用“高可信方向，低确定细节”来理解。&lt;/p&gt;
&lt;p&gt;高可信方向是：Google 确实在推进更主动、更长期运行、更深度接入生态的 Gemini Agent。TestingCatalog 报道的 Gemini Web 测试文案、社区截图和 36Kr 整理的多方爆料，都指向同一个方向。&lt;/p&gt;
&lt;p&gt;低确定细节是：正式名称、上线时间、权限规则、订阅层级、可用地区、是否开放 API、是否真的叫 Gemini Spark，都还不能下结论。&lt;/p&gt;
&lt;p&gt;所以现在最稳妥的判断是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要把 Spark 当成已经发布的正式产品。&lt;/li&gt;
&lt;li&gt;可以把它视为 Google 下一阶段 AI Agent 路线的强信号。&lt;/li&gt;
&lt;li&gt;真正值得等的是官方如何解释权限、隐私、第三方数据分享和远程浏览器数据保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemini Spark&lt;/code&gt; 如果最终发布，可能会是 Gemini 从聊天助手走向全天候 Agent 的关键一步。它不只是换一个模型，而是把 Gemini 放进 Google 生态的邮件、网页、任务、位置、个人智能和第三方服务里。&lt;/p&gt;
&lt;p&gt;它的潜力很大：更主动、更贴近真实工作流，也更容易借助 Google 的生态分发给大量用户。它的风险也同样大：一旦 AI 能分享信息、保存浏览器状态、执行购买和调用第三方服务，权限边界就必须非常清楚。&lt;/p&gt;
&lt;p&gt;所以 Gemini Spark 最值得关注的不是“它有多聪明”，而是 Google 准备怎样让一个 24 小时在线的 AI Agent 变得可控、可审计、可信任。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.testingcatalog.com/google-prepares-gemini-spark-ai-agent-ahead-of-i-o-launch/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TestingCatalog：Google prepares Gemini Spark AI Agent ahead of I/O launch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/p/3810432812162816&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36Kr：Gemini 3.5 Pro 全网首曝，编程追平 GPT-5.5，谷歌终于狠起来了&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Intelligence on Android 解读：Google 正在把手机变成主动式 AI 系统</title>
        <link>https://knightli.com/2026/05/17/google-gemini-intelligence-android/</link>
        <pubDate>Sun, 17 May 2026 09:13:32 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/google-gemini-intelligence-android/</guid>
        <description>&lt;p&gt;Google 在 2026 年 5 月 12 日发布了《A smarter, more proactive Android with Gemini Intelligence》，介绍 Gemini Intelligence on Android。它不是一个单独的聊天 App，而是把 Gemini 能力放进 Android 系统、Chrome、Gboard、Autofill、widgets 和多设备体验里，让手机从“等用户点按钮”变成“能主动帮用户完成任务”的智能系统。&lt;/p&gt;
&lt;p&gt;简单说，Google 想让 Android 从 operating system 走向 intelligence system。手机不只是打开应用、显示通知、运行设置，而是可以理解屏幕、应用、语音和个人上下文，在用户确认下完成更复杂的操作。&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence on Android 主要包含五个方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多步任务自动化：让 Gemini 在应用之间完成订车、购物、找资料等流程。&lt;/li&gt;
&lt;li&gt;Chrome 智能浏览：在 Android 上总结网页、比较信息，并处理部分重复性网页任务。&lt;/li&gt;
&lt;li&gt;Autofill 升级：结合 Gemini 和个人上下文，帮用户填写更复杂的表单。&lt;/li&gt;
&lt;li&gt;Rambler：把自然口语整理成更清晰、更专业的文字消息。&lt;/li&gt;
&lt;li&gt;自然语言小组件：用户用一句话描述需求，Android 生成自定义 widgets。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些功能会从 2026 年夏天开始分批推出，先到部分 Samsung Galaxy 和 Google Pixel 手机，之后扩展到更多 Android 设备，包括手表、汽车、眼镜和笔记本。&lt;/p&gt;
&lt;h2 id=&#34;多步任务自动化从建议变成执行&#34;&gt;多步任务自动化：从建议变成执行
&lt;/h2&gt;&lt;p&gt;Google 这次最重要的方向，是让 Gemini 帮用户跨应用完成多步任务。&lt;/p&gt;
&lt;p&gt;原文举了几个例子：用户可以让 Gemini 订健身单车课程、从 Gmail 里找到课程大纲并把需要的书加入购物车，或者看到一张旅游宣传图后，直接让 Gemini 在 Expedia 上寻找类似行程。&lt;/p&gt;
&lt;p&gt;这类能力的关键不只是“理解一句话”，而是要同时理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户当前屏幕或图片里的内容。&lt;/li&gt;
&lt;li&gt;用户授权范围内的应用信息。&lt;/li&gt;
&lt;li&gt;下一步应该打开哪个应用。&lt;/li&gt;
&lt;li&gt;哪些步骤可以自动执行。&lt;/li&gt;
&lt;li&gt;哪些步骤必须停下来让用户确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google 特别强调，Gemini 会在用户指令下行动，并在任务完成时停止，最终确认仍由用户控制。这说明它不是完全自动代理，而是带有人类确认环节的移动端 agent。&lt;/p&gt;
&lt;h2 id=&#34;屏幕和图片上下文变得更重要&#34;&gt;屏幕和图片上下文变得更重要
&lt;/h2&gt;&lt;p&gt;这次更新里，一个值得注意的变化是 screen context 和 image context。&lt;/p&gt;
&lt;p&gt;以前手机助手更多依赖语音命令和应用内固定接口。Gemini Intelligence 则更强调“看见当前屏幕”。例如用户在备忘录里有一份购物清单，可以长按电源键唤起 Gemini，让它根据清单创建配送购物车。&lt;/p&gt;
&lt;p&gt;这意味着 Android AI 不只是聊天机器人，而是在尝试理解用户眼前的操作环境。未来手机 AI 的竞争，可能不只是谁的模型回答更好，还包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能不能理解当前屏幕。&lt;/li&gt;
&lt;li&gt;能不能跨应用执行。&lt;/li&gt;
&lt;li&gt;能不能在后台跟踪任务进度。&lt;/li&gt;
&lt;li&gt;能不能在关键节点可靠地让用户确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是移动端 AI 和网页聊天 AI 的重要区别。&lt;/p&gt;
&lt;h2 id=&#34;chrome-智能浏览从搜索到网页任务代理&#34;&gt;Chrome 智能浏览：从搜索到网页任务代理
&lt;/h2&gt;&lt;p&gt;Google 表示，从 2026 年 6 月下旬开始，Android 设备会获得更智能的 Gemini in Chrome。&lt;/p&gt;
&lt;p&gt;它可以帮助用户研究、总结和比较网页内容，也可以通过 Chrome auto browse 处理一些重复性网页任务，比如预约、预订停车位等。&lt;/p&gt;
&lt;p&gt;这说明 Gemini in Chrome 不只是“网页摘要”功能，而是在向浏览器代理发展。浏览器本来就是用户完成网页任务的入口，如果 Gemini 能理解网页、填写信息、比较选项并执行部分步骤，Chrome 就会从浏览工具变成任务执行界面。&lt;/p&gt;
&lt;p&gt;不过，这类功能也会面对几个现实问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;网站结构复杂，自动操作容易失败。&lt;/li&gt;
&lt;li&gt;表单、支付、登录和验证码等环节需要谨慎处理。&lt;/li&gt;
&lt;li&gt;用户需要知道 Gemini 到底做了什么。&lt;/li&gt;
&lt;li&gt;最终提交、付款或预订最好仍保留人工确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，真正的难点不只是模型能力，而是浏览器自动化、安全边界和用户信任。&lt;/p&gt;
&lt;h2 id=&#34;autofill从自动填密码到自动填复杂表单&#34;&gt;Autofill：从自动填密码到自动填复杂表单
&lt;/h2&gt;&lt;p&gt;Autofill with Google 原本更多是密码、地址、付款信息等基础便利功能。现在 Google 想把它升级成更智能的表单助手。&lt;/p&gt;
&lt;p&gt;原文说，借助 Gemini 的 Personal Intelligence，Android 可以用连接应用中的相关信息，自动填写更多复杂表单字段，包括 Chrome 里的表单。&lt;/p&gt;
&lt;p&gt;这类能力很实用。移动端填写复杂表单一直很痛苦，屏幕小、字段多、经常需要从邮件、日历、聊天和文档里复制信息。如果 Gemini 能在用户授权下自动整理并填写，会节省很多时间。&lt;/p&gt;
&lt;p&gt;但 Google 也强调，连接 Gemini 和 Autofill with Google 是严格 opt-in。也就是说，用户自己选择是否连接，之后也可以在设置里随时开关。&lt;/p&gt;
&lt;p&gt;这点很重要，因为 Autofill 涉及个人资料、地址、账号、支付、工作信息和敏感表单。越是有用，越需要明确授权和可控退出。&lt;/p&gt;
&lt;h2 id=&#34;rambler把口语变成可发送文本&#34;&gt;Rambler：把口语变成可发送文本
&lt;/h2&gt;&lt;p&gt;Rambler 是这次更新里比较有意思的新功能。&lt;/p&gt;
&lt;p&gt;Gboard 已经可以把语音转文字，但人说话时常常会有重复、停顿、语气词和自我修正。Rambler 的目标是把自然说话整理成更清楚、更适合发送的文本。&lt;/p&gt;
&lt;p&gt;它适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你想快速口述一段消息，但不想逐字修改。&lt;/li&gt;
&lt;li&gt;你说话时夹杂停顿、重复和语气词。&lt;/li&gt;
&lt;li&gt;你需要把随口想法整理成更专业的短信、邮件或聊天内容。&lt;/li&gt;
&lt;li&gt;你在多语言之间切换，希望系统理解上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google 还提到，Rambler 会清楚显示用户何时启用了它，音频只用于实时转写，不会被保存。这是对隐私和透明度的回应。&lt;/p&gt;
&lt;p&gt;从产品角度看，Rambler 其实是把“语音输入”升级成“语音写作”。它不只是记录你说了什么，而是帮你把口语变成可发送的文字。&lt;/p&gt;
&lt;h2 id=&#34;自然语言创建小组件&#34;&gt;自然语言创建小组件
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence 还会带来 Create My Widget。用户可以直接用自然语言描述想要的小组件，比如“每周推荐三份高蛋白备餐食谱”，系统就生成一个可以放在主屏幕上的自定义 widget。&lt;/p&gt;
&lt;p&gt;这代表 Android 在尝试 generative UI：用户不再只从固定模板里选择小组件，而是描述自己想看的信息和展示方式。&lt;/p&gt;
&lt;p&gt;如果这个方向成熟，手机主屏可能会变得更个人化。天气、日程、健康、通勤、饮食、学习、工作提醒，都可以变成按用户需求生成的动态模块。&lt;/p&gt;
&lt;p&gt;不过，生成式 UI 也需要解决稳定性问题。小组件不是一次性聊天回复，而是长期显示在桌面上，必须可靠、可读、可配置，并且不能乱占屏幕空间。&lt;/p&gt;
&lt;h2 id=&#34;material-3-expressive-与智能-ui&#34;&gt;Material 3 Expressive 与智能 UI
&lt;/h2&gt;&lt;p&gt;Google 还提到，Gemini Intelligence 会带来基于 Material 3 Expressive 的更新设计语言。&lt;/p&gt;
&lt;p&gt;这部分不是单纯美化界面，而是让 UI 动画和交互更有目的感，减少干扰，让用户更专注于任务。换句话说，当 AI 开始主动处理任务时，界面需要清楚表达：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 正在做什么。&lt;/li&gt;
&lt;li&gt;哪些步骤已经完成。&lt;/li&gt;
&lt;li&gt;哪些地方需要用户确认。&lt;/li&gt;
&lt;li&gt;用户如何取消或修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主动式 AI 如果没有清晰 UI，很容易让用户感到失控。所以设计语言本身也会成为 AI 产品体验的一部分。&lt;/p&gt;
&lt;h2 id=&#34;可用性和节奏&#34;&gt;可用性和节奏
&lt;/h2&gt;&lt;p&gt;根据 Google 原文，Gemini Intelligence 功能会从最新 Samsung Galaxy 和 Google Pixel 手机开始，在 2026 年夏天分批推出。之后会扩展到更多 Android 设备，包括手表、汽车、眼镜和笔记本。&lt;/p&gt;
&lt;p&gt;这说明它不是一次性全球全量上线，而是分批 rollout。具体可用性可能取决于设备、地区、语言、应用支持和账号设置。&lt;/p&gt;
&lt;p&gt;如果你想体验这些功能，最现实的预期是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先关注 Pixel 和 Samsung 旗舰机。&lt;/li&gt;
&lt;li&gt;关注 2026 年夏季后的系统更新。&lt;/li&gt;
&lt;li&gt;留意 Gemini、Chrome、Gboard、Autofill 和 Android 设置中的新开关。&lt;/li&gt;
&lt;li&gt;不同地区和语言可能不会同时支持所有功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;这对-android-意味着什么&#34;&gt;这对 Android 意味着什么
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence on Android 的意义，不是又加了几个 AI 小功能，而是 Android 产品定位的变化。&lt;/p&gt;
&lt;p&gt;过去的手机系统主要负责管理应用、通知、权限、文件和硬件。现在 Google 想让系统理解用户意图，并在应用之间完成任务。这个方向如果成功，Android 的竞争点会从“系统功能和生态应用”扩展到“能不能主动帮用户做事”。&lt;/p&gt;
&lt;p&gt;这也会让移动端 AI 竞争进入新阶段：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple 会强调本地化、隐私和系统整合。&lt;/li&gt;
&lt;li&gt;Google 会强调 Gemini、搜索、Chrome、Android 和多设备生态。&lt;/li&gt;
&lt;li&gt;第三方 AI App 会更难和系统级入口竞争。&lt;/li&gt;
&lt;li&gt;应用开发者需要考虑自己的 App 如何被 AI 代理调用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;未来几年，手机上的 AI 可能不再只是一个聊天入口，而是变成系统级执行层。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Google 这次发布的 Gemini Intelligence on Android，核心不是“手机里多了一个 Gemini 聊天框”，而是把 AI 放进 Android 的操作流程里。多步任务自动化、Chrome 智能浏览、Autofill、Rambler 和自然语言小组件，都是在让手机从被动工具变成主动助手。&lt;/p&gt;
&lt;p&gt;它能不能真正改变用户习惯，取决于几个关键因素：自动化是否可靠、隐私开关是否清楚、跨应用操作是否顺畅、用户是否始终保留最终控制权。至少从这次发布看，Google 已经把 Android 的下一阶段定义为主动式 AI 系统，而不只是传统移动操作系统。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/platforms/android/gemini-intelligence/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Blog：A smarter, more proactive Android with Gemini Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 支持 ChatGPT 移动端远程访问，Enterprise 工作区可用 Access Tokens</title>
        <link>https://knightli.com/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/2026/05/17/codex-mobile-remote-access-enterprise-access-tokens/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 5 月 14 日更新了 ChatGPT Enterprise &amp;amp; Edu Release Notes，重点只有两件事：Codex 支持通过 ChatGPT 移动端远程访问，Enterprise 工作区可以使用 Codex access tokens 做受控自动化。&lt;/p&gt;
&lt;p&gt;这不是一次模型能力发布，而是 Codex 产品形态的变化。Codex 正在从“本地或网页里的编程助手”，变成可以长时间运行、可以远程接管、可以接入企业自动化流程的 coding agent。&lt;/p&gt;
&lt;h2 id=&#34;这次更新是什么&#34;&gt;这次更新是什么
&lt;/h2&gt;&lt;p&gt;根据 OpenAI Help Center 的说明，Codex 现在支持从 ChatGPT mobile app 远程访问。用户可以在手机上连接正在运行的 Codex 环境，持续跟进长时间任务，并在需要时介入。&lt;/p&gt;
&lt;p&gt;同时，ChatGPT Enterprise 工作区新增 Codex access tokens。它们面向可信的非交互式本地工作流，让自动化流程可以使用 ChatGPT workspace identity 和企业控制，而不需要每次通过浏览器登录。&lt;/p&gt;
&lt;p&gt;可以把这次更新理解成两个入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;移动端远程访问：解决“Codex 跑长任务时，人不在电脑前怎么办”。&lt;/li&gt;
&lt;li&gt;Access Tokens：解决“企业自动化脚本如何以受控身份调用 Codex 工作流”。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;移动端远程访问解决什么问题&#34;&gt;移动端远程访问解决什么问题
&lt;/h2&gt;&lt;p&gt;Codex 的典型任务并不总是几秒钟完成。真实开发里，它可能要阅读代码库、修改多个文件、运行测试、等待命令输出、根据错误继续修复，甚至需要用户中途批准某些操作。&lt;/p&gt;
&lt;p&gt;过去这类任务往往要求用户守在本地 Mac、桌面端、CLI 或 IDE 旁边。现在，ChatGPT 移动端可以变成一个远程控制台，让用户离开电脑后仍能跟进 Codex。&lt;/p&gt;
&lt;p&gt;OpenAI 提到，移动端可以展示底层环境的实时状态，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目上下文。&lt;/li&gt;
&lt;li&gt;approvals。&lt;/li&gt;
&lt;li&gt;screenshots。&lt;/li&gt;
&lt;li&gt;terminal output。&lt;/li&gt;
&lt;li&gt;diffs。&lt;/li&gt;
&lt;li&gt;test results。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用户也可以在手机上回答 Codex 的问题、重定向执行、批准操作、查看输出，并在不同 connected hosts 之间切换。底层任务仍然运行在 Mac host 或连接的远程环境中，手机端负责查看和控制。&lt;/p&gt;
&lt;h2 id=&#34;这对开发者有什么价值&#34;&gt;这对开发者有什么价值
&lt;/h2&gt;&lt;p&gt;这项能力最适合长时间、需要中途确认的开发任务。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex 正在跑一组耗时测试，你出门后仍想看结果。&lt;/li&gt;
&lt;li&gt;Codex 修改了多个文件，需要你在手机上看 diff 后批准下一步。&lt;/li&gt;
&lt;li&gt;Codex 执行到某个危险操作前等待确认，你可以远程处理。&lt;/li&gt;
&lt;li&gt;本地 Mac 上有多个 connected hosts，需要在手机上切换查看状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的价值不是让你在手机上写代码，而是让你不用一直守着电脑。Codex 继续在原环境里工作，你只在关键节点介入。&lt;/p&gt;
&lt;p&gt;这也说明 Codex 的使用方式正在接近“后台 Agent”：任务可以持续运行，用户不必全程在线，但仍要保留审批和控制权。&lt;/p&gt;
&lt;h2 id=&#34;access-tokens-解决什么问题&#34;&gt;Access Tokens 解决什么问题
&lt;/h2&gt;&lt;p&gt;Codex access tokens 面向 ChatGPT Enterprise 工作区。它们的重点不是普通个人用户登录，而是企业内部可信自动化。&lt;/p&gt;
&lt;p&gt;企业里经常有一些本地或内部流程需要非交互式运行，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定时执行代码检查。&lt;/li&gt;
&lt;li&gt;在受控机器上触发 Codex 工作流。&lt;/li&gt;
&lt;li&gt;将 Codex 接入内部开发工具链。&lt;/li&gt;
&lt;li&gt;在不打开浏览器的情况下使用工作区身份。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Access tokens 让这些流程可以带着 ChatGPT workspace identity 运行，同时继续受企业策略约束。相比临时人工登录，它更适合自动化；相比随便共享个人凭据，它也更容易纳入治理。&lt;/p&gt;
&lt;h2 id=&#34;它不是普通-api-key&#34;&gt;它不是普通 API key
&lt;/h2&gt;&lt;p&gt;这点很重要。Codex access tokens 不应该被理解成一个简单的“万能 API key”。&lt;/p&gt;
&lt;p&gt;OpenAI 的说明里提到，access tokens 可用于 ChatGPT Enterprise 工作区，管理员可以管理工作区级可用性，拥有允许角色的成员可以创建自己的 tokens。治理界面在可用情况下也会反映 access token 活动。&lt;/p&gt;
&lt;p&gt;也就是说，access tokens 被放在企业权限、角色和审计框架里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;管理员可以决定工作区是否开放。&lt;/li&gt;
&lt;li&gt;不是所有成员都天然可以创建。&lt;/li&gt;
&lt;li&gt;token 活动可以进入治理视图。&lt;/li&gt;
&lt;li&gt;它继承 ChatGPT workspace identity 和企业控制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和个人随手生成一个长期密钥不是一回事。&lt;/p&gt;
&lt;h2 id=&#34;安全默认值remote-control-默认关闭&#34;&gt;安全默认值：Remote Control 默认关闭
&lt;/h2&gt;&lt;p&gt;Codex mobile remote access 涉及代码环境、终端输出、diff、测试结果和操作审批。如果默认开放，会带来明显企业安全风险。&lt;/p&gt;
&lt;p&gt;因此 OpenAI 的默认策略是：remote control 默认关闭，管理员或 owner 需要在 Workspace settings 中启用。&lt;/p&gt;
&lt;p&gt;启用移动端远程访问时，还可能涉及：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;workspace-enabled Remote Control access。&lt;/li&gt;
&lt;li&gt;SSO。&lt;/li&gt;
&lt;li&gt;多因素认证。&lt;/li&gt;
&lt;li&gt;passkey。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明它是一个需要企业 IT 和安全团队参与配置的能力，而不是“更新 App 后所有人自动可用”。&lt;/p&gt;
&lt;h2 id=&#34;使用前需要更新什么&#34;&gt;使用前需要更新什么
&lt;/h2&gt;&lt;p&gt;OpenAI 提到，要使用移动端远程访问，需要更新两端：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT mobile app。&lt;/li&gt;
&lt;li&gt;macOS 上的 Codex app。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果工作区启用了相关要求，移动端设置过程还可能触发 SSO、多因素认证或 passkey 流程。&lt;/p&gt;
&lt;p&gt;实际落地时，企业管理员还需要先确认 Workspace settings 里的 remote control 设置，以及哪些成员或角色可以使用相关能力。&lt;/p&gt;
&lt;h2 id=&#34;对企业-codex-使用方式的影响&#34;&gt;对企业 Codex 使用方式的影响
&lt;/h2&gt;&lt;p&gt;这次更新把 Codex 往两个方向推进。&lt;/p&gt;
&lt;p&gt;第一，Codex 更适合长任务。以前长任务最大的问题是用户要一直盯着，现在手机可以查看状态和批准操作，Codex 可以更自然地跑在后台。&lt;/p&gt;
&lt;p&gt;第二，Codex 更适合企业自动化。Access tokens 让非交互式工作流有了更正式的身份方式，后续更容易接入内部 CI、代码审查、脚本和开发平台。&lt;/p&gt;
&lt;p&gt;这两个方向结合起来，意味着 Codex 不再只是“开发者手边的 AI 助手”，而是在变成企业开发流程里的一个可管理 agent。&lt;/p&gt;
&lt;h2 id=&#34;仍然需要注意的边界&#34;&gt;仍然需要注意的边界
&lt;/h2&gt;&lt;p&gt;这次更新很有用，但并不意味着 Codex 可以完全无人看管。&lt;/p&gt;
&lt;p&gt;企业使用时仍然要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些项目允许远程控制。&lt;/li&gt;
&lt;li&gt;哪些命令需要审批。&lt;/li&gt;
&lt;li&gt;token 如何创建、轮换和撤销。&lt;/li&gt;
&lt;li&gt;mobile remote access 是否符合公司设备管理策略。&lt;/li&gt;
&lt;li&gt;终端输出、截图和 diff 是否可能包含敏感信息。&lt;/li&gt;
&lt;li&gt;审计日志和治理界面是否能满足内部合规要求。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其是 access tokens，一旦进入自动化流程，就要像其他企业凭据一样管理：最小权限、定期轮换、避免硬编码、及时撤销不用的 token。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;OpenAI 这次 Codex 更新的重点很集中：ChatGPT 移动端可以远程访问 Codex 长任务，Enterprise 工作区可以用 Codex access tokens 支持受控自动化。&lt;/p&gt;
&lt;p&gt;前者让开发者不必一直守在电脑前，后者让企业可以把 Codex 更正式地接入内部工作流。两者合在一起，说明 Codex 正在从交互式编程助手，进一步走向可远程管理、可审计、可自动化接入的企业 coding agent。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/10128477-chatgpt-enterprise-edu-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：ChatGPT Enterprise &amp;amp; Edu - Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 额度为什么突然重置？Usage Limits 历史与消息来源整理</title>
        <link>https://knightli.com/2026/05/17/codex-usage-limit-reset-history/</link>
        <pubDate>Sun, 17 May 2026 08:36:15 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/17/codex-usage-limit-reset-history/</guid>
        <description>&lt;p&gt;Codex 用户偶尔会遇到一种情况：明明还没到自己的常规 reset 时间，usage limits 却突然恢复了。这种“无预兆重置”不是第一次出现，也不一定代表额度规则永久变宽。它可能来自故障补偿、产品活动、增长里程碑，也可能只是某个窗口或部分账号状态被后台重置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/17/codex-usage-limit-reset-history/tibo-codex-gpt55-reset.png&#34;
	width=&#34;1146&#34;
	height=&#34;712&#34;
	srcset=&#34;https://knightli.com/2026/05/17/codex-usage-limit-reset-history/tibo-codex-gpt55-reset_hu_8e2e55bed895f615.png 480w, https://knightli.com/2026/05/17/codex-usage-limit-reset-history/tibo-codex-gpt55-reset_hu_1736ae030ba80b22.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Tibo 关于 Codex usage limits 重置的截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;160&#34;
		data-flex-basis=&#34;386px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这张截图来自 OpenAI Codex 团队负责人 Tibo Sottiaux（@thsottiaux）在 X 上发布的公告。对额度用户来说，最关键的一句不是模型细节，而是：他表示会在当晚 reset usage limits。截图里的上下文说明，这次重置是一次补偿性操作，而不是普通周期刷新。&lt;/p&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;Codex 额度突然重置，大致可以分成几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;故障补偿&lt;/strong&gt;：模型或 Codex 服务异常导致用户浪费额度，官方通过重置弥补。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发布或推广活动&lt;/strong&gt;：新模型、新客户端、新功能上线时，临时提高或重置额度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增长里程碑&lt;/strong&gt;：用户规模达到某个节点后，官方用重置或提额鼓励继续使用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后台策略调整&lt;/strong&gt;：部分额度窗口、部分账号状态被重置，但 UI 不一定解释清楚。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普通用户最容易误解的是：看到“重置”就以为所有窗口都恢复了。实际上，Codex 可能同时有短窗口、weekly limit、不同模型和不同套餐限制。一次特殊重置可能只影响其中一部分。&lt;/p&gt;
&lt;h2 id=&#34;这次截图说明了什么&#34;&gt;这次截图说明了什么
&lt;/h2&gt;&lt;p&gt;截图显示，Tibo 在 2026 年 5 月 15 日发布更新，表示团队会继续监控，并在当晚重置 usage limits。它引用了前一条“正在调查部分用户反馈”的消息，因此这次重置更像一次服务波动后的补偿。&lt;/p&gt;
&lt;p&gt;对用户来说，可以提炼出三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这不是用户自己的常规周期到了，而是官方主动重置。&lt;/li&gt;
&lt;li&gt;这次重置有明确事件背景，不是永久提额公告。&lt;/li&gt;
&lt;li&gt;“usage limits” 的具体覆盖范围仍要看实际账号显示，截图本身没有解释 5 小时窗口、weekly limit 是否全部包含。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以，如果你看到额度恢复，正确做法不是马上推断“以后都变宽了”，而是先把它当成一次特殊 reset event。&lt;/p&gt;
&lt;h2 id=&#34;为什么-codex-会无预兆重置&#34;&gt;为什么 Codex 会无预兆重置
&lt;/h2&gt;&lt;p&gt;Codex 的额度体系不是一个简单的“每天几点刷新”。用户界面通常只显示剩余额度或百分比，但后台可能同时跟踪：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短时间窗口，例如几小时内的使用量。&lt;/li&gt;
&lt;li&gt;周额度或更长周期额度。&lt;/li&gt;
&lt;li&gt;不同模型的消耗权重。&lt;/li&gt;
&lt;li&gt;本地 Codex、Cloud Task、IDE/CLI 等不同入口。&lt;/li&gt;
&lt;li&gt;Plus、Pro、Business、Team 等不同套餐。&lt;/li&gt;
&lt;li&gt;账号是否满足某次特殊重置的后台条件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当 OpenAI 做一次特殊重置时，用户未必能看到“这是普通周期恢复，还是特殊补偿”。如果只重置短窗口，用户可能误以为 weekly 也应该恢复；如果 weekly 没变，就会怀疑重置失败。&lt;/p&gt;
&lt;p&gt;OpenAI 的 Codex GitHub issue 里也有人专门反馈过这个透明度问题：公开说 reset Codex rate limits，但产品 UI 没有说明到底重置了哪些窗口、是否包含 weekly limit、是否所有付费计划都一致生效。这也是“无预兆重置”让人困惑的核心原因。&lt;/p&gt;
&lt;h2 id=&#34;历史上的几类重置&#34;&gt;历史上的几类重置
&lt;/h2&gt;&lt;h3 id=&#34;1-2026-年-2-月发布期与临时加量&#34;&gt;1. 2026 年 2 月：发布期与临时加量
&lt;/h3&gt;&lt;p&gt;Codex 桌面应用和 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 推广期间，社区用户讨论过 usage limit reset 和临时 2x rate limits。Reddit 上有用户提到 Codex app 刚发布时提供过限时 2x rate limits，并伴随 usage limit reset。&lt;/p&gt;
&lt;p&gt;这类重置更像发布期运营动作：让更多用户试用新客户端、新模型或新工作流。&lt;/p&gt;
&lt;h3 id=&#34;2-2026-年-3-月随机重置与异常消耗讨论&#34;&gt;2. 2026 年 3 月：随机重置与异常消耗讨论
&lt;/h3&gt;&lt;p&gt;3 月前后，社区里多次出现“random usage reset”“weekly limit reset daily”之类帖子。有用户反馈自己的 weekly limit 被提前恢复，也有人认为这和 Codex 新模型、新安全拦截、异常消耗或 bug 修复有关。&lt;/p&gt;
&lt;p&gt;这些讨论不等同于官方公告，但它们说明一件事：用户侧已经多次观察到额度并非只按固定周期恢复。某些情况下，后台会因为问题修复或补偿而触发额外 reset。&lt;/p&gt;
&lt;h3 id=&#34;3-2026-年-4-月增长里程碑与付费计划重置&#34;&gt;3. 2026 年 4 月：增长里程碑与付费计划重置
&lt;/h3&gt;&lt;p&gt;4 月下旬，有公开报道提到 Codex 达到 300 万周活用户后，OpenAI 重置了 rate limits，并计划在后续用户增长里程碑继续给用户更多额度空间。&lt;/p&gt;
&lt;p&gt;GitHub issue 中也引用过 Tibo 4 月 28 日的 X 公告：他提到曾为“good week”重置付费计划的 Codex rate limits，让用户可以更多使用 &lt;code&gt;GPT-5.5&lt;/code&gt;。不过同一个 issue 也指出，实际产品 UI 没有清楚说明到底哪些额度窗口被重置，weekly limit 是否全部包含。&lt;/p&gt;
&lt;p&gt;这说明增长或活动型重置，往往也会带来解释成本：用户听到“all paid plans”，但账号里看到的结果未必完全一致。&lt;/p&gt;
&lt;h3 id=&#34;4-2026-年-5-月故障补偿型重置&#34;&gt;4. 2026 年 5 月：故障补偿型重置
&lt;/h3&gt;&lt;p&gt;这次截图属于更典型的故障补偿型重置。Tibo 明确说团队找到了问题并会在当晚 reset usage limits。OpenAI Status 也记录过 2026 年 5 月 13 日 Codex 相关高错误率和延迟退化事件。&lt;/p&gt;
&lt;p&gt;对普通用户而言，这次重点不是某个模型是否变差，而是：当服务端问题让用户额度被异常消耗时，OpenAI 可能会通过特殊重置来补偿。&lt;/p&gt;
&lt;h2 id=&#34;用户该怎么判断一次重置来自哪里&#34;&gt;用户该怎么判断一次重置来自哪里
&lt;/h2&gt;&lt;p&gt;遇到 Codex 额度突然恢复，可以按这个顺序判断：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先看自己的常规 reset 时间，排除普通周期恢复。&lt;/li&gt;
&lt;li&gt;看 OpenAI Status 是否有 Codex、模型错误率、延迟或降级记录。&lt;/li&gt;
&lt;li&gt;看 Tibo、OpenAI 官方账号、Codex GitHub issue 是否有说明。&lt;/li&gt;
&lt;li&gt;看社区反馈是否集中出现“突然 reset”“额度燃烧异常”“weekly 没恢复”等讨论。&lt;/li&gt;
&lt;li&gt;区分短窗口和 weekly limit，不要默认所有窗口都会一起恢复。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是官方事故补偿，通常会伴随状态页记录、负责人公告或大量用户集中反馈。如果只是后台部分窗口刷新，可能不会有明确公告。&lt;/p&gt;
&lt;h2 id=&#34;消息来源怎么分辨可靠性&#34;&gt;消息来源怎么分辨可靠性
&lt;/h2&gt;&lt;p&gt;这类消息最好分层看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;官方状态页&lt;/strong&gt;：最适合确认是否有服务故障、错误率、延迟、恢复时间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tibo / OpenAI 官方账号&lt;/strong&gt;：适合确认是否有特殊 reset、补偿或活动口径。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Codex GitHub issue&lt;/strong&gt;：适合看用户对 UI、额度窗口、实际行为的反馈。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;社区 Reddit / X 讨论&lt;/strong&gt;：适合观察用户是否普遍遇到类似现象，但不能直接当成官方结论。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三方新闻或博客&lt;/strong&gt;：适合补充时间线，但仍要回到官方和原始链接核对。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;写文章或做判断时，最好把这些来源分开写。比如“OpenAI Status 记录了服务问题”是官方状态；“Reddit 用户反馈随机重置”是社区观察；“GitHub issue 反映 UI 不透明”是用户提交的问题描述。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Codex 额度突然重置，通常不是一个单纯的“系统送额度”。它可能来自故障补偿、发布期推广、增长活动或后台策略调整。真正容易造成误解的地方在于：Codex 同时存在多个额度窗口，而特殊 reset 不一定覆盖所有窗口，UI 也不一定清楚展示 reset scope。&lt;/p&gt;
&lt;p&gt;所以，遇到无预兆重置时，最稳的判断方式是：先看客户端实际额度，再查 OpenAI Status、Tibo 公告、Codex GitHub issue 和社区反馈。不要只凭一次 reset 推断长期额度规则，也不要默认 weekly limit、短窗口和所有套餐都会同步恢复。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://status.openai.com/incidents/01KRG6MF021JQ997JCR7R8Y9A0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Status：Codex 5.5 engines are experiencing high error rate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LovingCodex/comments/1teo5ki/tibo_we_foundfixed_two_issues_that_could_explain/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit 转发的 Tibo 公告截图与 X 链接&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/codex/issues/20395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub：Clarify Codex rate-limit reset behavior and make reset scope visible in Usage UI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.createwith.com/tool/chatgpt/updates/chatgpt-codex-hits-3-million-weekly-users-openai-resets-rate-limits&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create With：ChatGPT Codex Hits 3 Million Weekly Users, OpenAI Resets Rate Limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/codex/comments/1rjcwli/usage_limit_reset/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit：Usage limit reset?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/codex/comments/1qu2gjx/when_the_unnexpected_usage_limit_reset_hits_ty/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit：when the unexpected usage limit reset hits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>easy-vibe：给 Vibe Coding 初学者的一张学习地图</title>
        <link>https://knightli.com/2026/05/16/easy-vibe-vibe-coding-learning-map/</link>
        <pubDate>Sat, 16 May 2026 22:44:43 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/16/easy-vibe-vibe-coding-learning-map/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/datawhalechina/easy-vibe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;easy-vibe&lt;/a&gt; 是 Datawhale 开源的 Vibe Coding 学习项目。它面向的不是已经熟练使用 AI 编程工具的开发者，而是刚开始接触 Vibe Coding 的学生、产品经理、设计师、运营、独立开发者和普通技术爱好者。&lt;/p&gt;
&lt;p&gt;这个项目的价值不在于又列出一批 AI 工具，而是把“怎么开始用 AI 做项目”拆成了更容易理解的学习路径。对很多新手来说，真正困难的不是不知道有 Claude Code、Cursor、MCP 或 Agent，而是不知道应该先学什么、怎么练、什么时候进入进阶工具。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-新手最缺的是路径&#34;&gt;Vibe Coding 新手最缺的是路径
&lt;/h2&gt;&lt;p&gt;Vibe Coding 这几年很火，但它对新手并不友好。&lt;/p&gt;
&lt;p&gt;表面上看，只要会描述需求，就可以让 AI 写代码。实际上，只要任务稍微复杂一点，问题就会出现：需求说不清，模型改错文件，项目结构看不懂，报错不会处理，依赖装不上，提示词越写越乱，最后只能回到“复制代码到聊天框”的状态。&lt;/p&gt;
&lt;p&gt;所以 Vibe Coding 入门不能只教“怎么写提示词”。它至少要解决几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如何把想法拆成可执行任务；&lt;/li&gt;
&lt;li&gt;如何让 AI 理解项目结构；&lt;/li&gt;
&lt;li&gt;如何看懂模型生成的代码；&lt;/li&gt;
&lt;li&gt;如何处理报错和迭代；&lt;/li&gt;
&lt;li&gt;如何使用终端和本地开发环境；&lt;/li&gt;
&lt;li&gt;如何从网页聊天过渡到真正的 AI 编程工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;easy-vibe 的意义就在这里：它试图把这些内容整理成一条学习路线，而不是让新手自己在工具、教程和术语里迷路。&lt;/p&gt;
&lt;h2 id=&#34;它不是单点教程而是路线图&#34;&gt;它不是单点教程，而是路线图
&lt;/h2&gt;&lt;p&gt;从项目介绍看，easy-vibe 覆盖了基础教程、交互式练习、可视化内容、RAG、终端工具、AI 编程工具，以及更进阶的 Claude Code、MCP、Skills、Agent Teams 等主题。&lt;/p&gt;
&lt;p&gt;这类组织方式比较适合初学者。因为 AI 编程不是一个单独技能，而是一组能力的组合：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;会描述需求；&lt;/li&gt;
&lt;li&gt;会拆任务；&lt;/li&gt;
&lt;li&gt;会读项目；&lt;/li&gt;
&lt;li&gt;会让模型改代码；&lt;/li&gt;
&lt;li&gt;会运行和验证；&lt;/li&gt;
&lt;li&gt;会根据错误继续迭代；&lt;/li&gt;
&lt;li&gt;会把常用流程沉淀成工具或技能。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果只学某一个工具，很容易被工具界面限制住。换一个模型、换一个编辑器、换一个 CLI，就又不知道怎么做。路线图的好处是先建立工作方式，再把工具放到合适的位置。&lt;/p&gt;
&lt;h2 id=&#34;对非程序员尤其有用&#34;&gt;对非程序员尤其有用
&lt;/h2&gt;&lt;p&gt;Vibe Coding 最大的吸引力，是让非专业程序员也能做出原型。&lt;/p&gt;
&lt;p&gt;产品经理可以把产品想法变成可交互 demo，设计师可以验证交互逻辑，运营可以写内部工具，学生可以快速做课程项目，创业者可以在早期验证需求。这些人不一定要成为传统意义上的全职工程师，但需要掌握一套“让 AI 帮我把想法落地”的方法。&lt;/p&gt;
&lt;p&gt;这也是 easy-vibe 适合中文社区的原因。很多中文用户已经知道 AI 能写代码，但还缺少系统入门材料：从开发环境、提示词、项目结构、调试方法到 Agent 工具使用，最好能用中文解释清楚，并配合练习逐步推进。&lt;/p&gt;
&lt;p&gt;对这类用户来说，最重要的不是一上来学复杂框架，而是先跑通完整闭环：提出需求、生成项目、运行起来、发现问题、继续修改、最终得到一个可用版本。&lt;/p&gt;
&lt;h2 id=&#34;进阶部分开始靠近真实-ai-开发工作流&#34;&gt;进阶部分开始靠近真实 AI 开发工作流
&lt;/h2&gt;&lt;p&gt;easy-vibe 里提到的 Claude Code、MCP、Skills、Agent Teams，已经不只是入门概念。&lt;/p&gt;
&lt;p&gt;Claude Code 代表的是终端编程 Agent：模型可以进入本地项目，读取文件、修改代码、运行命令。MCP 解决的是工具和数据源接入，让模型不只停留在聊天框里。Skills 则把可复用流程沉淀下来，例如固定的项目生成、文档整理、测试检查或内容生产流程。Agent Teams 进一步把任务拆给多个智能体协作。&lt;/p&gt;
&lt;p&gt;这些内容对新手来说可能有点远，但它们值得提前了解。因为 Vibe Coding 的发展方向已经很清楚：从“让 AI 写一段代码”，走向“让 AI 参与一个完整项目流程”。&lt;/p&gt;
&lt;p&gt;如果学习路线只停留在提示词层面，很快就会跟不上工具演进。反过来，如果一开始就把所有高级概念塞给新手，又会让人无从下手。easy-vibe 的合理价值，是把这些内容放在一条逐步升级的路径里。&lt;/p&gt;
&lt;h2 id=&#34;学习时要避免两个误区&#34;&gt;学习时要避免两个误区
&lt;/h2&gt;&lt;p&gt;第一个误区，是以为 Vibe Coding 等于不会代码也能完全不管代码。&lt;/p&gt;
&lt;p&gt;AI 可以生成很多内容，但用户仍然需要判断结果是否正确。至少要能看懂项目结构、知道怎么运行、知道错误大概发生在哪里。即使不写复杂代码，也要具备基本的工程常识。&lt;/p&gt;
&lt;p&gt;第二个误区，是以为工具越高级越好。&lt;/p&gt;
&lt;p&gt;新手不一定一开始就需要 Claude Code、MCP 或多 Agent。更好的顺序是先用简单项目建立反馈循环，再逐步引入终端、版本管理、测试、工具调用和自动化流程。工具要跟任务复杂度匹配，否则很容易变成“看起来很强，但不知道用来做什么”。&lt;/p&gt;
&lt;h2 id=&#34;适合怎么用&#34;&gt;适合怎么用
&lt;/h2&gt;&lt;p&gt;如果你刚接触 Vibe Coding，可以把 easy-vibe 当作学习清单来用。&lt;/p&gt;
&lt;p&gt;先从基础概念和简单练习开始，不急着追所有工具。做一个小项目，例如个人主页、数据看板、表单工具、自动化脚本或知识库 demo。过程中重点观察 AI 在哪些地方帮得上忙，哪些地方需要你自己确认。&lt;/p&gt;
&lt;p&gt;等你能稳定完成小项目，再开始学习更复杂的内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用终端工具处理本地项目；&lt;/li&gt;
&lt;li&gt;用 Git 管理每次修改；&lt;/li&gt;
&lt;li&gt;用 RAG 接入自己的资料；&lt;/li&gt;
&lt;li&gt;用 MCP 连接外部工具；&lt;/li&gt;
&lt;li&gt;用 Skills 固化重复流程；&lt;/li&gt;
&lt;li&gt;用 Agent Teams 拆分复杂任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样学出来的 Vibe Coding 才不只是会问 AI，而是能把 AI 放进自己的工作流程里。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;easy-vibe 适合被看作 Vibe Coding 的中文入门地图。它把零散的 AI 编程概念、工具和练习组织成一条路径，让新手更容易从“听说 AI 能写代码”走到“我能用 AI 做出一个项目”。&lt;/p&gt;
&lt;p&gt;Vibe Coding 真正有价值的地方，不是让人跳过所有学习，而是降低从想法到原型的门槛。你仍然需要理解需求、组织任务、验证结果和控制风险，但很多重复、枯燥、容易卡住的步骤，可以交给 AI 协助完成。&lt;/p&gt;
&lt;p&gt;如果你想系统入门 AI 编程，又不想一开始就陷入工具名词和复杂工程配置，easy-vibe 是一个值得收藏的起点。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Anthropic financial-services：把金融 Agent 场景做成可复用模板</title>
        <link>https://knightli.com/2026/05/16/anthropic-financial-services-agent-templates/</link>
        <pubDate>Sat, 16 May 2026 22:43:08 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/16/anthropic-financial-services-agent-templates/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/financial-services&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/financial-services&lt;/a&gt; 是 Anthropic 面向金融服务行业发布的参考项目。它不是一个单一应用，而是一组可以拆开学习和复用的示例：Agents、Plugins、Skills、MCP 连接器，以及围绕金融工作流设计的提示词和集成方式。&lt;/p&gt;
&lt;p&gt;这个项目值得关注，不是因为它提供了某个“万能金融助手”，而是因为它把金融行业里常见的 AI 落地问题拆成了更具体的组件：不同岗位需要什么 Agent、哪些数据源需要接入、哪些任务可以自动化、哪些环节仍然需要人工判断。&lt;/p&gt;
&lt;h2 id=&#34;它更像金融-agent-的样板间&#34;&gt;它更像金融 Agent 的样板间
&lt;/h2&gt;&lt;p&gt;很多企业谈 AI Agent 时，容易停留在抽象层面：能读文件、能查数据、能写报告、能调用工具。但真正进入金融场景后，问题会变得具体得多。&lt;/p&gt;
&lt;p&gt;投行分析师需要整理公司资料、生成交易简报、比对可比公司；股票研究需要读财报、看新闻、做估值和风险分析；私募和资管团队要筛项目、写 memo、跟踪组合公司；财富管理要把客户画像、市场信息和投资建议放在一个合规框架里。&lt;/p&gt;
&lt;p&gt;这些场景不能只靠一个通用聊天框完成。它们需要角色、流程、数据源、输出格式和权限边界。Anthropic 这个仓库的价值就在这里：它把金融服务行业里的多个典型岗位和任务拆成可以参考的 Agent 模板。&lt;/p&gt;
&lt;h2 id=&#34;为什么要同时提供-agentspluginsskills-和-mcp&#34;&gt;为什么要同时提供 Agents、Plugins、Skills 和 MCP
&lt;/h2&gt;&lt;p&gt;从项目结构看，Anthropic 没有只给一套提示词，而是同时提供了多种组件。这背后其实对应了企业落地 Agent 的几层需求。&lt;/p&gt;
&lt;p&gt;Agents 更像面向角色或任务的工作单元。它定义“这个智能体要做什么、怎样做、何时调用工具、如何输出结果”。&lt;/p&gt;
&lt;p&gt;Plugins 更像外部能力扩展。金融工作很少只发生在模型内部，往往要连接数据库、文档系统、市场数据、CRM、研究库和内部流程系统。&lt;/p&gt;
&lt;p&gt;Skills 更像可复用的专业能力包。比如固定格式的分析框架、报告结构、检查清单、数据处理方法，都可以沉淀成技能，而不是每次重新写提示词。&lt;/p&gt;
&lt;p&gt;MCP 连接器则解决工具接入和上下文标准化问题。对企业来说，工具越多，越需要一个相对统一的连接方式，否则每个系统都要单独适配，维护成本会很高。&lt;/p&gt;
&lt;p&gt;这几个部分组合起来，才更接近真实企业里的 AI 工作流。&lt;/p&gt;
&lt;h2 id=&#34;金融行业为什么适合做-agent-示例&#34;&gt;金融行业为什么适合做 Agent 示例
&lt;/h2&gt;&lt;p&gt;金融服务是很适合展示 Agent 的行业，因为它同时具备三个特点。&lt;/p&gt;
&lt;p&gt;第一，信息密度高。金融工作大量依赖财报、公告、会议纪要、研究报告、交易数据、客户资料和监管文件。模型如果只靠通用知识，很快就会失效，必须接入真实数据源。&lt;/p&gt;
&lt;p&gt;第二，输出格式稳定。投资备忘录、公司简介、KYC 文件、研究摘要、客户简报、基金运营报告，都有相对固定的结构。这让 Agent 更容易形成可验证的工作流。&lt;/p&gt;
&lt;p&gt;第三，风险边界清楚。金融行业对合规、审计、权限和可追溯性要求很高。AI 不能随意给投资建议，也不能绕过审批流程。这反而逼着 Agent 设计得更工程化：要保留引用、区分事实和推断、记录工具调用、限制可执行操作。&lt;/p&gt;
&lt;p&gt;所以这个项目不只是给金融公司看的。任何想做企业级 Agent 的团队，都可以从里面观察 Anthropic 如何拆解行业场景。&lt;/p&gt;
&lt;h2 id=&#34;它覆盖了哪些典型流程&#34;&gt;它覆盖了哪些典型流程
&lt;/h2&gt;&lt;p&gt;从项目说明看，这个仓库覆盖了多个金融服务方向，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;投资银行；&lt;/li&gt;
&lt;li&gt;股票研究；&lt;/li&gt;
&lt;li&gt;私募股权；&lt;/li&gt;
&lt;li&gt;财富管理；&lt;/li&gt;
&lt;li&gt;基金运营；&lt;/li&gt;
&lt;li&gt;KYC 和合规相关流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些流程的共同点是：都需要大量阅读、整理、比对和生成结构化材料。AI 在这里最适合做的，不是直接替人拍板，而是减少信息处理和文档生产的时间。&lt;/p&gt;
&lt;p&gt;例如，投行场景里，Agent 可以帮忙整理目标公司资料、抽取关键财务指标、生成初版交易摘要。研究场景里，它可以先读财报和新闻，列出关键变化和待确认问题。KYC 场景里，它可以辅助检查资料是否完整、是否存在异常线索。&lt;/p&gt;
&lt;p&gt;最终判断仍然应该由专业人员负责。Agent 的角色更像助理、分析员和流程加速器。&lt;/p&gt;
&lt;h2 id=&#34;对企业落地的启发&#34;&gt;对企业落地的启发
&lt;/h2&gt;&lt;p&gt;这个仓库最有参考价值的地方，是它把“模型能力”转成了“业务组件”。&lt;/p&gt;
&lt;p&gt;企业内部做 AI 项目时，经常会遇到一个问题：模型演示很好看，但真正接入业务后很难复用。一个团队写了一套提示词，另一个团队又重新写一套；一个系统接了数据库，另一个系统又重新做接口；安全和审计要求也散落在各处。&lt;/p&gt;
&lt;p&gt;更稳妥的方式是把能力拆成几类资产：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;面向岗位的 Agent；&lt;/li&gt;
&lt;li&gt;面向流程的 Skills；&lt;/li&gt;
&lt;li&gt;面向系统接入的 MCP 连接器；&lt;/li&gt;
&lt;li&gt;面向权限和审计的执行规则；&lt;/li&gt;
&lt;li&gt;面向业务输出的模板和检查清单。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做的好处是，企业不会每次都从“写一个聊天机器人”开始，而是逐步积累可维护的 AI 工作流资产。&lt;/p&gt;
&lt;h2 id=&#34;不能忽视合规和责任边界&#34;&gt;不能忽视合规和责任边界
&lt;/h2&gt;&lt;p&gt;金融 Agent 最容易被误解的一点，是把“能生成分析”误认为“可以替代决策”。&lt;/p&gt;
&lt;p&gt;在金融服务里，AI 输出通常只能作为辅助材料。它可以整理事实、生成草稿、提示风险、补全文档，但不能绕过投研、风控、法务、合规和客户适当性要求。尤其是涉及投资建议、交易决策、客户资产配置和身份审查时，人工审批和责任链必须保留。&lt;/p&gt;
&lt;p&gt;这也是为什么企业级 Agent 不能只看模型回答质量。它还要看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据来源是否可靠；&lt;/li&gt;
&lt;li&gt;引用和证据是否可追溯；&lt;/li&gt;
&lt;li&gt;工具调用是否有记录；&lt;/li&gt;
&lt;li&gt;敏感数据是否被限制；&lt;/li&gt;
&lt;li&gt;输出是否经过人工确认；&lt;/li&gt;
&lt;li&gt;错误结果能否被发现和回滚。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题不解决，Agent 越自动化，风险半径就越大。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;anthropics/financial-services 更像一套金融 Agent 参考实现，而不是一个开箱即用的金融产品。它展示了 Anthropic 对企业 AI 落地的一种思路：不要只做通用聊天助手，而是围绕具体岗位、具体流程、具体数据源和具体权限边界来组织 Agent。&lt;/p&gt;
&lt;p&gt;对金融机构来说，它可以作为内部 AI 工作流设计的参考。对开发者来说，它提供了一个观察企业级 Agent 架构的样本：Agents 负责角色和任务，Skills 沉淀专业流程，Plugins 和 MCP 负责连接外部系统，最终让模型进入真实业务流程。&lt;/p&gt;
&lt;p&gt;如果说早期 AI 工具解决的是“怎么让模型回答问题”，这类项目更关心的是“怎么让模型在受控边界内参与工作”。这才是企业级 Agent 真正难的地方。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-TUI：把 DeepSeek V4 变成终端里的编程智能体</title>
        <link>https://knightli.com/2026/05/16/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Sat, 16 May 2026 22:41:41 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/16/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI&lt;/a&gt; 是一个把 DeepSeek V4 接入终端开发流程的开源项目。它不是普通聊天壳，而是更接近 Claude Code、Codex CLI 这类“命令行编程智能体”：能看文件、改代码、执行命令、调用工具，并在终端里用 TUI 方式持续推进任务。&lt;/p&gt;
&lt;p&gt;如果你已经习惯在编辑器和终端之间切换，这类工具的价值很直接：不用把代码来回复制到网页对话框里，也不用手动描述完整项目结构。你把任务交给它，它可以在当前工作区里读取上下文、规划步骤、执行修改，再把结果交还给你审查。&lt;/p&gt;
&lt;h2 id=&#34;它解决的是-deepseek-的使用入口问题&#34;&gt;它解决的是 DeepSeek 的使用入口问题
&lt;/h2&gt;&lt;p&gt;DeepSeek 模型本身提供了很强的推理和代码能力，但模型能力要落到真实开发流程里，还需要一层工程化外壳。&lt;/p&gt;
&lt;p&gt;网页聊天适合问问题，不适合长时间改项目。API 适合接入系统，但普通开发者还要自己写工具调用、上下文管理、文件读写和权限控制。DeepSeek-TUI 想补上的正是这一层：把 DeepSeek V4 包成一个可以在终端里工作的 Agent。&lt;/p&gt;
&lt;p&gt;从项目介绍看，它的重点能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;终端 TUI 界面；&lt;/li&gt;
&lt;li&gt;面向 DeepSeek V4 的对话与任务执行；&lt;/li&gt;
&lt;li&gt;工具调用和文件操作；&lt;/li&gt;
&lt;li&gt;1M 上下文支持；&lt;/li&gt;
&lt;li&gt;Auto 模式；&lt;/li&gt;
&lt;li&gt;子智能体；&lt;/li&gt;
&lt;li&gt;沙箱执行；&lt;/li&gt;
&lt;li&gt;持久化任务队列。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些功能组合起来，目标不是“让模型回答得更像人”，而是让模型更容易进入开发现场。&lt;/p&gt;
&lt;h2 id=&#34;tui-比纯命令行更适合长任务&#34;&gt;TUI 比纯命令行更适合长任务
&lt;/h2&gt;&lt;p&gt;很多 AI CLI 工具一开始都是纯文本交互：输入提示词，等待输出，再复制命令或补充上下文。这种方式简单，但任务一长就容易混乱。&lt;/p&gt;
&lt;p&gt;TUI 的好处是能把会话、文件、执行结果、任务状态放在一个更稳定的界面里。对编程 Agent 来说，这很重要。因为一次代码任务往往不是一问一答，而是包含：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;理解项目结构；&lt;/li&gt;
&lt;li&gt;查找相关文件；&lt;/li&gt;
&lt;li&gt;修改代码；&lt;/li&gt;
&lt;li&gt;运行测试或命令；&lt;/li&gt;
&lt;li&gt;根据报错继续修复；&lt;/li&gt;
&lt;li&gt;总结变更。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果界面只是一串日志，用户很难快速判断 Agent 走到了哪一步。TUI 至少给了一个更适合观察和接管的入口。&lt;/p&gt;
&lt;h2 id=&#34;auto-模式适合明确边界的任务&#34;&gt;Auto 模式适合明确边界的任务
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 提到的 Auto 模式，适合用在边界比较清楚的工作里。例如修一个小 bug、补一个脚本、改一段配置、整理一组文档、实现一个局部功能。&lt;/p&gt;
&lt;p&gt;这类任务的共同点是：目标清楚，检查方式明确，影响范围可控。Agent 可以自己查文件、改文件、跑命令，然后把结果交给用户确认。&lt;/p&gt;
&lt;p&gt;但 Auto 模式不适合无限放权。尤其是在真实项目里，文件删除、批量重构、数据库迁移、部署命令都应该有明确确认。编程 Agent 的效率来自自动化，但风险也来自自动化。越是能执行命令的工具，越需要沙箱、权限边界和人工审查。&lt;/p&gt;
&lt;h2 id=&#34;子智能体的意义在于拆任务&#34;&gt;子智能体的意义在于拆任务
&lt;/h2&gt;&lt;p&gt;子智能体不是新概念，但放在代码场景里很有用。&lt;/p&gt;
&lt;p&gt;一个稍复杂的任务，通常会同时需要几类工作：有人负责读代码，有人负责改实现，有人负责检查测试，有人负责整理文档。传统多 Agent 系统经常显得花哨，是因为它们没有真实工具和真实工作区，只是在对话里互相讨论。&lt;/p&gt;
&lt;p&gt;如果子智能体能结合文件系统、命令执行和任务队列，它就更像一种任务拆分机制。比如一个子智能体专门分析依赖关系，另一个负责修改某个模块，主智能体再整合结果。这样可以减少单个上下文里堆太多无关信息的问题。&lt;/p&gt;
&lt;p&gt;当然，子智能体也会带来额外成本：更多 token、更复杂的状态、更难追踪的责任边界。所以它适合中等复杂度以上的任务，不一定适合每一次小修改。&lt;/p&gt;
&lt;h2 id=&#34;1m-上下文不是万能但很适合读项目&#34;&gt;1M 上下文不是万能，但很适合读项目
&lt;/h2&gt;&lt;p&gt;1M 上下文听起来很夸张，但在编程场景里并不只是营销数字。&lt;/p&gt;
&lt;p&gt;真实代码库的上下文很碎：README、配置文件、类型定义、测试、调用链、历史约定、错误日志，都可能影响一次修改。更长上下文能减少“只看局部就动手”的问题，也能让模型保留更多项目约束。&lt;/p&gt;
&lt;p&gt;不过，上下文长不等于判断一定更准。代码任务仍然需要检索、筛选和验证。把整个项目塞进上下文并不一定比精准读取相关文件更好。好的编程 Agent 应该把长上下文当作缓冲区，而不是把它当成替代工程判断的捷径。&lt;/p&gt;
&lt;h2 id=&#34;更适合哪些用户&#34;&gt;更适合哪些用户
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 更适合几类人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在终端里使用 DeepSeek 做代码任务的开发者；&lt;/li&gt;
&lt;li&gt;不想自己搭工具调用和文件操作框架的人；&lt;/li&gt;
&lt;li&gt;已经熟悉 Claude Code、Codex CLI，但想尝试 DeepSeek 模型入口的人；&lt;/li&gt;
&lt;li&gt;需要本地项目上下文，而不是只在网页里问代码片段的人；&lt;/li&gt;
&lt;li&gt;想把 AI 编程流程放进命令行环境的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔问一个函数怎么写，网页聊天已经够用。如果你希望模型直接参与项目修改，终端 Agent 才更有意义。&lt;/p&gt;
&lt;h2 id=&#34;需要关注的风险&#34;&gt;需要关注的风险
&lt;/h2&gt;&lt;p&gt;这类工具最需要关注三件事。&lt;/p&gt;
&lt;p&gt;第一是权限。只要工具能读写文件、执行命令，就要确认它默认能访问哪里、能不能删除文件、能不能联网、危险命令是否需要确认。&lt;/p&gt;
&lt;p&gt;第二是可回滚。使用前最好保持 Git 工作区干净，让每次 Agent 修改都能被 &lt;code&gt;git diff&lt;/code&gt; 清楚看到。不要在一堆未提交改动里让 Agent 自动改项目。&lt;/p&gt;
&lt;p&gt;第三是验证。Agent 写完代码不代表任务完成。测试、构建、lint、人工 review 仍然要保留。AI 编程工具可以提高推进速度，但不能替代最后的工程确认。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 的意义不在于又多了一个聊天客户端，而在于它把 DeepSeek V4 放进了更接近真实开发工作的终端环境里。&lt;/p&gt;
&lt;p&gt;对开发者来说，模型能力只是第一步。真正影响体验的是：它能不能读项目、能不能安全改文件、能不能执行验证命令、能不能在长任务里保持状态、能不能让用户随时接管。&lt;/p&gt;
&lt;p&gt;如果你想把 DeepSeek 用在日常代码修改、项目阅读和自动化开发任务里，DeepSeek-TUI 值得关注。它代表的方向也很清楚：AI 编程工具正在从“回答代码问题”转向“参与项目执行”。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 手机远程访问来了：用 ChatGPT App 跟进 Mac 上的编程任务</title>
        <link>https://knightli.com/2026/05/16/codex-mobile-remote-access-chatgpt-app/</link>
        <pubDate>Sat, 16 May 2026 17:42:40 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/16/codex-mobile-remote-access-chatgpt-app/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 5 月中旬把 &lt;code&gt;Codex remote access&lt;/code&gt; 带进了 ChatGPT 手机 App。这个功能的重点不是“在手机上写代码”，而是让你用手机远程跟进 Mac 上正在运行的 Codex。&lt;/p&gt;
&lt;p&gt;它更像一个移动审批和监控入口：Codex 继续在电脑上读项目、跑命令、改文件、看测试结果；手机端负责查看进度、回答问题、补充指令和批准操作。&lt;/p&gt;
&lt;p&gt;对经常让 Codex 跑长任务的人来说，这个变化很实用。你不必一直坐在电脑前等它卡在哪里，出门或离开工位后，也能从 ChatGPT App 里接上现场。&lt;/p&gt;
&lt;h2 id=&#34;它能做什么&#34;&gt;它能做什么
&lt;/h2&gt;&lt;p&gt;根据 OpenAI Codex remote connections 文档，手机端远程访问可以做这些事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 Mac 主机上的项目里开启新线程，或继续已有线程；&lt;/li&gt;
&lt;li&gt;发送后续指令，回答 Codex 提出的问题，调整任务方向；&lt;/li&gt;
&lt;li&gt;批准命令和其他操作；&lt;/li&gt;
&lt;li&gt;查看输出、diff、测试结果、终端输出和截图；&lt;/li&gt;
&lt;li&gt;在 Codex 完成任务或需要你注意时收到通知；&lt;/li&gt;
&lt;li&gt;在多个已连接主机和线程之间切换。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，手机端不是一个简化版聊天窗口，而是接入了 Codex 当前工作现场。你看到的不只是模型回复，还有它在主机上产生的工程上下文。&lt;/p&gt;
&lt;h2 id=&#34;使用前需要什么&#34;&gt;使用前需要什么
&lt;/h2&gt;&lt;p&gt;当前手机远程访问有几个前提。&lt;/p&gt;
&lt;p&gt;第一，你需要有可用的 Codex 权限，并且手机和 Mac 使用同一个 ChatGPT 账号与 workspace。&lt;/p&gt;
&lt;p&gt;第二，手机上要安装最新版 ChatGPT App，iOS 或 Android 都可以。如果 App 里看不到 Codex，先更新 ChatGPT。&lt;/p&gt;
&lt;p&gt;第三，主机目前要求是 Mac，并且需要保持在线、唤醒、正在运行 Codex App。OpenAI 文档明确写到，移动端设置和设备控制当前需要主机上运行 &lt;code&gt;Codex App for macOS&lt;/code&gt;，不能从 Codex CLI 或 IDE Extension 里完成设置。&lt;/p&gt;
&lt;p&gt;第四，如果账号或 workspace 要求 MFA、SSO 或 passkey，需要先完成对应认证。团队 workspace 还可能需要管理员开启 Remote Control access。&lt;/p&gt;
&lt;p&gt;这些限制说明它目前更像是 Codex App for macOS 的移动控制能力，而不是通用远程桌面，也不是所有 Codex 入口都能用。&lt;/p&gt;
&lt;h2 id=&#34;codex-手机远程访问的限制&#34;&gt;Codex 手机远程访问的限制
&lt;/h2&gt;&lt;p&gt;这个功能虽然很方便，但限制也要提前看清楚。&lt;/p&gt;
&lt;p&gt;第一，当前需要 &lt;code&gt;macOS host&lt;/code&gt;。手机端连接的是 Mac 上运行的 Codex App，不是直接连接 Codex CLI、IDE Extension，也不是任意 Linux / Windows 开发机。&lt;/p&gt;
&lt;p&gt;第二，主机必须在线。Mac 需要保持唤醒、联网，并持续运行 Codex App。如果电脑睡眠、断网或 Codex 关闭，手机端远程会话就可能断开。&lt;/p&gt;
&lt;p&gt;第三，连接依赖扫码流程。你需要先在 Mac 端打开 &lt;code&gt;Set up Codex mobile&lt;/code&gt;，再用手机扫描二维码进入 ChatGPT 完成绑定。它不是输入一个地址就能直接连，也不是纯账号登录后自动发现所有设备。&lt;/p&gt;
&lt;p&gt;第四，远程操作仍然要经过审批流程。手机端可以批准命令和其他操作，但这也意味着你需要看清 Codex 请求做什么，再决定是否继续。尤其是涉及终端命令、文件修改、测试运行和外部访问时，不应该把手机审批当成无脑点确认。&lt;/p&gt;
&lt;p&gt;所以它适合“人离开电脑后继续跟进任务”，不适合替代完整开发环境，也不适合把主机长期无人值守地开放给远程操作。&lt;/p&gt;
&lt;h2 id=&#34;怎么连接&#34;&gt;怎么连接
&lt;/h2&gt;&lt;p&gt;设置流程从 Mac 上的 Codex App 开始。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 Mac 上打开 Codex。&lt;/li&gt;
&lt;li&gt;在侧边栏选择 &lt;code&gt;Set up Codex mobile&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Codex 会为这台主机开启远程访问，并显示一个二维码。&lt;/li&gt;
&lt;li&gt;用手机扫描二维码，进入 ChatGPT 里的 Codex mobile setup 流程。&lt;/li&gt;
&lt;li&gt;确认同一个 ChatGPT 账号和 workspace。&lt;/li&gt;
&lt;li&gt;完成必要的 MFA、SSO 或 passkey 验证。&lt;/li&gt;
&lt;li&gt;设置成功后，这台 Mac 会出现在手机端 Codex 里。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;连接完成后，可以在 Mac 端 Codex 的 &lt;code&gt;Settings &amp;gt; Connections&lt;/code&gt; 管理已连接设备。这里也可以设置是否让电脑保持唤醒、是否启用 Computer Use、是否安装 Chrome extension。&lt;/p&gt;
&lt;h2 id=&#34;手机端适合干什么&#34;&gt;手机端适合干什么
&lt;/h2&gt;&lt;p&gt;手机端最适合三类操作。&lt;/p&gt;
&lt;p&gt;第一类是审批。Codex 需要运行命令、访问文件、继续某个动作时，你可以在手机上看清请求，再决定是否批准。&lt;/p&gt;
&lt;p&gt;第二类是纠偏。比如 Codex 走偏了、误解了需求、测试失败后需要你选方向，你可以直接补一句说明，让它继续处理。&lt;/p&gt;
&lt;p&gt;第三类是查看结果。你可以看 diff、测试输出、终端日志和截图，不必回到电脑前才知道任务跑成什么样。&lt;/p&gt;
&lt;p&gt;这和“手机写代码”不是一回事。真正有价值的是把手机变成工程任务的随身控制台，让 Codex 在主机上干重活，人只在关键节点介入。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;p&gt;如果手机上看不到主机，先确认 Mac 上 Codex App 仍在运行，并且开启了 &lt;code&gt;Allow other devices to connect&lt;/code&gt;。手机和主机也必须使用同一个 ChatGPT 账号与 workspace。&lt;/p&gt;
&lt;p&gt;如果审批请求没有出现，可以打开 ChatGPT 手机 App，进入 Codex，再重新扫码或从主机重新开始设置。团队账号还要确认管理员是否已经允许 Remote Control access。&lt;/p&gt;
&lt;p&gt;如果远程会话断开，通常要检查三件事：Mac 是否睡眠、网络是否断开、Codex App 是否关闭。远程访问依赖主机保持唤醒和联网。&lt;/p&gt;
&lt;p&gt;如果认证卡住，就先完成账号或 workspace 的 MFA、SSO、passkey 流程。企业环境里，权限问题往往要管理员介入。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;这个功能适合这些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常让 Codex 跑较长的代码修改任务；&lt;/li&gt;
&lt;li&gt;需要在通勤、会议间隙、离开工位时继续跟进任务；&lt;/li&gt;
&lt;li&gt;希望及时审批命令，而不是让 Codex 停在等待状态；&lt;/li&gt;
&lt;li&gt;同时管理多个项目或多个 Codex 线程；&lt;/li&gt;
&lt;li&gt;使用 Mac 作为主力开发机，并已经习惯 Codex App。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主要使用 Windows 或 Linux 主机；&lt;/li&gt;
&lt;li&gt;只用 Codex CLI 或 IDE Extension；&lt;/li&gt;
&lt;li&gt;希望手机端独立完成完整开发环境；&lt;/li&gt;
&lt;li&gt;网络不稳定，或 Mac 经常休眠；&lt;/li&gt;
&lt;li&gt;团队 workspace 没有开启远程控制权限。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;Codex 手机远程访问的意义，不是把开发工作搬到手机屏幕上，而是把“等待 Codex 跑完”的时间变得更可控。&lt;/p&gt;
&lt;p&gt;以前 Codex 长任务经常卡在审批、追问、测试失败或方向确认上。现在这些节点可以通过 ChatGPT 手机 App 处理，Mac 继续做真正的工程执行，手机负责轻量决策。&lt;/p&gt;
&lt;p&gt;这会让 Codex 更像后台工程代理：它可以在电脑上持续工作，人不用一直盯着终端，只需要在需要判断的时候回来。限制也很清楚，目前它强依赖 macOS 上的 Codex App、同一账号 workspace、主机在线和组织权限。&lt;/p&gt;
&lt;p&gt;如果你已经在 Mac 上重度使用 Codex，这个功能值得开启。如果你还只是偶尔问几句代码问题，它的价值可能没有那么明显。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：ChatGPT Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/codex/remote-connections&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Developers：Codex Remote Connections&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ChatGPT File Library 是什么：文件保存、容量限制和隐私边界</title>
        <link>https://knightli.com/2026/05/16/chatgpt-file-library-storage-limits-privacy/</link>
        <pubDate>Sat, 16 May 2026 17:40:14 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/16/chatgpt-file-library-storage-limits-privacy/</guid>
        <description>&lt;p&gt;&lt;code&gt;ChatGPT File Library&lt;/code&gt; 可以理解成 ChatGPT 里的文件库。&lt;/p&gt;
&lt;p&gt;以前你在某个对话里上传文件，更多像是一次性给这轮聊天使用。File Library 出现后，上传到 ChatGPT 或由 ChatGPT 创建的文件会保存到账号里，之后可以在 Library 中重新找到、下载、删除，或者在新对话里再次引用。&lt;/p&gt;
&lt;p&gt;这让 ChatGPT 更像一个长期资料工作区，而不只是临时聊天窗口。&lt;/p&gt;
&lt;h2 id=&#34;最新可用范围&#34;&gt;最新可用范围
&lt;/h2&gt;&lt;p&gt;根据 OpenAI 2026 年 5 月 14 日的 ChatGPT Release Notes，File Library 正在扩展到 Free 和 Go 用户，也包括欧洲经济区用户。官方同时引入了跨计划的存储管理。&lt;/p&gt;
&lt;p&gt;需要注意的是，OpenAI 专门的 File storage and Library 帮助页在我查看时仍写着较旧口径：Library 只面向欧洲经济区、瑞士和英国之外的 Plus、Pro、Business 用户，并且只在网页端可用。&lt;/p&gt;
&lt;p&gt;这类帮助页有时会滞后于 Release Notes。本文按更新日期更近的 2026 年 5 月 14 日 Release Notes 理解：File Library 已开始向 Free、Go 等更多用户扩展，但实际账号是否可见，仍取决于分批推出进度、地区和客户端版本。&lt;/p&gt;
&lt;h2 id=&#34;它会保存哪些文件&#34;&gt;它会保存哪些文件
&lt;/h2&gt;&lt;p&gt;ChatGPT 会自动保存你上传或创建的文件，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文档；&lt;/li&gt;
&lt;li&gt;表格；&lt;/li&gt;
&lt;li&gt;演示文稿；&lt;/li&gt;
&lt;li&gt;PDF；&lt;/li&gt;
&lt;li&gt;图片；&lt;/li&gt;
&lt;li&gt;ChatGPT 生成的文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生成图片仍会继续出现在 Images 标签页。File Library 更像是统一管理上传文件和生成文件的地方。&lt;/p&gt;
&lt;p&gt;如果你经常让 ChatGPT 分析 PDF、整理表格、生成文档、处理演示稿，这个功能会减少重复上传。同一份资料不必每次重新找一遍，也方便在不同对话里继续使用。&lt;/p&gt;
&lt;h2 id=&#34;怎么把文件加入新对话&#34;&gt;怎么把文件加入新对话
&lt;/h2&gt;&lt;p&gt;在支持的客户端里，可以从输入框附近的附件或添加菜单进入文件选择。&lt;/p&gt;
&lt;p&gt;常见流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 composer 菜单，也就是附件或添加按钮。&lt;/li&gt;
&lt;li&gt;选择 &lt;code&gt;Add from library&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;选择要引用的文件。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Release Notes 还提到，Library 和 composer 里的 Recent files 支持 Web、iOS 和 Android。也就是说，移动端至少可以从最近文件入口继续使用保存过的文件。&lt;/p&gt;
&lt;h2 id=&#34;怎么查找和管理&#34;&gt;怎么查找和管理
&lt;/h2&gt;&lt;p&gt;在网页端，可以从左侧边栏进入 Library，集中查看上传和生成的文件。&lt;/p&gt;
&lt;p&gt;文件可以按类型和来源筛选。官方帮助页提到的筛选维度包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上传文件或生成文件；&lt;/li&gt;
&lt;li&gt;图片；&lt;/li&gt;
&lt;li&gt;文档；&lt;/li&gt;
&lt;li&gt;表格；&lt;/li&gt;
&lt;li&gt;演示文稿；&lt;/li&gt;
&lt;li&gt;PDF。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Storage 入口可以查看总使用量、剩余容量，以及是否超过限制。Release Notes 还说明，存储管理可从 &lt;code&gt;Settings &amp;gt; Storage&lt;/code&gt; 进入，文件也可以直接在 Library 中删除。&lt;/p&gt;
&lt;h2 id=&#34;各计划容量&#34;&gt;各计划容量
&lt;/h2&gt;&lt;p&gt;OpenAI 在 2026 年 5 月 14 日的 Release Notes 中给出的容量如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;计划&lt;/th&gt;
          &lt;th&gt;File Library 容量&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Free&lt;/td&gt;
          &lt;td&gt;500 MB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Go&lt;/td&gt;
          &lt;td&gt;4 GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Plus&lt;/td&gt;
          &lt;td&gt;20 GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Business&lt;/td&gt;
          &lt;td&gt;20 GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro&lt;/td&gt;
          &lt;td&gt;100 GB&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个容量包括上传的文件，也包括 ChatGPT 创建的文件，例如文档、表格、演示文稿和图片。&lt;/p&gt;
&lt;p&gt;对普通用户来说，500 MB 足够放一些 PDF、截图和轻量文档，但不适合长期堆大量图片、表格和演示稿。对重度用户来说，20 GB 或 100 GB 会更像真正的资料库。&lt;/p&gt;
&lt;h2 id=&#34;单文件限制&#34;&gt;单文件限制
&lt;/h2&gt;&lt;p&gt;OpenAI 帮助页列出的文件限制包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上传到 GPT 或 ChatGPT 对话的单个文件最大 512 MB；&lt;/li&gt;
&lt;li&gt;文本和文档类文件最多 200 万 token；&lt;/li&gt;
&lt;li&gt;CSV 或电子表格通常约 50 MB，具体取决于每行大小；&lt;/li&gt;
&lt;li&gt;图片单张最大 20 MB。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些限制和账号总容量是两回事。即使你的账号还有很多剩余空间，单个文件也不能超过对应上限。&lt;/p&gt;
&lt;h2 id=&#34;删除和下载&#34;&gt;删除和下载
&lt;/h2&gt;&lt;p&gt;文件会保存在账号中，直到你手动删除。&lt;/p&gt;
&lt;p&gt;删除方式一般是在 Library 中选中文件，然后点击删除或垃圾桶图标。OpenAI 帮助页说明，删除后文件会立即从账号中移除，并计划在 30 天内从 OpenAI 系统中永久删除，除非已经去标识化并与账号脱离关联，或出于安全、法律义务需要保留更久。&lt;/p&gt;
&lt;p&gt;文件也可以从 Library 中下载。对于经常让 ChatGPT 生成文档、表格或演示稿的人，下载和清理会成为日常维护的一部分。&lt;/p&gt;
&lt;h2 id=&#34;temporary-chat-不会保存文件&#34;&gt;Temporary Chat 不会保存文件
&lt;/h2&gt;&lt;p&gt;如果你在 Temporary Chat 中上传文件，文件不会保存到账号或 Library。&lt;/p&gt;
&lt;p&gt;这一点很重要。File Library 的默认逻辑是方便长期复用，而 Temporary Chat 更适合临时、敏感、不想留下长期上下文的任务。&lt;/p&gt;
&lt;p&gt;如果只是让 ChatGPT 临时看一份不想保留的文件，可以优先考虑 Temporary Chat。反过来，如果这份资料后面还会反复用，放进 Library 更省事。&lt;/p&gt;
&lt;h2 id=&#34;数据和训练设置&#34;&gt;数据和训练设置
&lt;/h2&gt;&lt;p&gt;OpenAI 帮助页说明，文件和聊天会按照你的设置与数据控制项使用。&lt;/p&gt;
&lt;p&gt;如果开启了 Memory，文件和聊天可能会帮助 ChatGPT 在对话之间记住对你有用的信息。对个人服务用户来说，如果开启了 &lt;code&gt;Improve the model for everyone&lt;/code&gt;，OpenAI 也可能使用提交到 ChatGPT 的内容，包括上传文件，来改进模型表现。这个设置可以在 &lt;code&gt;Settings &amp;gt; Data Controls&lt;/code&gt; 中关闭。&lt;/p&gt;
&lt;p&gt;这意味着 File Library 不是一个单纯的本地文件夹。它是云端账号功能，使用前要想清楚哪些资料适合上传，哪些资料不应该交给第三方服务处理。&lt;/p&gt;
&lt;h2 id=&#34;适合怎么用&#34;&gt;适合怎么用
&lt;/h2&gt;&lt;p&gt;File Library 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长期分析同一组 PDF 或报告；&lt;/li&gt;
&lt;li&gt;反复处理课程资料、会议材料、产品文档；&lt;/li&gt;
&lt;li&gt;让 ChatGPT 继续修改之前生成的文档或表格；&lt;/li&gt;
&lt;li&gt;在多个对话里复用同一份素材；&lt;/li&gt;
&lt;li&gt;把 ChatGPT 变成轻量资料整理工作台。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上传高度敏感的身份证明、合同、病历、财务流水；&lt;/li&gt;
&lt;li&gt;把它当成正式云盘备份；&lt;/li&gt;
&lt;li&gt;不清理旧文件，长期堆积无用资料；&lt;/li&gt;
&lt;li&gt;在不了解数据控制设置时上传公司内部文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;我的判断&#34;&gt;我的判断
&lt;/h2&gt;&lt;p&gt;ChatGPT File Library 的价值不只是“多了一个文件列表”。它改变的是 ChatGPT 的使用方式：过去是一轮一轮聊天，现在开始变成带资料沉淀的工作空间。&lt;/p&gt;
&lt;p&gt;但这个变化也带来新习惯。用户需要定期清理文件，关注容量，区分普通聊天和 Temporary Chat，也要检查数据控制设置。&lt;/p&gt;
&lt;p&gt;如果你经常用 ChatGPT 看文档、改表格、整理资料，File Library 会明显省时间。如果你只是偶尔上传一份敏感文件问几句，反而要更谨慎，别让“方便复用”变成“忘了自己存了什么”。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/20001052-file-storage-and-library-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：File storage and Library in ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：ChatGPT Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>别把 API Key 推上 GitHub：AI 写代码时代的密钥泄露防坑指南</title>
        <link>https://knightli.com/2026/05/16/ai-coding-api-key-leak-github/</link>
        <pubDate>Sat, 16 May 2026 16:26:50 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/16/ai-coding-api-key-leak-github/</guid>
        <description>&lt;p&gt;AI 写代码降低了动手门槛，也把很多原来只会发生在工程团队里的安全问题，带到了新手和非工程用户面前。&lt;/p&gt;
&lt;p&gt;最常见的一类事故，是把 &lt;code&gt;API Key&lt;/code&gt;、&lt;code&gt;Secret&lt;/code&gt;、&lt;code&gt;Token&lt;/code&gt;、数据库连接串或 &lt;code&gt;.env&lt;/code&gt; 配置文件一起推到公开仓库。对本地项目来说，这些文件只是“能让程序跑起来的配置”；一旦进了 GitHub 公共仓库，它们就变成了可以被自动扫描、自动调用、自动滥用的凭证。&lt;/p&gt;
&lt;p&gt;密钥泄露不是小概率事件。GitGuardian 的 2026 年度报告提到，2025 年公共 GitHub 提交里出现了约 2865 万个新增硬编码凭证，AI 服务相关凭证泄露同比增长 81%。这说明问题不只是“有人粗心”，而是 AI 编程、快速原型和公开托管叠加后，泄露规模正在被放大。&lt;/p&gt;
&lt;h2 id=&#34;为什么新手更容易泄露-key&#34;&gt;为什么新手更容易泄露 Key
&lt;/h2&gt;&lt;p&gt;很多 AI Agent 或小工具都有两套“仓库”：一套在本地硬盘里，另一套在 GitHub 上。问题在于，新手经常没有意识到二者的边界。&lt;/p&gt;
&lt;p&gt;本地运行时，&lt;code&gt;config.json&lt;/code&gt;、&lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;settings.yaml&lt;/code&gt; 里放着 API Key，好像只是开发习惯；执行 &lt;code&gt;git add .&lt;/code&gt;、&lt;code&gt;git commit&lt;/code&gt;、&lt;code&gt;git push&lt;/code&gt; 之后，这些文件就可能被完整上传。仓库一旦公开，扫描机器人不需要理解你的业务，只要匹配到密钥格式，就能把它抓走。&lt;/p&gt;
&lt;p&gt;AI 编程还会放大这个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI 生成示例代码时，可能直接把 &lt;code&gt;OPENAI_API_KEY = &amp;quot;sk-...&amp;quot;&lt;/code&gt; 这类写法放进源码。&lt;/li&gt;
&lt;li&gt;新手为了“先跑起来”，容易把密钥硬编码在前端、脚本或配置文件里。&lt;/li&gt;
&lt;li&gt;很多 vibe coding 平台可以直接部署应用，不一定经过 GitHub 的推送保护流程。&lt;/li&gt;
&lt;li&gt;用户可能不知道 AI 生成的项目里到底有哪些文件、哪些接口、哪些默认权限。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;换句话说，AI 可以帮你更快写出能跑的东西，但不会自动替你承担安全责任。&lt;/p&gt;
&lt;h2 id=&#34;gitignore-不是装饰&#34;&gt;&lt;code&gt;.gitignore&lt;/code&gt; 不是装饰
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Git&lt;/code&gt; 负责版本管理，&lt;code&gt;GitHub&lt;/code&gt; 负责托管代码，&lt;code&gt;.gitignore&lt;/code&gt; 则是告诉 Git 哪些文件不要纳入版本历史。&lt;/p&gt;
&lt;p&gt;一个最基本的 AI 项目，至少应该把这些内容排除掉：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config.local.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;secrets.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials.*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但只写 &lt;code&gt;.gitignore&lt;/code&gt; 还不够。它只能阻止“尚未被 Git 跟踪”的文件继续进入提交。如果某个密钥文件已经被提交过，后来再把它写进 &lt;code&gt;.gitignore&lt;/code&gt;，并不能把历史记录里的密钥抹掉。&lt;/p&gt;
&lt;p&gt;所以更稳妥的习惯是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新项目一开始就创建 &lt;code&gt;.gitignore&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;API Key 只放在环境变量或本地配置里。&lt;/li&gt;
&lt;li&gt;示例文件只提供 &lt;code&gt;.env.example&lt;/code&gt;，里面写占位符，不写真实密钥。&lt;/li&gt;
&lt;li&gt;提交前运行一次密钥扫描工具，比如 &lt;code&gt;gitleaks&lt;/code&gt;、&lt;code&gt;trufflehog&lt;/code&gt; 或 GitHub Secret Scanning。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;key-推上去以后删除文件不等于安全&#34;&gt;Key 推上去以后，删除文件不等于安全
&lt;/h2&gt;&lt;p&gt;如果密钥已经推到公开仓库，第一反应不应该是“删掉文件再提交一次”，而应该是立刻吊销或轮换密钥。&lt;/p&gt;
&lt;p&gt;原因很简单：Git 记录的是历史。即使你在最新提交里删除了文件，旧提交、fork、clone、缓存和扫描系统里仍可能保留那段内容。GitHub 官方文档也明确建议：如果泄露的是密码、Token 或凭证，第一步应该撤销或轮换。&lt;/p&gt;
&lt;p&gt;处理顺序建议这样做：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;立即去服务商后台吊销旧 Key，生成新 Key。&lt;/li&gt;
&lt;li&gt;检查账单、调用日志、异常 IP 和异常用量。&lt;/li&gt;
&lt;li&gt;从代码中移除硬编码密钥，改用环境变量或密钥管理服务。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;git filter-repo&lt;/code&gt; 或 BFG 清理仓库历史中的敏感文件。&lt;/li&gt;
&lt;li&gt;开启 GitHub Secret Scanning 和 Push Protection。&lt;/li&gt;
&lt;li&gt;检查 CI/CD、部署平台、云函数、前端构建产物里是否也包含旧 Key。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对于 OpenAI、Anthropic、DeepSeek、云厂商、支付、邮件、数据库等服务，泄露 Key 的后果可能不只是被刷额度，还可能包含数据读取、服务滥用、供应链污染或业务账号封禁。&lt;/p&gt;
&lt;h2 id=&#34;前端代码里不能放真正的密钥&#34;&gt;前端代码里不能放真正的密钥
&lt;/h2&gt;&lt;p&gt;很多新手以为“只要页面能跑就行”，于是把 API Key 写进前端 JavaScript：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sk-xxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这基本等于公开。浏览器里的代码、网络请求、Source Map、构建产物都可以被查看。只要是真正需要保密的 Key，就不应该出现在客户端。&lt;/p&gt;
&lt;p&gt;正确做法是让前端请求自己的后端接口，由后端读取环境变量并调用第三方 API：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// frontend
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/chat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;method&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;后端再使用环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样做不是为了形式好看，而是为了把密钥留在服务器环境里，避免直接暴露给所有访问页面的人。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-的安全责任不会自动消失&#34;&gt;Vibe Coding 的安全责任不会自动消失
&lt;/h2&gt;&lt;p&gt;vibe coding 的问题不只是 GitHub 泄露。很多应用直接从 AI 编程平台发布到公网，跳过传统代码审查、仓库扫描和安全测试。&lt;/p&gt;
&lt;p&gt;RedAccess 近期披露的研究显示，公开网络上可以找到大量由 AI 编程工具生成或托管的应用资产，其中一部分暴露了企业数据、个人信息或内部文件。它提醒的是同一件事：当“能上线”变得太容易，“是否应该上线”“是否只该内网访问”“是否有权限控制”就更容易被忽略。&lt;/p&gt;
&lt;p&gt;如果你用 AI 生成应用，至少要在发布前问自己几个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这个应用是否真的需要公开访问？&lt;/li&gt;
&lt;li&gt;是否有登录、鉴权和权限隔离？&lt;/li&gt;
&lt;li&gt;是否把数据库、API Key、Token、Webhook 地址暴露在前端？&lt;/li&gt;
&lt;li&gt;是否限制了第三方 API 的额度、域名、权限和有效期？&lt;/li&gt;
&lt;li&gt;是否能在发现异常后快速禁用密钥和回滚部署？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI 写出来的代码也需要安全审查。越是“我一行代码都没写”，越不能假设它天然安全。&lt;/p&gt;
&lt;h2 id=&#34;现在就该做的检查&#34;&gt;现在就该做的检查
&lt;/h2&gt;&lt;p&gt;可以先从自己的 GitHub 账号查起。搜索用户名加上这些关键词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SECRET
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOKEN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OPENAI_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ANTHROPIC_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DEEPSEEK_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果发现真实密钥，不要犹豫：先轮换，再清理。只要它进过公开仓库，就按已经泄露处理。&lt;/p&gt;
&lt;p&gt;以后新建 AI 项目时，也建议固定一套流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先写 &lt;code&gt;.gitignore&lt;/code&gt;，再写业务代码。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;.env.example&lt;/code&gt; 说明需要哪些变量。&lt;/li&gt;
&lt;li&gt;所有密钥放环境变量，不写进源码。&lt;/li&gt;
&lt;li&gt;给 API Key 设置最小权限、额度限制和过期时间。&lt;/li&gt;
&lt;li&gt;开启 GitHub Secret Scanning 和 Push Protection。&lt;/li&gt;
&lt;li&gt;发布前让 AI 再帮你做一次安全检查，但不要只相信 AI 的结论。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI 编程真正危险的地方，不是它会写错代码，而是它让很多人第一次拥有了把不安全应用快速发布到公网的能力。写得快不是问题，把密钥、数据和权限一起交出去才是问题。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gitguardian.com/state-of-secrets-sprawl-report-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitGuardian State of Secrets Sprawl 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/articles/remove-sensitive-data&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: Removing sensitive data from a repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/code-security/secret-scanning/push-protection-for-repositories-and-organizations&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: About push protection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/05/07/loveable-replit-vibe-coding-privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: AI vibe-coding apps leak sensitive data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code &#43; Ollama 本地部署教程：用 CC Switch 打造免费 AI 编程助手</title>
        <link>https://knightli.com/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/2026/05/15/claude-code-ollama-cc-switch-local-agent/</guid>
        <description>&lt;p&gt;最近 &lt;code&gt;Claude Code&lt;/code&gt; 在 AI 开发工具圈很火，原因不难理解：它不像普通聊天机器人那样只回答问题，而是可以读取项目、修改代码、执行终端命令、安装依赖，并尝试自动修复报错。&lt;/p&gt;
&lt;p&gt;真正的问题在成本。Claude 官方 API 在长上下文、大型项目、多轮 Agent 调用和自动修 Bug 场景下，Token 消耗会很快变大。于是出现了一种新的玩法：继续使用 Claude Code 的 Agent 外壳，但把模型请求转发给本地 &lt;code&gt;Ollama&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这条链路的关键工具是 &lt;code&gt;CC Switch&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;这套方案解决什么问题&#34;&gt;这套方案解决什么问题
&lt;/h2&gt;&lt;p&gt;可以把它理解为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code 桌面版
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ CC Switch API 转发层
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Ollama 本地模型
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Code 继续负责项目操作、终端执行、文件修改和 Agent 流程；真正负责推理的大模型，则换成本地运行的 &lt;code&gt;Qwen&lt;/code&gt;、&lt;code&gt;DeepSeek&lt;/code&gt;、&lt;code&gt;Gemma&lt;/code&gt;、&lt;code&gt;GLM&lt;/code&gt; 等模型。&lt;/p&gt;
&lt;p&gt;这样做的吸引力很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不依赖 Claude 官方 API。&lt;/li&gt;
&lt;li&gt;没有持续 Token 计费压力。&lt;/li&gt;
&lt;li&gt;模型和数据可以留在本机。&lt;/li&gt;
&lt;li&gt;小项目、脚本、网页、运维任务可以低成本反复试。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它不是“免费获得 Claude Sonnet 能力”。本地模型的工程理解、长上下文稳定性和复杂任务规划，仍然会受模型能力、显存、量化版本和上下文长度限制。&lt;/p&gt;
&lt;h2 id=&#34;基本准备&#34;&gt;基本准备
&lt;/h2&gt;&lt;p&gt;前置环境主要包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装 &lt;code&gt;Git&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;安装 &lt;code&gt;Claude Code&lt;/code&gt; 官方桌面版。&lt;/li&gt;
&lt;li&gt;安装最新版 &lt;code&gt;Ollama&lt;/code&gt; 客户端。&lt;/li&gt;
&lt;li&gt;下载 &lt;code&gt;CC Switch&lt;/code&gt; 开源工具。&lt;/li&gt;
&lt;li&gt;在 Ollama 中准备合适的本地模型。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;模型选择可以按显存来定。常见选择包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen 3.6&lt;/code&gt; / &lt;code&gt;Qwen 3.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek R1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GLM&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果显存不大，优先选择较小参数或较低量化版本。不要一开始就用超大模型，否则很容易出现加载慢、上下文短、响应卡顿或直接显存不足。&lt;/p&gt;
&lt;h2 id=&#34;cc-switch-关键配置&#34;&gt;CC Switch 关键配置
&lt;/h2&gt;&lt;p&gt;这套方案里最关键的配置项是下面几项。&lt;/p&gt;
&lt;p&gt;请求地址：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-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;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;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;认证字段选择：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Claude Code 桌面版的自定义配置文件末尾，还需要加入注册表修改命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&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;这一步的作用，是让 CC Switch 把模型名称注入到 Claude Code 里显示。Claude Code 以为自己在调用 Claude 模型，实际请求已经被 CC Switch 转发到了本地 Ollama。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-强在哪里&#34;&gt;Claude Code 强在哪里
&lt;/h2&gt;&lt;p&gt;很多人第一次接触 Claude Code，会把它当成高级聊天工具。但它和普通 AI 聊天客户端不太一样。&lt;/p&gt;
&lt;p&gt;普通聊天式 AI 通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;你问一句
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;它答一句
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Code 更接近：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI + IDE + Terminal
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它可以读取项目结构，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;src/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;components/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后尝试完成一串操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析代码。&lt;/li&gt;
&lt;li&gt;修改文件。&lt;/li&gt;
&lt;li&gt;安装依赖。&lt;/li&gt;
&lt;li&gt;执行命令。&lt;/li&gt;
&lt;li&gt;查看报错。&lt;/li&gt;
&lt;li&gt;再次修改。&lt;/li&gt;
&lt;li&gt;重新运行项目。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是为什么很多开发者把它叫做 AI 开发 Agent。它的价值不只是“写一段代码”，而是能围绕项目状态连续行动。&lt;/p&gt;
&lt;h2 id=&#34;ollama-在这里扮演什么角色&#34;&gt;Ollama 在这里扮演什么角色
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ollama&lt;/code&gt; 负责在本机运行模型。&lt;/p&gt;
&lt;p&gt;这套组合的核心逻辑是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 负责 Agent 能力和项目操作。&lt;/li&gt;
&lt;li&gt;CC Switch 负责把 Claude Code 的请求转成兼容本地模型的 API。&lt;/li&gt;
&lt;li&gt;Ollama 负责实际推理。&lt;/li&gt;
&lt;li&gt;本地模型返回结果后，再交给 Claude Code 继续执行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以，这不是把 Ollama 变成一个普通聊天窗口，而是把它接进 Claude Code 的工作流。&lt;/p&gt;
&lt;p&gt;对于小型任务，这种组合会很有吸引力。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成一个 HTML 页面。&lt;/li&gt;
&lt;li&gt;修改小型前端项目。&lt;/li&gt;
&lt;li&gt;写自动化脚本。&lt;/li&gt;
&lt;li&gt;处理 Docker 配置。&lt;/li&gt;
&lt;li&gt;做 VPS 运维辅助。&lt;/li&gt;
&lt;li&gt;生成简单工具或测试代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;类似“帮我生成一个赛博朋克风格的个人主页网站”这类任务，本地模型可以完成项目创建、网页生成、动画和特效配置，并尝试自动运行。&lt;/p&gt;
&lt;h2 id=&#34;体验边界在哪里&#34;&gt;体验边界在哪里
&lt;/h2&gt;&lt;p&gt;这套玩法很有意思，但边界也要说清楚。&lt;/p&gt;
&lt;p&gt;目前本地模型仍然很难完全替代 Claude Sonnet，尤其在这些场景里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长上下文理解。&lt;/li&gt;
&lt;li&gt;大型工程结构分析。&lt;/li&gt;
&lt;li&gt;多步骤推理。&lt;/li&gt;
&lt;li&gt;复杂项目架构调整。&lt;/li&gt;
&lt;li&gt;长时间连续修 Bug。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;项目一复杂，本地模型更容易出现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;逻辑混乱。&lt;/li&gt;
&lt;li&gt;修改错误文件。&lt;/li&gt;
&lt;li&gt;反复修同一个 Bug。&lt;/li&gt;
&lt;li&gt;忘记前文上下文。&lt;/li&gt;
&lt;li&gt;对项目结构判断不稳定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更合理的定位是：它适合低成本试验、小项目、脚本任务和局部代码修改；不适合一开始就把大型生产项目完全交给它自动改。&lt;/p&gt;
&lt;h2 id=&#34;多模态兼容性还不稳定&#34;&gt;多模态兼容性还不稳定
&lt;/h2&gt;&lt;p&gt;这套链路还有一个明显问题：Vision 多模态兼容性。&lt;/p&gt;
&lt;p&gt;虽然 Ollama 已经支持一些 Vision 模型，但 &lt;code&gt;Claude Code + CC Switch + Ollama&lt;/code&gt; 这条链路对图片支持并不完整。常见情况是：用户上传了图片，但 AI 仍提示没有看到图片。&lt;/p&gt;
&lt;p&gt;这并不一定是模型不支持 Vision，而是整条链路里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 更偏代码 Agent。&lt;/li&gt;
&lt;li&gt;CC Switch 主要处理 API 转发。&lt;/li&gt;
&lt;li&gt;Ollama 模型能力和请求格式还要匹配。&lt;/li&gt;
&lt;li&gt;图片输入在不同客户端和模型之间并不总是无缝传递。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以目前更适合的场景还是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;编程。&lt;/li&gt;
&lt;li&gt;终端操作。&lt;/li&gt;
&lt;li&gt;项目文件修改。&lt;/li&gt;
&lt;li&gt;自动化脚本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而不是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;图片理解。&lt;/li&gt;
&lt;li&gt;OCR。&lt;/li&gt;
&lt;li&gt;多模态聊天。&lt;/li&gt;
&lt;li&gt;复杂视觉任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;这套方案适合几类人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想体验 Claude Code Agent 工作流，但不想持续消耗 Claude API 的用户。&lt;/li&gt;
&lt;li&gt;已经在本机跑 &lt;code&gt;Ollama&lt;/code&gt; 的本地大模型玩家。&lt;/li&gt;
&lt;li&gt;做小项目、脚本、网页、运维工具的开发者。&lt;/li&gt;
&lt;li&gt;想测试本地模型真实编程能力的人。&lt;/li&gt;
&lt;li&gt;对数据本地化更敏感的用户。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全不想折腾配置的人。&lt;/li&gt;
&lt;li&gt;希望获得 Claude Sonnet 同等能力的人。&lt;/li&gt;
&lt;li&gt;需要稳定处理大型生产代码库的人。&lt;/li&gt;
&lt;li&gt;强依赖图片输入和多模态能力的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;如果要尝试，建议按低风险方式开始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用测试项目，不要直接接生产仓库。&lt;/li&gt;
&lt;li&gt;选择中小模型，确认 Ollama 本身运行稳定。&lt;/li&gt;
&lt;li&gt;先做 HTML、脚本、配置文件这类简单任务。&lt;/li&gt;
&lt;li&gt;每次修改后自己检查 &lt;code&gt;git diff&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;不要让它在不确认的情况下批量删除或重构文件。&lt;/li&gt;
&lt;li&gt;多模态任务暂时不要依赖这条链路。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果项目比较复杂，最好把任务拆小：让它只改一个模块、一个函数、一个页面或一个配置文件。这样比“一句话让它重构整个项目”可靠得多。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Code + Ollama + CC Switch&lt;/code&gt; 的意义，不是让本地模型立刻变成 Claude Sonnet，而是把本地模型接进一个真正能操作项目的 Agent 外壳里。&lt;/p&gt;
&lt;p&gt;这让本地 AI 开发助手第一次变得更接近真实生产力工具：它可以看项目、改文件、跑命令、修错误，而不是只在聊天框里给建议。&lt;/p&gt;
&lt;p&gt;但它的能力上限仍然取决于本地模型本身。小项目和自动化任务会很有价值；大型工程、长上下文和复杂推理仍然需要更强模型。&lt;/p&gt;
&lt;p&gt;如果你的目标是“零 API 成本、无 Token 焦虑、在本机反复试 AI 编程 Agent”，这套方案值得折腾。只是要记住：它是本地开发助手，不是万能自动程序员。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenHuman 速读：开源个人 AI Agent 的桌面化路线</title>
        <link>https://knightli.com/2026/05/15/openhuman-open-source-personal-ai-agent/</link>
        <pubDate>Fri, 15 May 2026 14:52:31 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/15/openhuman-open-source-personal-ai-agent/</guid>
        <description>&lt;p&gt;OpenHuman 是 tinyhumansai 推出的开源个人 AI Agent 项目。它的目标不是再做一个聊天窗口，而是把桌面应用、个人记忆、第三方集成、语音、编码工具和本地知识库放进同一个 agent harness 里，让 AI 更快理解你的日常工作上下文。&lt;/p&gt;
&lt;p&gt;项目 README 给它的定位是 “Personal AI super intelligence”，官网也强调 private、simple 和 extremely powerful。这个说法很有野心，但更适合拆开看：OpenHuman 真正值得关注的地方，是它试图把“个人上下文”作为产品核心，而不是把模型调用、插件配置和文档检索留给用户自己拼。&lt;/p&gt;
&lt;p&gt;截至本文查看时，GitHub 仓库约有 7.8k stars、629 forks，最新 release 显示为 &lt;code&gt;OpenHuman v0.53.43&lt;/code&gt;，时间是 2026 年 5 月 13 日。项目仍处在 Early Beta，README 明确提醒正在活跃开发中，应该预期会有粗糙边缘。&lt;/p&gt;
&lt;h2 id=&#34;它想解决什么问题&#34;&gt;它想解决什么问题
&lt;/h2&gt;&lt;p&gt;很多 AI 助手的问题不是模型不够强，而是上下文太冷。你每次都要重新解释项目背景、最近邮件、日程、代码仓库、文档、任务和偏好；一旦跨到 Gmail、Notion、GitHub、Slack、Calendar、Drive、Linear、Jira 这些系统，信息又被拆散到不同工具里。&lt;/p&gt;
&lt;p&gt;OpenHuman 的思路是：先把这些数据接进来，再通过自动抓取、压缩、摘要和本地知识库，构建一个可以持续更新的个人记忆层。这样 agent 不是只记得当前对话，而是能围绕你的工作流形成长期上下文。&lt;/p&gt;
&lt;p&gt;这也是它和普通聊天机器人最大的差异。聊天机器人往往围绕 prompt 工作；OpenHuman 更像一个桌面端个人操作系统入口，试图把连接器、记忆、工具和模型路由都预先打包。&lt;/p&gt;
&lt;h2 id=&#34;主要能力&#34;&gt;主要能力
&lt;/h2&gt;&lt;p&gt;OpenHuman README 里列出的核心能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;桌面优先的 UI 和较短的上手路径，不要求用户先从终端配置开始。&lt;/li&gt;
&lt;li&gt;一个带“脸”的桌面 mascot，可以说话、响应环境，并参与 Google Meet。&lt;/li&gt;
&lt;li&gt;118+ 第三方集成，覆盖 Gmail、Notion、GitHub、Slack、Stripe、Calendar、Drive、Linear、Jira 等工具。&lt;/li&gt;
&lt;li&gt;自动抓取机制：项目描述中提到每 20 分钟遍历活跃连接，把新数据拉入 memory tree。&lt;/li&gt;
&lt;li&gt;Memory Tree：把连接数据和活动信息压缩成 Markdown 块，并存入本地 SQLite。&lt;/li&gt;
&lt;li&gt;Obsidian-compatible vault：把知识块落成 &lt;code&gt;.md&lt;/code&gt; 文件，用户可以用 Obsidian 打开、浏览和编辑。&lt;/li&gt;
&lt;li&gt;内置搜索、网页抓取、编码工具、文件系统、git、lint、test、grep、语音输入输出等能力。&lt;/li&gt;
&lt;li&gt;Model routing：按任务把请求路由到不同模型类型。&lt;/li&gt;
&lt;li&gt;TokenJuice：在工具结果、网页抓取、邮件正文、搜索结果进入 LLM 前做 token 压缩。&lt;/li&gt;
&lt;li&gt;可选 Ollama，用于本地 AI 工作负载。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些能力听起来很多，真正的重点可以归纳成两条：一是减少配置和插件拼装；二是把你的个人数据变成 agent 可检索、可压缩、可持续更新的记忆。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;项目提供网站下载入口，也给了终端安装命令。&lt;/p&gt;
&lt;p&gt;macOS 或 Linux x64：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/tinyhumansai/openhuman/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tinyhumansai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;openhuman&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果是日常主力机，建议先从官网下载安装包，或者至少先打开安装脚本检查内容，再决定是否直接执行远程脚本。OpenHuman 涉及邮箱、文档、代码仓库、日历和本地文件权限，安装和授权都应该比普通小工具更谨慎。&lt;/p&gt;
&lt;h2 id=&#34;开源和技术栈&#34;&gt;开源和技术栈
&lt;/h2&gt;&lt;p&gt;OpenHuman 仓库采用 GPL-3.0 license。仓库语言占比显示 Rust 为主，TypeScript 次之，另外还有 JavaScript、Shell、CSS 和 PowerShell。README 的贡献说明要求 Node.js 24+、pnpm 10.10.0、Rust 1.93.0、CMake，以及平台相关桌面构建依赖。&lt;/p&gt;
&lt;p&gt;本地开发的大致路径是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git submodule update --init --recursive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm --filter openhuman-app dev:app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;提交前推荐跑 focused checks，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm typecheck
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm format:check
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo check -p openhuman --lib
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;从目录结构看，它不是一个轻量脚本项目，而是包含桌面应用、前端、Rust 后端、文档、测试、示例和构建脚本的完整产品型仓库。&lt;/p&gt;
&lt;h2 id=&#34;memory-tree-和-obsidian-vault-为什么重要&#34;&gt;Memory Tree 和 Obsidian vault 为什么重要
&lt;/h2&gt;&lt;p&gt;OpenHuman 里最值得单独看的概念是 Memory Tree。README 描述它会把连接进来的数据标准化成不超过约 3k token 的 Markdown chunks，打分后折叠进层级摘要树，并存入本机 SQLite。相同内容也会进入 Obsidian 兼容 vault。&lt;/p&gt;
&lt;p&gt;这条路线有几个好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户可以直接看到 agent 的知识库，而不是只能相信黑盒记忆。&lt;/li&gt;
&lt;li&gt;Markdown 文件方便搜索、备份、版本管理和人工修订。&lt;/li&gt;
&lt;li&gt;SQLite 适合本地索引和快速查询。&lt;/li&gt;
&lt;li&gt;层级摘要比一堆平铺文档更适合长期上下文压缩。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也有现实挑战：数据同步是否稳定、摘要是否会丢关键细节、权限边界是否足够清晰、删除和撤销是否完整、不同连接器的语义是否能被一致处理。这些都不是 README 里一句 “remembers everything” 就能解决的，需要长期使用和审计才能判断。&lt;/p&gt;
&lt;h2 id=&#34;tokenjuice成本和延迟的中间层&#34;&gt;TokenJuice：成本和延迟的中间层
&lt;/h2&gt;&lt;p&gt;OpenHuman 还强调 TokenJuice。它的作用是在网页、邮件、搜索结果和工具调用结果进入模型前做压缩，例如把 HTML 转成 Markdown、缩短长 URL、移除部分非必要字符等。README 宣称这可以减少成本和延迟，最高降低 80% token 使用。&lt;/p&gt;
&lt;p&gt;这个方向是合理的。Agent 系统真正烧钱的地方，往往不是一次聊天，而是后台抓取、工具调用、搜索、网页解析和长上下文注入。把数据先清洗再交给模型，通常比直接塞原始内容更稳。&lt;/p&gt;
&lt;p&gt;不过压缩层也会带来新问题：它会决定哪些信息被保留，哪些被丢弃。如果你用它处理合同、账单、医学记录、合规材料或生产事故日志，就不能只看 token 节省，还要看可追溯性、原文回查和压缩误差。&lt;/p&gt;
&lt;h2 id=&#34;隐私卖点也是审查重点&#34;&gt;隐私：卖点也是审查重点
&lt;/h2&gt;&lt;p&gt;OpenHuman 的卖点之一是 private。官网提到本地 AI 模型可处理低级任务，README 也强调 workflow data stays on device、encrypted locally、treated as yours。&lt;/p&gt;
&lt;p&gt;这类设计方向很吸引人，因为个人 AI Agent 一旦接入 Gmail、Drive、Calendar、Slack、GitHub，就会碰到最敏感的工作数据。相比完全云端的助手，本地优先的记忆层和可见的 Markdown vault 至少给了用户更多控制感。&lt;/p&gt;
&lt;p&gt;但也要把话说完整：OpenHuman 同时提到 one subscription、30+ providers、model routing、ElevenLabs TTS、OAuth integrations 等能力。这意味着它不是纯离线工具。真正评估隐私时，需要看每个连接器、每类模型调用、每个语音和搜索能力分别把什么数据送到哪里。&lt;/p&gt;
&lt;h2 id=&#34;适合谁关注&#34;&gt;适合谁关注
&lt;/h2&gt;&lt;p&gt;OpenHuman 现在更适合三类人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;想要个人 AI 操作台，而不是单点聊天机器人的用户。&lt;/li&gt;
&lt;li&gt;愿意尝试 Early Beta，并能接受功能变化和粗糙边缘的开发者。&lt;/li&gt;
&lt;li&gt;关注本地记忆、Obsidian 工作流、agent connector 和上下文压缩的人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你只是想找一个稳定、轻量、隐私边界极简的离线助手，那它目前可能太重。如果你想研究下一代个人 AI Agent 会如何整合桌面、连接器、记忆和工具，OpenHuman 则是一个值得跟踪的开源样本。&lt;/p&gt;
&lt;p&gt;我的建议是先把它当成“产品型开源实验”观察：看 release 节奏、issue 质量、连接器权限、数据导出能力、删除机制和本地 vault 的可读性。个人 AI 的关键不只是能不能回答问题，而是它是否能长期、透明、可控地承载你的上下文。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tinyhumansai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tinyhumansai/openhuman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tinyhumans.ai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenHuman 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tinyhumans.gitbook.io/openhuman-docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenHuman Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>web-video-presentation：把文章做成可录屏网页视频的 Agent Skill</title>
        <link>https://knightli.com/2026/05/15/web-video-presentation-agent-skill/</link>
        <pubDate>Fri, 15 May 2026 09:02:15 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/15/web-video-presentation-agent-skill/</guid>
        <description>&lt;p&gt;&lt;code&gt;web-video-presentation&lt;/code&gt; 是 &lt;code&gt;ConardLi/garden-skills&lt;/code&gt; 里的一个 agent skill。它要解决的问题很具体：把一篇文章或一段口播稿，做成可以录屏的视频化网页演示。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ConardLi/garden-skills/tree/main/skills/web-video-presentation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ConardLi/garden-skills/tree/main/skills/web-video-presentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;它不是普通 PPT 模板，也不是单纯的 React 组件库。更准确地说，它是一套面向 AI agent 的视频演示生产流程：先把内容改成口播稿，再拆成 outline，再选主题，再用 Vite + React + TypeScript 做一个 16:9 的点击驱动网页，最后录屏成视频。&lt;/p&gt;
&lt;h2 id=&#34;它想做的不是幻灯片&#34;&gt;它想做的不是幻灯片
&lt;/h2&gt;&lt;p&gt;README 里有一个很关键的定位：这个 skill 生成的是 “video production surface”，不是 slide deck。&lt;/p&gt;
&lt;p&gt;也就是说，它不希望每一页只是标题加 bullet list，而是让每一次点击推进一个口播节拍。每个 step 独占 1920×1080 的舞台，画面随着叙事变化。进度 UI 平时隐藏，只有悬浮时出现，这样录屏画面更干净。&lt;/p&gt;
&lt;p&gt;这类形态很适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把博客文章做成 B 站 / YouTube 解说视频&lt;/li&gt;
&lt;li&gt;把已有口播稿做成动态视觉稿&lt;/li&gt;
&lt;li&gt;做产品 demo&lt;/li&gt;
&lt;li&gt;做教程视频&lt;/li&gt;
&lt;li&gt;做 keynote 风格的视觉演讲&lt;/li&gt;
&lt;li&gt;做“动态 PPT，但不像 PPT”的内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的核心价值不在于省掉剪辑软件，而是让网页成为一个可控的、可迭代的视频画布。&lt;/p&gt;
&lt;h2 id=&#34;核心设计原则&#34;&gt;核心设计原则
&lt;/h2&gt;&lt;p&gt;这个 skill 的几个原则很清楚。&lt;/p&gt;
&lt;p&gt;第一，固定 16:9 舞台。内容在稳定的 &lt;code&gt;1920×1080&lt;/code&gt; 坐标系里设计，再缩放到不同视口。这样录屏时不会因为浏览器窗口变化导致布局漂移。&lt;/p&gt;
&lt;p&gt;第二，全局 step cursor。用户点击或用键盘推进 &lt;code&gt;(chapter, step)&lt;/code&gt;，本地保存进度。它像视频时间线，但用网页状态来控制。&lt;/p&gt;
&lt;p&gt;第三，一个 step 只讲一个想法。每个节拍都应该是完整画面，而不是在同一页上不断堆 bullet。&lt;/p&gt;
&lt;p&gt;第四，脚本节拍驱动结构。口播稿决定节奏，outline 决定章节和 step，画面跟着叙事走。&lt;/p&gt;
&lt;p&gt;第五，motion first。每个场景都应该有一个会动的视觉锚点。如果只是静态段落，说明这一步还没有被设计成视频语言。&lt;/p&gt;
&lt;p&gt;第六，主题 token 化。主题不是简单换颜色，而是通过语义 token 控制字体、颜色、卡片、背景、分割线、装饰和整体气质。&lt;/p&gt;
&lt;p&gt;这些原则加在一起，能把 AI 从“生成页面”拉到“设计视频节奏”。&lt;/p&gt;
&lt;h2 id=&#34;工作流分四段&#34;&gt;工作流分四段
&lt;/h2&gt;&lt;p&gt;它的工作流分成四个阶段。&lt;/p&gt;
&lt;p&gt;第一阶段是内容编写。用户给原始文章时，agent 要把它改写成 &lt;code&gt;script.md&lt;/code&gt;，再生成 &lt;code&gt;outline.md&lt;/code&gt;。如果用户已经给了口播稿，就直接落盘成 &lt;code&gt;script.md&lt;/code&gt;，再生成 outline。&lt;/p&gt;
&lt;p&gt;第二阶段是网页开发。agent 用脚手架生成 Vite / React / TypeScript 项目，然后按章节实现画面。第 1 章必须由主线程完整做出来，并让用户验收，因为它是后续章节的风格锚点。&lt;/p&gt;
&lt;p&gt;第三阶段是可选音频合成。skill 支持从章节里的 &lt;code&gt;narrations.ts&lt;/code&gt; 抽取音频片段定义，再走语音合成流程。&lt;/p&gt;
&lt;p&gt;第四阶段是录屏和后期。网页本身作为录屏舞台，用户用录屏工具把点击驱动的演示录成视频。&lt;/p&gt;
&lt;p&gt;这个流程里有几个硬检查点：脚本、outline、主题、素材计划、开发模式要先对齐；第 1 章做完必须验收；是否合成音频也要停下来确认。它不允许 agent 从原文一路冲到最终代码。&lt;/p&gt;
&lt;h2 id=&#34;为什么-outline-不写动画&#34;&gt;为什么 outline 不写动画
&lt;/h2&gt;&lt;p&gt;这个 skill 里一个很有意思的约束是：&lt;code&gt;outline.md&lt;/code&gt; 只规划节奏和信息密度，不规划具体动画。&lt;/p&gt;
&lt;p&gt;也就是说，outline 可以写：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;章节切分&lt;/li&gt;
&lt;li&gt;每章 step 数&lt;/li&gt;
&lt;li&gt;每步屏幕内容&lt;/li&gt;
&lt;li&gt;每章信息池&lt;/li&gt;
&lt;li&gt;素材清单&lt;/li&gt;
&lt;li&gt;估计时长&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但不应该写：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用什么 CSS 动画&lt;/li&gt;
&lt;li&gt;用 blur、wipe 还是 spring&lt;/li&gt;
&lt;li&gt;每个动效多少毫秒&lt;/li&gt;
&lt;li&gt;具体 clip-path 或 filter 实现&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原因很合理：如果 outline 把动画写死，后面的章节开发 agent 就会退化成“按说明翻译页面”。真正的视频感应该在实现单章时，根据内容关系即时设计。&lt;/p&gt;
&lt;p&gt;这也是它比普通模板更有意思的地方。它把“结构”和“视觉决策”分开，让 AI 有空间做内容驱动的设计，而不是机械套版。&lt;/p&gt;
&lt;h2 id=&#34;narrationsts-是唯一真相源&#34;&gt;narrations.ts 是唯一真相源
&lt;/h2&gt;&lt;p&gt;项目结构里有一个关键文件：&lt;code&gt;narrations.ts&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;每章都有自己的 &lt;code&gt;narrations.ts&lt;/code&gt;，它保存 step 数和对应口播文本。skill 明确要求，章节 &lt;code&gt;.tsx&lt;/code&gt; 里出现的最大 step 数，必须和 &lt;code&gt;narrations.length&lt;/code&gt; 对齐。&lt;/p&gt;
&lt;p&gt;这样做是为了避免五处内容漂移：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;script.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;outline.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;章节代码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chapters.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;音频文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果口播、画面、音频和 step 数不一致，视频生产会非常难维护。把 &lt;code&gt;narrations.ts&lt;/code&gt; 作为唯一真相源，是这个流程里很实用的工程约束。&lt;/p&gt;
&lt;h2 id=&#34;内置主题不是简单换皮&#34;&gt;内置主题不是简单换皮
&lt;/h2&gt;&lt;p&gt;README 里列了一组内置主题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;paper-press&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;warm-keynote&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;midnight-press&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;blueprint&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chalk-garden&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;terminal-green&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bauhaus-bold&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sunset-zine&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;newsroom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;monochrome-print&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些主题不是“红色版”“蓝色版”这种换皮，而是不同视觉方向。比如 &lt;code&gt;paper-press&lt;/code&gt; 偏编辑纸张和印刷质感，&lt;code&gt;blueprint&lt;/code&gt; 偏技术图纸，&lt;code&gt;terminal-green&lt;/code&gt; 偏老式终端，&lt;code&gt;newsroom&lt;/code&gt; 偏媒体桌面。&lt;/p&gt;
&lt;p&gt;agent 在 Checkpoint Plan 阶段要根据稿子的主题和语气，主动推荐 2 到 3 个合适主题。用户也可以要求自定义新主题。&lt;/p&gt;
&lt;p&gt;这点很重要。视频类网页最怕所有主题都长一个样：大标题、渐变背景、卡片、几个圆角按钮。主题系统如果能约束视觉语言，就能减少 AI 生成内容常见的同质化。&lt;/p&gt;
&lt;h2 id=&#34;开发模式有三种&#34;&gt;开发模式有三种
&lt;/h2&gt;&lt;p&gt;第 1 章无论如何都必须主线程做完并验收。之后可以选择三种模式。&lt;/p&gt;
&lt;p&gt;模式 A 是逐章确认。每章做完都暂停验收，风险最低，也最适合对成片质量要求高的内容。&lt;/p&gt;
&lt;p&gt;模式 B 是顺序开发。第 2 章到最后一章由主线程顺序做完，最后统一验收，速度中等。&lt;/p&gt;
&lt;p&gt;模式 C 是并行开发。第 1 章通过后，把后续章节交给 subagent 并行实现。它最快，但各章风格可能会有差异。skill 认为这是预期，因为主题 token 负责兜底统一，章节内部可以自由发挥。&lt;/p&gt;
&lt;p&gt;这个设计很现实：视频生产既需要风格锚点，也需要生产效率。第一章先定调，后续章节再按风险承受能力选择速度。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用
&lt;/h2&gt;&lt;p&gt;这个 skill 特别适合已经有内容素材的人。&lt;/p&gt;
&lt;p&gt;如果你手里有一篇文章、一段脚本、一个产品介绍、一份教程、一篇技术解读，它可以把这些内容转成可录屏的网页视频。&lt;/p&gt;
&lt;p&gt;但如果你只是说“帮我想一个视频主题”，它并不适合直接接手。SKILL.md 里也明确说了：用户什么都没有时，agent 应该反问，让用户先给素材或大纲。它不是创意选题工具，而是内容转视频的生产流程。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;web-video-presentation&lt;/code&gt; 的价值，不是帮你生成一套好看的 React 页面，而是把内容视频化这件事拆成可协作、可验收、可复用的流程。&lt;/p&gt;
&lt;p&gt;它把文章、口播、outline、主题、章节实现、音频合成和录屏串起来，同时用硬检查点防止 agent 一路跑偏。&lt;/p&gt;
&lt;p&gt;如果你经常把技术文章、产品介绍或教程做成视频，这个 skill 值得研究。即使不直接使用它的脚手架，里面关于“一个 step 一个想法”“先定第 1 章风格锚点”“narrations.ts 做唯一真相源”“outline 不写死动画”的方法，也很适合迁移到自己的 AI 内容生产流程里。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Prompt-Vault：一个适合测试 AI 编程能力的 Prompt 规格库</title>
        <link>https://knightli.com/2026/05/15/prompt-vault-coding-prompt-benchmark/</link>
        <pubDate>Fri, 15 May 2026 09:00:52 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/15/prompt-vault-coding-prompt-benchmark/</guid>
        <description>&lt;p&gt;&lt;code&gt;w512/Prompt-Vault&lt;/code&gt; 是一个很小但有用的 prompt 仓库。它不是收集“万能咒语”，而是把一组可执行的 coding prompt 按难度整理成规格文档，用来测试 LLM 或 coding agent 能不能真正完成一个小项目。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/w512/Prompt-Vault&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/w512/Prompt-Vault&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至写作时，这个仓库只有少量文件和提交，但结构很清楚：&lt;code&gt;Easy&lt;/code&gt;、&lt;code&gt;Medium&lt;/code&gt;、&lt;code&gt;Hard&lt;/code&gt; 三个目录，每个 Markdown 文件都是一个独立任务。README 里也写得很直接：这些 prompt 适合测试大语言模型，或者给开发者当练手项目。&lt;/p&gt;
&lt;h2 id=&#34;它不是-prompt-收藏夹&#34;&gt;它不是 prompt 收藏夹
&lt;/h2&gt;&lt;p&gt;很多 prompt 仓库的问题，是内容看起来很多，但很难判断质量。标题很吸引人，真正拿去用时却缺少验收标准。&lt;/p&gt;
&lt;p&gt;Prompt-Vault 更像一个小型规格库。每个任务都尽量写清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要做什么应用&lt;/li&gt;
&lt;li&gt;必须有哪些功能&lt;/li&gt;
&lt;li&gt;UI 应该是什么风格&lt;/li&gt;
&lt;li&gt;技术约束是什么&lt;/li&gt;
&lt;li&gt;是否必须单文件运行&lt;/li&gt;
&lt;li&gt;是否允许外部依赖&lt;/li&gt;
&lt;li&gt;数据是否需要持久化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种结构比“请帮我做一个好看的看板”更适合测试模型。因为它能看出模型是否真的理解需求，而不是只生成一份看似完整的页面。&lt;/p&gt;
&lt;h2 id=&#34;easy测试基础交互&#34;&gt;Easy：测试基础交互
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Easy&lt;/code&gt; 目录里有两个任务。&lt;/p&gt;
&lt;p&gt;第一个是 &lt;code&gt;Bubble_Sort_Visualizer.md&lt;/code&gt;，要求做一个单文件 &lt;code&gt;index.html&lt;/code&gt;，用柱状条实时展示冒泡排序。它要求有开始按钮、重置按钮、速度滑块、比较次数统计和深色主题。&lt;/p&gt;
&lt;p&gt;这个任务适合测试模型的基础前端能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能不能把算法状态映射到 UI&lt;/li&gt;
&lt;li&gt;能不能做动画节奏控制&lt;/li&gt;
&lt;li&gt;能不能正确处理重置和运行状态&lt;/li&gt;
&lt;li&gt;能不能保持代码简单可读&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二个是 &lt;code&gt;ToDo_List.md&lt;/code&gt;，从静态 HTML 开始，一步步增加添加任务、完成状态、删除按钮、计数器、Active / Completed 统计和 &lt;code&gt;localStorage&lt;/code&gt; 持久化。&lt;/p&gt;
&lt;p&gt;这个任务看起来普通，但很适合测试模型是否会按步骤演进，而不是一口气堆出一份混乱代码。&lt;/p&gt;
&lt;h2 id=&#34;medium测试复杂状态和动画&#34;&gt;Medium：测试复杂状态和动画
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Medium/Sorting_Visualization.md&lt;/code&gt; 把排序可视化升级了一档。&lt;/p&gt;
&lt;p&gt;它要求同一个页面支持 6 种排序算法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bubble Sort&lt;/li&gt;
&lt;li&gt;Insertion Sort&lt;/li&gt;
&lt;li&gt;Selection Sort&lt;/li&gt;
&lt;li&gt;Merge Sort&lt;/li&gt;
&lt;li&gt;Quick Sort&lt;/li&gt;
&lt;li&gt;Heap Sort&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同时还要有算法选择、速度滑块、数组大小滑块、重置按钮、开始 / 暂停切换，以及实时统计面板。&lt;/p&gt;
&lt;p&gt;这个任务能测出不少问题。很多模型可以写出一个冒泡排序动画，但一旦要支持多个算法、暂停恢复、统计比较次数和交换次数，就容易出现状态混乱。&lt;/p&gt;
&lt;p&gt;如果用它做评测，可以重点看这些点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每种算法是否真的按预期排序&lt;/li&gt;
&lt;li&gt;动画是否和算法步骤一致&lt;/li&gt;
&lt;li&gt;暂停后能否继续&lt;/li&gt;
&lt;li&gt;重置是否会停止旧动画&lt;/li&gt;
&lt;li&gt;数组大小变化是否会破坏状态&lt;/li&gt;
&lt;li&gt;统计数据是否可信&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类 prompt 很适合作为前端 coding agent 的中等难度 smoke test。&lt;/p&gt;
&lt;h2 id=&#34;hard测试完整产品感&#34;&gt;Hard：测试完整产品感
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Hard&lt;/code&gt; 目录目前有两个任务。&lt;/p&gt;
&lt;p&gt;一个是 &lt;code&gt;Kanban_Board.md&lt;/code&gt;。它要求做一个完整的看板应用：默认四列、可新增列、双击重命名、空列删除、卡片标题和描述、优先级、截止日期、拖拽、搜索、优先级过滤、&lt;code&gt;localStorage&lt;/code&gt; 持久化、底部统计栏、深色玻璃拟态风格和响应式横向滚动。&lt;/p&gt;
&lt;p&gt;这个 prompt 的价值在于它不是只测单点能力，而是测“产品完整度”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原生 Drag &amp;amp; Drop 是否可靠&lt;/li&gt;
&lt;li&gt;新增列和卡片后状态是否持久化&lt;/li&gt;
&lt;li&gt;搜索和过滤是否影响布局&lt;/li&gt;
&lt;li&gt;overdue 逻辑是否正确&lt;/li&gt;
&lt;li&gt;Done 列是否触发视觉状态变化&lt;/li&gt;
&lt;li&gt;删除、重命名、取消、保存这些边界是否完整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另一个是 &lt;code&gt;Markdown_Editor_Desktop.md&lt;/code&gt;，要求用 Tauri 2 做跨平台 Markdown 编辑器。它包含分栏编辑与预览、同步滚动、实时渲染、预览模式、专注模式、打开文件、保存、另存为、窗口标题未保存标记、格式化工具栏、快捷键、主题、字体设置、Vue 3、Pinia、&lt;code&gt;marked.js&lt;/code&gt;、&lt;code&gt;prism.js&lt;/code&gt; 和 Tauri 插件。&lt;/p&gt;
&lt;p&gt;这已经不是普通网页 prompt，而是一个能测试桌面应用工程能力的规格。模型需要理解前端状态、Tauri 插件、文件系统权限、IPC 边界和跨平台打包。&lt;/p&gt;
&lt;h2 id=&#34;为什么这种仓库有价值&#34;&gt;为什么这种仓库有价值
&lt;/h2&gt;&lt;p&gt;Prompt-Vault 的价值不在于任务数量，而在于它给了可复用的评测样本。&lt;/p&gt;
&lt;p&gt;如果你在比较不同模型或 coding agent，可以用同一个 prompt 反复测试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪个模型更能遵守约束&lt;/li&gt;
&lt;li&gt;哪个模型更少漏功能&lt;/li&gt;
&lt;li&gt;哪个模型更会处理边界状态&lt;/li&gt;
&lt;li&gt;哪个模型生成的代码更容易维护&lt;/li&gt;
&lt;li&gt;哪个模型更擅长 UI 细节&lt;/li&gt;
&lt;li&gt;哪个模型在单文件约束下更稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比“我感觉这个模型更聪明”可靠得多。&lt;/p&gt;
&lt;p&gt;尤其是前端任务，很多失败不是语法错误，而是体验细节缺失。比如按钮能不能禁用、动画是否卡住、刷新后数据是否还在、拖拽目标是否高亮、统计是否同步更新。这些都需要具体 prompt 才能测出来。&lt;/p&gt;
&lt;h2 id=&#34;可以怎么扩展&#34;&gt;可以怎么扩展
&lt;/h2&gt;&lt;p&gt;如果要把 Prompt-Vault 变成更完整的评测库，可以继续补几类任务。&lt;/p&gt;
&lt;p&gt;第一类是验收清单。每个 prompt 后面加一组 checklist，比如“刷新后任务仍存在”“删除空列成功，非空列不能删除”“暂停排序后数组状态不变”。这样人和 agent 都更容易验收。&lt;/p&gt;
&lt;p&gt;第二类是失败用例。比如给排序可视化任务补充“快速连续点击 Start / Reset 不应产生多个动画循环”。这能测出状态管理是否扎实。&lt;/p&gt;
&lt;p&gt;第三类是评分维度。可以按功能完整度、代码可维护性、UI 质量、可访问性、性能、边界处理打分。&lt;/p&gt;
&lt;p&gt;第四类是参考实现。不是为了让模型抄答案，而是给评测者一个基准，方便判断输出是不是合理。&lt;/p&gt;
&lt;p&gt;第五类是跨模型记录。把不同模型在同一 prompt 下的结果、失败点和 token 成本记录下来，就能形成真正的 coding benchmark。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;如果你想用这个仓库测试 AI 编程工具，建议不要只看“能不能生成页面”。&lt;/p&gt;
&lt;p&gt;更好的做法是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;选一个 prompt，原样交给模型。&lt;/li&gt;
&lt;li&gt;不做额外提示，看第一次输出能完成多少。&lt;/li&gt;
&lt;li&gt;打开生成结果，按功能逐项验收。&lt;/li&gt;
&lt;li&gt;记录漏掉的功能和明显 bug。&lt;/li&gt;
&lt;li&gt;再给一次修复机会。&lt;/li&gt;
&lt;li&gt;比较总耗时、token 成本和最终代码质量。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样测出来的结果更接近真实开发。因为真正的 coding agent 不只是生成代码，还要理解规格、处理反馈、修复缺陷，并保持代码可维护。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Prompt-Vault 是一个轻量级 prompt 规格库。它适合拿来做 AI 编程测试，也适合前端开发者练习小项目。&lt;/p&gt;
&lt;p&gt;它提醒我们：好的 prompt 不只是描述愿望，而是写清需求、约束、交互、状态、验收和运行方式。越是想测试模型能力，越不能只给一句模糊指令。&lt;/p&gt;
&lt;p&gt;如果你正在比较 Codex、Claude Code、Cursor、Gemini CLI 或其他 coding agent，这类分级 prompt 很值得收藏。它们能帮你把“感觉好用”变成“具体哪里做对了，哪里漏了，修一次能不能补回来”。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Token Efficiency 是什么？从 DeepSeek V4 看大模型规划、小模型执行</title>
        <link>https://knightli.com/2026/05/15/token-efficiency-agent-orchestration/</link>
        <pubDate>Fri, 15 May 2026 08:59:33 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/15/token-efficiency-agent-orchestration/</guid>
        <description>&lt;p&gt;AI 编程接下来真正重要的指标，可能不是“谁的模型最强”，而是谁能用更少的 token、更低的成本、更稳定的流程，完成更多可验收的工作。&lt;/p&gt;
&lt;p&gt;这就是 Token Efficiency 的价值。&lt;/p&gt;
&lt;p&gt;很多人理解 Token Efficiency，只会想到模型便宜、上下文变长、缓存命中更低价。但这些只是底层条件。真正能把它变成生产力的，是模型分工、任务编排、上下文预算和评估体系。&lt;/p&gt;
&lt;p&gt;换句话说，Token Efficiency 不是省钱技巧，而是一套把 token 转换成产出的工程方法。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-的定位把大小模型分工产品化&#34;&gt;DeepSeek V4 的定位：把大小模型分工产品化
&lt;/h2&gt;&lt;p&gt;这篇文章最应该先补上的背景，是 DeepSeek V4 的定位。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 不是单纯发布一个更强模型，而是把 Token Efficiency 需要的两层能力直接拆成了 &lt;code&gt;V4 Pro&lt;/code&gt; 和 &lt;code&gt;V4 Flash&lt;/code&gt;：&lt;code&gt;Pro&lt;/code&gt; 更适合做规划、推理、架构判断和关键审查，&lt;code&gt;Flash&lt;/code&gt; 更适合做高频执行、批量改写、代码补全、资料整理和 agent 循环里的普通节点。&lt;/p&gt;
&lt;p&gt;这正好对应 AI 编程里的两个角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4 Pro&lt;/code&gt;：当作 planner / consultant，用在需求拆解、技术方案、复杂 bug 根因、架构审查和最终验收。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4 Flash&lt;/code&gt;：当作 executor，用在文件扫描、简单实现、测试补齐、文档整理、候选方案生成和重复性任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeepSeek 官方 API 文档显示，&lt;code&gt;V4 Flash&lt;/code&gt; 和 &lt;code&gt;V4 Pro&lt;/code&gt; 都支持 &lt;code&gt;1M&lt;/code&gt; 上下文、JSON Output、Tool Calls、Chat Prefix Completion 和 FIM Completion；价格页也把缓存命中输入单独计价，并说明全模型 input cache hit 价格已降到发布价的十分之一。这几个点组合起来，才是它和 Token Efficiency 关系最密的地方。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;1M&lt;/code&gt; 上下文解决的是复杂 agent 任务容易被压缩的问题；低缓存命中价格解决的是长系统 prompt、项目文档、代码片段和历史状态反复进入上下文的成本问题；&lt;code&gt;Flash / Pro&lt;/code&gt; 双模型形态解决的是“每一步都用旗舰模型太贵、每一步都用小模型又不稳”的分工问题。&lt;/p&gt;
&lt;p&gt;所以 DeepSeek V4 的优势不应该只写成“便宜”或“上下文长”，而应该理解成三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;执行层便宜&lt;/strong&gt;：大量 agent 节点可以交给 &lt;code&gt;V4 Flash&lt;/code&gt;，让 token 消耗落在低成本模型上。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;判断层可用&lt;/strong&gt;：关键步骤仍然可以调用 &lt;code&gt;V4 Pro&lt;/code&gt;，避免为了省钱牺牲复杂推理质量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长链路友好&lt;/strong&gt;：&lt;code&gt;1M&lt;/code&gt; 上下文和缓存价格让代码库、文档、工具调用历史更容易留在可用窗口里。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这就是为什么 DeepSeek V4 对 AI 编程的意义，不只是又多了一个模型选项，而是给“顾问模型 + 执行模型 + harness 编排”的模式提供了更现实的成本结构。&lt;/p&gt;
&lt;h2 id=&#34;不要让最强模型干所有活&#34;&gt;不要让最强模型干所有活
&lt;/h2&gt;&lt;p&gt;过去使用 AI，常见做法是找一个最聪明的模型，让它从需求分析、代码实现、测试、总结一路干到底。&lt;/p&gt;
&lt;p&gt;这个方式简单，但不一定高效。因为很多任务并不需要最高级别的推理能力。真正贵的模型，应该更像顾问、架构师或规划员：只在关键决策点介入。&lt;/p&gt;
&lt;p&gt;更合理的结构是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大模型负责拆问题、定方向、做关键判断。&lt;/li&gt;
&lt;li&gt;小模型负责执行、批量处理、重复修改。&lt;/li&gt;
&lt;li&gt;工具和 harness 负责流程、状态、上下文和验证。&lt;/li&gt;
&lt;li&gt;人负责定义产品、验收结果和决定取舍。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做的好处是，前沿推理能力不会被浪费在机械执行上。大部分 token 消耗可以落到便宜模型和缓存输入里，贵模型只处理真正需要“脑力”的部分。&lt;/p&gt;
&lt;h2 id=&#34;上下文不是越大越好&#34;&gt;上下文不是越大越好
&lt;/h2&gt;&lt;p&gt;长上下文很重要，尤其是 coding agent。代码、文档、历史对话、测试输出、错误日志都会吃掉上下文。上下文一旦接近上限，模型就容易触发压缩、遗忘或误判。&lt;/p&gt;
&lt;p&gt;但长上下文不等于可以无限塞资料。&lt;/p&gt;
&lt;p&gt;Token Efficiency 的关键，是让每个任务都能在一个清晰、可控的上下文窗口内完成。最理想的状态不是“把整个仓库塞进去”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前任务只带必要文件。&lt;/li&gt;
&lt;li&gt;背景文档只带决策相关部分。&lt;/li&gt;
&lt;li&gt;历史信息只保留当前阶段需要的状态。&lt;/li&gt;
&lt;li&gt;每个节点有明确输入和输出。&lt;/li&gt;
&lt;li&gt;完成后把结果压缩成结构化摘要，交给下一个节点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上下文越便宜，越要警惕浪费。便宜 token 会诱导人把无关信息全塞进去，最后模型不是更聪明，而是更容易被噪声拖慢。&lt;/p&gt;
&lt;h2 id=&#34;harness-比单个模型更重要&#34;&gt;Harness 比单个模型更重要
&lt;/h2&gt;&lt;p&gt;如果只是把 Claude Code、Codex 或其他 coding agent 接到便宜模型上，效果未必好。小模型容易在长链路任务里跑偏，需要更强的流程控制。&lt;/p&gt;
&lt;p&gt;真正让小模型发挥价值的，是 harness。&lt;/p&gt;
&lt;p&gt;这里的 harness 可以理解为一套调度系统：它知道任务怎么拆、节点怎么跑、模型怎么选、结果怎么验收、失败怎么重试、上下文怎么传递。&lt;/p&gt;
&lt;p&gt;一个可用的编排系统，至少要回答几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些任务需要规划？&lt;/li&gt;
&lt;li&gt;哪些任务可以直接执行？&lt;/li&gt;
&lt;li&gt;哪些节点可以并行？&lt;/li&gt;
&lt;li&gt;哪些节点必须串行？&lt;/li&gt;
&lt;li&gt;哪个节点用大模型，哪个节点用小模型？&lt;/li&gt;
&lt;li&gt;每个节点最多允许多少上下文？&lt;/li&gt;
&lt;li&gt;每个节点完成后输出什么结构？&lt;/li&gt;
&lt;li&gt;谁来 review，谁来决定是否继续？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;没有这层软件，小模型只是便宜；有了这层软件，小模型才可能变成杠杆。&lt;/p&gt;
&lt;h2 id=&#34;用-dag-拆任务&#34;&gt;用 DAG 拆任务
&lt;/h2&gt;&lt;p&gt;一个有效的思路，是把复杂任务拆成有向无环图，也就是 DAG。&lt;/p&gt;
&lt;p&gt;比如一个功能开发任务，可以拆成：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;需求澄清&lt;/li&gt;
&lt;li&gt;方案设计&lt;/li&gt;
&lt;li&gt;任务拆分&lt;/li&gt;
&lt;li&gt;编码实现&lt;/li&gt;
&lt;li&gt;测试补齐&lt;/li&gt;
&lt;li&gt;Code Review&lt;/li&gt;
&lt;li&gt;修复问题&lt;/li&gt;
&lt;li&gt;提交 PR&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;每个节点都可以是一个独立 agent。它们运行在独立环境里，有自己的角色、prompt、工具权限和输出格式。节点之间不靠长篇聊天传递信息，而是靠预先定义好的结构化结果。&lt;/p&gt;
&lt;p&gt;这会带来两个直接收益。&lt;/p&gt;
&lt;p&gt;第一，单个节点更短。任务越小，越容易被小模型完成，也越不容易撑爆上下文。&lt;/p&gt;
&lt;p&gt;第二，流程更可测。你可以单独观察“编码节点失败率高”还是“review 节点漏问题多”，然后针对性优化。&lt;/p&gt;
&lt;h2 id=&#34;任务可以跑多个副本&#34;&gt;任务可以跑多个副本
&lt;/h2&gt;&lt;p&gt;当 token 足够便宜时，一个有趣的变化会出现：同一个任务不一定只跑一次。&lt;/p&gt;
&lt;p&gt;你可以让同一个任务用不同模型、不同 prompt、不同编排跑多个副本，再从结果里选最好的，或者把多个结果合并。这个思路有点像“抽卡式任务解决”，但前提是必须有评估和验收。&lt;/p&gt;
&lt;p&gt;适合多副本的任务包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;方案设计&lt;/li&gt;
&lt;li&gt;文案生成&lt;/li&gt;
&lt;li&gt;测试用例补全&lt;/li&gt;
&lt;li&gt;Bug 根因假设&lt;/li&gt;
&lt;li&gt;重构方案比较&lt;/li&gt;
&lt;li&gt;Code Review&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不适合盲目多副本的任务，是那些会直接修改共享状态、会产生外部副作用、或者验收标准不清楚的任务。&lt;/p&gt;
&lt;p&gt;多跑几次不是为了碰运气，而是为了获得可比较样本。样本越多，越能反过来优化编排、模型选择和节点技能。&lt;/p&gt;
&lt;h2 id=&#34;必须建立评估体系&#34;&gt;必须建立评估体系
&lt;/h2&gt;&lt;p&gt;Token Efficiency 不能只看价格。便宜但失败率高，最后会吞掉人的时间，反而更贵。&lt;/p&gt;
&lt;p&gt;所以每个团队都应该逐步建立自己的评估体系。它不需要一开始就很复杂，但要能量化。&lt;/p&gt;
&lt;p&gt;可以先记录这些指标：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务完成率&lt;/li&gt;
&lt;li&gt;人工介入次数&lt;/li&gt;
&lt;li&gt;工具调用失败率&lt;/li&gt;
&lt;li&gt;测试通过率&lt;/li&gt;
&lt;li&gt;Review 发现的问题数量&lt;/li&gt;
&lt;li&gt;单任务 token 成本&lt;/li&gt;
&lt;li&gt;单任务耗时&lt;/li&gt;
&lt;li&gt;返工次数&lt;/li&gt;
&lt;li&gt;不同模型组合的差异&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有了这些数据，才能知道哪些任务适合小模型，哪些任务必须上大模型，哪些任务应该交给人判断。&lt;/p&gt;
&lt;p&gt;真正的优化不是“所有地方都换便宜模型”，而是把每类任务放到最合适的模型和流程里。&lt;/p&gt;
&lt;h2 id=&#34;业务流程要原子化&#34;&gt;业务流程要原子化
&lt;/h2&gt;&lt;p&gt;普通用户不一定要自己写完整 harness。未来这类工具会越来越多，也会越来越成熟。&lt;/p&gt;
&lt;p&gt;但现在就可以做一件事：把自己的业务流程拆成原子节点。&lt;/p&gt;
&lt;p&gt;比如内容生产可以拆成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选题&lt;/li&gt;
&lt;li&gt;资料收集&lt;/li&gt;
&lt;li&gt;提纲&lt;/li&gt;
&lt;li&gt;初稿&lt;/li&gt;
&lt;li&gt;事实核查&lt;/li&gt;
&lt;li&gt;风格改写&lt;/li&gt;
&lt;li&gt;SEO 标题&lt;/li&gt;
&lt;li&gt;多语言翻译&lt;/li&gt;
&lt;li&gt;发布检查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;软件开发可以拆成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求确认&lt;/li&gt;
&lt;li&gt;技术方案&lt;/li&gt;
&lt;li&gt;数据结构&lt;/li&gt;
&lt;li&gt;接口变更&lt;/li&gt;
&lt;li&gt;单元测试&lt;/li&gt;
&lt;li&gt;实现&lt;/li&gt;
&lt;li&gt;迁移脚本&lt;/li&gt;
&lt;li&gt;文档&lt;/li&gt;
&lt;li&gt;Review&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每个节点都要尽量做到输入明确、输出明确、验收明确、上下文可控。这样等 harness 工具成熟时，你的业务流程可以直接接进去。&lt;/p&gt;
&lt;h2 id=&#34;硬件不是第一优先级&#34;&gt;硬件不是第一优先级
&lt;/h2&gt;&lt;p&gt;很多人聊 Token Efficiency，很快就会聊到本地部署和显卡。但对大多数人来说，第一选择仍然应该是 API。&lt;/p&gt;
&lt;p&gt;原因很简单：在没有跑通经济模型之前，本地硬件只是成本前置。你还不知道 token 怎么转化成收入或生产力，就先买昂贵设备，很容易变成玩具。&lt;/p&gt;
&lt;p&gt;更稳的顺序是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 API 跑通业务流程。&lt;/li&gt;
&lt;li&gt;建立任务评估和成本统计。&lt;/li&gt;
&lt;li&gt;找到稳定高频的执行节点。&lt;/li&gt;
&lt;li&gt;再考虑哪些节点值得本地化。&lt;/li&gt;
&lt;li&gt;最后再计算硬件、电费、维护和折旧。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果只是个人提效，API 往往已经够用。如果是创业团队，要验证模型边界和推理框架，本地 CUDA 平台才更有学习价值。如果已经有明确生产场景和经济模型，多卡部署才有讨论空间。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Token Efficiency 的本质，不是“用便宜模型替代贵模型”，而是重新设计 AI 工作流。&lt;/p&gt;
&lt;p&gt;大模型负责关键判断，小模型负责批量执行，harness 负责调度和验证，人负责定义目标和验收结果。只有这四层配合起来，token 才能稳定变成生产力。&lt;/p&gt;
&lt;p&gt;接下来真正有价值的能力，不只是会用最新模型，而是能把任务拆小、把上下文控住、把结果量化、把流程编排起来。&lt;/p&gt;
&lt;p&gt;模型会继续降价，上下文会继续变长，小模型会继续变强。越是这样，越应该早点理解 Token Efficiency。因为未来的差距，很可能不在谁调用了最强模型，而在谁能用同样的 token 撬动更多真实产出。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Superpowers：把 Coding Agent 拉回工程流程的技能框架</title>
        <link>https://knightli.com/2026/05/15/obra-superpowers-agentic-skills-framework/</link>
        <pubDate>Fri, 15 May 2026 08:53:17 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/15/obra-superpowers-agentic-skills-framework/</guid>
        <description>&lt;p&gt;&lt;code&gt;obra/superpowers&lt;/code&gt; 是一个给 coding agent 使用的技能框架，也是一套软件开发方法论。它的目标不是再写一个“让 AI 更听话”的万能 prompt，而是把 agent 的工作流程固定下来：先澄清目标，再产出设计，再拆计划，再按测试驱动开发推进，最后做 review 和收尾。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/obra/superpowers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/obra/superpowers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至写作时，GitHub API 显示这个仓库已有超过 19 万 star，许可证为 MIT，最近仍在更新。README 对它的描述很直接：&lt;code&gt;An agentic skills framework &amp;amp; software development methodology that works.&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;它想解决什么问题&#34;&gt;它想解决什么问题
&lt;/h2&gt;&lt;p&gt;现在很多 AI 编程工具的问题，不是“不够会写代码”，而是太容易直接写代码。&lt;/p&gt;
&lt;p&gt;用户刚说一个模糊需求，agent 就开始改文件；改完以后看似完成，其实边界没对齐、测试没补、架构没想清楚。短任务可能没事，复杂项目里就会变成返工、回滚和技术债。&lt;/p&gt;
&lt;p&gt;Superpowers 的思路是：让 agent 在动手前先进入流程。&lt;/p&gt;
&lt;p&gt;README 里描述的核心路径大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;发现用户要做东西时，不立刻写代码，而是先追问目标。&lt;/li&gt;
&lt;li&gt;从对话中整理出规格说明，并分段给用户确认。&lt;/li&gt;
&lt;li&gt;设计通过后，生成足够清楚的实施计划。&lt;/li&gt;
&lt;li&gt;用户说 “go” 之后，再进入实现流程。&lt;/li&gt;
&lt;li&gt;实现时强调 TDD、YAGNI、DRY，并通过 review 检查结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这套流程听起来不新，但放到 coding agent 里很关键。AI 的执行速度越快，前置澄清和中途验证越重要。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些工具&#34;&gt;支持哪些工具
&lt;/h2&gt;&lt;p&gt;Superpowers 不是只面向一个 agent。README 里列出的安装入口包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex CLI&lt;/li&gt;
&lt;li&gt;Codex App&lt;/li&gt;
&lt;li&gt;Factory Droid&lt;/li&gt;
&lt;li&gt;Gemini CLI&lt;/li&gt;
&lt;li&gt;OpenCode&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;GitHub Copilot CLI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中 Codex CLI 和 Codex App 都可以通过官方 Codex plugin marketplace 安装。Claude Code 也可以通过官方插件市场或 Superpowers 自己的 marketplace 安装。&lt;/p&gt;
&lt;p&gt;这说明它的定位更像“跨 harness 的工作流层”，而不是绑定某一家模型或某一个命令行工具。&lt;/p&gt;
&lt;h2 id=&#34;基础工作流&#34;&gt;基础工作流
&lt;/h2&gt;&lt;p&gt;Superpowers 的基础工作流分成几个阶段。&lt;/p&gt;
&lt;p&gt;第一步是 &lt;code&gt;brainstorming&lt;/code&gt;。它会在写代码前触发，通过问题把粗糙想法整理成可执行设计。它不是让 agent 自嗨式补全需求，而是把设计分段拿给用户确认。&lt;/p&gt;
&lt;p&gt;第二步是 &lt;code&gt;using-git-worktrees&lt;/code&gt;。设计确认后，它会创建隔离的工作区和新分支，先确认项目能正常安装、测试基线是干净的。这一步能减少多个任务互相污染工作区的问题。&lt;/p&gt;
&lt;p&gt;第三步是 &lt;code&gt;writing-plans&lt;/code&gt;。它会把设计拆成短小任务，每个任务要求有明确文件路径、代码范围和验证步骤。README 里甚至把计划写给“没有上下文、品味可疑、不爱测试的热情初级工程师”也能执行，当作清晰度标准。&lt;/p&gt;
&lt;p&gt;第四步是实现。它可以用 &lt;code&gt;subagent-driven-development&lt;/code&gt; 派发子任务，也可以用 &lt;code&gt;executing-plans&lt;/code&gt; 分批执行。重点不是并发本身，而是每个任务都要能检查、能 review、能继续推进。&lt;/p&gt;
&lt;p&gt;第五步是 &lt;code&gt;test-driven-development&lt;/code&gt;。Superpowers 强调真正的 RED-GREEN-REFACTOR：先写失败测试，确认失败，再写最小实现，确认通过，然后重构。它甚至要求删除测试前写出来的实现代码，避免“先实现后补测试”的假 TDD。&lt;/p&gt;
&lt;p&gt;第六步是 &lt;code&gt;requesting-code-review&lt;/code&gt;。任务之间做 review，按严重程度报告问题。Critical 问题会阻塞继续推进。&lt;/p&gt;
&lt;p&gt;最后是 &lt;code&gt;finishing-a-development-branch&lt;/code&gt;。任务结束后，验证测试，给出合并、发 PR、保留或丢弃 worktree 的选择。&lt;/p&gt;
&lt;h2 id=&#34;skills-library-里有什么&#34;&gt;Skills Library 里有什么
&lt;/h2&gt;&lt;p&gt;Superpowers 的技能库可以分成几类。&lt;/p&gt;
&lt;p&gt;测试类主要是 &lt;code&gt;test-driven-development&lt;/code&gt;，围绕红绿重构循环，并包含测试反模式参考。&lt;/p&gt;
&lt;p&gt;调试类包括 &lt;code&gt;systematic-debugging&lt;/code&gt; 和 &lt;code&gt;verification-before-completion&lt;/code&gt;。前者要求按复现、最小化、假设、验证、修复的过程找根因；后者强调不要在没有验证前宣布完成。&lt;/p&gt;
&lt;p&gt;协作类更丰富，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;brainstorming&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;writing-plans&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;executing-plans&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dispatching-parallel-agents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;requesting-code-review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;receiving-code-review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;using-git-worktrees&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;finishing-a-development-branch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subagent-driven-development&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;元技能包括 &lt;code&gt;writing-skills&lt;/code&gt; 和 &lt;code&gt;using-superpowers&lt;/code&gt;。前者用于创建新技能，后者用于理解技能系统本身。&lt;/p&gt;
&lt;p&gt;这些技能组合起来，像是给 agent 装了一套工程习惯：什么时候该问，什么时候该计划，什么时候该测试，什么时候该停下来 review。&lt;/p&gt;
&lt;h2 id=&#34;和普通-prompt-最大的区别&#34;&gt;和普通 prompt 最大的区别
&lt;/h2&gt;&lt;p&gt;普通 prompt 往往把规则堆在一段 system prompt 里：不要乱改、先思考、要测试、要解释、要简洁。问题是规则越堆越多，模型越容易在复杂任务里选择性遗忘。&lt;/p&gt;
&lt;p&gt;Superpowers 更像把规则拆成可触发的流程模块。不同任务阶段使用不同技能，每个技能只负责一段工作。这样做有几个好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;规则更短，目标更集中。&lt;/li&gt;
&lt;li&gt;agent 更容易知道当前阶段该做什么。&lt;/li&gt;
&lt;li&gt;复杂流程可以被拆成可检查的步骤。&lt;/li&gt;
&lt;li&gt;技能可以跨工具复用。&lt;/li&gt;
&lt;li&gt;团队可以把自己的工程习惯沉淀成技能。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是它最值得参考的地方：不要只追求“更聪明的模型”，还要给模型一套可重复的工作方式。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用
&lt;/h2&gt;&lt;p&gt;Superpowers 更适合已经在认真使用 coding agent 的开发者，尤其是这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务不只是单文件改动。&lt;/li&gt;
&lt;li&gt;希望 agent 先设计再实现。&lt;/li&gt;
&lt;li&gt;项目需要 TDD 或至少需要验证步骤。&lt;/li&gt;
&lt;li&gt;经常并行做多个功能分支。&lt;/li&gt;
&lt;li&gt;希望用 subagent 分摊实现、检查和 review。&lt;/li&gt;
&lt;li&gt;想把团队流程写成可复用技能。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是让 AI 改一行配置、生成一个脚本，它可能显得偏重。但一旦任务涉及多文件、多阶段、多轮确认，它的流程约束就会变得有价值。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，不要把它理解成自动驾驶。Superpowers 能让 agent 更有流程感，但设计取舍、需求边界和最终验收仍然需要人负责。&lt;/p&gt;
&lt;p&gt;第二，TDD 和 review 会增加前期成本。小任务可能会变慢，但复杂任务通常能减少返工。&lt;/p&gt;
&lt;p&gt;第三，子代理并发不是越多越好。并发适合边界清楚、写入范围不重叠的任务；如果需求还没想清楚，先并发只会把混乱放大。&lt;/p&gt;
&lt;p&gt;第四，团队要维护自己的技能质量。技能不是写完就万事大吉，过时的流程、模糊的指令和互相冲突的规则，也会拖累 agent。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Superpowers 的价值，不在于某个单独技能多神奇，而在于它把 coding agent 从“接到需求就写代码”拉回了软件工程流程。&lt;/p&gt;
&lt;p&gt;它提醒我们：AI 编程真正缺的往往不是生成速度，而是澄清、计划、验证、review 和收尾。模型越强，这些流程越不能省。否则 AI 只是更快地制造未验证的代码。&lt;/p&gt;
&lt;p&gt;如果你已经在用 Codex、Claude Code、Cursor 或 Gemini CLI 做真实项目，Superpowers 值得看一眼。即使不直接安装，它的技能拆分方式也很适合拿来改造自己的 agent 工作流。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>拒绝 Vibe Coding：Matt Pocock 的 skills 仓库给 AI 编程补上工程约束</title>
        <link>https://knightli.com/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</link>
        <pubDate>Fri, 15 May 2026 08:46:23 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</guid>
        <description>&lt;p&gt;AI 写代码越快，项目失控也可能越快。真正的问题不是模型会不会生成函数，而是它是否理解需求、是否遵守团队语言、是否能在已有架构里小步推进。如果把 AI 当成“随便说一句就自动完工”的代码喷射器，最后很容易得到一堆跑不通、难维护、没人敢改的代码。&lt;/p&gt;
&lt;p&gt;Matt Pocock 开源的 &lt;code&gt;mattpocock/skills&lt;/code&gt; 仓库，正好给了一个相反方向的示例：不要让 AI 接管整个开发流程，而是把 AI 放进成熟的软件工程约束里。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/mattpocock/skills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这套方法的重点不是某个神奇 prompt，而是一组可以组合的 agent skills。它们把需求澄清、领域建模、测试驱动、问题诊断、架构审查这些老派工程实践，重新包装成适合 AI 编程工具调用的工作流。&lt;/p&gt;
&lt;h2 id=&#34;先解决对齐失败&#34;&gt;先解决对齐失败
&lt;/h2&gt;&lt;p&gt;AI 编程最常见的失败，是你以为它懂了，其实它只是顺着你的模糊描述开始猜。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-me&lt;/code&gt; 的思路就是反过来：在写代码之前，先让 AI 变成一个会追问的审稿人。它不会立刻开始实现，而是持续追问计划里的分支、边界和未决问题。&lt;/p&gt;
&lt;p&gt;比如你说“做一个登录页”，它应该先问：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;忘记密码怎么处理？&lt;/li&gt;
&lt;li&gt;是否支持第三方登录？&lt;/li&gt;
&lt;li&gt;登录失败时要显示什么错误？&lt;/li&gt;
&lt;li&gt;账号锁定、验证码、风控是否在本期范围内？&lt;/li&gt;
&lt;li&gt;成功后跳转到哪里？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步看起来慢，但它减少的是后面返工的时间。AI 生成代码的成本越低，需求没想清楚带来的浪费就越大。&lt;/p&gt;
&lt;h2 id=&#34;把领域语言写进上下文&#34;&gt;把领域语言写进上下文
&lt;/h2&gt;&lt;p&gt;第二个问题是 AI 的“通用词汇病”。它不了解团队内部的业务叫法，只能用常见词来猜，于是变量名、函数名、文档描述都开始漂移。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-with-docs&lt;/code&gt; 解决的是这个问题。它不只是追问需求，还会结合项目里的 &lt;code&gt;CONTEXT.md&lt;/code&gt;、ADR 或领域文档，检查用户表达是否和既有术语冲突。确认后的术语、边界和决策，可以继续沉淀回上下文文档。&lt;/p&gt;
&lt;p&gt;这和领域驱动设计里的“统一语言”很接近。假设团队把 user 称为 customer，把 order 称为 transaction，那么 AI 在写代码时也应该继承这些叫法，而不是自己再发明一套。&lt;/p&gt;
&lt;p&gt;上下文文档的价值不在于堆资料，而在于让 AI 少猜一点。&lt;/p&gt;
&lt;h2 id=&#34;用-tdd-限制生成速度&#34;&gt;用 TDD 限制生成速度
&lt;/h2&gt;&lt;p&gt;AI 的危险之处在于它太快了。过去写出一大段坏代码需要时间，现在几秒钟就能生成几百行。速度本身不是问题，缺少反馈循环才是问题。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tdd&lt;/code&gt; skill 把经典的红绿重构流程放回 AI 编程里：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先为一个行为写失败测试。&lt;/li&gt;
&lt;li&gt;再实现刚好让测试通过的代码。&lt;/li&gt;
&lt;li&gt;然后重构。&lt;/li&gt;
&lt;li&gt;按垂直切片继续推进。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重点是“一次一个行为”，而不是让 AI 一口气写完所有测试和所有实现。这样做可以把任务切小，也能让每一步都有可验证结果。AI 负责执行，人类负责确认方向和边界。&lt;/p&gt;
&lt;h2 id=&#34;用诊断循环处理复杂问题&#34;&gt;用诊断循环处理复杂问题
&lt;/h2&gt;&lt;p&gt;遇到 bug 时，很多 AI 会直接猜答案，然后连续改几轮，把问题越修越乱。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;diagnose&lt;/code&gt; 的价值在于要求 AI 先建立反馈循环：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复现问题&lt;/li&gt;
&lt;li&gt;最小化场景&lt;/li&gt;
&lt;li&gt;提出假设&lt;/li&gt;
&lt;li&gt;增加观测或日志&lt;/li&gt;
&lt;li&gt;修复&lt;/li&gt;
&lt;li&gt;补回归测试&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套流程不新，但在 AI 编程里尤其重要。因为 AI 很擅长快速尝试，却不一定擅长判断哪次尝试真正接近根因。诊断流程相当于给它加了一条轨道。&lt;/p&gt;
&lt;h2 id=&#34;定期审查架构而不是只看单个任务&#34;&gt;定期审查架构，而不是只看单个任务
&lt;/h2&gt;&lt;p&gt;单次任务跑通，不代表代码库变好了。AI 反复提交小改动后，最容易出现的问题是模块边界变模糊、接口越来越复杂、测试越来越难写。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;improve-codebase-architecture&lt;/code&gt; 这类 skill 的意义，是让 AI 定期跳出当前任务，从更高层看代码库：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些模块职责开始混在一起？&lt;/li&gt;
&lt;li&gt;哪些接口太复杂？&lt;/li&gt;
&lt;li&gt;哪些路径难以测试？&lt;/li&gt;
&lt;li&gt;哪些命名和领域语言不一致？&lt;/li&gt;
&lt;li&gt;哪些重复逻辑应该收敛？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是让 AI 自动大重构，而是让它先给出结构化观察和改进方向。真正要不要改、改到什么程度，仍然需要开发者判断。&lt;/p&gt;
&lt;h2 id=&#34;真正该限制的是自由度&#34;&gt;真正该限制的是自由度
&lt;/h2&gt;&lt;p&gt;这套方法论的核心可以压缩成一句话：AI 编程不是放任模型自由发挥，而是给它清晰的目标、上下文、测试和停止条件。&lt;/p&gt;
&lt;p&gt;人类更适合负责问题定义、架构边界、业务取舍和验收标准；AI 更适合负责代码生成、测试补全、重复修改和局部重构。两者配合得好，AI 是放大器；配合得不好，它会把混乱也一起放大。&lt;/p&gt;
&lt;p&gt;所以，软件工程基础没有因为 AI 变强而过时。恰恰相反，需求澄清、领域语言、TDD、诊断、架构审查这些能力，在 AI 时代变得更关键。&lt;/p&gt;
&lt;p&gt;会写代码的人会越来越多。真正拉开差距的，是谁能把 AI 放进可维护、可验证、可长期演进的工程体系里。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>cc-haha 是什么？一个把 Claude Code 做成桌面工作台的项目</title>
        <link>https://knightli.com/2026/05/14/cc-haha-claude-code-desktop-workbench/</link>
        <pubDate>Thu, 14 May 2026 22:36:43 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/14/cc-haha-claude-code-desktop-workbench/</guid>
        <description>&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 是一个围绕 Claude Code 工作流改造出来的项目。它的完整仓库名是 &lt;code&gt;NanmiCoder/cc-haha&lt;/code&gt;，项目页面写得很直接：它基于 &lt;code&gt;2026-03-31&lt;/code&gt; 从 Anthropic npm registry 泄露的 Claude Code 源码修复而来，现在主要形态是一个桌面端 Claude Code 工作台。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这句话里有两个重点。&lt;/p&gt;
&lt;p&gt;第一，它不是 Anthropic 官方 Claude Code。项目 README 也明确写了原始源码版权归 Anthropic 所有，仅供学习和研究用途。&lt;/p&gt;
&lt;p&gt;第二，它现在的重点已经不只是“本地跑一个 Claude Code CLI”。从 README 和最新 release 看，&lt;code&gt;cc-haha&lt;/code&gt; 更像一个把 Claude Code 的会话、项目、权限、Diff、Computer Use、远程访问和模型提供商配置集中起来的桌面应用。&lt;/p&gt;
&lt;h2 id=&#34;它想解决什么问题&#34;&gt;它想解决什么问题
&lt;/h2&gt;&lt;p&gt;Claude Code 原本是偏终端的工具。会话、命令执行、权限确认、文件修改、上下文切换都在终端里完成。对熟悉 CLI 的人来说没问题，但长期使用时会遇到几个不方便的地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多个项目和多个会话不好同时管理。&lt;/li&gt;
&lt;li&gt;AI 改了哪些文件，需要自己切到 Git 或编辑器里看。&lt;/li&gt;
&lt;li&gt;权限审批、命令执行、文件 Diff 分散在不同界面。&lt;/li&gt;
&lt;li&gt;想在手机或其他设备上远程看当前会话，需要额外方案。&lt;/li&gt;
&lt;li&gt;想接入非 Anthropic 模型，需要自己处理协议兼容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 的方向就是把这些东西做成一个图形化工作台。它并不是只给 Claude Code 换皮，而是把“会话管理”和“本地开发流程控制”放到了桌面端里。&lt;/p&gt;
&lt;h2 id=&#34;桌面端工作台从终端变成控制台&#34;&gt;桌面端工作台：从终端变成控制台
&lt;/h2&gt;&lt;p&gt;根据 README，&lt;code&gt;cc-haha&lt;/code&gt; 桌面端把这些能力集中到 macOS / Windows App 里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多会话工作台：用标签页、项目切换、终端入口和历史记录管理不同任务。&lt;/li&gt;
&lt;li&gt;分支 / Worktree 启动：新会话可以选择仓库分支，也可以选择使用当前工作树或隔离 Worktree。&lt;/li&gt;
&lt;li&gt;右侧代码改动面板：聊天时直接查看修改过的文件、增删行和工作区状态。&lt;/li&gt;
&lt;li&gt;代码修改可视化：查看 AI 对文件的编辑、Diff 和执行过程。&lt;/li&gt;
&lt;li&gt;权限与确认流：把危险命令、工具调用和 AI 反问集中到桌面端审批。&lt;/li&gt;
&lt;li&gt;多模型提供商：支持 Anthropic 兼容 API、第三方模型、WebSearch fallback 和本地配置。&lt;/li&gt;
&lt;li&gt;H5 远程访问：用一次性 token 在手机或其他设备上接入当前桌面会话。&lt;/li&gt;
&lt;li&gt;IM 接入：通过 Telegram、飞书、微信、钉钉远程对话、切换项目和审批权限。&lt;/li&gt;
&lt;li&gt;定时任务与 token 用量统计：在桌面端创建计划任务，并查看本机 token 使用趋势。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类功能说明它更接近“AI 编程工作台”，而不是单纯的命令行替代品。它想把 AI 写代码时最常见的几个界面放到同一个地方：聊天、文件改动、权限、项目、远程入口、模型配置。&lt;/p&gt;
&lt;h2 id=&#34;安装和启动方式&#34;&gt;安装和启动方式
&lt;/h2&gt;&lt;p&gt;普通用户更适合从 Releases 下载桌面端安装包。&lt;/p&gt;
&lt;p&gt;项目 README 给出的桌面端安装流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前往 GitHub Releases 下载 macOS 或 Windows 安装包。&lt;/li&gt;
&lt;li&gt;首次启动后，在桌面端设置里配置模型提供商、API Key 和默认模型。&lt;/li&gt;
&lt;li&gt;如果 macOS 提示应用无法打开，按安装指南处理 Gatekeeper 权限。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最新 release 页面显示，&lt;code&gt;v0.2.6&lt;/code&gt; 发布于 &lt;code&gt;2026-05-13&lt;/code&gt;。这个版本主要围绕 H5 手机访问安全恢复、桌面会话管理、文件提及搜索和桌面体验细节。&lt;/p&gt;
&lt;p&gt;如果想从源码启动 CLI，README 给出的命令是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./bin/claude-haha
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个路径更适合想调试底层 CLI、服务端或自行开发的人。普通使用还是桌面端更直接。&lt;/p&gt;
&lt;h2 id=&#34;v026-更新了什么&#34;&gt;v0.2.6 更新了什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;v0.2.6&lt;/code&gt; 的重点是把 H5/LAN 访问从临时放行收回到显式开启和 token 配对模型。&lt;/p&gt;
&lt;p&gt;几个值得注意的变化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;H5/LAN 访问需要本地显式开启。&lt;/li&gt;
&lt;li&gt;QR 链接会携带一次性显示的 token。&lt;/li&gt;
&lt;li&gt;远程 API、proxy 和 WebSocket 不再裸露。&lt;/li&gt;
&lt;li&gt;Settings 新增独立 H5 Access 页面。&lt;/li&gt;
&lt;li&gt;桌面侧边栏增加批量管理模式，支持多选和删除会话。&lt;/li&gt;
&lt;li&gt;桌面文件提及搜索改为 git-first，遵守 ignore 规则，减少 &lt;code&gt;node_modules&lt;/code&gt; 和构建产物噪声。&lt;/li&gt;
&lt;li&gt;新增纯白主题，修复长 URL 撑破聊天布局、多 tab 草稿串台等问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明项目已经不只是“能跑”，而是在补桌面产品需要的安全边界和日常体验。&lt;/p&gt;
&lt;p&gt;尤其是 H5 访问这一块，作者在 release 里明确提醒：H5 是给个人或可信团队使用的浏览器访问入口，不是公开多租户登录系统。实际使用时，不应该把它当成公网开放的 SaaS 登录后台。&lt;/p&gt;
&lt;h2 id=&#34;computer-use让-agent-操作桌面&#34;&gt;Computer Use：让 Agent 操作桌面
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 另一个重要卖点是 Computer Use。&lt;/p&gt;
&lt;p&gt;项目文档说明，这个功能基于 Claude Code 泄露源码中的 Computer Use 内部实现改造而来。官方实现依赖 Anthropic 内部私有原生模块，例如 &lt;code&gt;@ant/computer-use-swift&lt;/code&gt; 和 &lt;code&gt;@ant/computer-use-input&lt;/code&gt;，无法公开获取。&lt;code&gt;cc-haha&lt;/code&gt; 用 Python bridge 替换底层操作层，通过 &lt;code&gt;pyautogui&lt;/code&gt;、&lt;code&gt;mss&lt;/code&gt;、&lt;code&gt;pyobjc&lt;/code&gt; 等公开库实现系统交互。&lt;/p&gt;
&lt;p&gt;Computer Use 支持的操作包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;截屏：&lt;code&gt;screenshot&lt;/code&gt;、&lt;code&gt;zoom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;鼠标：点击、拖拽、移动、滚动、读取光标位置&lt;/li&gt;
&lt;li&gt;键盘：输入文字、按键、按住按键&lt;/li&gt;
&lt;li&gt;应用：打开应用、切换显示器&lt;/li&gt;
&lt;li&gt;权限：请求应用授权、列出已授权应用&lt;/li&gt;
&lt;li&gt;剪贴板：读取和写入剪贴板&lt;/li&gt;
&lt;li&gt;其他：等待、批量操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的工作方式是一个“截图 - 分析 - 操作”的闭环：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;模型收到用户请求。&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;screenshot&lt;/code&gt; 获取屏幕画面。&lt;/li&gt;
&lt;li&gt;模型根据视觉能力识别按钮、输入框和坐标。&lt;/li&gt;
&lt;li&gt;调用点击、输入或应用操作工具。&lt;/li&gt;
&lt;li&gt;再次截图确认结果，再继续下一步。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从文档看，完整支持的平台主要是 macOS，包括 Apple Silicon 和 Intel。Windows / Linux 在理论上可行，但涉及 &lt;code&gt;pyobjc&lt;/code&gt; 的应用管理部分需要替换为对应平台方案，当前并不是完整适配状态。&lt;/p&gt;
&lt;p&gt;运行要求包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Bun &amp;gt;= 1.1.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Python &amp;gt;= 3.8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS Accessibility 辅助功能权限&lt;/li&gt;
&lt;li&gt;macOS Screen Recording 屏幕录制权限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类功能很强，但也意味着权限风险更高。让 AI 操作桌面应用时，最好只授权明确需要的应用，不要在无关窗口里打开敏感内容。&lt;/p&gt;
&lt;h2 id=&#34;多模型接入通过-anthropic-协议兼容层&#34;&gt;多模型接入：通过 Anthropic 协议兼容层
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 的通信基础仍然是 Anthropic Messages API 协议。项目文档给出的推荐方案是用 LiteLLM 做协议转换代理。&lt;/p&gt;
&lt;p&gt;基本结构是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-code-haha ──Anthropic协议──▶ LiteLLM Proxy ──OpenAI协议──▶ 目标模型 API
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是说，&lt;code&gt;cc-haha&lt;/code&gt; 发出 Anthropic Messages API 请求，LiteLLM 把它转换成 OpenAI Chat Completions 等格式，再转发给 OpenAI、DeepSeek、Ollama 或其他模型服务。&lt;/p&gt;
&lt;p&gt;文档给出的 LiteLLM 安装方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s1&#34;&gt;&amp;#39;litellm[proxy]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后可以在 &lt;code&gt;litellm_config.yaml&lt;/code&gt; 里配置 OpenAI、DeepSeek、Ollama 等模型。启动代理后，在 &lt;code&gt;.env&lt;/code&gt; 或 &lt;code&gt;~/.claude/settings.json&lt;/code&gt; 里设置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_AUTH_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-anything
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:4000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_DEFAULT_SONNET_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_DEFAULT_HAIKU_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_DEFAULT_OPUS_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;API_TIMEOUT_MS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;DISABLE_TELEMETRY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里有几个实际注意点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;drop_params: true&lt;/code&gt; 很重要，因为 Anthropic 的 &lt;code&gt;thinking&lt;/code&gt;、&lt;code&gt;cache_control&lt;/code&gt; 等参数在 OpenAI API 中不存在。&lt;/li&gt;
&lt;li&gt;Extended Thinking 属于 Anthropic 专有能力，使用第三方模型时不可用。&lt;/li&gt;
&lt;li&gt;Prompt Caching 也不会按 Anthropic 原生方式生效。&lt;/li&gt;
&lt;li&gt;工具调用会经过 Anthropic &lt;code&gt;tool_use&lt;/code&gt; 到 OpenAI function calling 的转换，复杂工具调用可能存在兼容性问题。&lt;/li&gt;
&lt;li&gt;本地 Ollama 小模型未必能稳定处理这套工具调用流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以多模型接入能跑，不等于所有模型体验一样。&lt;code&gt;cc-haha&lt;/code&gt; 对模型的工具调用、代码理解和长上下文能力要求仍然不低。&lt;/p&gt;
&lt;h2 id=&#34;适合什么人&#34;&gt;适合什么人
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 更适合这几类用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经熟悉 Claude Code，但想要桌面端会话管理的人。&lt;/li&gt;
&lt;li&gt;经常同时处理多个仓库、分支和 AI 会话的人。&lt;/li&gt;
&lt;li&gt;希望在右侧直接看 AI 文件改动、Diff 和工作区状态的人。&lt;/li&gt;
&lt;li&gt;想尝试 Computer Use，让 Agent 操作桌面应用的人。&lt;/li&gt;
&lt;li&gt;想用 Anthropic 协议接入 OpenAI、DeepSeek、Ollama 或其他模型的人。&lt;/li&gt;
&lt;li&gt;需要手机或 IM 远程查看会话、审批权限的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只想稳定使用官方 Claude Code 的用户。&lt;/li&gt;
&lt;li&gt;不能接受泄露源码背景和版权不确定性的人。&lt;/li&gt;
&lt;li&gt;不愿意给本地工具较高系统权限的人。&lt;/li&gt;
&lt;li&gt;需要企业合规、审计和官方支持的人。&lt;/li&gt;
&lt;li&gt;不熟悉 API key、代理、模型兼容和本地服务配置的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;风险和边界&#34;&gt;风险和边界
&lt;/h2&gt;&lt;p&gt;这篇文章不能只讲功能，也必须讲风险。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 的来源决定了它不是一个普通的社区重写项目。README 明确写到它基于泄露的 Claude Code 源码，且原始源码版权归 Anthropic 所有。这会带来版权、合规和长期维护上的不确定性。&lt;/p&gt;
&lt;p&gt;另外，Computer Use、H5 远程访问、IM 接入和本地权限审批都属于高权限能力。它们越方便，越需要清楚边界：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要在不可信网络下开放 H5 访问。&lt;/li&gt;
&lt;li&gt;不要把 token 当作长期公开登录凭证。&lt;/li&gt;
&lt;li&gt;不要给 Agent 操作不相关的敏感应用。&lt;/li&gt;
&lt;li&gt;不要在生产环境或公司合规环境里随意接入。&lt;/li&gt;
&lt;li&gt;不要把第三方模型代理和 API key 配置暴露到公共仓库。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是学习 AI 编程工具架构、桌面端工作流和 Computer Use 实现，它很有参考价值。如果要放进长期生产工作流，就要先评估法律、权限、安全和维护风险。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 最值得关注的地方，不是“它能不能复刻 Claude Code”，而是它把 Claude Code 类型的 AI 编程工具推向了桌面工作台形态。&lt;/p&gt;
&lt;p&gt;会话、项目、Worktree、Diff、权限、远程访问、Computer Use、多模型提供商、定时任务和 token 用量统计都被放进同一个桌面体验里。这说明 AI 编程工具的下一步，不只是模型更强，也包括工作流界面更完整。&lt;/p&gt;
&lt;p&gt;不过它的边界也很清楚：这不是 Anthropic 官方产品，来源存在敏感背景，高权限能力需要谨慎使用。更合适的态度是把它当成一个观察 AI 编程工具演化方向的项目，而不是无脑替代官方 Claude Code。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;最新 Release：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha/releases/tag/v0.2.6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha/releases/tag/v0.2.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Computer Use 文档：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha/blob/main/docs/computer-use.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha/blob/main/docs/computer-use.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;第三方模型文档：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha/blob/main/docs/guide/third-party-models.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha/blob/main/docs/guide/third-party-models.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex /goal vs Claude Code /goal：长任务自动跑到完成</title>
        <link>https://knightli.com/2026/05/14/codex-goal-vs-claude-code-goal/</link>
        <pubDate>Thu, 14 May 2026 22:22:42 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/14/codex-goal-vs-claude-code-goal/</guid>
        <description>&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; 正在变成 AI 编程工具里的一个重要命令。&lt;/p&gt;
&lt;p&gt;它解决的不是“让模型多写几行代码”，而是另一个更实际的问题：当任务有明确完成条件时，能不能让 Agent 持续推进，直到条件满足，而不是每完成一轮就停下来等用户继续催。&lt;/p&gt;
&lt;p&gt;Codex CLI 已经在官方文档里加入了实验性的 &lt;code&gt;/goal&lt;/code&gt;。Claude Code 也上线了自己的 &lt;code&gt;/goal&lt;/code&gt; 文档，而且把它描述成一种可以跨多轮持续工作的自动化能力。两者名字一样，但产品取向并不完全一样。&lt;/p&gt;
&lt;h2 id=&#34;goal-到底解决什么问题&#34;&gt;&lt;code&gt;/goal&lt;/code&gt; 到底解决什么问题
&lt;/h2&gt;&lt;p&gt;普通 AI 编程对话通常是“一问一答”：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户提出任务。&lt;/li&gt;
&lt;li&gt;Agent 分析、改代码、跑测试。&lt;/li&gt;
&lt;li&gt;Agent 汇报结果。&lt;/li&gt;
&lt;li&gt;用户再决定下一步。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个流程适合短任务，但遇到迁移、重构、测试修复、issue backlog 清理时，就会变得很碎。Agent 可能每次只推进一小段，然后停下来等你输入“继续”。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; 的思路是把任务从“下一步做什么”改成“最终什么状态算完成”。例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 完成登录模块迁移，所有 auth 测试通过，lint 无报错
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这类目标天然适合长任务，因为它有清楚的终点：测试通过、构建成功、文件拆分完成、队列清空、验收条件满足。&lt;/p&gt;
&lt;h2 id=&#34;codex-的-goal实验功能绑定当前线程&#34;&gt;Codex 的 &lt;code&gt;/goal&lt;/code&gt;：实验功能，绑定当前线程
&lt;/h2&gt;&lt;p&gt;OpenAI 的 Codex CLI 文档把 &lt;code&gt;/goal&lt;/code&gt; 标为实验功能。它不是默认稳定能力，需要先开启 &lt;code&gt;features.goals&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;开启方式有两种：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/experimental
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者在 &lt;code&gt;config.toml&lt;/code&gt; 里加入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;features&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;goals&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启用后，可以这样使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal Finish the migration and keep tests green
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常用命令包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal pause
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal resume
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按照 OpenAI 文档的说法，Codex 会把 goal 附着在当前 active thread 上，在更大的任务运行过程中持续跟踪这个目标。&lt;/p&gt;
&lt;p&gt;这里要注意一个细节：官方文档对 Codex &lt;code&gt;/goal&lt;/code&gt; 的措辞比较克制。它强调“给长任务设置实验性目标”“把目标附着到当前线程”，但没有像 Claude Code 文档那样展开说明每一轮结束后由独立 evaluator 自动判断并继续下一轮。所以现在使用 Codex &lt;code&gt;/goal&lt;/code&gt; 时，最好仍把它看作实验中的长任务目标机制，而不是完全稳定的无人值守执行模式。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-的-goal完成条件驱动的多轮执行&#34;&gt;Claude Code 的 &lt;code&gt;/goal&lt;/code&gt;：完成条件驱动的多轮执行
&lt;/h2&gt;&lt;p&gt;Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 文档写得更明确：用户设置 completion condition 后，Claude 会跨 turn 持续工作，直到条件满足。&lt;/p&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal all tests in test/auth pass and the lint step is clean
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Code 的机制大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前 turn 完成后，不直接把控制权还给用户。&lt;/li&gt;
&lt;li&gt;一个小型快速模型会检查目标条件是否已经满足。&lt;/li&gt;
&lt;li&gt;如果没有满足，Claude 自动开始下一轮。&lt;/li&gt;
&lt;li&gt;如果满足，goal 自动清除，并在 transcript 里记录完成状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着 Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 更像“按完成条件自动续跑”。它不只是把目标挂在会话里，而是把“是否继续下一轮”交给一个独立评估步骤。&lt;/p&gt;
&lt;p&gt;Claude Code 还支持直接查看状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;状态里会显示目标条件、运行时间、已评估 turn 数、token 消耗，以及 evaluator 最近一次给出的原因。&lt;/p&gt;
&lt;p&gt;如果要提前停止，可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;stop&lt;/code&gt;、&lt;code&gt;off&lt;/code&gt;、&lt;code&gt;reset&lt;/code&gt;、&lt;code&gt;none&lt;/code&gt;、&lt;code&gt;cancel&lt;/code&gt; 也可以作为清除别名。开启目标后，如果会话中断，之后通过 &lt;code&gt;--resume&lt;/code&gt; 或 &lt;code&gt;--continue&lt;/code&gt; 恢复时，仍然 active 的 goal 可以被带回来；但计时、turn 数和 token 基线会重新计算。&lt;/p&gt;
&lt;h2 id=&#34;两者最大的差异&#34;&gt;两者最大的差异
&lt;/h2&gt;&lt;p&gt;Codex 和 Claude Code 都在把 AI 编程从“单轮回答”推向“长任务执行”，但 &lt;code&gt;/goal&lt;/code&gt; 的定位有差异。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;对比项&lt;/th&gt;
          &lt;th&gt;Codex CLI &lt;code&gt;/goal&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;Claude Code &lt;code&gt;/goal&lt;/code&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;状态&lt;/td&gt;
          &lt;td&gt;experimental&lt;/td&gt;
          &lt;td&gt;官方文档单独成页说明&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;启用方式&lt;/td&gt;
          &lt;td&gt;需要开启 &lt;code&gt;features.goals&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;可直接在受信任 workspace 使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;目标作用域&lt;/td&gt;
          &lt;td&gt;当前 active thread&lt;/td&gt;
          &lt;td&gt;当前 session&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;常用操作&lt;/td&gt;
          &lt;td&gt;set / view / pause / resume / clear&lt;/td&gt;
          &lt;td&gt;set / view / clear&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自动判断&lt;/td&gt;
          &lt;td&gt;文档强调目标附着与跟踪&lt;/td&gt;
          &lt;td&gt;明确说明每轮后由 evaluator 判断&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自动续跑&lt;/td&gt;
          &lt;td&gt;文档表述较克制&lt;/td&gt;
          &lt;td&gt;条件未满足时自动下一轮&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;适合场景&lt;/td&gt;
          &lt;td&gt;想在 Codex 长任务里保持目标上下文&lt;/td&gt;
          &lt;td&gt;想按完成条件让 Claude Code 持续推进&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;简单说，Codex 的 &lt;code&gt;/goal&lt;/code&gt; 更像“给当前线程挂一个实验性的长期目标”；Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 更像“给当前会话设置一个可验证的停止条件，让它自动干到满足为止”。&lt;/p&gt;
&lt;h2 id=&#34;写好-goal-的关键&#34;&gt;写好 &lt;code&gt;/goal&lt;/code&gt; 的关键
&lt;/h2&gt;&lt;p&gt;不管使用哪一个工具，&lt;code&gt;/goal&lt;/code&gt; 都不适合写成模糊愿望。&lt;/p&gt;
&lt;p&gt;不太好的写法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 把项目优化一下
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更好的写法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 将 payment 模块迁移到新 API，npm test -- payment 退出码为 0，git diff 只包含 payment 相关文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一个好目标通常包含三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;明确的完成状态。&lt;/li&gt;
&lt;li&gt;可执行的验证方式。&lt;/li&gt;
&lt;li&gt;必须遵守的边界。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果目标太大，还应该加上停止条件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 修复 eslint 报错，npm run lint 退出码为 0；如果超过 20 轮仍未完成，停止并总结剩余问题
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这很重要。&lt;code&gt;/goal&lt;/code&gt; 越强，越需要边界。否则 Agent 可能会为了追求“完成”而改动过多文件、跑太久、消耗太多 token，甚至把原本该停下来询问的问题继续往前推。&lt;/p&gt;
&lt;h2 id=&#34;什么时候适合用-goal&#34;&gt;什么时候适合用 &lt;code&gt;/goal&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;测试修复：直到指定测试通过。&lt;/li&gt;
&lt;li&gt;代码迁移：直到所有调用点改完并编译成功。&lt;/li&gt;
&lt;li&gt;批量清理：直到某类 lint 或类型错误清零。&lt;/li&gt;
&lt;li&gt;文档补齐：直到所有指定模块都有说明。&lt;/li&gt;
&lt;li&gt;issue 队列处理：直到某个标签下的问题都被处理或明确分类。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求本身还没想清楚。&lt;/li&gt;
&lt;li&gt;需要频繁产品判断。&lt;/li&gt;
&lt;li&gt;涉及高风险删除、数据迁移或权限变更。&lt;/li&gt;
&lt;li&gt;验收条件只能靠主观判断。&lt;/li&gt;
&lt;li&gt;任务会跨越大量无关模块。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个实用原则是：如果你能写出“跑哪个命令、看到什么结果、哪些文件不能碰”，就适合用 &lt;code&gt;/goal&lt;/code&gt;。如果只能写“帮我做得更好”，那还是先用普通对话、计划模式或人工评审更稳。&lt;/p&gt;
&lt;h2 id=&#34;对-ai-编程工具的影响&#34;&gt;对 AI 编程工具的影响
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; 代表一个很明显的方向：AI 编程工具正在从“交互式助手”变成“可持续执行的工作单元”。&lt;/p&gt;
&lt;p&gt;过去我们让 Agent 做任务，经常要在旁边守着。它卡住了要提示，测完了要继续，报错了要再下命令。&lt;code&gt;/goal&lt;/code&gt; 把这部分交互压缩成一个完成条件，让 Agent 自己决定下一轮该做什么。&lt;/p&gt;
&lt;p&gt;但这也带来新的要求。以后写 prompt 不只是描述任务，还要写验收条件、验证命令、修改边界和停止规则。换句话说，用户的工作从“催它继续”变成“定义什么叫完成”。&lt;/p&gt;
&lt;p&gt;Codex 和 Claude Code 走到 &lt;code&gt;/goal&lt;/code&gt; 这一步，说明长任务 Agent 已经不再只是后台任务或云端队列的专利。终端里的本地编程工具，也开始需要更强的自主推进能力。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Codex CLI 和 Claude Code 都有了 &lt;code&gt;/goal&lt;/code&gt;，但现阶段不要把它们简单看成同一个功能。&lt;/p&gt;
&lt;p&gt;Codex 的 &lt;code&gt;/goal&lt;/code&gt; 仍是实验能力，需要开启 &lt;code&gt;features.goals&lt;/code&gt;，更适合在 Codex 当前线程里维持长期目标。Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 则更明确地把“完成条件”和“自动续跑”连在一起，通过独立 evaluator 判断是否继续。&lt;/p&gt;
&lt;p&gt;对日常开发来说，这类命令最适合处理有明确验收标准的工程任务。它不会替代需求判断，也不会消除代码审查，但能减少长任务里大量重复的“继续”“再跑一次”“修到测试通过”。&lt;/p&gt;
&lt;p&gt;真正要学会的不是某个命令本身，而是如何把任务写成清楚、可验证、可停止的目标。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OpenAI Codex CLI Slash Commands：&lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/codex/cli/slash-commands&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://developers.openai.com/codex/cli/slash-commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code Goal 文档：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/goal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/goal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 连接 Fusion 360：用 AI 修改 STEP 模型的一个实例</title>
        <link>https://knightli.com/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/2026/05/14/claude-fusion-360-mcp-step-model-edit/</guid>
        <description>&lt;p&gt;Claude 连接 Fusion 360 之后，可以不只是“讲思路”，而是直接参与 CAD 模型修改。一个典型场景是：打开已有的 STEP 文件，让 Claude 读取当前模型、分析结构冲突、规划尺寸，再通过 Fusion 插件执行建模修改。&lt;/p&gt;
&lt;p&gt;下面用一个行星齿轮分度器的修改过程，整理 Claude + Fusion 360 的基本使用方法。&lt;/p&gt;
&lt;h2 id=&#34;先启用-fusion-360-的-apimcp-服务&#34;&gt;先启用 Fusion 360 的 API/MCP 服务
&lt;/h2&gt;&lt;p&gt;在 Fusion 360 里先做一次基础设置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开右上角的 &lt;code&gt;Preferences&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;进入 &lt;code&gt;General&lt;/code&gt; 或“通用”设置。&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;API&lt;/code&gt; 选项。&lt;/li&gt;
&lt;li&gt;打开 MCP server。&lt;/li&gt;
&lt;li&gt;记下端口号，默认示例是 &lt;code&gt;27182&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;然后回到 Claude，进入 &lt;code&gt;Connectors&lt;/code&gt;，找到 Fusion 连接器，填入 Fusion 360 的地址和端口。端口一般使用默认的 &lt;code&gt;27182&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;连接成功后，Claude 就可以通过 Fusion 插件和当前打开的模型交互。&lt;/p&gt;
&lt;h2 id=&#34;打开-step-文件并明确修改目标&#34;&gt;打开 STEP 文件并明确修改目标
&lt;/h2&gt;&lt;p&gt;这次要修改的是行星齿轮分度器里的一个齿轮。原始设计里，这个齿轮通过一颗螺丝作为中心轴固定在支架上。&lt;/p&gt;
&lt;p&gt;目标是把它改成轴承结构：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中心孔需要适配轴承；&lt;/li&gt;
&lt;li&gt;周围螺丝孔不能和扩大的中心孔干涉；&lt;/li&gt;
&lt;li&gt;支架上的自攻螺丝孔位也要调整为适合轴承旋转的轴心结构；&lt;/li&gt;
&lt;li&gt;最终模型要能导入切片软件并用于 3D 打印。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里的关键是，不要只告诉 Claude“帮我改一下”。要把用途、装配方式、材料和制造工艺说清楚。&lt;/p&gt;
&lt;h2 id=&#34;claude-可以通过截图理解当前模型&#34;&gt;Claude 可以通过截图理解当前模型
&lt;/h2&gt;&lt;p&gt;之前有人会担心 Fusion 插件只能执行命令，不能让 Claude 看到模型。实际测试里，Claude 可以通过截图方式识别当前模型状态。&lt;/p&gt;
&lt;p&gt;在这个案例里，Claude 能看到齿轮结构，并完成几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;识别齿轮和中心孔；&lt;/li&gt;
&lt;li&gt;测量或估算相关尺寸；&lt;/li&gt;
&lt;li&gt;推荐轴承尺寸；&lt;/li&gt;
&lt;li&gt;判断哪些结构会影响轴承安装；&lt;/li&gt;
&lt;li&gt;发现中心孔扩大后，周围螺丝孔可能发生几何干涉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步很重要。它说明 Claude 不只是按文字指令盲改，而是可以结合当前模型视图做结构判断。&lt;/p&gt;
&lt;h2 id=&#34;材料和加工方式必须提前说明&#34;&gt;材料和加工方式必须提前说明
&lt;/h2&gt;&lt;p&gt;如果模型最终用于 3D 打印，必须明确告诉 Claude 材料和工艺。&lt;/p&gt;
&lt;p&gt;例如使用 PLA 打印时，轴承孔不能完全按 CNC 金属加工的公差来设计。直径为 6mm 的轴承，如果需要压入配合，可以考虑把孔径设为约 &lt;code&gt;6.1mm&lt;/code&gt;。这个尺寸是否合适，还要结合打印机精度、材料收缩、切片参数和实际测试调整。&lt;/p&gt;
&lt;p&gt;如果不说明材料，Claude 可能默认按 CNC 加工思路给尺寸。这样得到的孔径对 3D 打印来说可能偏小，后续装配会很难。&lt;/p&gt;
&lt;p&gt;建议在提示里写清楚：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这个模型用于 FDM 3D 打印，材料是 PLA。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;目标是安装直径 6mm 的轴承，需要考虑打印公差和压入配合。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请不要按 CNC 金属加工公差处理。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;让-claude-修改齿轮结构&#34;&gt;让 Claude 修改齿轮结构
&lt;/h2&gt;&lt;p&gt;明确目标后，可以让 Claude 执行具体修改：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;扩大中心孔；&lt;/li&gt;
&lt;li&gt;调整周围干涉的螺丝孔；&lt;/li&gt;
&lt;li&gt;增加轴承安装座；&lt;/li&gt;
&lt;li&gt;对边缘加倒角；&lt;/li&gt;
&lt;li&gt;保持齿轮主体和关键啮合结构不变。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在这个案例里，Claude 会先给出规划，再调用 Fusion 360 完成建模操作。比如它发现原有螺丝孔和中心孔冲突后，会把孔位向外移动一点，避免轴承安装空间被破坏。&lt;/p&gt;
&lt;p&gt;修改完成后，可以检查模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中心轴承座是否成型；&lt;/li&gt;
&lt;li&gt;周围孔位是否还保留功能；&lt;/li&gt;
&lt;li&gt;齿轮结构是否被误伤；&lt;/li&gt;
&lt;li&gt;倒角是否影响装配；&lt;/li&gt;
&lt;li&gt;是否存在悬空、薄壁或切片风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;支架也要一起修改&#34;&gt;支架也要一起修改
&lt;/h2&gt;&lt;p&gt;只改齿轮还不够。原支架上原本是自攻螺丝安装孔，如果齿轮中心改为轴承，支架也要配合改成轴承轴心结构。&lt;/p&gt;
&lt;p&gt;可以让 Claude 对支架执行类似修改：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留整体安装位置；&lt;/li&gt;
&lt;li&gt;把原来的自攻螺丝孔改为柱状轴心；&lt;/li&gt;
&lt;li&gt;控制轴心直径和高度；&lt;/li&gt;
&lt;li&gt;给轴承旋转预留空间；&lt;/li&gt;
&lt;li&gt;避免和支架其他结构干涉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样打印出来后，齿轮可以顺利压入轴承，支架也能提供新的旋转中心。最终效果是原本靠螺丝固定的结构，变成更顺滑的轴承旋转结构。&lt;/p&gt;
&lt;h2 id=&#34;导出切片和打印验证&#34;&gt;导出、切片和打印验证
&lt;/h2&gt;&lt;p&gt;CAD 修改完成后，还需要进入实际制造流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从 Fusion 360 导出修改后的模型。&lt;/li&gt;
&lt;li&gt;导入切片软件。&lt;/li&gt;
&lt;li&gt;检查孔洞、薄壁、悬垂和支撑。&lt;/li&gt;
&lt;li&gt;打印齿轮和支架。&lt;/li&gt;
&lt;li&gt;实际压入轴承。&lt;/li&gt;
&lt;li&gt;检查旋转是否顺滑。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI 修改 CAD 的结果不能只看屏幕上的模型是否漂亮，必须打印验证。尤其是轴承、孔位、卡扣、齿轮这类机械结构，0.1mm 级别的误差就可能决定能不能装上、转得顺不顺。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;Claude + Fusion 360 适合做这类任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在已有 STEP 模型上做局部改造；&lt;/li&gt;
&lt;li&gt;调整孔位、倒角、支架、安装座；&lt;/li&gt;
&lt;li&gt;把螺丝固定改成轴承、卡扣或插销结构；&lt;/li&gt;
&lt;li&gt;给 3D 打印模型做公差修正；&lt;/li&gt;
&lt;li&gt;快速生成多个改版方案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它不适合完全不检查地直接出最终件。更稳妥的流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;人先定义装配目标和材料工艺。&lt;/li&gt;
&lt;li&gt;Claude 负责分析结构并提出修改方案。&lt;/li&gt;
&lt;li&gt;Claude 调用 Fusion 执行建模。&lt;/li&gt;
&lt;li&gt;人检查关键尺寸和干涉。&lt;/li&gt;
&lt;li&gt;打印小样验证。&lt;/li&gt;
&lt;li&gt;根据实物结果再迭代。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Claude 连接 Fusion 360 的价值，不在于替代 CAD 基础知识，而在于把“已有模型的局部修改”变得更快。&lt;/p&gt;
&lt;p&gt;只要把目标、材料、尺寸、公差和装配方式说清楚，它可以帮你读模型、找干涉、改结构、加倒角，再把模型推进到可打印状态。对于 3D 打印、开源机械件改造和个人工作室的小批量迭代来说，这类 AI CAD 工作流已经很实用。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 怎么接入国产大模型？用 CCX 统一管理 OpenAI 兼容 API</title>
        <link>https://knightli.com/2026/05/13/ccx-ai-api-proxy-gateway/</link>
        <pubDate>Wed, 13 May 2026 23:20:40 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/13/ccx-ai-api-proxy-gateway/</guid>
        <description>&lt;p&gt;CCX 是一个 AI API 代理与协议转换网关。它把 Claude Messages、OpenAI Chat Completions、OpenAI Images、Codex Responses 和 Gemini API 放到同一个服务入口下，同时提供 Web 管理界面，用来配置渠道、密钥、模型映射、优先级、故障转移和流量监控。&lt;/p&gt;
&lt;p&gt;如果你平时同时使用 Claude、OpenAI、Gemini、Codex，或者维护多个兼容 OpenAI API 的上游服务，CCX 的价值就在于统一入口和统一管理。客户端只需要连接一个服务地址，后面的上游渠道由 CCX 负责调度。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ccx-解决什么问题&#34;&gt;CCX 解决什么问题
&lt;/h2&gt;&lt;p&gt;多个 AI API 混用时，最容易遇到几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个供应商的接口路径、鉴权方式、请求格式都不一样。&lt;/li&gt;
&lt;li&gt;同一类模型可能有多个上游，需要手动切换 base URL 和 API key。&lt;/li&gt;
&lt;li&gt;某个 key 或渠道失败后，客户端通常不会自动换备用渠道。&lt;/li&gt;
&lt;li&gt;团队使用时，很难集中管理模型白名单、代理、自定义请求头和调用日志。&lt;/li&gt;
&lt;li&gt;想同时接 Claude、Gemini、OpenAI Chat、图像接口和 Codex Responses 时，配置会越来越散。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CCX 的思路是把这些差异收敛到一个代理层。前端工具、脚本或业务服务只访问 CCX；CCX 再根据接口类型、模型、渠道状态、优先级和健康情况，把请求转发到合适的上游。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些接口&#34;&gt;支持哪些接口
&lt;/h2&gt;&lt;p&gt;CCX 对外提供一个统一后端入口，默认端口是 &lt;code&gt;3000&lt;/code&gt;。主要路径包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET  /                         -&amp;gt; Web 管理界面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET  /health                   -&amp;gt; 健康检查
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/api/*                         -&amp;gt; 管理 API
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/messages              -&amp;gt; Claude Messages 代理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/chat/completions      -&amp;gt; OpenAI Chat 代理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/responses             -&amp;gt; Codex Responses 代理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/images/generations    -&amp;gt; OpenAI Images 生成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/images/edits          -&amp;gt; OpenAI Images 编辑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/images/variations     -&amp;gt; OpenAI Images 变体
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET  /v1/models                -&amp;gt; 模型列表
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1beta/models/*          -&amp;gt; Gemini 代理
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是说，它不是只代理一种协议，而是把常见 AI API 分成 Messages、Chat、Responses、Gemini、Images 几类渠道分别管理。不同协议之间不会共用同一套健康状态和日志空间，这对排查问题很重要。&lt;/p&gt;
&lt;h2 id=&#34;架构思路&#34;&gt;架构思路
&lt;/h2&gt;&lt;p&gt;CCX 使用 Go 后端加 Vue 3 前端。前端构建产物会嵌入后端二进制，因此可以做单端口部署：同一个服务既提供 Web UI，也提供管理 API 和代理 API。&lt;/p&gt;
&lt;p&gt;一次请求大致会经过这样的链路：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Client -&amp;gt; Auth Middleware -&amp;gt; Route Handler -&amp;gt; Channel Scheduler -&amp;gt; Provider / Converter -&amp;gt; Upstream API -&amp;gt; Metrics / Channel Logs -&amp;gt; Client Response
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;几个核心模块的分工可以这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;handlers&lt;/code&gt;：接收不同协议的请求和管理操作。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;providers&lt;/code&gt;：封装上游 API 的请求和响应处理。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;converters&lt;/code&gt;：处理 Responses 等场景下的协议转换。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scheduler&lt;/code&gt;：根据优先级、促销期、健康状态、熔断状态和会话亲和性选择渠道。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics&lt;/code&gt;：记录请求量、成功率、延迟、日志和熔断状态。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config&lt;/code&gt;：维护运行时配置，支持热重载和备份。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个设计的重点不是“把所有接口强行变成一种格式”，而是按协议类型分别代理，再在管理、调度、日志和认证层做统一。&lt;/p&gt;
&lt;h2 id=&#34;ccx-和-codexbridge-有什么区别&#34;&gt;CCX 和 CodexBridge 有什么区别
&lt;/h2&gt;&lt;p&gt;CCX 和 CodexBridge 都和 Codex、OpenAI 兼容接口有关，但它们解决的问题不一样。&lt;/p&gt;
&lt;p&gt;CodexBridge 更像一个专门的 Codex 桥接器。它的核心目标是把 Codex CLI/SDK 封装成 OpenAI 兼容的 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 服务，让 OpenWebUI、Cherry Studio、脚本或其他 OpenAI 兼容客户端可以调用本地 Codex。也就是说，CodexBridge 的重点是“把 Codex 接出来”。&lt;/p&gt;
&lt;p&gt;CCX 更像一个统一 AI API 网关。它不只处理 Codex Responses，还同时支持 Claude Messages、OpenAI Chat、OpenAI Images 和 Gemini API，并提供 Web 管理界面、渠道优先级、故障转移、日志监控和多 key 管理。也就是说，CCX 的重点是“把多个模型和多个供应商统一管起来”。&lt;/p&gt;
&lt;p&gt;简单对比：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;对比项&lt;/th&gt;
          &lt;th&gt;CodexBridge&lt;/th&gt;
          &lt;th&gt;CCX&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;核心定位&lt;/td&gt;
          &lt;td&gt;Codex 本地桥接器&lt;/td&gt;
          &lt;td&gt;多协议 AI API 网关&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主要目标&lt;/td&gt;
          &lt;td&gt;让 Codex 变成 OpenAI 兼容接口&lt;/td&gt;
          &lt;td&gt;统一管理 Claude、OpenAI、Gemini、Codex 等渠道&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;管理界面&lt;/td&gt;
          &lt;td&gt;侧重 API 服务本身&lt;/td&gt;
          &lt;td&gt;提供 Web 管理界面&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多渠道调度&lt;/td&gt;
          &lt;td&gt;不是重点&lt;/td&gt;
          &lt;td&gt;支持渠道优先级、故障转移和日志监控&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;适合场景&lt;/td&gt;
          &lt;td&gt;本机或单服务调用 Codex&lt;/td&gt;
          &lt;td&gt;团队、多 key、多供应商、多协议统一入口&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是想把 Codex 接进 OpenWebUI 或 Cherry Studio，CodexBridge 更直接；如果想同时管理 Codex、Claude、Gemini、DeepSeek、Qwen、Kimi 等多个上游，CCX 更合适。&lt;/p&gt;
&lt;h2 id=&#34;快速部署&#34;&gt;快速部署
&lt;/h2&gt;&lt;p&gt;最简单的方式是下载二进制文件。下载后，在同目录创建 &lt;code&gt;.env&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-proxy-access-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_WEB_UI&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;APP_UI_LANGUAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:3000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果在 Windows 下从 WSL、Docker、PowerShell 或其他环境访问 &lt;code&gt;localhost&lt;/code&gt; 不通，可以改用 Windows 主机的局域网 IPv4 地址，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://192.168.1.23:3000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CCX 默认通过 &lt;code&gt;:PORT&lt;/code&gt; 监听所有网卡地址，所以暴露到局域网时要注意访问控制。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;Docker 方式适合长期运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ccx &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 3000:3000 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-proxy-access-key &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;APP_UI_LANGUAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;pwd&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;/.config:/app/.config &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  crpi-i19l8zl0ugidq97v.cn-hangzhou.personal.cr.aliyuncs.com/bene/ccx:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果仓库里已经有 &lt;code&gt;docker-compose.yml&lt;/code&gt;，也可以直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要自动更新时，可以叠加 Watchtower 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml -f docker-compose.watchtower.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;部署完成后，&lt;code&gt;.config&lt;/code&gt; 目录会保存运行时配置和持久化数据，建议挂载到宿主机，避免容器重建后配置丢失。&lt;/p&gt;
&lt;h2 id=&#34;源码运行&#34;&gt;源码运行
&lt;/h2&gt;&lt;p&gt;开发或自定义构建可以走源码方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/BenedictKing/ccx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ccx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp backend-go/.env.example backend-go/.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常用命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make frontend-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前端单独开发：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;后端单独开发：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; backend-go
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;关键环境变量&#34;&gt;关键环境变量
&lt;/h2&gt;&lt;p&gt;最小可用配置通常包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENV&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;production
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_WEB_UI&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-proxy-access-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ADMIN_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-admin-secret-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;APP_UI_LANGUAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LOG_LEVEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;REQUEST_TIMEOUT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;300000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PROXY_ACCESS_KEY&lt;/code&gt; 用于代理 API，是必须修改的密钥。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ADMIN_ACCESS_KEY&lt;/code&gt; 用于 Web 管理界面和 &lt;code&gt;/api/*&lt;/code&gt;，建议和代理密钥分开。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ENABLE_WEB_UI&lt;/code&gt; 控制是否启用管理界面。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;REQUEST_TIMEOUT&lt;/code&gt; 控制请求超时时间，长上下文或图像任务可以适当调大。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LOG_LEVEL&lt;/code&gt; 控制日志级别，生产环境一般用 &lt;code&gt;info&lt;/code&gt; 或 &lt;code&gt;warn&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果需要限制请求体大小，可以关注：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MAX_REQUEST_BODY_SIZE_MB&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;图像编辑、base64 图片、多模态请求都可能让请求体变大。&lt;/p&gt;
&lt;h2 id=&#34;渠道编排和故障转移&#34;&gt;渠道编排和故障转移
&lt;/h2&gt;&lt;p&gt;CCX 的管理界面可以配置多个渠道，并为每个渠道设置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上游服务类型。&lt;/li&gt;
&lt;li&gt;API key 或多 key 轮换。&lt;/li&gt;
&lt;li&gt;代理地址。&lt;/li&gt;
&lt;li&gt;自定义请求头。&lt;/li&gt;
&lt;li&gt;模型白名单。&lt;/li&gt;
&lt;li&gt;路由前缀。&lt;/li&gt;
&lt;li&gt;优先级。&lt;/li&gt;
&lt;li&gt;健康检查与熔断恢复。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;调度时会综合考虑渠道状态、优先级、促销期、Trace 亲和性、熔断状态和可用 key。简单理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正常情况下，优先级高的渠道先被使用。&lt;/li&gt;
&lt;li&gt;某个渠道失败后，可以故障转移到备用渠道。&lt;/li&gt;
&lt;li&gt;熔断机制会避免持续打到明显不可用的上游。&lt;/li&gt;
&lt;li&gt;Trace 亲和性会尽量让同一类会话保持在合适的渠道上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类能力适合有多个 key、多个供应商或多个地区上游的场景。个人轻量使用时，也可以只配置一个渠道，把 CCX 当成带 Web UI 的代理层。&lt;/p&gt;
&lt;h2 id=&#34;日志和监控&#34;&gt;日志和监控
&lt;/h2&gt;&lt;p&gt;CCX 提供渠道指标和请求日志，可以看到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;请求量。&lt;/li&gt;
&lt;li&gt;成功率。&lt;/li&gt;
&lt;li&gt;失败率。&lt;/li&gt;
&lt;li&gt;平均延迟。&lt;/li&gt;
&lt;li&gt;按模型统计的历史数据。&lt;/li&gt;
&lt;li&gt;渠道状态和熔断情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生产环境建议使用相对克制的日志配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENV&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;production
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LOG_LEVEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_REQUEST_LOGS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_RESPONSE_LOGS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样可以保留基本请求信息，又避免把完整响应内容写入日志。排查问题时可以临时打开更详细的日志，但完成后应恢复，尤其不要在生产环境长期输出请求体和响应体。&lt;/p&gt;
&lt;h2 id=&#34;安全建议&#34;&gt;安全建议
&lt;/h2&gt;&lt;p&gt;CCX 是代理网关，里面会保存上游 API key，所以部署时不要只追求“能跑起来”。至少要注意这些点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要使用默认或过短的 &lt;code&gt;PROXY_ACCESS_KEY&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;建议单独设置 &lt;code&gt;ADMIN_ACCESS_KEY&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;不要把 Web 管理界面直接暴露到公网。&lt;/li&gt;
&lt;li&gt;如果必须公网访问，建议放在反向代理、VPN、访问控制或单点登录之后。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;.config&lt;/code&gt;、日志文件都不要提交到 Git 仓库。&lt;/li&gt;
&lt;li&gt;生产环境不要长期启用完整请求体和响应体日志。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以用下面的方式生成随机密钥：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;openssl rand -base64 32&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ADMIN_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;openssl rand -base64 32&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;适合谁使用&#34;&gt;适合谁使用
&lt;/h2&gt;&lt;p&gt;CCX 更适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时维护 Claude、OpenAI、Gemini、Codex 或图像接口。&lt;/li&gt;
&lt;li&gt;有多个 API key，需要轮换、分流和故障转移。&lt;/li&gt;
&lt;li&gt;想用 Web UI 管理上游渠道，而不是手动改配置文件。&lt;/li&gt;
&lt;li&gt;想观察每个渠道的成功率、延迟和请求日志。&lt;/li&gt;
&lt;li&gt;想给团队提供一个统一 AI API 入口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是本机偶尔调用一个模型，直接用官方 SDK 或单一 OpenAI 兼容代理会更简单。CCX 的优势主要在多渠道、多协议和统一运维。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;CCX 的定位是 AI API 网关，而不是某个模型的客户端。它把 Claude Messages、OpenAI Chat、OpenAI Images、Codex Responses 和 Gemini 放到一个代理层里，并提供渠道编排、故障转移、日志监控和 Web 管理界面。&lt;/p&gt;
&lt;p&gt;对个人用户来说，它可以减少切换 API 地址和密钥的麻烦；对团队或长期运行的服务来说，它更像一个轻量级 AI 网关。真正上线前，重点不只是配置模型，还要配置好密钥、管理入口、日志级别、渠道优先级和故障转移策略。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;架构说明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx/blob/main/ARCHITECTURE.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx/blob/main/ARCHITECTURE.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;环境变量说明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx/blob/main/ENVIRONMENT.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx/blob/main/ENVIRONMENT.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 怎么接入国产大模型？OpenAI 兼容接口与 CodexBridge 使用思路</title>
        <link>https://knightli.com/2026/05/13/codexbridge-openai-compatible-api/</link>
        <pubDate>Wed, 13 May 2026 23:08:28 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/13/codexbridge-openai-compatible-api/</guid>
        <description>&lt;p&gt;CodexBridge 是一个本地桥接工具，目标很直接：把 Codex CLI/SDK 封装成 OpenAI 兼容的 HTTP 服务。这样一来，原本只能在终端里使用的 Codex，可以被 OpenWebUI、Cherry Studio、脚本、自动化系统或任何兼容 OpenAI Chat Completions 的客户端调用。&lt;/p&gt;
&lt;p&gt;它提供的核心接口是 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 和 &lt;code&gt;/v1/models&lt;/code&gt;。前者负责对话，支持普通同步返回和 SSE 流式输出；后者让客户端能像读取模型列表一样发现可用模型。对已经接过 OpenAI API 的工具来说，这种设计的好处是改动小，通常只需要改 base URL、API key 和模型名。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/begonia599/CodexBridge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/begonia599/CodexBridge&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;CodexBridge 适合想把 Codex 接入现有 AI 客户端或工作流的人。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在 OpenWebUI、Cherry Studio 里直接选择 Codex 模型。&lt;/li&gt;
&lt;li&gt;想用 &lt;code&gt;curl&lt;/code&gt;、Python、Node.js 等脚本调用本机 Codex。&lt;/li&gt;
&lt;li&gt;想让同一个前端同时接 OpenAI、Ollama、其他兼容接口和 Codex。&lt;/li&gt;
&lt;li&gt;想保留 Codex 的本地线程、沙箱、工作目录和审批能力。&lt;/li&gt;
&lt;li&gt;想给内部工具提供一个统一的 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 入口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是一个新的大模型，也不是替代 Codex CLI 的完整前端。更准确地说，它是一个适配层：上游仍然是 Codex，本地桥接器负责把 OpenAI 风格的请求转换成 Codex 能理解的会话输入。&lt;/p&gt;
&lt;h2 id=&#34;基本环境&#34;&gt;基本环境
&lt;/h2&gt;&lt;p&gt;运行前需要准备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18 或更高版本。&lt;/li&gt;
&lt;li&gt;已安装并登录的 Codex CLI。&lt;/li&gt;
&lt;li&gt;npm，或者按自己的习惯换成 pnpm / yarn。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;源码部署的基本步骤如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/begonia599/CodexBridge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; codexbridge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env .env.local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后编辑 &lt;code&gt;.env&lt;/code&gt; 或 &lt;code&gt;.env.local&lt;/code&gt;，设置 API key、默认模型、工作目录、沙箱模式、联网权限等配置。&lt;/p&gt;
&lt;p&gt;启动 HTTP 服务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run codex:server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认端口是 &lt;code&gt;8080&lt;/code&gt;，可以通过 &lt;code&gt;PORT&lt;/code&gt; 修改。服务启动后，可以访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET /health
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/chat/completions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET /v1/models
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;cli-对话模式&#34;&gt;CLI 对话模式
&lt;/h2&gt;&lt;p&gt;除了 HTTP 服务，CodexBridge 也保留了一个轻量 CLI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run codex:chat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CLI 里可以直接输入自然语言与 Codex 对话。常用命令有两个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/reset&lt;/code&gt;：创建新的 Codex 线程。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/exit&lt;/code&gt;：退出 CLI。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当前线程 ID 会保存在 &lt;code&gt;.codex_thread.json&lt;/code&gt;。下次启动 CLI 时，如果这个文件还在，就能继续之前的对话。&lt;/p&gt;
&lt;h2 id=&#34;http-调用示例&#34;&gt;HTTP 调用示例
&lt;/h2&gt;&lt;p&gt;最基础的请求可以这样写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://localhost:8080/v1/chat/completions &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;content-type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;authorization: Bearer 123321&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;model&amp;#34;:&amp;#34;gpt-5-codex:medium&amp;#34;,&amp;#34;session_id&amp;#34;:&amp;#34;demo&amp;#34;,&amp;#34;messages&amp;#34;:[{&amp;#34;role&amp;#34;:&amp;#34;user&amp;#34;,&amp;#34;content&amp;#34;:&amp;#34;ls&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里有几个点需要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;authorization&lt;/code&gt; 里的 token 要和 &lt;code&gt;CODEX_BRIDGE_API_KEY&lt;/code&gt; 一致。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt; 可以带推理等级，例如 &lt;code&gt;gpt-5-codex:medium&lt;/code&gt; 或 &lt;code&gt;gpt-5-codex:high&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt; 用来绑定会话，方便复用同一个 Codex 线程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果需要流式输出，加上 &lt;code&gt;stream: true&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -N http://localhost:8080/v1/chat/completions &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;content-type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;authorization: Bearer 123321&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;model&amp;#34;:&amp;#34;gpt-5-codex:high&amp;#34;,&amp;#34;session_id&amp;#34;:&amp;#34;stream&amp;#34;,&amp;#34;stream&amp;#34;:true,&amp;#34;messages&amp;#34;:[{&amp;#34;role&amp;#34;:&amp;#34;user&amp;#34;,&amp;#34;content&amp;#34;:&amp;#34;一步步介绍如何创建 Node.js 项目&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;对支持 OpenAI 流式响应的客户端来说，这种返回方式更接近正常聊天体验。&lt;/p&gt;
&lt;h2 id=&#34;会话持久化怎么做&#34;&gt;会话持久化怎么做
&lt;/h2&gt;&lt;p&gt;CodexBridge 的一个重点是会话映射。请求里可以通过这些字段传入会话 ID：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;conversation_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thread_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;user&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也可以从请求头传：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;x-session-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x-conversation-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x-thread-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x-user-id&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生产环境建议开启：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_REQUIRE_SESSION_ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样所有请求都必须带会话 ID，避免不同用户或不同聊天窗口混到同一个临时上下文里。会话映射保存在 &lt;code&gt;.codex_threads.json&lt;/code&gt;，删除这个文件可以重置桥接层的映射关系；Codex 自身线程仍然保存在 &lt;code&gt;~/.codex/sessions&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;CODEX_REQUIRE_SESSION_ID=false&lt;/code&gt; 且请求没有提供会话 ID，桥接器会把当前 &lt;code&gt;messages&lt;/code&gt; 展开成一次性输入发给 Codex。这种方式适合临时调用，但不适合长期对话。&lt;/p&gt;
&lt;h2 id=&#34;多模态输入&#34;&gt;多模态输入
&lt;/h2&gt;&lt;p&gt;CodexBridge 支持 OpenAI 风格的内容块，并会把图片转换成 Codex 可用的 &lt;code&gt;local_image&lt;/code&gt; 输入。&lt;/p&gt;
&lt;p&gt;远程图片可以写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;image_url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;image_url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://example.com/demo.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本地图片可以写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;./images/demo.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;远程资源会先下载到临时目录，回合结束后清理。实际使用时要注意请求体大小，尤其是把图片转成 base64 发送时，可能需要增大 &lt;code&gt;CODEX_JSON_LIMIT&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;结构化输出&#34;&gt;结构化输出
&lt;/h2&gt;&lt;p&gt;如果客户端支持 &lt;code&gt;response_format&lt;/code&gt;，可以让 CodexBridge 映射到 Codex 的 &lt;code&gt;outputSchema&lt;/code&gt;。这适合让 Codex 返回固定 JSON 结构，例如检查结果、摘要、分类结果或自动化任务报告。&lt;/p&gt;
&lt;p&gt;最小思路是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gpt-5-codex&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;session_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;lint&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;response_format&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;json_schema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;json_schema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;lint_report&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;schema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;enum&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ok&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;action_required&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;required&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;additionalProperties&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;检查 src/ 的 lint 问题，并以 JSON 返回结果&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要注意，&lt;code&gt;type: &amp;quot;json_schema&amp;quot;&lt;/code&gt; 必须提供 &lt;code&gt;schema&lt;/code&gt;，否则服务会直接返回 400。&lt;/p&gt;
&lt;h2 id=&#34;关键环境变量&#34;&gt;关键环境变量
&lt;/h2&gt;&lt;p&gt;常用配置可以分成几类。&lt;/p&gt;
&lt;p&gt;服务与鉴权：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_BRIDGE_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;123321&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_JSON_LIMIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10mb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-5-codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_REASONING&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;medium
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Codex 运行环境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_WORKDIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_SANDBOX_MODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;read-only
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_APPROVAL_POLICY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;never
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_SKIP_GIT_CHECK&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;联网能力：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_NETWORK_ACCESS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_WEB_SEARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只是给前端聊天用，默认关闭联网更稳。只有明确需要让 Codex 执行 &lt;code&gt;curl&lt;/code&gt;、&lt;code&gt;git clone&lt;/code&gt; 或使用 Web 搜索时，再单独打开对应开关。&lt;/p&gt;
&lt;h2 id=&#34;docker-和一键脚本&#34;&gt;Docker 和一键脚本
&lt;/h2&gt;&lt;p&gt;项目也提供 Docker 方式，适合想把服务常驻起来的场景：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs -f codexbridge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以用项目提供的 Linux 安装脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/begonia599/CodexBridge/master/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;脚本会安装依赖、克隆或更新仓库、复制 &lt;code&gt;.env.example&lt;/code&gt;，并通过 Docker Compose 启动服务。它需要 &lt;code&gt;sudo&lt;/code&gt; 权限，适合在干净服务器上快速部署。已经有复杂 Node.js、Docker 或 Codex 环境的机器，建议先读脚本内容再执行。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;请求返回 413&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;通常是请求体太大，常见于 base64 图片。可以增大：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_JSON_LIMIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;20mb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;提示 API key 无效&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;检查请求头是否带了：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Authorization: Bearer &amp;lt;你的 CODEX_BRIDGE_API_KEY&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者使用 &lt;code&gt;x-api-key&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Codex 报 Git 仓库限制&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果运行目录不是可信仓库，可能会触发 Codex 的检查。只在确认安全的环境中使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_SKIP_GIT_CHECK&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;想清空会话&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;桥接层会话映射在 &lt;code&gt;.codex_threads.json&lt;/code&gt;，Codex 自身线程在 &lt;code&gt;~/.codex/sessions&lt;/code&gt;。停掉服务后删除对应文件或目录即可重置。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;本地试用时，可以先用默认 API key 和 &lt;code&gt;read-only&lt;/code&gt; 沙箱跑通流程。确认 OpenWebUI、Cherry Studio 或脚本能正常调用后，再逐步调整 &lt;code&gt;CODEX_WORKDIR&lt;/code&gt;、&lt;code&gt;CODEX_SANDBOX_MODE&lt;/code&gt;、&lt;code&gt;CODEX_NETWORK_ACCESS&lt;/code&gt; 和 &lt;code&gt;CODEX_APPROVAL_POLICY&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果要给多人使用，建议至少做三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;强制要求 &lt;code&gt;session_id&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修改默认 API key。&lt;/li&gt;
&lt;li&gt;明确限制工作目录和沙箱权限。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CodexBridge 的价值不在于功能复杂，而在于把 Codex 放进了现有 OpenAI 兼容生态里。只要客户端能改 base URL，它就有机会把 Codex 当成一个普通聊天模型来接入，同时保留本地线程、沙箱和工具调用这些 Codex 自身的能力。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Sulphur 2 能在 8G 显存上跑吗？LTX 2.3 视频模型本地部署记录</title>
        <link>https://knightli.com/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/2026/05/12/sulphur-2-ltx-2-3-video-generation/</guid>
        <description>&lt;p&gt;SulphurAI 在 Hugging Face 上发布了 &lt;code&gt;Sulphur-2-base&lt;/code&gt;。从模型卡信息看，Sulphur 2 是一个基于 LTX 2.3 的视频生成模型，定位是 uncensored video generation model，原生支持文生视频、图生视频，也兼容 LTX 2.3 的其他格式。&lt;/p&gt;
&lt;p&gt;模型地址：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/SulphurAI/Sulphur-2-base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/SulphurAI/Sulphur-2-base&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;sulphur-2-是什么&#34;&gt;Sulphur 2 是什么
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的重点不是做通用聊天，而是围绕视频生成工作流提供模型权重和相关工具。模型卡里给出的核心信息可以概括为几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基于 LTX 2.3。&lt;/li&gt;
&lt;li&gt;支持 text-to-video 和 image-to-video。&lt;/li&gt;
&lt;li&gt;提供用于提示词优化的 prompt enhancer。&lt;/li&gt;
&lt;li&gt;Hugging Face 页面提供 Diffusers、llama.cpp、Ollama、LM Studio、Jan 等入口。&lt;/li&gt;
&lt;li&gt;页面显示模型文件包含 GGUF 相关内容，方便部分本地工具加载。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，它更像是一个面向视频生成玩家和工作流作者的模型发布，而不是普通用户开箱即用的网页产品。&lt;/p&gt;
&lt;h2 id=&#34;sulphur-2-和-ltx-23-的关系&#34;&gt;Sulphur 2 和 LTX 2.3 的关系
&lt;/h2&gt;&lt;p&gt;理解 Sulphur 2，最好先把它放回 LTX 2.3 的生态里看。&lt;/p&gt;
&lt;p&gt;LTX 2.3 是底层视频生成模型路线，决定了它支持哪些输入形式、模型组件和工作流结构。Sulphur 2 则是在这个基础上发布的一个变体，重点是把文生视频、图生视频和相关工作流整合到一起。&lt;/p&gt;
&lt;p&gt;所以 Sulphur 2 不是一个完全独立的新工具，也不是一个普通聊天模型。它更像是 LTX 2.3 生态里的一个模型包：你仍然需要选择合适的前端、节点、权重版本和参数，才能真正跑出视频。&lt;/p&gt;
&lt;p&gt;这也解释了为什么它的使用门槛比网页生成工具高。网页工具把模型、参数、显存调度和失败重试都藏在后端；本地部署则需要自己处理这些细节。&lt;/p&gt;
&lt;h2 id=&#34;为什么值得关注&#34;&gt;为什么值得关注
&lt;/h2&gt;&lt;p&gt;LTX 系列本身就以高效视频生成受到关注，Sulphur 2 选择基于 LTX 2.3，意味着它天然更适合接入已有的 LTX 工作流。对 ComfyUI、Diffusers 或本地推理工具用户来说，这类模型的价值主要在于可控性和可改造性。&lt;/p&gt;
&lt;p&gt;另一个看点是 prompt enhancer。视频生成对提示词非常敏感，同样的主体、镜头、动作、风格和质量描述，写法不同会明显影响结果。Sulphur 2 把提示词增强器一起放进生态里，说明作者希望用户不只是下载权重，还能更稳定地把普通描述扩展成适合模型理解的提示词。&lt;/p&gt;
&lt;h2 id=&#34;模型卡里的使用建议&#34;&gt;模型卡里的使用建议
&lt;/h2&gt;&lt;p&gt;官方模型卡建议入门时下载 dev 版本，例如 &lt;code&gt;fp8mixed&lt;/code&gt; 或 &lt;code&gt;bf16&lt;/code&gt;，并搭配提供的 distill lora。需要注意的是，模型卡也提醒：如果使用 LoRA，就不要同时再加载完整模型的重复部分，避免工作流里同时叠加两套相同能力。&lt;/p&gt;
&lt;p&gt;prompt enhancer 的使用方式更偏本地工具路线。模型卡提到，可以在 LM Studio 的模型目录里创建 &lt;code&gt;Sulphur/promptenhancer&lt;/code&gt; 这样的目录结构，把 &lt;code&gt;gguf&lt;/code&gt; 文件和 &lt;code&gt;mmproj&lt;/code&gt; 文件放进去，然后加载提示词增强器。它不需要 system prompt，直接发送想增强的文本，也可以附带图像。&lt;/p&gt;
&lt;h2 id=&#34;本地运行入口&#34;&gt;本地运行入口
&lt;/h2&gt;&lt;p&gt;Hugging Face 页面给出了一些常见工具入口。比如使用 &lt;code&gt;llama.cpp&lt;/code&gt; 时，可以通过模型仓库启动本地服务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -hf SulphurAI/Sulphur-2-base:BF16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接在终端运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf SulphurAI/Sulphur-2-base:BF16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用 Ollama 的入口则是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run hf.co/SulphurAI/Sulphur-2-base:BF16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些命令更像是 Hugging Face 自动生成的本地加载入口，实际能否顺利运行，还要看本机显存、模型文件版本、量化格式和对应工具的兼容性。视频生成模型通常比纯文本模型更吃资源，第一次尝试时建议先按模型卡推荐的版本和工作流走，不要一上来混用多个来源的权重。&lt;/p&gt;
&lt;h2 id=&#34;推荐测试环境comfyui--diffusers--gguf-怎么选&#34;&gt;推荐测试环境：ComfyUI / Diffusers / GGUF 怎么选
&lt;/h2&gt;&lt;p&gt;如果你只是想最快看到结果，优先看社区是否已经整理好 ComfyUI 工作流。ComfyUI 的好处是可视化强，模型、LoRA、采样器、分辨率、帧数和后处理节点都能摆在同一张图里，适合调试视频生成。&lt;/p&gt;
&lt;p&gt;如果你更熟悉 Python，或者想把 Sulphur 2 接到自己的脚本里，Diffusers 会更适合。它的优点是可复现、可自动化，适合批量测试参数，也方便记录不同设置下的显存占用和生成耗时。&lt;/p&gt;
&lt;p&gt;GGUF、llama.cpp、Ollama、LM Studio 这些入口更适合 prompt enhancer 或文本侧组件。不要看到 GGUF 就默认它能完整承担视频生成流程。视频模型通常还涉及视觉模型、VAE、采样流程和帧生成组件，GGUF 更多是本地加载和轻量化生态的一部分。&lt;/p&gt;
&lt;p&gt;简单说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新手先找 ComfyUI 工作流。&lt;/li&gt;
&lt;li&gt;脚本用户用 Diffusers 做复现和批量测试。&lt;/li&gt;
&lt;li&gt;prompt enhancer 或文本增强器再看 GGUF / LM Studio / Ollama。&lt;/li&gt;
&lt;li&gt;不确定时，优先按模型卡推荐的 dev 版本和 LoRA 搭配走。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;8g-显存能不能跑要看版本和工作流&#34;&gt;8G 显存能不能跑？要看版本和工作流
&lt;/h2&gt;&lt;p&gt;8G 显存能不能跑 Sulphur 2，不能只看模型名字，要看具体版本、量化方式、分辨率、帧数、批量大小和工作流。&lt;/p&gt;
&lt;p&gt;一般来说，视频生成比图片生成更吃显存，因为它不只是生成一张图，而是要处理多帧、时间一致性和视频相关的中间状态。即使模型本身有较轻的版本，工作流里叠加 LoRA、较高分辨率、较长帧数或额外后处理节点，也可能让 8G 显存很快爆掉。&lt;/p&gt;
&lt;p&gt;如果只有 8G 显存，可以从这些方向降低压力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;优先尝试 &lt;code&gt;fp8mixed&lt;/code&gt;、量化版本或社区整理的低显存工作流。&lt;/li&gt;
&lt;li&gt;降低分辨率，先用小尺寸确认流程能跑通。&lt;/li&gt;
&lt;li&gt;减少帧数，不要一开始就生成长视频。&lt;/li&gt;
&lt;li&gt;batch size 设为 1。&lt;/li&gt;
&lt;li&gt;暂时关闭不必要的增强节点和后处理节点。&lt;/li&gt;
&lt;li&gt;使用 CPU offload、低显存模式或框架提供的显存优化选项。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以“8G 显存也能跑”更准确的说法是：在低显存版本、较低分辨率、较短帧数和精简工作流下，有机会跑通；但不适合直接期待高分辨率、长视频和复杂工作流。&lt;/p&gt;
&lt;h2 id=&#34;prompt-enhancer-怎么用&#34;&gt;prompt enhancer 怎么用
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的模型卡特别提到 prompt enhancer。它的作用不是生成视频，而是把普通提示词改写成更适合模型理解的提示词。&lt;/p&gt;
&lt;p&gt;视频提示词通常要同时描述主体、动作、镜头、场景、光线、风格和质量。如果只写一句很短的描述，模型可能抓不到重点。prompt enhancer 可以把简短描述扩展成更完整的提示词，让后续视频生成更稳定。&lt;/p&gt;
&lt;p&gt;模型卡给出的思路是，在 LM Studio 的模型目录里创建 &lt;code&gt;Sulphur/promptenhancer&lt;/code&gt; 目录，把对应的 &lt;code&gt;gguf&lt;/code&gt; 和 &lt;code&gt;mmproj&lt;/code&gt; 文件放进去，然后加载这个增强器。使用时不需要 system prompt，直接发送想增强的文本，也可以附带图像。&lt;/p&gt;
&lt;p&gt;可以把它理解成一个提示词预处理工具：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;普通描述 -&amp;gt; prompt enhancer -&amp;gt; 更完整的视频生成提示词 -&amp;gt; Sulphur 2 工作流
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你只是测试模型能不能跑，prompt enhancer 不是第一优先级。先把主工作流跑通，再用它改善提示词，会更容易定位问题。&lt;/p&gt;
&lt;h2 id=&#34;本地部署常见失败原因&#34;&gt;本地部署常见失败原因
&lt;/h2&gt;&lt;p&gt;Sulphur 2 这类模型本地部署失败，通常不是一个原因造成的。比较常见的坑有这些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型版本和工作流不匹配，比如工作流要求 dev 版本，但实际下载了其他权重。&lt;/li&gt;
&lt;li&gt;LoRA 和完整模型重复加载，导致效果异常或显存占用过高。&lt;/li&gt;
&lt;li&gt;显存不足，尤其是在高分辨率、长帧数、复杂节点下更明显。&lt;/li&gt;
&lt;li&gt;工具版本太旧，ComfyUI 节点、Diffusers、Transformers 或 Accelerate 版本不兼容。&lt;/li&gt;
&lt;li&gt;缺少 VAE、文本编码器、mmproj、prompt enhancer 等配套文件。&lt;/li&gt;
&lt;li&gt;文件路径或目录结构不符合工具要求。&lt;/li&gt;
&lt;li&gt;只复制 Hugging Face 页面上的命令，没有确认它对应的是视频生成主流程还是文本侧组件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;排查时建议按顺序来：先确认模型文件完整，再确认工作流要求的版本，然后降低分辨率和帧数，最后再逐步加 LoRA、prompt enhancer 和后处理节点。一次只改一个变量，最容易定位问题。&lt;/p&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;Sulphur 2 比较适合这几类用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经在玩 LTX、ComfyUI、Diffusers 或本地视频生成工作流。&lt;/li&gt;
&lt;li&gt;想尝试文生视频、图生视频，并能接受手动配置模型文件。&lt;/li&gt;
&lt;li&gt;需要 uncensored 视频生成模型，且理解这类模型的使用边界。&lt;/li&gt;
&lt;li&gt;想研究 prompt enhancer 如何改善视频提示词。&lt;/li&gt;
&lt;li&gt;有足够显存或愿意尝试量化版本、本地推理工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是想快速生成短视频，在线产品仍然更省心。Sulphur 2 更适合愿意折腾模型、节点、LoRA、提示词和本地环境的人。&lt;/p&gt;
&lt;h2 id=&#34;使用时的注意点&#34;&gt;使用时的注意点
&lt;/h2&gt;&lt;p&gt;第一，模型卡信息还在更新中。作者也提到 README 后续会补充更完整的设置说明和训练方式，所以具体工作流要以最新模型卡和文件列表为准。&lt;/p&gt;
&lt;p&gt;第二，不要只看 Hugging Face 页面上的一条命令就判断它能直接跑起来。视频生成涉及主模型、VAE、LoRA、提示词增强器、采样参数、分辨率、帧数和显存占用，任何一个环节不匹配都可能失败。&lt;/p&gt;
&lt;p&gt;第三，uncensored 模型并不等于可以无边界使用。生成内容仍然需要遵守所在平台、社区和法律规则，尤其是涉及真人、版权角色、未成年人、暴力或隐私内容时，更要谨慎。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的定位很清楚：它不是一个聊天模型，而是一个面向 LTX 2.3 视频生成生态的模型发布。它的看点在于支持文生视频和图生视频，同时把 prompt enhancer、本地工具入口和推荐工作流放在一起。&lt;/p&gt;
&lt;p&gt;对普通用户来说，它的门槛不低；对本地视频生成玩家来说，它值得加入待测试列表。真正决定体验的，还是具体工作流、显存配置、提示词质量，以及后续 README 和社区样例是否完善。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hugging Face 模型页：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/SulphurAI/Sulphur-2-base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/SulphurAI/Sulphur-2-base&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FreeDidi 参考页：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24142.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.freedidi.com/24142.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地运行 DeepSeek 4：Antirez ds4 在 Apple Silicon Mac 上的尝试</title>
        <link>https://knightli.com/2026/05/11/deepseek-v4-flash-ds4-metal/</link>
        <pubDate>Mon, 11 May 2026 08:51:37 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/11/deepseek-v4-flash-ds4-metal/</guid>
        <description>&lt;p&gt;Antirez 开源了一个新项目：&lt;code&gt;ds4&lt;/code&gt;。它不是通用 LLM 框架，而是一个面向 DeepSeek V4 Flash 的本地推理引擎，重点放在 Apple Silicon 和 Metal 后端上。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/antirez/ds4&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ds4-是什么&#34;&gt;ds4 是什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 的目标很明确：在 Mac 上本地运行 DeepSeek V4 Flash。&lt;/p&gt;
&lt;p&gt;它当前提供三种使用方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;交互式 CLI。&lt;/li&gt;
&lt;li&gt;HTTP server。&lt;/li&gt;
&lt;li&gt;一个实验性的 Agent 模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从定位看，它更像是一个针对特定模型深度优化的推理项目，而不是要替代 &lt;code&gt;llama.cpp&lt;/code&gt;、Ollama 或 vLLM 这类通用工具。&lt;/p&gt;
&lt;h2 id=&#34;为什么值得关注&#34;&gt;为什么值得关注
&lt;/h2&gt;&lt;p&gt;这类项目值得看，主要有三个原因。&lt;/p&gt;
&lt;p&gt;第一，作者是 Redis 作者 Antirez。他长期关注底层系统、性能和简单工具，项目风格通常比较直接。&lt;/p&gt;
&lt;p&gt;第二，DeepSeek V4 Flash 属于面向高效推理的模型方向。如果本地运行体验足够好，对 Mac 用户来说会很有吸引力。&lt;/p&gt;
&lt;p&gt;第三，&lt;code&gt;ds4&lt;/code&gt; 直接面向 Apple Metal。相比“先支持所有平台，再慢慢优化”的路线，它更像是先把一个明确场景做深。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 更适合这几类用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 Apple Silicon Mac。&lt;/li&gt;
&lt;li&gt;想在本地运行 DeepSeek V4 Flash。&lt;/li&gt;
&lt;li&gt;关注 Metal 推理性能。&lt;/li&gt;
&lt;li&gt;愿意尝试 alpha 阶段项目。&lt;/li&gt;
&lt;li&gt;想研究轻量推理引擎和模型运行细节。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目标是稳定部署、跨平台运行、OpenAI API 兼容生态，现阶段它未必是首选。它更适合作为实验工具和技术观察对象。&lt;/p&gt;
&lt;h2 id=&#34;使用方式&#34;&gt;使用方式
&lt;/h2&gt;&lt;p&gt;项目 README 给出的基本流程是先构建，再运行。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/antirez/ds4.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ds4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;交互式运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./ds4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动 HTTP server：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./ds4 --server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agent 模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./ds4 --agent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;具体参数和模型文件准备方式，建议以仓库 README 为准，因为项目仍在快速变化。&lt;/p&gt;
&lt;h2 id=&#34;目前的风险&#34;&gt;目前的风险
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 还处在早期阶段，使用前要有预期：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;功能可能不完整。&lt;/li&gt;
&lt;li&gt;参数、模型格式和命令行行为可能变化。&lt;/li&gt;
&lt;li&gt;兼容性主要围绕 Apple Silicon 和 Metal。&lt;/li&gt;
&lt;li&gt;Agent 模式更偏实验，不适合直接用于生产流程。&lt;/li&gt;
&lt;li&gt;遇到问题时，需要自己阅读 README、issue 或源码排查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，它现在更像“值得动手试的开源实验”，还不是面向普通用户的一键工具。&lt;/p&gt;
&lt;h2 id=&#34;和通用推理工具的区别&#34;&gt;和通用推理工具的区别
&lt;/h2&gt;&lt;p&gt;通用推理工具通常追求模型格式、平台、后端和 API 的广泛兼容。&lt;code&gt;ds4&lt;/code&gt; 的方向更窄：围绕 DeepSeek V4 Flash 和 Metal 做本地运行。&lt;/p&gt;
&lt;p&gt;这种选择有利有弊。&lt;/p&gt;
&lt;p&gt;好处是实现可以更集中，性能和体验更容易围绕单一目标优化。代价是适用范围有限，不适合拿来运行各种不同模型，也不适合替代完整的部署平台。&lt;/p&gt;
&lt;p&gt;如果你已经在用 &lt;code&gt;llama.cpp&lt;/code&gt; 或 Ollama，&lt;code&gt;ds4&lt;/code&gt; 可以作为补充测试工具，而不是马上替换现有工作流。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 的看点不在“又一个本地大模型工具”，而在于它把范围收得很窄：DeepSeek V4 Flash、Apple Silicon、Metal、本地推理。&lt;/p&gt;
&lt;p&gt;如果你手上有合适的 Mac，并且愿意折腾早期项目，可以关注它后续的性能表现、模型支持方式和 server/agent 能力演进。对于生产环境，建议继续观望，等接口和使用方式稳定后再评估。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/antirez/ds4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI 编程工具这一轮，DeepSeek 为何成了省钱关键？</title>
        <link>https://knightli.com/2026/05/11/deepseek-ai-coding-cost-saving/</link>
        <pubDate>Mon, 11 May 2026 04:59:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/11/deepseek-ai-coding-cost-saving/</guid>
        <description>&lt;p&gt;这一轮 AI 编程工具的竞争，表面上是在比模型能力、插件生态和 agent 自动化程度，真正用起来以后，最先撞上的问题却是成本。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、OpenClaw、Superpowers 这类工具都很好用，但它们有一个共同特点：一旦进入复杂任务，就会非常吃 token。它们要读项目、建计划、调用工具、总结上下文、反复检查结果，还可能拉起多个子任务。模型越聪明，工作流越自动化，账单也越容易悄悄变大。&lt;/p&gt;
&lt;p&gt;所以 DeepSeek 在这一轮里变得很关键，不只是因为它能写代码，而是因为它在长上下文和缓存成本上，刚好打中了 AI 编程工具最烧钱的地方。&lt;/p&gt;
&lt;h2 id=&#34;agent-工具为什么特别费-token&#34;&gt;Agent 工具为什么特别费 token
&lt;/h2&gt;&lt;p&gt;传统聊天式编程助手，通常是一问一答。你问一个函数怎么写，它回答一段代码。这个模式消耗不小，但还算可控。&lt;/p&gt;
&lt;p&gt;Agent 工具不一样。它不是只回答问题，而是要像一个临时工程师一样进入项目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先扫描目录和关键文件；&lt;/li&gt;
&lt;li&gt;再理解需求和现有架构；&lt;/li&gt;
&lt;li&gt;然后制定计划；&lt;/li&gt;
&lt;li&gt;修改文件；&lt;/li&gt;
&lt;li&gt;运行命令或测试；&lt;/li&gt;
&lt;li&gt;根据报错继续修；&lt;/li&gt;
&lt;li&gt;最后总结改了什么。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个过程里，模型反复读取同一批上下文。项目说明、代码片段、工具结果、历史对话、计划和错误日志都会被塞回上下文。任务稍微复杂一点，几十万 token 很快就出去了。&lt;/p&gt;
&lt;p&gt;如果再装一些更激进的插件，成本会更明显。比如有些 OpenCode 或 Claude Code 增强工具，会默认组织一整套 agent 团队。你只是想改一个小功能，它也可能启动规划、审查、执行、复盘等多个环节。任务当然显得更“智能”，但 token 也会一路往上跑。&lt;/p&gt;
&lt;h2 id=&#34;superpowers-的好处是按需触发&#34;&gt;Superpowers 的好处是按需触发
&lt;/h2&gt;&lt;p&gt;Superpowers 这类工具的一个优点，是它不会在所有任务里都强行拉起完整 agent 流程。&lt;/p&gt;
&lt;p&gt;平时你还是可以让 Claude Code、OpenCode 或 Codex 按原来的方式工作。只有当你明确调用某个 skill，比如头脑风暴、写计划、执行计划、做复盘时，它才进入更重的自动化流程。&lt;/p&gt;
&lt;p&gt;这对成本很重要。&lt;/p&gt;
&lt;p&gt;AI 编程不应该所有任务都用重武器。改一行配置、查一个报错、写一个小脚本，用普通对话就够了；只有复杂重构、跨文件修改、长文档处理、多轮验证，才值得上完整 agent 流程。&lt;/p&gt;
&lt;p&gt;工具越强，越要学会控制触发条件。否则自动化越多，浪费越多。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-的关键优势是缓存便宜&#34;&gt;DeepSeek 的关键优势是缓存便宜
&lt;/h2&gt;&lt;p&gt;DeepSeek 适合接这类 agent 工具，一个很重要的原因是缓存命中成本低。&lt;/p&gt;
&lt;p&gt;AI 编程任务里有大量重复前缀。比如项目背景、系统提示词、工具说明、文件内容、前几轮对话，经常会在后续请求里反复出现。如果模型服务支持 prompt cache，这些重复内容命中缓存后，成本会明显下降。&lt;/p&gt;
&lt;p&gt;很多模型的缓存命中价只是比未命中便宜一些，比如便宜到三分之一左右。DeepSeek 的优势在于，命中缓存后的价格差距可以大很多。对长上下文、多轮调用、重复读取项目的 agent 工作流来说，这个差距会直接反映到账单上。&lt;/p&gt;
&lt;p&gt;也就是说，DeepSeek 不是每一次回答都一定最强，而是在“长任务、多轮任务、反复读上下文”的场景里，成本结构特别适合 AI 编程。&lt;/p&gt;
&lt;h2 id=&#34;长上下文让-claude-code-更好用&#34;&gt;长上下文让 Claude Code 更好用
&lt;/h2&gt;&lt;p&gt;把 Claude Code 或类似工具接到 DeepSeek V4 时，另一个明显优势是长上下文。&lt;/p&gt;
&lt;p&gt;AI 编程工具最怕上下文不够。上下文一不够，就要频繁压缩；压缩一多，前面读过的细节就可能丢失。模型开始忘记项目结构、忘记约束、忘记某个文件为什么这么改，后续质量就会下降。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 系列的长上下文能力，让它更适合处理代码仓库、文档批处理、字幕翻译、站点文章整理这类任务。特别是接入 Claude Code、OpenClaw 这类工具时，如果配置得当，可以让它尽量晚一点进入上下文压缩，让模型保留更多项目细节。&lt;/p&gt;
&lt;p&gt;这也是为什么有些任务用 DeepSeek 会显得“很经使”：它不一定每一步都惊艳，但能承受长时间、低成本、反复调用。&lt;/p&gt;
&lt;h2 id=&#34;v4-pro-和-v4-flash-怎么分工&#34;&gt;V4 Pro 和 V4 Flash 怎么分工
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro 和 V4 Flash 不应该混着用。&lt;/p&gt;
&lt;p&gt;简单任务用 &lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; 更合适。它速度快、成本低，用在下面这些场景通常足够：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;翻译字幕；&lt;/li&gt;
&lt;li&gt;整理文档；&lt;/li&gt;
&lt;li&gt;生成普通脚本；&lt;/li&gt;
&lt;li&gt;修改小范围代码；&lt;/li&gt;
&lt;li&gt;跑 OpenClaw 里的轻量任务；&lt;/li&gt;
&lt;li&gt;做简单的站点内容处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;复杂任务再考虑 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大规模重构；&lt;/li&gt;
&lt;li&gt;多模块代码理解；&lt;/li&gt;
&lt;li&gt;复杂推理；&lt;/li&gt;
&lt;li&gt;长链路 agent 任务；&lt;/li&gt;
&lt;li&gt;高风险代码修改；&lt;/li&gt;
&lt;li&gt;需要更强规划能力的工程任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多人一上来就想挂最强模型，这反而不划算。AI 编程工具最现实的玩法，是把任务分层：便宜模型吃掉大量常规工作，贵模型只处理关键节点。&lt;/p&gt;
&lt;h2 id=&#34;minimax豆包和-deepseek-的位置不同&#34;&gt;MiniMax、豆包和 DeepSeek 的位置不同
&lt;/h2&gt;&lt;p&gt;国产模型和套餐里，MiniMax、豆包、Kimi、DeepSeek 各有位置。&lt;/p&gt;
&lt;p&gt;MiniMax 的优势是量大、便宜、功能全。它未必是最聪明的编程模型，但拿来做翻译、轻量整理、批处理，很划算。比如批量处理字幕、改格式、做简单校对，MiniMax 这类套餐很耐用。&lt;/p&gt;
&lt;p&gt;豆包的优势是生态工具比较全，图片、视频、搜索、TTS、可能的 STT 和 embedding 都能接在一起。它更像综合型工具箱。&lt;/p&gt;
&lt;p&gt;DeepSeek 的位置更明确：文本、代码、长上下文、低成本缓存。它没有完整的图像生成、语音、视频生态，短板很明显；但在 AI 编程和长文本 agent 工作流里，它的长板足够长。&lt;/p&gt;
&lt;p&gt;所以不是谁替代谁，而是任务拆开以后各用各的。&lt;/p&gt;
&lt;h2 id=&#34;省钱的关键不是只找便宜模型&#34;&gt;省钱的关键不是只找便宜模型
&lt;/h2&gt;&lt;p&gt;AI 编程想省钱，不是简单把所有请求都换成便宜模型。&lt;/p&gt;
&lt;p&gt;真正有效的省钱方式有几条：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;简单任务不要启动重 agent。&lt;/li&gt;
&lt;li&gt;能用 Flash 的任务不要上 Pro。&lt;/li&gt;
&lt;li&gt;长任务尽量利用缓存。&lt;/li&gt;
&lt;li&gt;重复上下文要稳定，避免无意义改动导致缓存失效。&lt;/li&gt;
&lt;li&gt;大任务先让便宜模型做草稿和批处理，再让强模型做关键审查。&lt;/li&gt;
&lt;li&gt;明确告诉 agent 不要重复描述事实，不要反复总结同一件事。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;尤其是最后一点很重要。AI 工具很容易啰嗦，啰嗦不只是阅读体验问题，也是成本问题。提示词里明确要求“事实只描述一次，观点只表达一次”，能同时改善文章质量和 token 消耗。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-适合哪类-ai-编程工作流&#34;&gt;DeepSeek 适合哪类 AI 编程工作流
&lt;/h2&gt;&lt;p&gt;DeepSeek 最适合这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长代码仓库阅读；&lt;/li&gt;
&lt;li&gt;多文件轻量修改；&lt;/li&gt;
&lt;li&gt;批量文档整理；&lt;/li&gt;
&lt;li&gt;批量字幕翻译；&lt;/li&gt;
&lt;li&gt;Hugo 文章整理；&lt;/li&gt;
&lt;li&gt;agent 计划执行；&lt;/li&gt;
&lt;li&gt;大量重复上下文的低成本自动化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定适合所有任务。如果要做特别强的前端审美、复杂产品判断、跨模态创作，可能还要搭配 Claude、GPT、Gemini、豆包或其他工具。&lt;/p&gt;
&lt;p&gt;但只要任务是“长文本、长上下文、反复调用、成本敏感”，DeepSeek 就很容易变成首选。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;AI 编程工具这一轮，DeepSeek 的价值不只是“国产模型能写代码”，而是它解决了 agent 工具最现实的痛点：长任务太烧钱。&lt;/p&gt;
&lt;p&gt;Claude Code、OpenClaw、Superpowers 这类工具会让开发流程越来越自动化，但自动化的背后是大量上下文读写和多轮调用。谁能把这部分成本压下来，谁就能让 AI 编程从“偶尔爽一下”变成“天天用得起”。&lt;/p&gt;
&lt;p&gt;DeepSeek 的长上下文、低缓存成本和 V4 Flash / V4 Pro 分层使用，正好让它站在这个位置上。&lt;/p&gt;
&lt;p&gt;这一轮真正省钱的关键，不是不用好模型，而是把好模型、便宜模型、缓存和 agent 流程搭配好。能把这套账算明白，AI 编程工具才真的会变成生产力，而不是一个漂亮但昂贵的玩具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GPT-5.5、GPT-5.4 与 GPT-5.3-Codex 如何取舍</title>
        <link>https://knightli.com/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/2026/05/10/gpt-5-5-vs-gpt-5-4-vs-gpt-5-3-codex/</guid>
        <description>&lt;p&gt;如果只看一句话，结论其实很直接：默认选 &lt;code&gt;GPT-5.5&lt;/code&gt;，预算更敏感或任务难度中等时选 &lt;code&gt;GPT-5.4&lt;/code&gt;，只有在 Codex 环境里做更长时间的软件工程任务，或者需要 Cloud Tasks、Code Review 这类能力时，再重点看 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这个判断不只是主观体验，OpenAI 在 Codex 官方文档里的推荐也已经比较明确。到 &lt;code&gt;2026-05-10&lt;/code&gt; 为止，Codex 文档仍然写着：大多数任务优先从 &lt;code&gt;gpt-5.5&lt;/code&gt; 开始；如果还没有开放 &lt;code&gt;gpt-5.5&lt;/code&gt;，继续用 &lt;code&gt;gpt-5.4&lt;/code&gt;；轻量任务或子任务则更适合 &lt;code&gt;gpt-5.4-mini&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;三个模型的定位差异&#34;&gt;三个模型的定位差异
&lt;/h2&gt;&lt;p&gt;先看官方定位。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; 是 Codex 里的最新前沿模型，面向复杂编程、电脑操作、知识工作和研究型工作流。它更像“默认主力模型”，适合复杂分析、多步任务、跨文件修改、方案设计和较重的文档工作。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt; 则是一个更稳的全能型选择。官方描述是：它把 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 的强代码能力带到了更强的推理、工具使用和 agentic workflow 里。换句话说，它不是“弱化版 5.5”，而是一个更均衡、更容易长期当主力的模型。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 仍然是很强的代码模型，但它的核心优势更集中在真实软件工程和 Codex 原生工作流里。官方文档还专门说明：它是面向 agentic coding tasks 优化的模型，而且 &lt;code&gt;GPT-5.4&lt;/code&gt; 的编码能力本身就已经继承了它的长处。&lt;/p&gt;
&lt;p&gt;所以今天再选模型，不太适合把 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 直接理解成“最强编程模型”。在大部分日常开发场景里，更推荐先看 &lt;code&gt;GPT-5.5&lt;/code&gt; 和 &lt;code&gt;GPT-5.4&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;按使用场景怎么选&#34;&gt;按使用场景怎么选
&lt;/h2&gt;&lt;p&gt;如果你的任务是日常问答、复杂解释、资料整理、文件分析、长文信息综合，&lt;code&gt;GPT-5.5&lt;/code&gt; 最合适。它不仅适合写代码，也更适合处理“代码之外但又很费脑子”的知识工作。&lt;/p&gt;
&lt;p&gt;如果你的任务是复杂编程、重构、排错、架构设计、多文件修改，仍然优先 &lt;code&gt;GPT-5.5&lt;/code&gt;。Codex 官方推荐也是这样写的：在能用 &lt;code&gt;gpt-5.5&lt;/code&gt; 的地方，大多数任务先从它开始。&lt;/p&gt;
&lt;p&gt;如果你更在意额度和消耗，希望在质量很高的前提下把成本压下来，&lt;code&gt;GPT-5.4&lt;/code&gt; 往往是更合理的默认值。对很多常规开发、普通改写、一般翻译、脚本生成和 bug 修复任务来说，&lt;code&gt;GPT-5.4&lt;/code&gt; 已经足够强，而且更省额度。&lt;/p&gt;
&lt;p&gt;如果你是在 Codex CLI、IDE 扩展或 App 里做更像“工程代理”的事情，比如长时间读仓库、持续改代码、排队跑任务、做 Cloud Tasks 或 Code Review，&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 仍然有存在感。原因不是它比 &lt;code&gt;GPT-5.5&lt;/code&gt; 更先进，而是当前 Codex 的 Cloud Tasks 和 Code Review 仍然运行在 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 上，这决定了它在工程流里还没有退场。&lt;/p&gt;
&lt;h2 id=&#34;消耗额度差多少&#34;&gt;消耗额度差多少
&lt;/h2&gt;&lt;p&gt;在 Codex 的 credits 计费表里，这三个模型的差异非常清楚。&lt;/p&gt;
&lt;p&gt;按 Business / New Enterprise 的 token 计费口径看：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：输入 &lt;code&gt;125 credits / 1M tokens&lt;/code&gt;，缓存输入 &lt;code&gt;12.5 credits&lt;/code&gt;，输出 &lt;code&gt;750 credits&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：输入 &lt;code&gt;62.5 credits / 1M tokens&lt;/code&gt;，缓存输入 &lt;code&gt;6.25 credits&lt;/code&gt;，输出 &lt;code&gt;375 credits&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：输入 &lt;code&gt;43.75 credits / 1M tokens&lt;/code&gt;，缓存输入 &lt;code&gt;4.375 credits&lt;/code&gt;，输出 &lt;code&gt;350 credits&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这意味着，按名义费率看，&lt;code&gt;GPT-5.4&lt;/code&gt; 大约是 &lt;code&gt;GPT-5.5&lt;/code&gt; 的一半，做同样长度的输入输出时，通常能省接近 &lt;code&gt;50%&lt;/code&gt; 的额度。&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 的输入更便宜，但输出已经和 &lt;code&gt;GPT-5.4&lt;/code&gt; 很接近，所以它并不是那种“明显更便宜很多”的选择。&lt;/p&gt;
&lt;p&gt;还有一个容易忽略的点：Codex 官方又特别写了一句，&lt;code&gt;GPT-5.5 uses significantly fewer tokens to achieve results comparable to GPT-5.4&lt;/code&gt;。也就是说，虽然它的单价更高，但在某些复杂任务里，可能会靠更少的 token 和更少返工把差距拉回来。&lt;/p&gt;
&lt;p&gt;不过对固定模板文章改写、翻译、SEO 描述生成这种输入输出长度都比较稳定的任务来说，这种“少走弯路”的优势通常没有复杂工程任务那么明显。实际消耗上，&lt;code&gt;GPT-5.4&lt;/code&gt; 大多还是更省，通常可以理解为省掉大约 &lt;code&gt;45%&lt;/code&gt; 到 &lt;code&gt;50%&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;codex-使用限制上的区别&#34;&gt;Codex 使用限制上的区别
&lt;/h2&gt;&lt;p&gt;除了单价，Codex 里的可用方式也不一样。&lt;/p&gt;
&lt;p&gt;截至 &lt;code&gt;2026-05-10&lt;/code&gt;，&lt;code&gt;GPT-5.5&lt;/code&gt; 在 Codex 里是推荐模型，但目前只在使用 ChatGPT 登录的 Codex 中提供，不支持 API key 鉴权。&lt;code&gt;GPT-5.4&lt;/code&gt; 和 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 则支持 API 访问。&lt;/p&gt;
&lt;p&gt;另外，&lt;code&gt;GPT-5.5&lt;/code&gt; 和 &lt;code&gt;GPT-5.4&lt;/code&gt; 目前都不支持 Codex Cloud Tasks 和 Code Review；这两项仍然是 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 的主场。也就是说，如果你说的是“在 Codex 里长时间跑工程任务”，那就不能只看模型本身强不强，还要看对应功能是不是只有 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 才能跑。&lt;/p&gt;
&lt;p&gt;如果你只是本地消息使用，Plus 计划下官方给出的 5 小时窗口大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：&lt;code&gt;15-80&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：&lt;code&gt;20-100&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：&lt;code&gt;30-150&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从这里也能看出一个现实差异：&lt;code&gt;GPT-5.5&lt;/code&gt; 最强，但在固定额度下可用次数通常更少；&lt;code&gt;GPT-5.4&lt;/code&gt; 更均衡；&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 在本地消息上反而看起来更耐用一些。&lt;/p&gt;
&lt;h2 id=&#34;常用场景怎么选&#34;&gt;常用场景怎么选
&lt;/h2&gt;&lt;p&gt;日常使用里有不少高频任务。更实用的看法，不是抽象地说“哪个更强”，而是按场景一个一个拆开看。&lt;/p&gt;
&lt;h3 id=&#34;1-日常问答资料整理长文总结&#34;&gt;1. 日常问答、资料整理、长文总结
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：最适合。它更擅长处理模糊问题、补齐上下文、把零散信息整理成结构化结果。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：适合普通总结和批量整理。难度不高、数量很多时，通常更划算。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：不太适合当主力。能做，但这不是它最有优势的场景。&lt;/p&gt;
&lt;h3 id=&#34;2-技术概念解释代码讲解读旧项目&#34;&gt;2. 技术概念解释、代码讲解、读旧项目
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：适合复杂项目。跨文件关系多、调用链长、历史包袱重时更稳。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：适合常规阅读理解。看函数、看模块、解释配置、帮你快速接手项目都很好用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：更偏工程执行，不是最优先的“讲解型模型”。&lt;/p&gt;
&lt;h3 id=&#34;3-写脚本小工具sqlshell正则&#34;&gt;3. 写脚本、小工具、SQL、Shell、正则
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：适合脚本背后还有系统设计、联动多个服务、涉及复杂约束的情况。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最适合当默认主力。大多数脚本、小工具、SQL 和命令行任务都够用，而且更省额度。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：如果脚本只是整个工程代理链条的一部分，可以考虑；单独写小脚本时不必优先选它。&lt;/p&gt;
&lt;h3 id=&#34;4-改-bug改小功能补测试普通开发&#34;&gt;4. 改 bug、改小功能、补测试、普通开发
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：适合稍复杂的修复，比如需要先分析原因、再跨文件修改、最后补测试。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最适合日常开发主力。普通 bug、小功能、测试样板、重命名、格式整理这类任务，性价比最好。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：能做，但如果没有 Cloud Tasks 或工程代理需求，通常不是第一选择。&lt;/p&gt;
&lt;h3 id=&#34;5-复杂重构架构设计疑难排错&#34;&gt;5. 复杂重构、架构设计、疑难排错
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：最适合。复杂任务里最贵的是返工，不是单次输出；&lt;code&gt;GPT-5.5&lt;/code&gt; 更适合做主解题模型。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：适合中等复杂度任务。可以做方案和重构，但在特别长的上下文、多步推理和高不确定性问题上通常不如 &lt;code&gt;GPT-5.5&lt;/code&gt; 稳。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：偏执行，不是这类高难决策任务的默认优先级。&lt;/p&gt;
&lt;h3 id=&#34;6-批量轻任务重复任务拆子任务&#34;&gt;6. 批量轻任务、重复任务、拆子任务
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：能做，但通常不划算。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最适合。批量改注释、批量改格式、批量生成样板代码、批量改内容时，最平衡。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：如果任务已经放进 Codex 的工程流程里，可以考虑；单看性价比，仍然通常不如 &lt;code&gt;GPT-5.4&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;7-自动化流水线代理执行持续读写仓库&#34;&gt;7. 自动化流水线、代理执行、持续读写仓库
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：适合做前期方案设计、规则制定、复杂任务拆分。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：适合写自动化脚本、补中等复杂度流程逻辑，尤其是在 API 可接入的情况下。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：最值得关注。因为 Codex 的 Cloud Tasks 和 Code Review 还运行在它上面，所以它更适合“让系统自己跑”的工程场景。&lt;/p&gt;
&lt;h3 id=&#34;8-重要页面文案品牌介绍最终润色&#34;&gt;8. 重要页面文案、品牌介绍、最终润色
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：最适合。自然度、风格控制、上下文一致性最好。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：适合大多数普通页面和日常更新，重要页面可以先写初稿再交给 &lt;code&gt;GPT-5.5&lt;/code&gt; 精修。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：不适合当主要文案模型。&lt;/p&gt;
&lt;h3 id=&#34;9-网站固定模板文章改写翻译seo-描述&#34;&gt;9. 网站固定模板文章改写、翻译、SEO 描述
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：适合做模板设计、最终润色、重要页面定稿，以及把中文翻成更自然的英文。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最适合批量生产。普通文章改写、固定结构翻译、商品文案重写、Meta 描述批量生成，通常质量和成本最平衡。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：不适合当主要文案模型，更适合写批处理脚本、清洗 HTML、保留标签结构、改自动发布流程。&lt;/p&gt;
&lt;h3 id=&#34;10-电商商品文案分类页批量内容运营&#34;&gt;10. 电商商品文案、分类页、批量内容运营
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：适合定规则、做抽检、做高价值页面的最终润色。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最适合批量生产。商品标题、分类页说明、批量活动文案、长尾 SEO 内容这类任务上，质量和成本更平衡。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：适合写抓取、清洗、批处理、自动发布脚本，不适合负责主要文案。&lt;/p&gt;
&lt;p&gt;如果把这些场景进一步压缩成一句话：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;复杂脑力活、复杂分析、复杂文案：优先 &lt;code&gt;GPT-5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;日常开发、批量生产、重复任务：优先 &lt;code&gt;GPT-5.4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Codex 工程代理、Cloud Tasks、Code Review：重点看 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;最后怎么取舍&#34;&gt;最后怎么取舍
&lt;/h2&gt;&lt;p&gt;如果你只是平时写代码、改 bug、问技术问题、顺手做一些文档工作，&lt;code&gt;GPT-5.4&lt;/code&gt; 是很稳的主力选择。&lt;/p&gt;
&lt;p&gt;如果你要做的是更复杂的项目分析、多文件修改、架构方案、深度排错，或者希望一个模型同时覆盖编程和复杂知识工作，直接优先 &lt;code&gt;GPT-5.5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你在 Codex 环境里看重的是工程工作流本身，比如 Cloud Tasks、Code Review、长时间代理执行，那么 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 仍然值得保留，但它已经不太适合被当成“默认第一选择”。&lt;/p&gt;
&lt;p&gt;对固定模板文章站来说，更实用的搭配通常是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt; 负责批量生产&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; 负责定模板、做抽检、做最终润色&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 负责写自动化工具，而不是负责主要文案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;现在更合理的默认顺序是：&lt;code&gt;GPT-5.5&lt;/code&gt; 第一，&lt;code&gt;GPT-5.4&lt;/code&gt; 第二，&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 放到更偏工程代理和 Codex 特定能力的场景里使用。&lt;/p&gt;
&lt;p&gt;如果你问的是“同样一篇模板文章改写，&lt;code&gt;GPT-5.4&lt;/code&gt; 比 &lt;code&gt;GPT-5.5&lt;/code&gt; 能省多少”，按官方 credits 表和这类任务的典型 token 结构看，通常可以按“省接近一半”来理解。对批量站内容来说，这个差距已经足够大，所以最常见的做法不是全程上 &lt;code&gt;GPT-5.5&lt;/code&gt;，而是先用 &lt;code&gt;GPT-5.5&lt;/code&gt; 把规则和风格定好，再把大批量任务交给 &lt;code&gt;GPT-5.4&lt;/code&gt;。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI Coding 套餐怎么选：轻度看顺手，重度看灵活性</title>
        <link>https://knightli.com/2026/05/10/ai-coding-plan-selection/</link>
        <pubDate>Sun, 10 May 2026 08:20:58 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/10/ai-coding-plan-selection/</guid>
        <description>&lt;p&gt;AI Coding 套餐这半年变化很快。很多工具从“按次”转向“按量”，免费或低价套餐的额度被收紧，部分海外服务还增加了身份验证、地区限制和更严格的用量规则。&lt;/p&gt;
&lt;p&gt;对开发者来说，问题已经不只是“哪个模型最强”，而是：每个月要花多少钱、额度是否够用、工具是否顺手，以及当某个套餐突然涨价或改规则时，能不能平滑切换。&lt;/p&gt;
&lt;p&gt;一个比较实用的结论是：轻度用户买顺手的工具，中度用户买性价比，重度用户买灵活性。使用越重，越不要把模型和工具绑死在同一个套餐里。&lt;/p&gt;
&lt;h2 id=&#34;选套餐先看四件事&#34;&gt;选套餐先看四件事
&lt;/h2&gt;&lt;p&gt;过去选 AI Coding 套餐，通常看三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;模型能力是否足够强。&lt;/li&gt;
&lt;li&gt;响应速度是否稳定。&lt;/li&gt;
&lt;li&gt;套餐额度是否够用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在还要加上第四点：模型和工具能不能分开。&lt;/p&gt;
&lt;p&gt;模型负责推理能力，工具负责上下文管理、文件编辑、Agent 编排和工作流体验。两者都重要，但最好不要完全绑定。比如喜欢 Claude 模型，可以买官方套餐，也可以通过 API 接到其他工具里；喜欢某个编辑器或 Agent 工具，也最好确认它能接入不同模型，而不是只能使用自家套餐。&lt;/p&gt;
&lt;p&gt;这样做的好处不是折腾，而是降低风险。AI Coding 是变化最快的赛道之一，今天额度宽松的套餐，过两个月可能就改计费；今天好用的工具，下一版也可能因为模型接口变化而体验下降。把模型和工具分开，等于给自己留了迁移空间。&lt;/p&gt;
&lt;h2 id=&#34;海外套餐正在收紧&#34;&gt;海外套餐正在收紧
&lt;/h2&gt;&lt;p&gt;GitHub Copilot、Cursor、Windsurf、Claude Code 这类工具仍然是很多人的主力选择，但整体趋势已经很明确：低价高额度越来越难维持，按量计费越来越常见。&lt;/p&gt;
&lt;p&gt;GitHub Copilot 这类服务开始更强调使用量计费后，套餐本身的“套利空间”会明显减少。对轻度用户来说，它仍然方便；但对高频使用 Agent、长上下文和复杂代码任务的人来说，实际消耗会更接近真实 API 成本。&lt;/p&gt;
&lt;p&gt;Cursor 和 Windsurf 本质上是把模型能力包进 IDE 体验里。它们的优势是开箱即用、编辑器体验成熟，缺点是工具绑定较深。一旦你依赖其中的专属 Agent、索引和自动化流程，后续迁移成本会越来越高。&lt;/p&gt;
&lt;p&gt;Claude Code 的体验和生态热度很高，但海外订阅、身份验证、地区限制、中转服务安全性，都会成为国内用户需要额外评估的风险。尤其是第三方中转服务，可能存在模型掺杂、稳定性不足、数据安全和跑路风险，不适合作为重要项目的长期基础设施。&lt;/p&gt;
&lt;h2 id=&#34;国产套餐的优点和短板&#34;&gt;国产套餐的优点和短板
&lt;/h2&gt;&lt;p&gt;国产 AI Coding 套餐的一个优点，是很多服务以 API 形式提供，天然不太锁定工具。你可以把模型接入 OpenCode、Cline、Continue、自己的脚本或内部 Agent。&lt;/p&gt;
&lt;p&gt;短板也很明显：如果同时要求模型强、速度快、额度足，很少有一个套餐能全部满足。&lt;/p&gt;
&lt;p&gt;GLM 系列在国产模型里能力较强，但高峰期吞吐可能不稳定，重度任务容易被速度卡住。Kimi 的能力不错，但价格和额度规则需要持续关注，尤其要看后台额度是否透明。MiniMax 这类模型速度和额度较友好，适合日常轻任务、批处理和不太复杂的代码辅助，但在复杂工程推理上可能略低一档。DeepSeek 新模型如果处在活动价或优惠期，性价比会很高；活动结束后，就要重新按官方价格和套餐规则评估。&lt;/p&gt;
&lt;p&gt;所以国产方案更适合作为“模型池”使用：不同任务用不同模型，而不是押注一个模型包打天下。&lt;/p&gt;
&lt;h2 id=&#34;轻度用户选顺手的不必折腾-api&#34;&gt;轻度用户：选顺手的，不必折腾 API
&lt;/h2&gt;&lt;p&gt;如果一周只是让 AI 改脚本、补文档、解释报错、写一点小工具，不需要复杂配置。&lt;/p&gt;
&lt;p&gt;这类用户优先选顺手的产品。Cursor、Windsurf、Trae、CodeBuddy、通义灵码、GitHub Copilot 之类都可以尝试。重点不是追求最低单价，而是减少使用门槛：能在你常用编辑器里稳定工作、补全质量不错、出错时容易回退，就足够了。&lt;/p&gt;
&lt;p&gt;轻度用户不建议为了省一点钱去折腾多层 API、中转站和复杂代理。时间成本、账户风险和排错成本往往高于节省下来的订阅费。&lt;/p&gt;
&lt;h2 id=&#34;中度用户看性价比也看可迁移性&#34;&gt;中度用户：看性价比，也看可迁移性
&lt;/h2&gt;&lt;p&gt;如果每天都会用 AI 写代码、改项目、生成测试、整理文档，就要开始关注额度和实际消耗。&lt;/p&gt;
&lt;p&gt;这类用户可以把主力工具和备用模型分开安排。比如一个顺手的 IDE 套餐负责日常编辑，再配一个可接入多工具的 API 或聚合套餐，处理更长上下文、更复杂的 Agent 任务。&lt;/p&gt;
&lt;p&gt;选择时可以重点看三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;是否支持接入第三方工具。&lt;/li&gt;
&lt;li&gt;是否能清楚看到 token 或额度消耗。&lt;/li&gt;
&lt;li&gt;超额后是限速、降级、停止服务，还是按量付费。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果一个套餐看起来便宜，但只允许在自家工具里使用，就要把迁移成本算进去。如果一个套餐贵一点，但能接入多种工具，反而可能更适合作为长期主力。&lt;/p&gt;
&lt;h2 id=&#34;重度用户不要把模型和工具绑死&#34;&gt;重度用户：不要把模型和工具绑死
&lt;/h2&gt;&lt;p&gt;重度用户的核心诉求是灵活性。&lt;/p&gt;
&lt;p&gt;当一个人或团队每天大量使用 AI Agent，消耗会非常快。复杂代码库检索、长上下文修改、多轮调试、自动化测试修复，都会让 token 消耗成倍增长。此时再依赖单一套餐，很容易遇到三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;额度突然不够。&lt;/li&gt;
&lt;li&gt;计费规则突然改变。&lt;/li&gt;
&lt;li&gt;某个工具或模型临时不可用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;更稳妥的做法是准备多层组合：一个主力 Agent 工具，一个或多个可替换模型接口，一个低成本模型处理简单任务，一个高能力模型处理复杂任务。日常小任务不要都交给最贵模型，关键任务也不要只依赖最便宜模型。&lt;/p&gt;
&lt;p&gt;对重度用户来说，“工具能接任意模型，模型能接入任意工具”比单月便宜几十美元更重要。因为真正贵的不是订阅费，而是工作流被某个生态锁死后，迁移和重建习惯的成本。&lt;/p&gt;
&lt;h2 id=&#34;一个更稳的组合思路&#34;&gt;一个更稳的组合思路
&lt;/h2&gt;&lt;p&gt;比较稳妥的组合可以这样安排：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;轻任务用低成本模型：解释代码、写小脚本、改格式、生成简单文档。&lt;/li&gt;
&lt;li&gt;中等任务用性价比模型：常规功能开发、测试补全、重构建议。&lt;/li&gt;
&lt;li&gt;难任务用强模型：复杂架构调整、跨文件修复、疑难 bug、长上下文推理。&lt;/li&gt;
&lt;li&gt;工具层保持开放：尽量选择能接 API、能导出配置、能切换模型的工具。&lt;/li&gt;
&lt;li&gt;保留备用方案：主力套餐改规则时，可以快速切到另一个模型或工具。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样不一定最省钱，但更抗波动。AI Coding 套餐的价格和额度还会继续变化，真正值得长期投入的是可迁移的工作流，而不是某个短期看起来特别划算的套餐。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;AI Coding 套餐不适合只看单月价格。轻度用户应该少折腾，选一个顺手的工具；中度用户要开始看额度、消耗和可迁移性；重度用户则要把模型和工具解耦，避免被单一生态绑定。&lt;/p&gt;
&lt;p&gt;现在最值得记住的一点是：套餐会变，模型会变，工具也会变。把选择权留在自己手里，才是长期使用 AI Coding 工具时最重要的成本控制。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Chrome 静默下载 4GB Gemini Nano：怎么检查、关闭和删除？</title>
        <link>https://knightli.com/2026/05/09/chrome-gemini-nano-silent-download/</link>
        <pubDate>Sat, 09 May 2026 21:32:27 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/09/chrome-gemini-nano-silent-download/</guid>
        <description>&lt;p&gt;Google Chrome 浏览器被曝会在未经用户明确许可的情况下，后台下载约 4GB 的本地 AI 模型文件，引发关于隐私、存储空间和环境影响的讨论。&lt;/p&gt;
&lt;p&gt;这批文件与 Gemini Nano 有关，主要用于 Chrome 的本地 AI 功能。争议点不在于浏览器支持本地 AI 本身，而在于下载过程是否足够透明、用户是否应当事先知情，以及系统资源是否被合理占用。&lt;/p&gt;
&lt;h2 id=&#34;事件细节&#34;&gt;事件细节
&lt;/h2&gt;&lt;p&gt;被讨论的模型文件名为 &lt;code&gt;weights.bin&lt;/code&gt;，位于 Chrome 的 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 目录中。外界认为它是 Gemini Nano 的本地化版本，用于在设备端完成部分 AI 推理。&lt;/p&gt;
&lt;p&gt;Chrome 会根据设备硬件能力在后台判断是否下载，尤其会参考 RAM 和 VRAM 等条件。用户通常不需要主动开启下载流程，也可能不会在下载前看到清晰提示。&lt;/p&gt;
&lt;p&gt;更麻烦的是，手动删除模型文件通常不能彻底阻止它回来。只要相关功能仍处于启用状态，Chrome 在重启或后续更新后可能再次下载该模型。&lt;/p&gt;
&lt;p&gt;目前讨论中提到的影响平台包括 Windows 11、macOS 和 Ubuntu 等桌面系统。按 Chrome 桌面装机量估算，潜在影响设备可能达到数亿台。&lt;/p&gt;
&lt;h2 id=&#34;google-的说法&#34;&gt;Google 的说法
&lt;/h2&gt;&lt;p&gt;Google 的解释是，这些文件用于支持本地 AI 功能，例如“帮我写作”（Help me write）和诈骗检测。把模型放在本地运行，可以减少部分数据上传，从而改善隐私保护。&lt;/p&gt;
&lt;p&gt;Google 还表示，如果设备存储空间不足，Chrome 会自动卸载相关模型以释放空间。也就是说，模型并不一定永久占用磁盘。&lt;/p&gt;
&lt;p&gt;同时，Google 称从 2024 年 2 月起，用户已经可以在 Chrome 设置中停用相关功能。停用后，模型不会继续下载或更新。&lt;/p&gt;
&lt;h2 id=&#34;如何检查和停用&#34;&gt;如何检查和停用
&lt;/h2&gt;&lt;p&gt;如果你不希望 Chrome 在本地保留 Gemini Nano 模型，可以从以下几处检查。&lt;/p&gt;
&lt;p&gt;首先，进入 Chrome 设置，查找与“终端侧 AI”、本地 AI、写作辅助或优化建议相关的选项，并关闭不需要的功能。&lt;/p&gt;
&lt;p&gt;其次，可以在地址栏输入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chrome://flags
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后搜索并停用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enables optimization guide on device
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最后，再到 Chrome 用户数据目录中查找 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 文件夹，并删除其中的模型文件。需要注意的是，单独删除文件通常不够，最好先停用相关 flag 或设置，否则 Chrome 之后仍可能重新下载。&lt;/p&gt;
&lt;h2 id=&#34;不同系统里的可能路径&#34;&gt;不同系统里的可能路径
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 通常位于 Chrome 的用户数据目录下。不同系统和安装方式会有差异，可以优先从这些位置查找：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows：&lt;code&gt;%LOCALAPPDATA%\Google\Chrome\User Data\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS：&lt;code&gt;~/Library/Application Support/Google/Chrome/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux：&lt;code&gt;~/.config/google-chrome/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Chromium：&lt;code&gt;~/.config/chromium/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;进入对应目录后，可以搜索 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 或 &lt;code&gt;weights.bin&lt;/code&gt;。如果使用的是 Chrome Beta、Dev、Canary，目录名称可能会带有对应版本标识。&lt;/p&gt;
&lt;h2 id=&#34;如何判断-weightsbin-是否已经下载&#34;&gt;如何判断 weights.bin 是否已经下载
&lt;/h2&gt;&lt;p&gt;最直接的方法是在 Chrome 用户数据目录中搜索：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;weights.bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果已经下载，通常可以看到它位于 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 目录内，文件体积可能接近数 GB。也可以按文件修改时间判断它是否在最近由 Chrome 后台生成或更新。&lt;/p&gt;
&lt;p&gt;如果找不到 &lt;code&gt;weights.bin&lt;/code&gt;，不一定代表设备永远不会下载。Chrome 可能会根据硬件条件、地区、版本、功能开关和实验配置决定是否拉取模型。&lt;/p&gt;
&lt;h2 id=&#34;关闭后会影响哪些-chrome-ai-功能&#34;&gt;关闭后会影响哪些 Chrome AI 功能
&lt;/h2&gt;&lt;p&gt;关闭相关本地 AI 或优化功能后，可能影响依赖 Gemini Nano 的设备端能力，例如“帮我写作”（Help me write）、本地诈骗检测，以及未来更多不经过云端的浏览器 AI 功能。&lt;/p&gt;
&lt;p&gt;对不使用这些功能的用户来说，关闭后的日常浏览影响通常不大。对经常使用 Chrome 内置写作辅助、页面理解或安全检测实验功能的用户来说，体验可能会退回到云端处理、不可用，或由浏览器采用其他替代方案。&lt;/p&gt;
&lt;h2 id=&#34;争议在哪里&#34;&gt;争议在哪里
&lt;/h2&gt;&lt;p&gt;这件事的核心争议，是浏览器能否在用户没有明确同意的情况下，为 AI 功能提前下载数 GB 的模型文件。&lt;/p&gt;
&lt;p&gt;支持者会认为，本地 AI 可以减少云端处理，有助于隐私保护，也能提升响应速度。反对者则认为，用户至少应该在下载前看到明确提示，尤其是在文件体积接近 4GB、且可能影响存储空间和网络流量时。&lt;/p&gt;
&lt;p&gt;隐私专家还指出，这类未经充分告知的后台下载行为，可能触及欧盟 ePrivacy 指令和 GDPR 的合规问题。是否构成违规，还要看 Google 的告知方式、默认设置、数据处理路径和用户控制选项。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Chrome 引入 Gemini Nano 代表浏览器正在把更多 AI 能力放到本地执行，但这也带来了新的产品边界问题：本地模型同样会占用磁盘、消耗带宽，并影响用户对设备的控制感。&lt;/p&gt;
&lt;p&gt;对普通用户来说，最直接的做法是检查 Chrome 的本地 AI 和优化功能设置。如果不需要这些功能，可以关闭相关选项，并在停用后删除 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 目录中的模型文件。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp 多 GPU 性能实测思路：2x V100 16GB 会比单卡 32GB 快吗？</title>
        <link>https://knightli.com/2026/05/09/llama-cpp-multi-gpu-offload-performance/</link>
        <pubDate>Sat, 09 May 2026 15:05:41 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/09/llama-cpp-multi-gpu-offload-performance/</guid>
        <description>&lt;p&gt;大概结论：llama.cpp 多 GPU offload 不是“多一张卡就白捡一倍性能”。如果模型本来能完整放进一张 32GB 显卡，2x V100 16GB 通常不如单张 32GB 显卡省心，甚至可能更慢；如果模型单张 16GB 放不下，双卡的主要价值是“能把模型放进 GPU”，这时收益会很明显。&lt;/p&gt;
&lt;h2 id=&#34;先分清-split-mode&#34;&gt;先分清 split mode
&lt;/h2&gt;&lt;p&gt;llama.cpp 的多 GPU 主要围绕 &lt;code&gt;--split-mode&lt;/code&gt; 和 &lt;code&gt;--tensor-split&lt;/code&gt; 使用。实际讨论性能时，先要区分几种模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;layer&lt;/code&gt;：按层切分到不同 GPU，兼容性较好，也是多数人优先尝试的方式。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tensor&lt;/code&gt;：把张量计算拆到多张 GPU 上，更接近并行计算，但更依赖 GPU 之间的互联带宽和后端支持。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;row&lt;/code&gt;：旧的行切分方式，在不少场景里仍能看到，但新部署通常不建议优先从它开始。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，&lt;code&gt;layer&lt;/code&gt; 更像“把不同楼层放在不同卡上”，单 token 生成时不一定能让两张卡同时满负载；&lt;code&gt;tensor&lt;/code&gt; 更像“同一层两张卡一起算”，理论上更能并行，但跨卡通信会成为关键瓶颈。&lt;/p&gt;
&lt;h2 id=&#34;单卡-32gb-能放下时双-16gb-不一定更快&#34;&gt;单卡 32GB 能放下时：双 16GB 不一定更快
&lt;/h2&gt;&lt;p&gt;如果模型和 KV cache 能完整放进一张 32GB 显卡，那么单卡通常更稳，也常常更快。对 1x V100 32GB 和 2x V100 16GB 这类同代硬件来说，后者未必能赢。&lt;/p&gt;
&lt;p&gt;比较保守的预期是：2x V100 16GB 可能比单张 V100 32GB 慢 10% 到 40%，尤其是单人聊天、Continue Agent、代码问答这类一次主要生成一个回答的场景。&lt;/p&gt;
&lt;p&gt;原因不复杂：多 GPU 不是简单合并显存。按层切分时，推理会在不同 GPU 之间流转，单 token 生成阶段经常是部分 GPU 等另一部分 GPU；按张量切分时，两张卡可以一起算，但中间结果需要跨卡同步，互联带宽和延迟会直接影响吞吐。&lt;/p&gt;
&lt;p&gt;所以如果你的选择是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x V100 32GB&lt;/li&gt;
&lt;li&gt;2x V100 16GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;并且目标模型单张 32GB 已经能完整放下，那么单张 32GB 往往是更舒服的选择。&lt;/p&gt;
&lt;h2 id=&#34;单卡-16gb-放不下时双卡价值很大&#34;&gt;单卡 16GB 放不下时：双卡价值很大
&lt;/h2&gt;&lt;p&gt;另一种情况完全不同：模型单张 16GB 放不下，但两张 16GB 合起来可以放下。&lt;/p&gt;
&lt;p&gt;这时双卡的价值就很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单张 16GB：可能需要大量 CPU offload，速度明显变慢。&lt;/li&gt;
&lt;li&gt;2x 16GB：权重尽量留在 GPU 上，速度可能比 CPU/GPU 混跑快很多。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种场景下，2x V100 16GB 不一定比单张 32GB 快，但它可能比“单张 16GB 加大量系统内存 offload”快几倍。也就是说，双卡的第一价值不是加速，而是避免模型被迫落到更慢的系统内存里。&lt;/p&gt;
&lt;h2 id=&#34;v100-pcie-和-v100-sxm2-差别很大&#34;&gt;V100 PCIe 和 V100 SXM2 差别很大
&lt;/h2&gt;&lt;p&gt;多 GPU 推理最容易被忽略的是互联。&lt;/p&gt;
&lt;p&gt;如果是 V100 SXM2，并且机器里有 NVLink，跨卡通信带宽高很多。NVIDIA 的 V100 资料里，NVLink 互联最高可到 300GB/s。这种环境下，&lt;code&gt;tensor&lt;/code&gt; 或更高 batch 的场景才更有机会接近甚至超过单卡表现。&lt;/p&gt;
&lt;p&gt;如果是 V100 PCIe，情况就保守得多。V100 PCIe 的互联主要走 PCIe Gen3，资料里标的 interconnect bandwidth 是 32GB/s。这个带宽和 NVLink 不是一个量级，所以双卡经常出现“显存够了，但速度没有翻倍”的情况。&lt;/p&gt;
&lt;p&gt;因此判断 2x V100 16GB 值不值得，不能只看显存相加是 32GB，还要看它们是 PCIe 版还是 SXM2/NVLink 版。&lt;/p&gt;
&lt;h2 id=&#34;怎么选更实际&#34;&gt;怎么选更实际
&lt;/h2&gt;&lt;p&gt;如果模型能放进单张 32GB 显卡，优先选单卡。它的延迟、稳定性和调参成本通常更好。&lt;/p&gt;
&lt;p&gt;如果模型单张 16GB 放不下，而两张 16GB 能放下，双卡值得用。此时重点是让权重尽量留在 GPU，而不是期待性能线性翻倍。&lt;/p&gt;
&lt;p&gt;如果是 V100 PCIe 双卡，优先尝试 &lt;code&gt;--split-mode layer&lt;/code&gt;，把目标放在“能稳定跑”和“少走 CPU”上。&lt;/p&gt;
&lt;p&gt;如果是 V100 SXM2/NVLink，才更值得测试 &lt;code&gt;tensor&lt;/code&gt; 相关模式，尤其是 prefill、大 batch 或并发请求场景。&lt;/p&gt;
&lt;h2 id=&#34;什么时候买-2x16gb什么时候买-1x32gb&#34;&gt;什么时候买 2x16GB，什么时候买 1x32GB
&lt;/h2&gt;&lt;p&gt;如果你只服务一个人，主要做聊天、代码补全、Continue Agent、长上下文问答，并且目标模型能放进 32GB，那么 1x32GB 通常更值得。它少了跨卡调度，延迟更稳定，排查问题也简单。&lt;/p&gt;
&lt;p&gt;如果你已经有一张 16GB 卡，想用较低成本扩到能跑 30B、32B 或更高量化模型，2x16GB 就有意义。它不一定让 token/s 翻倍，但可以把原本必须 CPU offload 的权重留在 GPU 上。&lt;/p&gt;
&lt;p&gt;如果你准备重新采购，优先级可以这样排：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单模型、单用户、重视响应延迟：优先 1x32GB。&lt;/li&gt;
&lt;li&gt;模型单卡放不下、预算有限：可以考虑 2x16GB。&lt;/li&gt;
&lt;li&gt;有 NVLink 或 SXM2 机器：2x16GB 的可玩性明显高于普通 PCIe 双卡。&lt;/li&gt;
&lt;li&gt;未来想跑更长上下文：不要只看权重大小，还要预留 KV cache 显存。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;layer-split-和-tensor-split-怎么用&#34;&gt;layer split 和 tensor split 怎么用
&lt;/h2&gt;&lt;p&gt;实用建议是：先用 &lt;code&gt;layer&lt;/code&gt;，再测 &lt;code&gt;tensor&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;layer&lt;/code&gt; 适合作为默认起点。它按层分配模型，兼容性较好，对 PCIe 双卡更友好。缺点是生成阶段可能更像流水线，某些时刻只有一张卡在忙，另一张卡在等。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tensor&lt;/code&gt; 更适合互联带宽好的机器，例如 V100 SXM2/NVLink。它把同一层的部分计算拆到多张卡上，理论上更有并行空间，但跨卡同步更频繁。如果是 PCIe 双卡，&lt;code&gt;tensor&lt;/code&gt; 可能会被通信开销吃掉收益。&lt;/p&gt;
&lt;p&gt;实际测试时可以从这几组开始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第三条不是为了长期使用，而是给单卡结果做一个参照。这样才能看出双卡到底是更快，还是只是把显存压力分摊出去了。&lt;/p&gt;
&lt;h2 id=&#34;prefill-和-decode-为什么表现不同&#34;&gt;prefill 和 decode 为什么表现不同
&lt;/h2&gt;&lt;p&gt;本地大模型性能通常要分成两个阶段看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;prefill&lt;/code&gt;：处理输入 prompt，典型指标是 &lt;code&gt;pp512&lt;/code&gt; 这类 prompt processing 吞吐。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decode&lt;/code&gt;：逐 token 生成回答，典型指标是 &lt;code&gt;tg128&lt;/code&gt; 这类 token generation 吞吐。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;prefill&lt;/code&gt; 更像大批量矩阵计算，batch 较大时更容易把 GPU 喂饱，也更可能从多 GPU 并行里受益。&lt;code&gt;decode&lt;/code&gt; 是一个 token 接一个 token 生成，batch 小、同步频繁，跨卡通信和调度延迟更容易暴露出来。&lt;/p&gt;
&lt;p&gt;所以你可能会看到一种结果：双卡的 &lt;code&gt;pp512&lt;/code&gt; 更好，但 &lt;code&gt;tg128&lt;/code&gt; 没明显提升，甚至更慢。对聊天和 Agent 来说，用户体感更接近 &lt;code&gt;tg128&lt;/code&gt;；对长文档导入、批量预填充、并发服务来说，&lt;code&gt;pp512&lt;/code&gt; 也很重要。&lt;/p&gt;
&lt;h2 id=&#34;kv-cache-会不会成为第二个显存瓶颈&#34;&gt;KV cache 会不会成为第二个显存瓶颈
&lt;/h2&gt;&lt;p&gt;会。很多人只算模型权重，忘了 KV cache。&lt;/p&gt;
&lt;p&gt;模型权重决定“能不能加载模型”，KV cache 决定“能不能开足上下文”。上下文越长、并发越高、batch 越大，KV cache 占用越明显。你可能遇到这种情况：模型本体能放进 32GB，但一开 32K 或 64K 上下文，显存又不够了。&lt;/p&gt;
&lt;p&gt;判断时至少要留出几块显存余量：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KV cache&lt;/li&gt;
&lt;li&gt;CUDA graph 或后端运行时开销&lt;/li&gt;
&lt;li&gt;prompt batch 和 ubatch&lt;/li&gt;
&lt;li&gt;系统桌面、驱动和其它进程占用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你用的是 2x16GB，显存不是一个完全等价的 32GB 大池子。某些缓冲区、KV cache 或中间张量仍然会受单卡剩余显存影响。测试长上下文时，最好直接用目标 &lt;code&gt;--ctx-size&lt;/code&gt; 和目标并发数测，而不是只看模型能不能启动。&lt;/p&gt;
&lt;h2 id=&#34;用-llama-bench-做自己的双卡测试&#34;&gt;用 llama-bench 做自己的双卡测试
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama-bench&lt;/code&gt; 比直接聊天更适合做硬件对比，因为它会把 prompt processing 和 token generation 拆成可比较的指标。官方 README 的默认示例就是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;对双 V100，可以至少测这几组：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 单卡基线&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 双卡 layer split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 双卡 tensor split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重点看两列：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;：prompt processing，长输入和批量预填充更相关。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;：token generation，单人聊天和 Agent 体感更相关。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试时尽量固定模型、量化格式、上下文、batch、驱动版本和 llama.cpp 版本。每组多跑几次，取中位数，比只看一次结果可靠。最后再用真实工作流跑一遍，例如 Continue Agent、OpenAI-compatible server 或你自己的 RAG 请求，因为 benchmark 好看不代表交互体验一定更好。&lt;/p&gt;
&lt;h2 id=&#34;一句话结论&#34;&gt;一句话结论
&lt;/h2&gt;&lt;p&gt;2x V100 16GB 的优势主要是显存容量，而不是必然的生成速度。模型单卡能放下时，单张 32GB 往往更快、更稳；模型单卡放不下时，双 16GB 的价值就很大，因为它能避免大量 CPU offload。至于能不能更快，关键看 split mode、batch、模型大小，以及两张 V100 之间到底是 PCIe 还是 NVLink。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp server README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mintlify.com/ggml-org/llama.cpp/concepts/backends&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp Compute Backends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-gb/data-center/tesla-v100/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA Tesla V100&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://images.nvidia.com/content/technologies/volta/pdf/tesla-volta-v100-datasheet.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA V100 Datasheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 限额翻倍：Anthropic 借 SpaceX 算力扩容缓解使用限制</title>
        <link>https://knightli.com/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/2026/05/09/anthropic-claude-code-higher-limits-spacex-compute/</guid>
        <description>&lt;p&gt;Anthropic 在 2026 年 5 月 6 日宣布，将提高 Claude Code 和 Claude API 的使用限额，并与 SpaceX 达成新的算力合作。对普通用户来说，最直接的变化是 Claude Code 可用额度变多；对开发者和企业来说，重点是 Claude 的推理容量正在继续扩张。&lt;/p&gt;
&lt;p&gt;这次公告可以拆成两部分看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 与 Claude API 的限额提升。&lt;/li&gt;
&lt;li&gt;Anthropic 通过 SpaceX 数据中心获得新的算力容量。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;claude-code-限额有哪些变化&#34;&gt;Claude Code 限额有哪些变化
&lt;/h2&gt;&lt;p&gt;Anthropic 表示，下面三项变化从公告当天开始生效：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 的五小时 rate limit 对 Pro、Max、Team 和 seat-based Enterprise 计划翻倍。&lt;/li&gt;
&lt;li&gt;Pro 和 Max 账号的 Claude Code 高峰时段限额降低被取消。&lt;/li&gt;
&lt;li&gt;Claude Opus 模型的 API rate limits 明显提高。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也就是说，如果你经常用 Claude Code 做长时间代码任务、仓库分析、重构、调试或 Agent 工作流，这次变化可能会直接减少“还没做完就到限额”的情况。&lt;/p&gt;
&lt;p&gt;不过需要注意，限额提高不等于无限使用。Claude Code 仍然会受订阅计划、使用方式、模型、任务长度、上下文大小和平台策略影响。只是相比之前，Anthropic 明确给出了更大的使用空间。&lt;/p&gt;
&lt;h2 id=&#34;为什么算力会影响-claude-code-体验&#34;&gt;为什么算力会影响 Claude Code 体验
&lt;/h2&gt;&lt;p&gt;Claude Code 这类工具比普通聊天更吃资源。一次代码任务可能会包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读取大量文件。&lt;/li&gt;
&lt;li&gt;长上下文分析。&lt;/li&gt;
&lt;li&gt;多轮工具调用。&lt;/li&gt;
&lt;li&gt;生成、修改和检查代码。&lt;/li&gt;
&lt;li&gt;反复运行测试或解释错误。&lt;/li&gt;
&lt;li&gt;使用 Opus 模型处理复杂推理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些操作背后消耗的不只是 token，还有模型推理容量、并发能力和调度资源。用户看到的是“限额”“排队”“高峰时段变慢”，平台看到的是算力供给和需求之间的压力。&lt;/p&gt;
&lt;p&gt;所以这次 Anthropic 把限额提升和算力合作放在同一篇公告里，本质上是在说明：Claude Code 体验的改善不是单纯改一个套餐规则，而是依赖后端推理容量扩张。&lt;/p&gt;
&lt;h2 id=&#34;spacex-合作带来什么&#34;&gt;SpaceX 合作带来什么
&lt;/h2&gt;&lt;p&gt;Anthropic 表示，已经与 SpaceX 签署协议，将使用 SpaceX Colossus 1 数据中心的全部算力容量。官方提到，这部分容量超过 300 兆瓦，对应 22 万块以上 NVIDIA GPU，并将在一个月内提供给 Anthropic 使用。&lt;/p&gt;
&lt;p&gt;这部分新增容量会直接改善 Claude Pro 和 Claude Max 订阅用户的可用容量。&lt;/p&gt;
&lt;p&gt;公告中还提到，Anthropic 对未来与 SpaceX 合作开发轨道 AI 算力表示兴趣。不过这更像长期方向，和当前用户马上能感受到的 Claude Code 限额提升不是同一层面的事情。&lt;/p&gt;
&lt;h2 id=&#34;anthropic-的算力布局正在变大&#34;&gt;Anthropic 的算力布局正在变大
&lt;/h2&gt;&lt;p&gt;SpaceX 只是 Anthropic 近期算力扩张的一部分。官方同时列出了其他合作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 Amazon 的最高 5GW 合作，其中接近 1GW 新容量计划在 2026 年底前上线。&lt;/li&gt;
&lt;li&gt;与 Google 和 Broadcom 的 5GW 合作，预计从 2027 年开始上线。&lt;/li&gt;
&lt;li&gt;与 Microsoft 和 NVIDIA 的战略合作，包含 300 亿美元 Azure 容量。&lt;/li&gt;
&lt;li&gt;与 Fluidstack 的 500 亿美元美国 AI 基础设施投资。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic 还强调，Claude 的训练和运行会使用多种 AI 硬件，包括 AWS Trainium、Google TPU 和 NVIDIA GPU。&lt;/p&gt;
&lt;p&gt;这说明一个趋势：头部模型公司的竞争不只在模型参数、榜单成绩和产品形态，也在电力、数据中心、GPU、TPU、网络和全球部署能力。&lt;/p&gt;
&lt;h2 id=&#34;对-claude-code-用户的实际影响&#34;&gt;对 Claude Code 用户的实际影响
&lt;/h2&gt;&lt;p&gt;对开发者来说，这次最值得关注的是 Claude Code 的五小时限额翻倍。它会影响这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大型仓库代码阅读。&lt;/li&gt;
&lt;li&gt;多文件重构。&lt;/li&gt;
&lt;li&gt;Bug 排查和测试修复。&lt;/li&gt;
&lt;li&gt;代码迁移与依赖升级。&lt;/li&gt;
&lt;li&gt;长时间 Agent 编程任务。&lt;/li&gt;
&lt;li&gt;Team 或 Enterprise 中多人同时使用 Claude Code。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;过去使用 Claude Code 时，一个常见问题是任务还在推进，但额度已经到顶。限额提升后，开发者更容易让 Agent 把一个完整任务走完，而不是中途停下。&lt;/p&gt;
&lt;p&gt;如果你是 Pro 或 Max 用户，取消高峰时段限额降低也很关键。它意味着晚高峰或使用高峰期的体验可能更稳定，不会因为平台临时收紧额度而明显影响 Claude Code 工作流。&lt;/p&gt;
&lt;h2 id=&#34;对-api-用户的意义&#34;&gt;对 API 用户的意义
&lt;/h2&gt;&lt;p&gt;公告中还提到，Claude Opus 模型的 API rate limits 得到明显提升。对于使用 Opus 做复杂任务的团队，这通常意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更高并发。&lt;/li&gt;
&lt;li&gt;更少 429 限流。&lt;/li&gt;
&lt;li&gt;更容易支撑批量任务。&lt;/li&gt;
&lt;li&gt;更适合长上下文、复杂推理和 Agent 工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过具体限额会因账户、组织、模型和计划不同而变化。实际部署前，仍然需要看自己的 Anthropic Console、rate limits 文档和错误日志。&lt;/p&gt;
&lt;h2 id=&#34;企业和区域部署也在变重要&#34;&gt;企业和区域部署也在变重要
&lt;/h2&gt;&lt;p&gt;Anthropic 在公告里还提到，金融、医疗、政府等受监管行业越来越需要区域内基础设施，以满足合规和数据驻留要求。因此，部分容量扩张会放在美国以外地区，尤其是亚洲和欧洲的推理能力。&lt;/p&gt;
&lt;p&gt;这对企业客户很重要。大模型应用进入核心业务后，问题不只是“模型好不好用”，还包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据是否留在指定区域。&lt;/li&gt;
&lt;li&gt;是否满足行业合规要求。&lt;/li&gt;
&lt;li&gt;高峰期是否有稳定容量。&lt;/li&gt;
&lt;li&gt;是否能支撑团队级和组织级并发。&lt;/li&gt;
&lt;li&gt;是否有审计、权限和安全控制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从这个角度看，算力扩容不只是性能新闻，也会影响企业采购和部署决策。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Anthropic 这次公告的核心信息很直接：Claude Code 和 Claude API 的使用限制正在放宽，背后原因是新的算力容量正在上线。&lt;/p&gt;
&lt;p&gt;对普通 Claude Code 用户来说，最重要的是五小时限额翻倍，以及 Pro、Max 高峰期限额降低取消。对 API 和企业用户来说，更值得关注的是 Opus rate limits 提升，以及 Anthropic 在 SpaceX、Amazon、Google、Microsoft、NVIDIA、Fluidstack 等合作中的长期算力布局。&lt;/p&gt;
&lt;p&gt;AI 工具越来越像基础设施服务。模型能力是一部分，稳定容量、区域合规、限额策略和成本控制，同样会决定用户体验。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/higher-limits-spacex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Higher usage limits for Claude and a compute deal with SpaceX&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 新一代 Realtime 语音模型：GPT-Realtime-2、实时翻译与流式转写</title>
        <link>https://knightli.com/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/2026/05/09/openai-realtime-voice-models-gpt-realtime-2-translate-whisper/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 5 月 7 日发布了新一代 Realtime API 语音模型，重点不只是“说得更像人”，而是让语音代理可以在实时对话中理解、推理、调用工具、翻译和转写。&lt;/p&gt;
&lt;p&gt;这次更新包括三个模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt;：面向实时语音 Agent 的主模型，支持更强推理、工具调用和长上下文。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt;：实时语音翻译模型，支持 70 多种输入语言到 13 种输出语言。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt;：低延迟流式语音转文字模型，用于字幕、会议记录和实时工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果说早期语音助手更像“问一句、答一句”，这次更新的方向更接近“边听边做事”的语音界面。&lt;/p&gt;
&lt;h2 id=&#34;gpt-realtime-2语音-agent-的主力模型&#34;&gt;GPT-Realtime-2：语音 Agent 的主力模型
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; 面向实时语音交互场景。它不仅要回答问题，还要在用户说话、改口、插话、补充约束时保持上下文，并在必要时调用工具完成任务。&lt;/p&gt;
&lt;p&gt;官方重点提到的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以在回答前输出简短提示，例如“我查一下”，让用户知道系统正在处理。&lt;/li&gt;
&lt;li&gt;支持并行工具调用，适合日程、搜索、订单、客服系统等多工具场景。&lt;/li&gt;
&lt;li&gt;失败恢复更自然，避免语音会话突然中断或沉默。&lt;/li&gt;
&lt;li&gt;上下文窗口从 32K 提升到 128K，适合更长的对话和复杂任务流。&lt;/li&gt;
&lt;li&gt;对专业术语、专有名词、医疗词汇等场景有更好的保持能力。&lt;/li&gt;
&lt;li&gt;语气和表达方式更可控，可以根据场景调整为冷静、同理、确认或更有活力的语气。&lt;/li&gt;
&lt;li&gt;reasoning effort 可调，支持 &lt;code&gt;minimal&lt;/code&gt;、&lt;code&gt;low&lt;/code&gt;、&lt;code&gt;medium&lt;/code&gt;、&lt;code&gt;high&lt;/code&gt;、&lt;code&gt;xhigh&lt;/code&gt;，默认是 &lt;code&gt;low&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着开发者可以把语音 Agent 用在更复杂的业务里，而不是只做简单问答。例如客服可以边听用户描述边查订单；旅行应用可以根据航班变化主动给出下一步建议；房产应用可以根据用户口头条件筛选房源并安排看房。&lt;/p&gt;
&lt;h2 id=&#34;实时翻译面向跨语言语音产品&#34;&gt;实时翻译：面向跨语言语音产品
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt; 的定位是实时语音翻译。用户可以用自己的语言说话，对方听到翻译后的语音，同时还能看到实时转写。&lt;/p&gt;
&lt;p&gt;它适合的场景比较明确：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多语言客服。&lt;/li&gt;
&lt;li&gt;跨境销售和售前沟通。&lt;/li&gt;
&lt;li&gt;在线教育和直播活动。&lt;/li&gt;
&lt;li&gt;国际会议与活动主持。&lt;/li&gt;
&lt;li&gt;视频平台和创作者内容本地化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实时翻译的难点不只是“翻译准”，还包括低延迟、自然停顿、语气保留、口音适应和专业词汇处理。OpenAI 这次强调的是让跨语言对话更接近自然交流，而不是等一整段说完后再翻译。&lt;/p&gt;
&lt;h2 id=&#34;流式转写让语音内容马上进入工作流&#34;&gt;流式转写：让语音内容马上进入工作流
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt; 是新的流式语音转文字模型。它的价值在于把语音在发生时就变成可处理文本，而不是等录音结束再统一转写。&lt;/p&gt;
&lt;p&gt;常见应用包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会议实时字幕。&lt;/li&gt;
&lt;li&gt;课堂和直播字幕。&lt;/li&gt;
&lt;li&gt;实时会议纪要。&lt;/li&gt;
&lt;li&gt;语音 Agent 的连续听写输入。&lt;/li&gt;
&lt;li&gt;客服、医疗、招聘、销售等高频语音场景的后续流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对产品来说，流式转写可以明显缩短“说话到可操作文本”的时间。字幕更快出现，会议记录可以边说边生成，后续摘要、任务提取、CRM 写入等流程也能更早启动。&lt;/p&gt;
&lt;h2 id=&#34;价格与可用性&#34;&gt;价格与可用性
&lt;/h2&gt;&lt;p&gt;这三个模型都已经在 Realtime API 中可用。官方给出的价格是：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;价格&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;音频输入 $32 / 1M tokens，缓存输入 $0.40 / 1M tokens，音频输出 $64 / 1M tokens&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;$0.034 / 分钟&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;$0.017 / 分钟&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;OpenAI 还提到，Realtime API 支持 EU Data Residency，并受到企业隐私承诺覆盖。对于欧洲企业或有数据驻留要求的语音产品，这是一个需要单独评估的点。&lt;/p&gt;
&lt;h2 id=&#34;对开发者意味着什么&#34;&gt;对开发者意味着什么
&lt;/h2&gt;&lt;p&gt;这次发布的重点，是语音能力开始从“输入输出层”变成“产品交互层”。&lt;/p&gt;
&lt;p&gt;过去很多语音功能只是把语音转成文字，再把文字回复转成语音。真正难的是中间那层：理解用户意图、处理打断、补全上下文、调用工具、告诉用户系统正在做什么、在失败时自然恢复。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; 试图把这部分能力直接放进实时语音模型里。对开发者来说，最值得关注的不是单次回答质量，而是它能否支撑持续会话和多步骤任务。&lt;/p&gt;
&lt;p&gt;比较适合优先尝试的产品包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;客服语音 Agent。&lt;/li&gt;
&lt;li&gt;车载和移动端语音助手。&lt;/li&gt;
&lt;li&gt;旅游、订票、房产、金融等需要边问边查的服务。&lt;/li&gt;
&lt;li&gt;多语言会议和跨境沟通工具。&lt;/li&gt;
&lt;li&gt;实时字幕、会议纪要和通话质检系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;也要注意安全和告知&#34;&gt;也要注意安全和告知
&lt;/h2&gt;&lt;p&gt;OpenAI 在发布页中强调，Realtime API 会包含多层安全措施，例如对会话进行主动分类，必要时中止违反政策的内容。开发者也可以通过 Agents SDK 增加自己的安全护栏。&lt;/p&gt;
&lt;p&gt;还有一个容易被忽略的要求：当终端用户正在与 AI 交互时，开发者需要清楚告知，除非场景本身已经足够明显。&lt;/p&gt;
&lt;p&gt;这对客服、销售、教育、医疗等场景都很重要。语音越自然，越需要在产品设计上明确边界：用户知道自己在和 AI 沟通，也知道哪些操作会被记录、转写或触发工具调用。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;OpenAI 这次 Realtime API 更新，把实时语音从“能听能说”推进到“能边听边处理任务”。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; 负责更复杂的语音 Agent，&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt; 负责跨语言实时交流，&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt; 负责低延迟转写。三者合在一起，覆盖了语音产品里最常见的三个基础能力：对话、翻译和转写。&lt;/p&gt;
&lt;p&gt;如果你正在做客服、车载、会议、教育、跨境沟通或移动端语音助手，这次更新值得重点测试。真正需要验证的，不只是模型听起来是否自然，而是它在长对话、打断、工具调用、失败恢复和成本控制上的表现。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/advancing-voice-intelligence-with-new-models-in-the-api/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Advancing voice intelligence with new models in the API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 账号被封怎么办？Claude Code 受限原因与申诉指南</title>
        <link>https://knightli.com/2026/05/09/claude-account-suspension-code-limit-guide/</link>
        <pubDate>Sat, 09 May 2026 10:32:12 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/09/claude-account-suspension-code-limit-guide/</guid>
        <description>&lt;p&gt;Claude 或 Claude Code 账号突然被限制、刚充值后被封、Pro 权限异常、用量突然变少，这类问题近来被很多用户反复讨论。真正需要注意的是：不要把它简单理解成“换个节点”“换个账号”就能解决的技术问题。账号风控通常和地区、支付、设备、登录行为、使用内容、自动化调用、共享方式等多种信号有关。&lt;/p&gt;
&lt;p&gt;更稳妥的处理方式，是先判断自己遇到的是哪类问题：是普通用量限制、支付订阅异常、Claude Code 授权问题，还是 Anthropic 认为账号违反了使用政策或服务条款。&lt;/p&gt;
&lt;h2 id=&#34;先区分三类情况&#34;&gt;先区分三类情况
&lt;/h2&gt;&lt;p&gt;第一类是正常限额。Claude Pro、Max、Team、API 和 Claude Code 的额度机制不同，高峰期、长上下文、代码任务、Agent 任务都会更快消耗额度。看到“limit reached”不一定是封号，可能只是当前周期的使用量耗尽。&lt;/p&gt;
&lt;p&gt;第二类是订阅或授权异常。比如刚充值但权限没刷新、移动端订阅和网页账号不同步、Claude Code 没有正确登录、环境变量里还残留旧的 &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;。这类问题通常应该从账单、登录状态和客户端配置排查。&lt;/p&gt;
&lt;p&gt;第三类才是账号暂停或封禁。常见表现是收到 suspension、disabled、terminated 一类邮件，或者登录时直接提示账号不可用。这时就不要继续反复换设备、换网络、换账号尝试登录，因为这可能让风控信号更复杂。&lt;/p&gt;
&lt;h2 id=&#34;常见触发因素&#34;&gt;常见触发因素
&lt;/h2&gt;&lt;p&gt;Anthropic 官方帮助文档和隐私说明里提到过几类常见风险信号：违反 Usage Policy、从不支持地区创建或使用账号、违反服务条款、重复违规、异常访问或滥用行为。&lt;/p&gt;
&lt;p&gt;实际使用中，容易触发风险的场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;账号注册、登录和支付地区不一致。&lt;/li&gt;
&lt;li&gt;长期使用数据中心代理、共享代理或频繁切换 IP。&lt;/li&gt;
&lt;li&gt;多人共用一个个人账号。&lt;/li&gt;
&lt;li&gt;短时间内在多台设备、多地区频繁登录。&lt;/li&gt;
&lt;li&gt;使用自动化脚本高频访问 Claude.ai。&lt;/li&gt;
&lt;li&gt;把 Claude Code 当作共享服务或转售入口。&lt;/li&gt;
&lt;li&gt;请求明显违反 Anthropic 使用政策的内容。&lt;/li&gt;
&lt;li&gt;支付方式、账单地址、账号地区互相冲突。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里的关键不是“某一个信号必封”，而是多个异常信号叠加后，系统更容易把账号判断为高风险。&lt;/p&gt;
&lt;h2 id=&#34;不建议用规避风控的思路解决&#34;&gt;不建议用“规避风控”的思路解决
&lt;/h2&gt;&lt;p&gt;网上经常会出现所谓“稳定使用方案”，例如指纹浏览器、设备指纹重置、清空本地目录、换环境、固定时区语言、换邮箱继续注册等。这类说法里有些只是普通环境排查，有些则明显是在规避平台风控。&lt;/p&gt;
&lt;p&gt;不建议把“绕过风控”当成解决方案。原因很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它可能违反服务条款。&lt;/li&gt;
&lt;li&gt;它可能让账号风险信号进一步增加。&lt;/li&gt;
&lt;li&gt;它不能解决支付、地区、政策违规等根本问题。&lt;/li&gt;
&lt;li&gt;一旦涉及团队或商业使用，后续申诉会更难解释。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目标是长期稳定使用 Claude，正确方向不是伪装，而是让账号、地区、支付、设备和用途都尽量真实、一致、可解释。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-受限怎么排查&#34;&gt;Claude Code 受限怎么排查
&lt;/h2&gt;&lt;p&gt;Claude Code 用户遇到问题时，可以先按下面顺序检查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude auth status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 API key，也要确认环境变量是否指向了正确账号：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ANTHROPIC_API_KEY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 Windows PowerShell 中可检查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$env:ANTHROPIC_API_KEY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你同时用过网页登录、OAuth、API key、第三方客户端或不同终端，建议先统一认证方式，避免一个工具还在使用旧凭据。&lt;/p&gt;
&lt;p&gt;还要区分两种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 用量到达上限：通常是额度或订阅限制。&lt;/li&gt;
&lt;li&gt;账号或组织被 disabled：通常是账号、组织、支付或政策层面的风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前者可以等额度刷新或调整订阅；后者应保留提示截图和邮件，走官方支持或申诉流程。&lt;/p&gt;
&lt;h2 id=&#34;稳定使用的合规建议&#34;&gt;稳定使用的合规建议
&lt;/h2&gt;&lt;p&gt;想降低账号异常概率，建议从这些基础做起：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用受支持国家或地区的正常账号。&lt;/li&gt;
&lt;li&gt;尽量保持登录地区、支付方式和账单信息一致。&lt;/li&gt;
&lt;li&gt;避免多人共享个人账号。&lt;/li&gt;
&lt;li&gt;不要把个人 Pro/Max 当作团队 API 池。&lt;/li&gt;
&lt;li&gt;不要频繁切换 IP、设备和浏览器环境。&lt;/li&gt;
&lt;li&gt;不要使用来源不明的第三方 Claude 客户端。&lt;/li&gt;
&lt;li&gt;避免高频自动化访问 Claude.ai 网页端。&lt;/li&gt;
&lt;li&gt;商业或团队场景优先使用 Team、Enterprise 或 API。&lt;/li&gt;
&lt;li&gt;熟悉 Anthropic Usage Policy，不把账号用于受限用途。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你确实需要在多设备上使用，保持正常登录即可，不要频繁清环境、换指纹、换代理。过度“折腾环境”本身就可能看起来像异常行为。&lt;/p&gt;
&lt;h2 id=&#34;被封后该怎么做&#34;&gt;被封后该怎么做
&lt;/h2&gt;&lt;p&gt;如果账号已经被暂停，建议按这个顺序处理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查收 Anthropic 或 Claude 发来的邮件，确认封禁原因或提示类型。&lt;/li&gt;
&lt;li&gt;停止继续创建新账号、换网络、换设备反复尝试。&lt;/li&gt;
&lt;li&gt;整理账号邮箱、订阅订单、支付凭证、近期使用场景。&lt;/li&gt;
&lt;li&gt;如果认为是误判，按官方入口提交 appeal 或联系支持。&lt;/li&gt;
&lt;li&gt;说明真实使用场景，避免编造地区、身份或用途。&lt;/li&gt;
&lt;li&gt;如果涉及订阅扣费，单独询问退款或订阅处理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;申诉时越具体越好，例如说明是否使用 Claude Code、是否切换过设备、是否使用过 VPN、是否有团队共用、是否接入过第三方工具。平台需要判断风险来源，模糊说“我什么都没做”通常帮助有限。&lt;/p&gt;
&lt;h2 id=&#34;哪些说法要谨慎看待&#34;&gt;哪些说法要谨慎看待
&lt;/h2&gt;&lt;p&gt;有些文章或视频会声称“只要固定指纹就不会封”“某浏览器能彻底防封”“清理某目录就能重置设备身份”“IP 对齐时区就能解决所有问题”。这些说法不宜照单全收。&lt;/p&gt;
&lt;p&gt;原因是平台风控通常是多维模型，不只看浏览器指纹或 IP。账号历史、支付信息、地区政策、使用内容、访问频率、自动化特征、客户端版本、API 调用方式，都可能参与判断。单点伪装不等于长期稳定，反而可能制造更多不一致信号。&lt;/p&gt;
&lt;p&gt;更重要的是，很多所谓“防封方案”本质上是卖工具或卖服务。用户真正需要的是判断风险来源、合规使用和保留申诉证据，而不是把账号安全寄托在第三方环境包装上。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Claude 账号被封或 Claude Code 受限，不一定是单一原因造成的。它可能是额度问题、订阅问题、授权问题，也可能是地区、支付、设备、共享、自动化或内容政策触发的综合风控。&lt;/p&gt;
&lt;p&gt;长期稳定使用 Claude 的关键不是绕过风控，而是让使用方式合规、账号信息一致、访问环境稳定、团队使用走正式方案。遇到封禁时，先停止折腾环境，保存证据，走官方申诉和支持流程，才是最稳妥的处理方式。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/supported-countries&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Supported countries and regions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/en/articles/8241253-i-ve-received-a-warning-that-my-usage-violates-the-acceptable-use-policy-what-should-i-do-differently&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Help Center：Safeguards warnings and appeals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://privacy.claude.com/en/articles/11186740-does-claude-use-my-location&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Privacy Center：Does Claude use my location?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.anthropic.com/en/articles/12005017-using-agents-according-to-our-usage-policy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Help Center：Using agents according to our Usage Policy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>从 PPT 到原型设计：归藏 PPT Skill 与 Huashu Design 使用场景解析</title>
        <link>https://knightli.com/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/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/</guid>
        <description>&lt;p&gt;最近两个中文开发者做的设计类 Agent Skill 很值得放在一起看：一个是歸藏的 &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/guizang-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;guizang-ppt-skill&lt;/a&gt;，另一个是花叔的 &lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/huashu-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;huashu-design&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;它们都不是传统意义上的“设计工具”，而是把一套设计流程、审美偏好、检查清单和工程模板写成 Agent 可以执行的 Skill。你不是打开一个 UI 慢慢拖元素，而是把需求交给 Claude Code、Codex、Cursor 这类 Agent，让它按固定流程生成 HTML、PPT、动画或原型。&lt;/p&gt;
&lt;p&gt;这类项目的价值，不在于让 AI 随机发挥，而在于把“怎么做才不难看”这件事流程化。&lt;/p&gt;
&lt;h2 id=&#34;guizang-ppt-skill专注杂志风网页-ppt&#34;&gt;guizang-ppt-skill：专注杂志风网页 PPT
&lt;/h2&gt;&lt;p&gt;歸藏的 &lt;code&gt;guizang-ppt-skill&lt;/code&gt; 定位很清楚：生成单文件 HTML 横向翻页 PPT，视觉基调是“电子杂志 × 电子墨水”。它更像一套为演讲准备的版式系统，而不是通用设计框架。&lt;/p&gt;
&lt;p&gt;仓库 README 里列出的核心能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单文件 HTML 输出，不需要构建和服务器，浏览器直接打开。&lt;/li&gt;
&lt;li&gt;横向左右翻页，支持键盘、滚轮、触屏滑动、底部圆点和 ESC 索引。&lt;/li&gt;
&lt;li&gt;5 套主题色预设，包括墨水经典、靛蓝瓷、森林墨、牛皮纸和沙丘。&lt;/li&gt;
&lt;li&gt;10 种页面布局，包括开场封面、章节幕封、数据大字报、左文右图、图片网格、Pipeline、悬念问题、大引用、Before/After 对比和图文混排。&lt;/li&gt;
&lt;li&gt;内置模板、组件说明、布局骨架、主题配置和质量检查清单。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它适合做线下分享、行业内部讲话、私享会、AI 产品发布、demo day，以及带有强烈个人风格的演讲稿。不太适合大段表格数据、培训课件和多人协作编辑。&lt;/p&gt;
&lt;p&gt;这个项目有一个很好的取舍：它没有试图覆盖所有设计场景，而是把“杂志风 PPT”这个场景做窄。主题色只能从预设里选，布局也有明确骨架，这反而降低了 Agent 跑偏的概率。&lt;/p&gt;
&lt;p&gt;如果你经常要把观点、行业观察、产品发布内容做成演讲 deck，它的实用性会很高。&lt;/p&gt;
&lt;p&gt;安装命令也很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add https://github.com/op7418/guizang-ppt-skill --skill guizang-ppt-skill
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;huashu-design更完整的-html-原生设计工作流&#34;&gt;huashu-design：更完整的 HTML 原生设计工作流
&lt;/h2&gt;&lt;p&gt;花叔的 &lt;code&gt;huashu-design&lt;/code&gt; 覆盖面更大。它的目标不是只做 PPT，而是把 HTML 当成原生设计画布，用 Agent 生成可交付的设计资产。&lt;/p&gt;
&lt;p&gt;仓库 README 里列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可点击 App 或 Web 原型。&lt;/li&gt;
&lt;li&gt;HTML 幻灯片，以及可编辑 PPTX 导出。&lt;/li&gt;
&lt;li&gt;产品发布动画、MP4、GIF 和配乐版本。&lt;/li&gt;
&lt;li&gt;多方向设计方案并排对比。&lt;/li&gt;
&lt;li&gt;信息图、数据可视化、PDF、PNG、SVG 导出。&lt;/li&gt;
&lt;li&gt;5 维专家评审，包括哲学一致性、视觉层级、执行工艺、功能性和创新性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的核心思路是：让 Agent 先理解品牌和素材，再产出高保真设计。项目里强调了 Core Asset Protocol，也就是遇到具体品牌时，要先确认 logo、产品图、UI 截图、配色、字体和品牌指南，而不是凭记忆猜。&lt;/p&gt;
&lt;p&gt;这点很重要。很多 AI 生成设计看起来“像设计”，但不像某个真实产品或品牌。&lt;code&gt;huashu-design&lt;/code&gt; 试图把这个问题前置解决：先找真实资产，再做设计。&lt;/p&gt;
&lt;p&gt;安装命令是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add alchaincyf/huashu-design
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它更适合那些希望在终端里完成较完整设计交付的人：产品原型、发布动画、演示文稿、信息图、设计评审都可以放在一个 Agent 工作流里处理。&lt;/p&gt;
&lt;h2 id=&#34;两者最大的区别&#34;&gt;两者最大的区别
&lt;/h2&gt;&lt;p&gt;简单说，&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 是一个更窄、更稳的演讲 deck 生成器；&lt;code&gt;huashu-design&lt;/code&gt; 是一个更宽、更完整的 HTML 原生设计系统。&lt;/p&gt;
&lt;p&gt;如果只看 PPT：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 更强调杂志感、节奏、版式和单文件浏览器演示。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;huashu-design&lt;/code&gt; 更强调通用设计能力、可编辑 PPTX、品牌素材、导出链路和评审流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果看整体设计能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 的边界更清晰，适合快速做一份有风格的横向演讲。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;huashu-design&lt;/code&gt; 的能力更综合，适合把一个产品或品牌设计任务拆成原型、动画、幻灯片和信息图。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两个项目也代表了两种不同的 Skill 写法。前者像一套高度收敛的模板和审美约束，后者像一个小型设计团队的工作流说明书。&lt;/p&gt;
&lt;h2 id=&#34;为什么这类-skill-重要&#34;&gt;为什么这类 Skill 重要
&lt;/h2&gt;&lt;p&gt;Agent 的一个常见问题是“会做，但不稳定”。同样一句需求，有时输出很好，有时就会滑向紫色渐变、圆角卡片、假图标和一堆看似高级的空话。&lt;/p&gt;
&lt;p&gt;Skill 的意义就是把稳定性补上。它把下面这些东西固化下来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可复用的模板。&lt;/li&gt;
&lt;li&gt;可执行的检查清单。&lt;/li&gt;
&lt;li&gt;明确的审美偏好。&lt;/li&gt;
&lt;li&gt;常见错误的规避规则。&lt;/li&gt;
&lt;li&gt;输出格式和验证流程。&lt;/li&gt;
&lt;li&gt;什么时候该问问题，什么时候该直接开始做。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比单纯写一句“请做得高级一点”可靠得多。&lt;/p&gt;
&lt;p&gt;尤其是设计任务，审美并不是一句 prompt 就能稳定复现的。真正有用的是流程：先确认素材，再定方向，再搭结构，再做视觉，再检查输出。把这个流程写成 Skill，Agent 才更像一个可协作的执行者，而不是一次性图片生成器。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;如果你只是想把一个主题做成线下演讲或分享 deck，可以优先试 &lt;code&gt;guizang-ppt-skill&lt;/code&gt;。它的输出边界窄，单文件 HTML 也方便分发和预览。&lt;/p&gt;
&lt;p&gt;如果你想让 Agent 承担更完整的设计任务，比如 App 原型、发布动画、品牌化幻灯片、可导出 PPTX 或信息图，可以优先看 &lt;code&gt;huashu-design&lt;/code&gt;。它的链路更长，适合需要多轮迭代和交付物导出的任务。&lt;/p&gt;
&lt;p&gt;如果你已经在写自己的 Codex 或 Claude Code Skill，这两个项目也都值得参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想学“如何把一个窄场景做稳”，看 &lt;code&gt;guizang-ppt-skill&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;想学“如何把复杂工作流拆成可执行协议”，看 &lt;code&gt;huashu-design&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;歸藏和花叔这两个项目的共同点，是都把“设计能力”从一次 prompt 变成了可重复执行的流程。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 的重点是杂志风 HTML PPT，适合高风格化演讲；&lt;code&gt;huashu-design&lt;/code&gt; 的重点是 HTML 原生设计系统，覆盖原型、动画、幻灯片、信息图和评审。它们解决的不是“AI 能不能生成设计”，而是“AI 能不能按一套稳定方法生成可交付的设计”。&lt;/p&gt;
&lt;p&gt;这可能会成为 Agent 工具生态里很重要的一类开源项目：不只是代码模板，而是把人的经验、审美和工作方法打包成 Skill。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/guizang-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/guizang-ppt-skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/huashu-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;alchaincyf/huashu-design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 4 生成文本怎么检测？AI 文本检测工具与最新方法</title>
        <link>https://knightli.com/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/2026/05/08/detect-claude-4-ai-generated-text-tools/</guid>
        <description>&lt;p&gt;想判断一段文本是不是 Claude 4 生成的，最重要的前提是：目前没有任何工具能给出百分之百确定的结论。AI 文本检测本质上是概率判断，它可以提示“这段文本更像 AI 写的”，但不能直接证明作者一定使用了 Claude 4。&lt;/p&gt;
&lt;p&gt;这点在 2026 年尤其重要。Claude 4、GPT-5、Gemini 2.5、DeepSeek 等模型的写作风格越来越接近人类；同时，很多文本也不是“纯 AI”或“纯人工”，而是经历了 AI 起草、人工修改、语法工具润色、翻译、改写和拼接。检测工具能提供线索，但真正可靠的判断应结合写作过程、版本记录、引用来源和人工审阅。&lt;/p&gt;
&lt;h2 id=&#34;先说结论不要只看一个分数&#34;&gt;先说结论：不要只看一个分数
&lt;/h2&gt;&lt;p&gt;如果只是临时自查，可以用两到三个检测器交叉验证，例如 GPTZero、Copyleaks、Originality.ai、Sapling、Winston AI 等。学术场景则常见 Turnitin。它们的模型、训练数据和阈值不同，同一段文本可能给出不同结果。&lt;/p&gt;
&lt;p&gt;更稳妥的做法是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用两个以上工具检测同一段文本。&lt;/li&gt;
&lt;li&gt;看逐句标注，而不是只看总分。&lt;/li&gt;
&lt;li&gt;检查是否存在引用错误、事实幻觉、过度平滑的逻辑连接。&lt;/li&gt;
&lt;li&gt;查看写作过程证据，例如草稿、修改记录、提交历史。&lt;/li&gt;
&lt;li&gt;对低比例 AI 分数保持谨慎，不把检测结果当成单独证据。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;尤其在学校、招聘、出版和合规场景里，AI 检测分数只应该作为风险信号，而不是最终裁决。&lt;/p&gt;
&lt;h2 id=&#34;常用工具怎么选&#34;&gt;常用工具怎么选
&lt;/h2&gt;&lt;h3 id=&#34;gptzero&#34;&gt;GPTZero
&lt;/h3&gt;&lt;p&gt;GPTZero 是教育和出版场景里常见的 AI 文本检测工具。它早期以 perplexity 和 burstiness 这类统计特征出名，后续已经发展为多阶段检测系统，并公开强调会针对新一代模型更新训练数据。&lt;/p&gt;
&lt;p&gt;它适合做英文长文、论文草稿、文章初稿的初筛。优点是界面友好、逐句解释较清楚，缺点是短文本、重度人工修改文本、多语言混合文本仍然容易不稳定。&lt;/p&gt;
&lt;h3 id=&#34;copyleaks-ai-detector&#34;&gt;Copyleaks AI Detector
&lt;/h3&gt;&lt;p&gt;Copyleaks 的优势在于多语言、API、浏览器插件和 LMS 集成。官方页面声称支持 Claude、Gemini、GPT-5、DeepSeek、Llama 等模型，并强调可检测人类和 AI 混写内容。&lt;/p&gt;
&lt;p&gt;它比较适合内容团队、教育机构和企业批量接入。需要注意的是，厂商宣传的准确率通常来自特定测试集，实际使用时仍要关注文本长度、语言、是否经过改写，以及误判成本。&lt;/p&gt;
&lt;h3 id=&#34;turnitin-ai-writing-report&#34;&gt;Turnitin AI Writing Report
&lt;/h3&gt;&lt;p&gt;Turnitin 更偏学术诚信场景。它能在报告中给出 AI writing indicator 和高亮片段，并支持检测 AI 生成文本和被 AI 改写工具处理过的文本。&lt;/p&gt;
&lt;p&gt;但 Turnitin 官方文档也明确提醒：模型可能误判人工文本、AI 文本或 AI 改写文本，不应作为对学生采取不利行动的唯一依据。它还会对较低比例的 AI 指示做特殊处理，以降低误读和误判风险。&lt;/p&gt;
&lt;h3 id=&#34;originalityaisaplingwinston-ai&#34;&gt;Originality.ai、Sapling、Winston AI
&lt;/h3&gt;&lt;p&gt;这些工具更多出现在内容营销、SEO、出版和编辑流程里。它们通常提供批量检测、团队协作、API 或逐句分析。适合用来做内容质量控制，但同样不适合把单次检测结果当成“证明”。&lt;/p&gt;
&lt;h3 id=&#34;zerogptmonicaphrasly-等免费工具&#34;&gt;ZeroGPT、Monica、Phrasly 等免费工具
&lt;/h3&gt;&lt;p&gt;免费工具适合做快速自查，但不建议用于高风险决策。它们的阈值、训练数据、误判率和更新节奏不一定透明，很多“99%+ 准确率”的宣传也需要谨慎看待。&lt;/p&gt;
&lt;h2 id=&#34;检测算法主要看什么&#34;&gt;检测算法主要看什么
&lt;/h2&gt;&lt;p&gt;传统 AI 文本检测经常提到两个指标：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Perplexity&lt;/code&gt;：困惑度。大致衡量文本对语言模型来说是否“容易预测”。过于顺滑、下一词概率很高的文本，可能更像模型生成。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Burstiness&lt;/code&gt;：突发性。衡量句长、结构和表达节奏的变化。人类写作往往会有更多不均匀变化，而模型输出常常更平滑。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但最新检测器已经不只看这两个指标。更常见的是组合多种特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;词频和短语模式。&lt;/li&gt;
&lt;li&gt;句法结构和词性分布。&lt;/li&gt;
&lt;li&gt;标点、连接词和段落组织习惯。&lt;/li&gt;
&lt;li&gt;重复句式和模板化表达。&lt;/li&gt;
&lt;li&gt;语义连贯性与事实引用异常。&lt;/li&gt;
&lt;li&gt;模型特定的语言指纹。&lt;/li&gt;
&lt;li&gt;人类与 AI 混写片段的边界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，检测 Claude 4 文本时，工具通常不是在“识别 Claude 4 的水印”，而是在判断这段文字是否符合某类 LLM 生成文本的统计特征。&lt;/p&gt;
&lt;h2 id=&#34;为什么-claude-4-更难检测&#34;&gt;为什么 Claude 4 更难检测
&lt;/h2&gt;&lt;p&gt;Claude 系列模型的文本通常更自然，长段落衔接也更稳。经过人工提示词约束后，它可以模仿个人风格、降低模板感、保留少量口语化表达。再经过人工修改或翻译后，检测难度会进一步上升。&lt;/p&gt;
&lt;p&gt;这会带来两个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;纯 Claude 4 输出可能被识别为 AI，但置信度受题材、语言和长度影响。&lt;/li&gt;
&lt;li&gt;Claude 4 起草、人工改写后的文本，可能逃过检测，也可能误伤为高 AI 分数。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，检测结果里最有价值的不是“总分 87%”，而是哪些句子被标注、这些句子为什么可疑、是否能和写作过程证据互相印证。&lt;/p&gt;
&lt;h2 id=&#34;推荐的检测流程&#34;&gt;推荐的检测流程
&lt;/h2&gt;&lt;p&gt;如果你要判断一篇文章是否可能由 Claude 4 生成，可以按这个流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;保留原始文本，不要先人工改写。&lt;/li&gt;
&lt;li&gt;分别用 GPTZero、Copyleaks 或 Turnitin 这类工具检测。&lt;/li&gt;
&lt;li&gt;记录总分、逐句高亮和工具版本。&lt;/li&gt;
&lt;li&gt;对高亮句子做人工复核，看是否存在模板化过渡、泛泛而谈、无来源事实。&lt;/li&gt;
&lt;li&gt;检查引用、数据、链接和专有名词是否真实。&lt;/li&gt;
&lt;li&gt;要求提供写作过程材料，例如大纲、草稿、修改记录。&lt;/li&gt;
&lt;li&gt;只把检测结果作为辅助证据。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是自己的文章想降低误判风险，正确做法不是“绕过检测器”，而是保留写作记录、补充真实经验、核对引用来源、删除空泛段落，让文章真正体现人的判断和事实来源。&lt;/p&gt;
&lt;h2 id=&#34;哪些情况最容易误判&#34;&gt;哪些情况最容易误判
&lt;/h2&gt;&lt;p&gt;以下文本很容易被检测器误判：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;非母语作者写的正式英文。&lt;/li&gt;
&lt;li&gt;高度模板化的学术摘要、商业邮件、政策说明。&lt;/li&gt;
&lt;li&gt;经过 Grammarly、DeepL Write、Notion AI 等工具润色的文本。&lt;/li&gt;
&lt;li&gt;短文本、标题、摘要、产品说明。&lt;/li&gt;
&lt;li&gt;翻译腔明显的中文或英文。&lt;/li&gt;
&lt;li&gt;多人协作后风格被统一过的稿件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，越是涉及处分、录用、成绩、版权和合规，越不能只凭一个 AI 分数做决定。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;检测 Claude 4 生成文本，最可靠的方式不是迷信某个“最新算法工具”，而是把检测器当作概率信号：用多个工具交叉验证，用逐句标注定位风险，再结合引用核查和写作过程证据。&lt;/p&gt;
&lt;p&gt;GPTZero、Copyleaks、Turnitin、Originality.ai、Sapling、Winston AI 都可以作为工具箱的一部分。它们能提高发现 AI 生成文本的概率，但不能替代人工判断。真正稳妥的结论，应该来自检测结果、文本事实质量、写作过程记录和具体场景规则的综合判断。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://guides.turnitin.com/hc/en-us/articles/22774058814093-Using-the-AI-Writing-Report&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Turnitin：Using the AI Writing Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.turnitin.com/blog/understanding-the-false-positive-rate-for-sentences-of-our-ai-writing-detection-capability&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Turnitin：Understanding false positive rates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://copyleaks.com/ai-content-detector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Copyleaks AI Detector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://gptzero.me/news/gptzero-ai-detection-benchmarking-the-industry-standard-in-accuracy-transparency-and-fairness/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPTZero AI Detection Benchmarking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2602.13042&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;arXiv：GPTZero: Robust Detection of LLM-Generated Texts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex vs Claude Code：两套 Subagent 机制怎么选</title>
        <link>https://knightli.com/2026/05/08/codex-vs-claude-code-subagent-design/</link>
        <pubDate>Fri, 08 May 2026 14:01:38 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/08/codex-vs-claude-code-subagent-design/</guid>
        <description>&lt;p&gt;现在的 AI 编程工具越来越重视 Subagent。原因不是功能跟风，而是单个 Agent 处理真实工程任务时，很快会撞到边界。&lt;/p&gt;
&lt;p&gt;一个 Agent 如果同时负责读代码、查日志、改实现、跑测试、分析报错、总结结果，主上下文会很快变脏。搜索结果、命令输出、测试日志和中间推理混在一起，后续判断就会被噪声干扰。任务也很难并行：探索、实现、验证和审查都塞在一条主线上，系统越做越重。&lt;/p&gt;
&lt;p&gt;Subagent 的本质，是给 Agent 减压。主会话不再把所有事情从头做到尾，而是更像协调者：判断目标、安排任务、接收结果，再把结果合成最终答案。子 Agent 处理某一段局部工作，例如探索、实现、验证或审查，并只把压缩后的结论带回来。&lt;/p&gt;
&lt;p&gt;所以 Subagent 不是“再开一个同款自己”，而是把原来糊成一团的工程工作拆成几个边界更清楚的角色。&lt;/p&gt;
&lt;h2 id=&#34;成熟-subagent-系统的底层共识&#34;&gt;成熟 Subagent 系统的底层共识
&lt;/h2&gt;&lt;p&gt;无论具体产品怎么设计，成熟的 Subagent 系统通常都绕不开四件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文隔离。&lt;/li&gt;
&lt;li&gt;角色专用化。&lt;/li&gt;
&lt;li&gt;项目和用户级配置。&lt;/li&gt;
&lt;li&gt;工具与权限边界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上下文隔离是前提。真实仓库里的中间结果很多：搜索结果可能几十条，测试日志可能几百行，命令输出里还混着大量无关信息。这些内容如果直接塞进主会话，主线很快会变乱。Subagent 的价值之一，就是让局部过程先在局部被消化，主会话只看到真正有决策价值的结论。&lt;/p&gt;
&lt;p&gt;角色专用化也很关键。多 Agent 不是多开几个一样的模型一起干活。探索型任务要擅长搜索、阅读、总结；实现型任务要专注改代码和处理局部细节；验证型任务要跑检查、识别风险，并把结果清楚汇报。它们的任务边界、工具权限和输出形式都应该不同。&lt;/p&gt;
&lt;p&gt;工具和权限边界决定了系统能不能安全落地。子 Agent 不应该默认拥有主会话的全部能力。探索型角色未必需要写文件，验证型角色未必需要改实现，后台任务也不该随意越过工作区边界。权限越清楚，协作越可控。&lt;/p&gt;
&lt;p&gt;在这些共识之上，Codex 和 Claude Code 走出了两种不同路线。&lt;/p&gt;
&lt;h2 id=&#34;codex显式派工主会话始终在场&#34;&gt;Codex：显式派工，主会话始终在场
&lt;/h2&gt;&lt;p&gt;Codex 的 Subagent 设计气质更克制。&lt;/p&gt;
&lt;p&gt;它更像是在说：我给你一套受控、轻量、围绕当前主会话展开的分工机制。什么时候派活、派给谁、什么时候收结果，都由主会话明确决定。控制流始终握在当前任务里。&lt;/p&gt;
&lt;p&gt;这种设计的特点是“显式”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要子任务时，主会话明确发起委托。&lt;/li&gt;
&lt;li&gt;子任务角色数量保持克制。&lt;/li&gt;
&lt;li&gt;主会话知道哪个 Agent 在做什么。&lt;/li&gt;
&lt;li&gt;结果回到主线后再统一判断。&lt;/li&gt;
&lt;li&gt;协作边界比较透明。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;公开可见的角色思路也偏简洁：通用角色、探索角色、工作角色这类基础分工已经能覆盖很多工程场景。自定义 Agent 更像配置层上的补充，而不是一套非常重的运行时对象系统。&lt;/p&gt;
&lt;p&gt;Codex 这套方式的好处是可预期。它适合需要手动编排、强调确定性、希望主会话始终掌控节奏的团队。比如你正在做一个代码修改任务，可以先派一个探索角色查清调用链，再派一个工作角色做改动，最后由主会话整合并决定是否继续测试。&lt;/p&gt;
&lt;p&gt;它的缺点也很清楚：如果任务越来越复杂，所有编排压力仍然落在主会话身上。主会话要判断何时拆分、如何拆分、派给谁、怎么合并结果。对轻量协作来说这很舒服，对长期复杂工程流来说，可能不如平台化系统省心。&lt;/p&gt;
&lt;h2 id=&#34;claude-code把-agent-做成正式工位&#34;&gt;Claude Code：把 Agent 做成正式工位
&lt;/h2&gt;&lt;p&gt;Claude Code 的取向更平台化。&lt;/p&gt;
&lt;p&gt;它不是只提供几个临时帮手，而是把 Agent 做成可描述、可选择、可配置、可记忆、可隔离、可后台运行的正式对象。子 Agent 不只是会话里的一个工具，而更像工程系统里的一个工位。&lt;/p&gt;
&lt;p&gt;这套思路会把 Agent 列表、适用场景、描述信息、工具边界等内容放进选择逻辑里，让模型判断本轮应该调用哪个角色。这类“模型驱动的委托”会带来更强的自动化：用户不一定每次都显式指定角色，系统可以根据任务类型自己选择。&lt;/p&gt;
&lt;p&gt;从机制上看，Claude Code 更强调几类能力。&lt;/p&gt;
&lt;p&gt;第一是角色体系。探索、规划、通用处理、验证等角色不是随手加几个名字，而是可以带着用途说明、工具限制、默认模型和运行条件存在。探索型角色可以被限制为只读，规划型角色负责设计方案，验证型角色可以专注检查和汇报。&lt;/p&gt;
&lt;p&gt;第二是继承和覆盖。子 Agent 并不是完全自由的，它默认继承主会话的大边界；但在规则允许范围内，也可以通过局部配置调整权限、模式或行为。正确理解不是“全部继承”或“全部覆盖”，而是主会话定义大边界，Agent 在边界内做局部装配。&lt;/p&gt;
&lt;p&gt;第三是记忆。记忆不只是“记住一点内容”，而是可以有作用域。用户级记忆更像长期偏好，项目级记忆更像仓库背景知识，本地级记忆更像只留在当前环境里的私人状态。这样某些 Agent 不必每次从零理解项目。&lt;/p&gt;
&lt;p&gt;第四是后台和工作区隔离。某些验证任务可以在后台持续跑，主线不用停在原地等待。需要强隔离时，Agent 可以进入独立 worktree，像在主工位旁边分出一张独立桌子：仍然在同一个项目里，但操作空间被明确隔开。&lt;/p&gt;
&lt;p&gt;第五是插件生态。只有当 Agent 被视为正式对象时，才会认真考虑它如何被分发、安装、覆盖、排序和接入生态。插件 Agent 可以进入系统，但高风险字段仍应被收口，例如权限模式、hooks、MCP server 等不应该由插件随意声明。&lt;/p&gt;
&lt;p&gt;这让 Claude Code 更像一套 Agent 运行时，而不是单次会话里的协作工具。&lt;/p&gt;
&lt;h2 id=&#34;两种路线的差异&#34;&gt;两种路线的差异
&lt;/h2&gt;&lt;p&gt;可以把两者理解成两种产品哲学。&lt;/p&gt;
&lt;p&gt;Codex 更像受控分工工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主会话显式派工。&lt;/li&gt;
&lt;li&gt;角色集保持轻量。&lt;/li&gt;
&lt;li&gt;控制流清晰。&lt;/li&gt;
&lt;li&gt;子任务围绕当前会话展开。&lt;/li&gt;
&lt;li&gt;适合强调确定性和人工编排的工作方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code 更像工程工位系统：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 被正式建模。&lt;/li&gt;
&lt;li&gt;角色更体系化。&lt;/li&gt;
&lt;li&gt;支持记忆、后台、隔离和插件生态。&lt;/li&gt;
&lt;li&gt;模型可以参与选择角色。&lt;/li&gt;
&lt;li&gt;适合长期项目、复杂工作流和平台化扩展。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是谁功能更多谁就更好。真正的差别在于：你希望 Subagent 是“我显式叫来的助手”，还是“系统里长期存在的工位”。&lt;/p&gt;
&lt;h2 id=&#34;怎么选择&#34;&gt;怎么选择
&lt;/h2&gt;&lt;p&gt;如果你更看重显式控制、轻量分工、当前会话内的安全并行，Codex 的思路更顺手。它让你清楚知道任务什么时候被拆出去，谁在处理，结果什么时候回来。对代码审查、小型改动、明确的实现任务和需要人工节奏控制的场景，这种方式很稳。&lt;/p&gt;
&lt;p&gt;如果你更看重体系化角色、长期记忆、后台执行、worktree 隔离、插件扩展和更完整的 Agent 运行时，Claude Code 的路线更合适。它适合把 Agent 当成长期参与项目的成员，而不是临时搬一把的助手。&lt;/p&gt;
&lt;p&gt;可以用两个问题判断：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你能不能接受模型自己选择该派谁干活？&lt;/li&gt;
&lt;li&gt;你是否需要一套更完整的 Agent 运行时？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果第一个问题让你不舒服，说明你更适合显式派工。&lt;br&gt;
如果第二个问题答案是肯定的，说明你可能需要平台化的 Agent 工位系统。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;无论选哪种，都不要把 Subagent 当作“多开几个模型就更强”。&lt;/p&gt;
&lt;p&gt;更有效的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;给每个角色明确任务边界。&lt;/li&gt;
&lt;li&gt;控制每个角色能用的工具。&lt;/li&gt;
&lt;li&gt;让子 Agent 输出结论，而不是搬回全部原始日志。&lt;/li&gt;
&lt;li&gt;主会话保留最终决策权。&lt;/li&gt;
&lt;li&gt;对后台任务和工作区隔离保持可见性。&lt;/li&gt;
&lt;li&gt;对插件 Agent 设置明确安全边界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工程任务里，Subagent 的价值不在数量，而在分工质量。角色越清楚，上下文越干净，主线判断越稳定。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Codex 和 Claude Code 都在解决同一个问题：单个 Agent 很难独自承载真实工程任务。它们都承认上下文隔离、角色专用、权限边界和局部汇总的重要性。&lt;/p&gt;
&lt;p&gt;差异在于实现取向。Codex 更克制，强调显式派工和主会话控制；Claude Code 更体系化，把 Agent 做成可配置、可记忆、可隔离、可后台运行、可进入插件生态的正式工位。&lt;/p&gt;
&lt;p&gt;选择哪一个，不是看哪个品牌赢，而是看你的工作方式需要什么：是受控协作工具，还是完整 Agent 运行时。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>笔记本 RTX 4060 8GB 适合跑哪些本地 AI 模型</title>
        <link>https://knightli.com/2026/05/08/laptop-rtx-4060-8gb-local-ai-models/</link>
        <pubDate>Fri, 08 May 2026 13:38:47 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/08/laptop-rtx-4060-8gb-local-ai-models/</guid>
        <description>&lt;p&gt;笔记本 RTX 4060 8GB 可以玩本地 AI，但它的边界很清楚：核心不是“能不能启动”，而是“显存是否溢出”。移动版 RTX 4060 还会受到整机功耗、散热、显存带宽和厂商调校影响，同样是 8GB 显存，不同笔记本的持续性能可能差不少。&lt;/p&gt;
&lt;p&gt;在 2026 年的软件环境下，8GB 显存仍然是本地 AI 的入门基准线。只要选择合适的量化模型和工具链，它可以流畅运行 3B-8B 级 LLM、SDXL、SD 1.5、部分 FLUX 量化工作流、Whisper 转写和图像特征提取。反过来，如果强行跑 14B 以上 LLM、未量化大模型或高显存图像工作流，就很容易掉进系统内存，速度会明显崩掉。&lt;/p&gt;
&lt;p&gt;一句话建议：笔记本 4060 8GB 不要追求“大而全”，优先选择小模型、量化版和低显存工作流。&lt;/p&gt;
&lt;h2 id=&#34;先看显存预算&#34;&gt;先看显存预算
&lt;/h2&gt;&lt;p&gt;Windows 11 桌面、浏览器、驱动、后台程序会先吃掉一部分显存。实际留给本地 AI 的显存通常不是完整 8GB，而更接近 6.5GB-7.2GB。&lt;/p&gt;
&lt;p&gt;因此模型选择要留余量：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM：优先 3B-8B，使用 4-bit 量化。&lt;/li&gt;
&lt;li&gt;图像生成：优先 SDXL、SD 1.5、FLUX GGUF/NF4 低显存工作流。&lt;/li&gt;
&lt;li&gt;多模态：优先 4B 左右的轻量模型。&lt;/li&gt;
&lt;li&gt;语音转写：Whisper large-v3 可以跑，但注意批量任务发热。&lt;/li&gt;
&lt;li&gt;图像索引：CLIP、ViT 这类特征提取非常适合 4060。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果显存溢出到系统内存，推理速度可能从“可用”变成“等得烦”。所以宁可选小一点的模型，也不要让显存长期贴边。&lt;/p&gt;
&lt;h2 id=&#34;llm优先-3b-8b-量化模型&#34;&gt;LLM：优先 3B-8B 量化模型
&lt;/h2&gt;&lt;p&gt;本地聊天和文本推理建议使用 Ollama、LM Studio、koboldcpp、llama.cpp 或其他支持 GGUF 的前端。8GB 显存下，最舒服的区间是 4-bit 量化的 3B-8B 模型。&lt;/p&gt;
&lt;h3 id=&#34;全能轻量gemma-4-e4b&#34;&gt;全能轻量：Gemma 4 E4B
&lt;/h3&gt;&lt;p&gt;Gemma 4 E4B 是 Google 2026 年推出的 Gemma 4 系列小模型之一，定位适合本地和端侧使用。它的优势是模型规模较小，适合 8GB 显存设备承担日常问答、总结、轻量多模态和低成本推理。&lt;/p&gt;
&lt;p&gt;在笔记本 RTX 4060 上，建议优先找官方或社区提供的量化版本。不要一开始就追求最高精度权重，先用 4-bit 或适合本地推理的格式确认速度、显存占用和回答质量。&lt;/p&gt;
&lt;p&gt;适合任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常问答。&lt;/li&gt;
&lt;li&gt;摘要和改写。&lt;/li&gt;
&lt;li&gt;轻量资料整理。&lt;/li&gt;
&lt;li&gt;简单代码解释。&lt;/li&gt;
&lt;li&gt;图像理解类轻任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;推理与长文本deepseek-r1-distill-7b8bqwen-3-8b&#34;&gt;推理与长文本：DeepSeek R1 Distill 7B/8B、Qwen 3 8B
&lt;/h3&gt;&lt;p&gt;如果你更看重逻辑、数学、复杂分析和长文本处理，可以考虑 DeepSeek R1 distill 系列的 7B/8B 模型，或 Qwen 3 8B 的量化版本。&lt;/p&gt;
&lt;p&gt;8B 级模型使用 &lt;code&gt;Q4_K_M&lt;/code&gt; 这类 4-bit 量化时，通常能压到 8GB 显存可承受范围内。实际速度会受上下文长度、后端、驱动、笔记本功耗模式影响。经验上，短上下文聊天比较流畅；上下文拉长后，速度和显存压力都会明显上升。&lt;/p&gt;
&lt;p&gt;适合任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;逻辑推理。&lt;/li&gt;
&lt;li&gt;数学题。&lt;/li&gt;
&lt;li&gt;中文长文本分析。&lt;/li&gt;
&lt;li&gt;代码审查草稿。&lt;/li&gt;
&lt;li&gt;结构化信息抽取。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不建议一开始就跑 14B、32B 或更大的模型。它们即使能通过 CPU offload 启动，体验也往往不如更小的全 GPU 模型。&lt;/p&gt;
&lt;h3 id=&#34;代码辅助qwen-25-coder-3b7b&#34;&gt;代码辅助：Qwen 2.5 Coder 3B/7B
&lt;/h3&gt;&lt;p&gt;代码场景推荐 Qwen 2.5 Coder 3B 或 7B。3B 版本速度快，适合本地实时补全、函数解释和小范围代码生成；7B 版本理解能力更好，但显存和响应时间更高。&lt;/p&gt;
&lt;p&gt;如果你想接到 IDE 插件或本地 agent，3B 版本通常更舒服。对于一次性代码生成、单文件重构、脚本编写，可以再切到 7B 量化版本。&lt;/p&gt;
&lt;p&gt;建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;实时补全：3B。&lt;/li&gt;
&lt;li&gt;问答和解释：3B 或 7B。&lt;/li&gt;
&lt;li&gt;小型重构：7B 量化。&lt;/li&gt;
&lt;li&gt;大型项目架构分析：不要期待 8GB 显存单机完成全部上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;图像生成sdxl-稳flux-要量化&#34;&gt;图像生成：SDXL 稳，FLUX 要量化
&lt;/h2&gt;&lt;p&gt;RTX 4060 8GB 跑图像生成完全可用，但要分模型。&lt;/p&gt;
&lt;h3 id=&#34;sd-15-和-sdxl&#34;&gt;SD 1.5 和 SDXL
&lt;/h3&gt;&lt;p&gt;SD 1.5 对 8GB 显存非常友好，出图速度快，插件生态成熟。SDXL 对显存要求更高，但在 4060 8GB 上仍然属于可用范围。&lt;/p&gt;
&lt;p&gt;推荐工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ComfyUI&lt;/li&gt;
&lt;li&gt;Stable Diffusion WebUI Forge&lt;/li&gt;
&lt;li&gt;Fooocus&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SD 1.5 适合快速出图、LoRA、ControlNet、老模型生态。SDXL 更适合通用品质和更自然的图像结果。对新手来说，SDXL + Forge 或 ComfyUI 是比较稳的起点。&lt;/p&gt;
&lt;h3 id=&#34;flux1-schnell&#34;&gt;FLUX.1 schnell
&lt;/h3&gt;&lt;p&gt;FLUX 的画质和提示词理解更强，但原始模型显存压力大。8GB 显存设备建议使用 GGUF、NF4、FP8 等低显存方案，并搭配 ComfyUI-GGUF 或相应的低显存工作流。&lt;/p&gt;
&lt;p&gt;可行策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 FLUX.1 schnell 的 GGUF Q4/Q5 版本。&lt;/li&gt;
&lt;li&gt;降低分辨率或批量大小。&lt;/li&gt;
&lt;li&gt;在 ComfyUI 中使用低显存节点或 &lt;code&gt;--lowvram&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;不要同时挂太多 LoRA、ControlNet 和高清修复。&lt;/li&gt;
&lt;li&gt;每次改工作流后观察显存是否释放。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1024px 出图可以尝试，但不要用桌面 16GB/24GB 显卡的工作流照搬。4060 8GB 能跑 FLUX，不代表每个 FLUX 工作流都适合它。&lt;/p&gt;
&lt;h2 id=&#34;多模态和效率工具&#34;&gt;多模态和效率工具
&lt;/h2&gt;&lt;p&gt;除了聊天和生图，4060 8GB 也很适合做一些“工具型 AI”任务。&lt;/p&gt;
&lt;h3 id=&#34;whisper-large-v3&#34;&gt;Whisper large-v3
&lt;/h3&gt;&lt;p&gt;Whisper large-v3 可以用于语音转文字。RTX 4060 处理普通音频通常很快，适合会议录音、课程音频、视频字幕和素材整理。&lt;/p&gt;
&lt;p&gt;如果是长音频批量转写，建议注意两点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开启笔记本性能模式。&lt;/li&gt;
&lt;li&gt;保持散热，不要长时间闷在低转速模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;clip--vit-图像索引&#34;&gt;CLIP / ViT 图像索引
&lt;/h3&gt;&lt;p&gt;如果你要做照片检索系统，RTX 4060 8GB 很合适。CLIP、ViT、SigLIP 这类图像特征模型对显存要求不算夸张，扫描几千张照片的向量通常很快。&lt;/p&gt;
&lt;p&gt;典型流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 CLIP/ViT/SigLIP 提取图片 embedding。&lt;/li&gt;
&lt;li&gt;保存到本地向量库或 SQLite。&lt;/li&gt;
&lt;li&gt;用文本或图片做相似度检索。&lt;/li&gt;
&lt;li&gt;再用小型 LLM 生成标签、描述或相册摘要。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种工作负载比跑大 LLM 更适合 8GB 显卡，因为它更偏批处理和特征提取，显存压力可控，收益也很明显。&lt;/p&gt;
&lt;h2 id=&#34;推荐组合&#34;&gt;推荐组合
&lt;/h2&gt;&lt;p&gt;如果只想本机聊天：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ollama / LM Studio
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Gemma 4 E4B 量化版
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ DeepSeek R1 Distill 7B/8B Q4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Qwen 3 8B Q4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果想做代码辅助：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen 2.5 Coder 3B
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Qwen 2.5 Coder 7B Q4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Continue / Cline / 本地 OpenAI-compatible server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果想做图像生成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&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;如果想做照片检索：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CLIP / SigLIP / ViT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ SQLite / FAISS / LanceDB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Gemma 4 E4B 或 Phi-4 Mini 做文本整理
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;避坑指南&#34;&gt;避坑指南
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;建议&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;大模型&lt;/td&gt;
          &lt;td&gt;不要强行跑 14B 以上模型，除非接受明显降速&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;量化&lt;/td&gt;
          &lt;td&gt;LLM 优先选 &lt;code&gt;Q4_K_M&lt;/code&gt;，再按效果尝试 Q5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;显存&lt;/td&gt;
          &lt;td&gt;用任务管理器或 &lt;code&gt;nvidia-smi&lt;/code&gt; 观察显存占用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;散热&lt;/td&gt;
          &lt;td&gt;跑生图、转写、批处理时开启性能模式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;分辨率&lt;/td&gt;
          &lt;td&gt;图像生成先从 768px 或 1024px 单张开始&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;浏览器&lt;/td&gt;
          &lt;td&gt;跑模型时少开占显存的浏览器标签&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;驱动&lt;/td&gt;
          &lt;td&gt;保持 NVIDIA 驱动较新，避免旧驱动导致后端异常&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;工作流&lt;/td&gt;
          &lt;td&gt;不要直接照搬 16GB/24GB 显卡的 ComfyUI 工作流&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果显存占用长期超过 7.5GB，就要主动降模型、降量化精度、减少上下文、关掉其他程序，或者启用低显存模式。最差的情况不是“跑不起来”，而是跑起来后每一步都在 CPU 和内存之间来回搬数据。&lt;/p&gt;
&lt;h2 id=&#34;我的建议&#34;&gt;我的建议
&lt;/h2&gt;&lt;p&gt;笔记本 RTX 4060 8GB 的最佳定位是“高性价比本地 AI 入门平台”。&lt;/p&gt;
&lt;p&gt;它适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3B-8B 本地 LLM。&lt;/li&gt;
&lt;li&gt;代码辅助小模型。&lt;/li&gt;
&lt;li&gt;SDXL 和 SD 1.5。&lt;/li&gt;
&lt;li&gt;FLUX 量化体验。&lt;/li&gt;
&lt;li&gt;Whisper 转写。&lt;/li&gt;
&lt;li&gt;图像向量索引。&lt;/li&gt;
&lt;li&gt;照片管理和本地资料整理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长期跑 14B/32B 大模型。&lt;/li&gt;
&lt;li&gt;未量化大模型。&lt;/li&gt;
&lt;li&gt;高分辨率批量 FLUX 工作流。&lt;/li&gt;
&lt;li&gt;大规模视频生成。&lt;/li&gt;
&lt;li&gt;多模型同时常驻。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目标是继续做照片检索系统，4060 8GB 很合适。推荐把 GPU 用在 CLIP/SigLIP 特征提取和小模型标签生成上，再用 SQLite、FAISS 或 LanceDB 做索引。LLM 选择 Gemma 4 E4B、Phi-4 Mini、Qwen 2.5 Coder 3B/7B 这类小模型，整体效率会比硬上大模型更好。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemma/gemma-4/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind: Gemma 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E4B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E4B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2501.12948&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-R1 论文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://comfyui-wiki.com/en/tutorial/advanced/image/flux/flux-1-dev-t2i&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ComfyUI FLUX.1 GGUF 指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/vava22684/FLUX.1-schnell-gguf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FLUX.1 schnell GGUF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>goose：桌面端、CLI 和 API 一体的开源 AI Agent</title>
        <link>https://knightli.com/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/</link>
        <pubDate>Fri, 08 May 2026 13:35:45 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/</guid>
        <description>&lt;p&gt;goose 是一个运行在本机的开源 AI Agent。它不只面向代码补全，而是希望覆盖代码、研究、写作、自动化、数据分析等更广的任务。项目 README 里的定位很直接：桌面端、CLI 和 API 都提供，既可以给普通用户使用，也可以嵌入到自己的工作流里。&lt;/p&gt;
&lt;p&gt;这个项目已经从 &lt;code&gt;block/goose&lt;/code&gt; 迁移到 Linux Foundation 旗下的 Agentic AI Foundation（AAIF）。当前仓库是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://github.com/aaif-goose/goose
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;goose 主要由 Rust 和 TypeScript 编写，许可证为 Apache-2.0。GitHub 项目描述是：一个开源、可扩展的 AI agent，不只给出代码建议，还能安装、执行、编辑和测试，并可接入任意 LLM。&lt;/p&gt;
&lt;h2 id=&#34;goose-解决什么问题&#34;&gt;goose 解决什么问题
&lt;/h2&gt;&lt;p&gt;很多 AI 编程工具只停留在“给建议”或“改代码”这一层。goose 的目标更宽一些：让 AI agent 直接在你的机器上完成任务。&lt;/p&gt;
&lt;p&gt;它可以用于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码修改和测试。&lt;/li&gt;
&lt;li&gt;本地自动化任务。&lt;/li&gt;
&lt;li&gt;资料研究和写作。&lt;/li&gt;
&lt;li&gt;数据分析。&lt;/li&gt;
&lt;li&gt;多步骤工作流。&lt;/li&gt;
&lt;li&gt;通过 API 嵌入到其他系统。&lt;/li&gt;
&lt;li&gt;通过 MCP 扩展外部工具能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只想在编辑器里要几段代码，普通 Copilot 类工具已经够用。goose 更适合想把 AI 放进“本机任务执行链”的用户：它可以使用本地环境、连接模型 provider、调用扩展，并通过桌面端或 CLI 进入不同工作方式。&lt;/p&gt;
&lt;h2 id=&#34;三种入口桌面端cliapi&#34;&gt;三种入口：桌面端、CLI、API
&lt;/h2&gt;&lt;p&gt;goose 的一个特点是入口比较完整。&lt;/p&gt;
&lt;p&gt;第一种是桌面端。它支持 macOS、Linux 和 Windows，适合不想一直待在终端里的用户，也适合需要更清晰可视化交互的人。&lt;/p&gt;
&lt;p&gt;第二种是 CLI。终端用户可以直接安装命令行工具，把 goose 放进日常开发流程里。&lt;/p&gt;
&lt;p&gt;第三种是 API。它可以作为可嵌入的 agent runtime，让其他系统或内部工具调用 goose 的能力。&lt;/p&gt;
&lt;p&gt;这三个入口对应不同使用习惯。个人开发机可以先从桌面端或 CLI 开始；团队内部工具、自动化平台或实验型 agent 工作流，则更适合看 API 和自定义分发能力。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;官方 README 推荐先下载桌面端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://goose-docs.ai/docs/getting-started/installation
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只安装 CLI，可以使用官方脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;GitHub Releases 也提供不同平台的构建产物。当前 latest release 信息显示，&lt;code&gt;v1.33.1&lt;/code&gt; 发布于 2026-04-29，包含 macOS、Linux、Windows、deb、rpm、Flatpak 等资产。&lt;/p&gt;
&lt;p&gt;安装完成后，建议先按官方 Quickstart 配置 provider，再从一个低风险目录开始测试。由于 goose 可以执行本机任务，不建议一开始就在重要生产仓库里给它过高权限。&lt;/p&gt;
&lt;h2 id=&#34;支持的模型和-provider&#34;&gt;支持的模型和 provider
&lt;/h2&gt;&lt;p&gt;goose 支持 15+ provider。README 中列出的方向包括：&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;更多 OpenAI-compatible 或云端 provider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它既可以使用 API key，也可以通过 ACP 使用已有的 Claude、ChatGPT 或 Gemini 订阅。&lt;/p&gt;
&lt;p&gt;ACP 这一点值得关注。很多用户已经有模型订阅，但不同工具要么不支持直接复用，要么配置方式很割裂。goose 通过 ACP provider 把订阅模型接入 agent 工作流，能减少“订阅在一边、自动化工具在另一边”的割裂感。&lt;/p&gt;
&lt;p&gt;不过 provider 政策变化很快。真正使用前，仍然要确认对应服务是否允许这种接入方式、是否有额度限制、是否适合公司代码或敏感数据。&lt;/p&gt;
&lt;h2 id=&#34;mcp-扩展能力&#34;&gt;MCP 扩展能力
&lt;/h2&gt;&lt;p&gt;goose 支持通过 Model Context Protocol（MCP）连接扩展。README 提到它可以连接 70+ extensions。&lt;/p&gt;
&lt;p&gt;MCP 的意义在于：agent 不只会“聊天”和“改文件”，还能通过标准协议接入更多工具，比如文档、数据库、浏览器、内部系统、搜索服务、设计工具或项目管理系统。&lt;/p&gt;
&lt;p&gt;对个人用户来说，MCP 可以让 goose 连接常用工具。对团队来说，MCP 更像一个安全边界和集成标准：你可以把内部能力包装成 server，让 agent 通过明确接口访问，而不是直接把所有系统暴露给模型。&lt;/p&gt;
&lt;h2 id=&#34;与代码助手的区别&#34;&gt;与代码助手的区别
&lt;/h2&gt;&lt;p&gt;goose 不只是代码补全工具。更准确地说，它是一个本机 agent runtime。&lt;/p&gt;
&lt;p&gt;代码助手通常重点在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;补全代码。&lt;/li&gt;
&lt;li&gt;解释代码。&lt;/li&gt;
&lt;li&gt;生成函数。&lt;/li&gt;
&lt;li&gt;在编辑器里修改局部文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;goose 更强调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本机任务执行。&lt;/li&gt;
&lt;li&gt;多步骤工作流。&lt;/li&gt;
&lt;li&gt;provider 可切换。&lt;/li&gt;
&lt;li&gt;扩展能力。&lt;/li&gt;
&lt;li&gt;桌面端和 CLI 并存。&lt;/li&gt;
&lt;li&gt;API 可嵌入。&lt;/li&gt;
&lt;li&gt;不限定在代码任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也意味着它的复杂度更高。你需要考虑模型配置、权限、扩展、工作目录、日志、凭据管理等问题。它不是“越自动越好”的工具，而是更适合被认真配置和逐步引入。&lt;/p&gt;
&lt;h2 id=&#34;自定义分发&#34;&gt;自定义分发
&lt;/h2&gt;&lt;p&gt;goose 仓库提供 &lt;code&gt;CUSTOM_DISTROS.md&lt;/code&gt;，说明可以构建自己的 goose distro，预配置 provider、extensions 和 branding。&lt;/p&gt;
&lt;p&gt;这对团队或组织很有意义。&lt;/p&gt;
&lt;p&gt;比如团队可以做一个内部版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;预置公司允许的模型 provider。&lt;/li&gt;
&lt;li&gt;默认连接内部 MCP server。&lt;/li&gt;
&lt;li&gt;配好安全策略和日志设置。&lt;/li&gt;
&lt;li&gt;限制不允许使用的外部服务。&lt;/li&gt;
&lt;li&gt;使用自己的品牌和默认引导。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样普通成员不需要从零理解所有配置，也能减少把 key、provider、扩展配错的风险。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;如果你第一次尝试 goose，可以按这个顺序来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先安装桌面端或 CLI。&lt;/li&gt;
&lt;li&gt;配置一个你确定可用的 provider。&lt;/li&gt;
&lt;li&gt;在测试目录里运行简单任务。&lt;/li&gt;
&lt;li&gt;观察它会读取哪些文件、执行哪些动作。&lt;/li&gt;
&lt;li&gt;再接入 MCP extension。&lt;/li&gt;
&lt;li&gt;最后再尝试复杂代码仓库或自动化工作流。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要一开始就把 goose 放进生产仓库、给它全部权限、再让它执行模糊任务。AI agent 的能力越强，越需要明确边界。&lt;/p&gt;
&lt;p&gt;建议保持几个习惯：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重要改动前先提交 git。&lt;/li&gt;
&lt;li&gt;不把 API key 写进项目文件。&lt;/li&gt;
&lt;li&gt;只在可信 workspace 里启用高权限操作。&lt;/li&gt;
&lt;li&gt;公司代码先确认数据合规和 provider 政策。&lt;/li&gt;
&lt;li&gt;对自动化结果保留人工 review。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用
&lt;/h2&gt;&lt;p&gt;goose 更适合这些用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想要桌面端和 CLI 都可用的 AI agent。&lt;/li&gt;
&lt;li&gt;希望使用多个模型 provider。&lt;/li&gt;
&lt;li&gt;想通过 MCP 接入更多工具。&lt;/li&gt;
&lt;li&gt;需要把 AI agent 嵌入自动化流程。&lt;/li&gt;
&lt;li&gt;想在代码之外处理研究、写作、数据分析等任务。&lt;/li&gt;
&lt;li&gt;团队希望构建带预配置的内部 agent 分发版。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的需求只是“在 IDE 里补全代码”，goose 可能显得重。&lt;br&gt;
如果你想要一个可以长期扩展的本机 agent 平台，它的设计会更有吸引力。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;goose 是 AAIF/Linux Foundation 旗下的开源 AI Agent，定位比传统代码助手更广。它提供桌面端、CLI 和 API，支持 15+ provider、ACP 订阅接入和 70+ MCP extensions，适合把 AI 放进本机工作流和团队自动化体系里。&lt;/p&gt;
&lt;p&gt;它的价值不只是“能写代码”，而是把模型、工具、扩展和执行环境放在同一个 agent 框架下。使用时要特别注意权限、凭据和数据边界：先从小任务开始，确认 provider、扩展和执行行为都符合预期，再逐步扩大使用范围。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aaif-goose/goose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://goose-docs.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://goose-docs.ai/docs/getting-started/installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose 安装文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aaif.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agentic AI Foundation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-TUI：在终端里运行 DeepSeek 编程 Agent</title>
        <link>https://knightli.com/2026/05/08/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Fri, 08 May 2026 13:34:05 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/08/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;DeepSeek-TUI 是一个运行在终端里的 AI 编程 Agent。它围绕 DeepSeek V4 模型设计，通过 &lt;code&gt;deepseek&lt;/code&gt; 命令启动，可以在 TUI 界面里读写文件、执行 shell 命令、搜索网页、管理 git、调用 MCP server，并支持子 Agent 协作。&lt;/p&gt;
&lt;p&gt;它和普通聊天 CLI 的区别在于：DeepSeek-TUI 更像一个终端工作台。它不只是把问题发给模型，而是把“看代码、改文件、跑命令、检查诊断、保存会话、恢复状态”这些开发动作整合在一起。&lt;/p&gt;
&lt;p&gt;项目仓库显示，DeepSeek-TUI 主要由 Rust 编写，许可证为 MIT。GitHub 项目描述是“Coding agent for DeepSeek models that runs in your terminal”。&lt;/p&gt;
&lt;h2 id=&#34;它适合谁&#34;&gt;它适合谁
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 适合喜欢在终端里工作的开发者，尤其是这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想用 DeepSeek 模型做代码修改和项目分析。&lt;/li&gt;
&lt;li&gt;不想打开完整 IDE，只想在终端里处理任务。&lt;/li&gt;
&lt;li&gt;希望 AI 工具能读写本地 workspace。&lt;/li&gt;
&lt;li&gt;需要 Plan、Agent、YOLO 这类不同自动化程度的模式。&lt;/li&gt;
&lt;li&gt;希望保留会话、恢复长任务、回滚工作区改动。&lt;/li&gt;
&lt;li&gt;想接入 MCP、LSP 诊断、HTTP/SSE runtime API 等扩展能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只需要简单问答，普通 Web 端或轻量 CLI 已经够用。DeepSeek-TUI 更适合把模型真正放进本地开发流程里。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 发布为 Rust 二进制程序，常用入口命令是 &lt;code&gt;deepseek&lt;/code&gt;，配套 TUI 运行时是 &lt;code&gt;deepseek-tui&lt;/code&gt;。README 提供了多种安装方式。&lt;/p&gt;
&lt;p&gt;如果你已经使用 Node.js，可以通过 npm 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --model auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;npm 包本身是安装器和 wrapper，会下载对应平台的预编译 Rust 二进制文件。npm 包要求 Node.js &lt;code&gt;&amp;gt;=18&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果不想依赖 Node.js，也可以通过 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;macOS 用户可以使用 Homebrew：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew tap Hmbown/deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接从 GitHub Releases 下载预编译版本。README 中列出的预构建平台包括 Linux x64/ARM64、macOS x64/ARM64 和 Windows x64。&lt;/p&gt;
&lt;p&gt;Docker 运行示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -it &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e DEEPSEEK_API_KEY &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PWD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:/workspace&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ghcr.io/hmbown/deepseek-tui:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;国内网络环境下，如果 npm 或 GitHub 下载较慢，可以使用 npm 镜像、Cargo 镜像，或者从 Releases 手动下载二进制文件。&lt;/p&gt;
&lt;h2 id=&#34;首次配置-api-key&#34;&gt;首次配置 API Key
&lt;/h2&gt;&lt;p&gt;首次启动时，DeepSeek-TUI 会提示输入 DeepSeek API key。保存后，它会写入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.deepseek/config.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以提前通过命令配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider deepseek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果更喜欢环境变量，也可以这样启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;YOUR_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;配置完成后，可以用下面命令检查环境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek doctor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 &lt;code&gt;deepseek doctor&lt;/code&gt; 提示 key 来源异常，可以用 &lt;code&gt;deepseek auth status&lt;/code&gt; 查看当前 credential 来源。README 说明中提到，保存到配置文件的 key 优先级高于 keyring 和环境变量。&lt;/p&gt;
&lt;p&gt;清除保存的 key：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;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;DeepSeek-TUI 支持 &lt;code&gt;auto&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;deepseek --model auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以在 TUI 里使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/model auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Auto mode 会同时决定两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型：&lt;code&gt;deepseek-v4-flash&lt;/code&gt; 或 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Thinking：&lt;code&gt;off&lt;/code&gt;、&lt;code&gt;high&lt;/code&gt; 或 &lt;code&gt;max&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的流程是：真正执行用户任务前，先用一次较小的路由调用分析当前请求和近期上下文，然后决定本轮应该使用哪个模型和思考级别。简单问题可以走 Flash 和低思考；复杂编码、调试、架构、安全审查或多步骤任务可以切到 Pro 或更高 thinking。&lt;/p&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;auto&lt;/code&gt; 是 DeepSeek-TUI 本地功能。上游 API 不会收到 &lt;code&gt;model: &amp;quot;auto&amp;quot;&lt;/code&gt;，而是收到 TUI 最终选择出来的具体模型和 thinking 设置。&lt;/p&gt;
&lt;p&gt;如果你要做基准测试、控制成本，或者必须固定某个模型行为，建议直接指定模型，而不是使用 auto。&lt;/p&gt;
&lt;h2 id=&#34;三种工作模式&#34;&gt;三种工作模式
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 提供三种模式，自动化程度不同：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Plan&lt;/td&gt;
          &lt;td&gt;只读探索，模型先分析项目并提出计划&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Agent&lt;/td&gt;
          &lt;td&gt;默认交互模式，工具调用需要 approval gate&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;YOLO&lt;/td&gt;
          &lt;td&gt;自动批准工具调用，适合可信 workspace&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Plan 模式适合先看项目、定位问题、讨论方案。Agent 模式适合日常编码，模型可以执行多步任务，但关键动作仍有确认。YOLO 模式效率最高，但风险也最大，应该只在你完全信任的仓库和任务里使用。&lt;/p&gt;
&lt;p&gt;这类工具能修改本地文件、运行命令，因此不要在不熟悉的目录里随便启用高自动化模式。涉及删除、迁移、批量改写、部署等任务时，最好保持 Agent 模式并看清每一步。&lt;/p&gt;
&lt;h2 id=&#34;工具能力&#34;&gt;工具能力
&lt;/h2&gt;&lt;p&gt;根据 README，DeepSeek-TUI 的工具能力覆盖面很广，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件读写和 apply patch。&lt;/li&gt;
&lt;li&gt;shell 命令执行。&lt;/li&gt;
&lt;li&gt;git 操作。&lt;/li&gt;
&lt;li&gt;web search 和 browse。&lt;/li&gt;
&lt;li&gt;子 Agent 协作。&lt;/li&gt;
&lt;li&gt;MCP server 接入。&lt;/li&gt;
&lt;li&gt;LSP 诊断。&lt;/li&gt;
&lt;li&gt;会话保存和恢复。&lt;/li&gt;
&lt;li&gt;工作区回滚。&lt;/li&gt;
&lt;li&gt;持久化任务队列。&lt;/li&gt;
&lt;li&gt;HTTP/SSE runtime API。&lt;/li&gt;
&lt;li&gt;skills 系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中比较实用的是 LSP 诊断和工作区回滚。&lt;/p&gt;
&lt;p&gt;LSP 诊断可以在编辑后把 rust-analyzer、pyright、typescript-language-server、gopls、clangd 等工具的错误和警告反馈给模型，减少“模型改完但项目编不过”的情况。&lt;/p&gt;
&lt;p&gt;工作区回滚通过 side-git 快照记录每轮前后的状态，并提供 &lt;code&gt;/restore&lt;/code&gt; 和 &lt;code&gt;revert_turn&lt;/code&gt; 一类恢复能力。它不直接操作你仓库本身的 &lt;code&gt;.git&lt;/code&gt;，但仍建议在重要仓库里保持正常 git 提交习惯。&lt;/p&gt;
&lt;h2 id=&#34;常用命令&#34;&gt;常用命令
&lt;/h2&gt;&lt;p&gt;README 中列出的常用命令包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;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;p&gt;这些命令覆盖了交互式 TUI、一次性 prompt、模型指定、会话恢复、HTTP 服务、ACP 适配、PR 预处理、MCP 管理和更新检查。&lt;/p&gt;
&lt;h2 id=&#34;zed-和-acp&#34;&gt;Zed 和 ACP
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 可以作为 Agent Client Protocol server 被编辑器调用。以 Zed 为例，可以添加自定义 agent 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;README 说明中也提醒：当前 ACP 支持新会话和 prompt response，但工具驱动的编辑和 checkpoint replay 还没有通过 ACP 暴露。&lt;/p&gt;
&lt;h2 id=&#34;配置和多-provider&#34;&gt;配置和多 provider
&lt;/h2&gt;&lt;p&gt;用户配置文件位于：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.deepseek/config.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;项目级 overlay 可以放在：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;workspace&amp;gt;/.deepseek/config.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但 README 说明中明确限制了一些字段不能放进项目 overlay，例如 &lt;code&gt;api_key&lt;/code&gt;、&lt;code&gt;base_url&lt;/code&gt;、&lt;code&gt;provider&lt;/code&gt;、&lt;code&gt;mcp_config_path&lt;/code&gt;。这有助于避免把敏感配置随项目提交出去。&lt;/p&gt;
&lt;p&gt;DeepSeek-TUI 默认 provider 是 &lt;code&gt;deepseek&lt;/code&gt;，也支持 NVIDIA NIM、Fireworks、OpenAI-compatible endpoint、SGLang、vLLM、Ollama 等路径。&lt;/p&gt;
&lt;p&gt;例如配置 OpenAI-compatible 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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider openai --api-key &lt;span class=&#34;s2&#34;&gt;&amp;#34;YOUR_OPENAI_COMPATIBLE_API_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://openai-compatible.example/v4&amp;#34;&lt;/span&gt; deepseek --provider openai --model glm-5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;自托管 Ollama 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull deepseek-coder:1.3b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --provider ollama --model deepseek-coder:1.3b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;成本和上下文&#34;&gt;成本和上下文
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 围绕 DeepSeek V4 设计，README 中提到 &lt;code&gt;deepseek-v4-pro&lt;/code&gt; 和 &lt;code&gt;deepseek-v4-flash&lt;/code&gt; 支持 1M-token context，并且 TUI 会显示 token、成本估算、prefix-cache 命中和未命中等信息。&lt;/p&gt;
&lt;p&gt;这对长任务很重要。AI 编程 Agent 往往会不断读文件、总结历史、携带上下文，成本不只取决于模型单价，也取决于它是否能复用 prefix cache、是否及时压缩上下文、是否避免无意义的大段输出。&lt;/p&gt;
&lt;p&gt;如果只是轻量改动，&lt;code&gt;deepseek-v4-flash&lt;/code&gt; 或 auto mode 可能更合适。复杂重构、长上下文调试和架构分析，再考虑更高 thinking 或 Pro 模型。&lt;/p&gt;
&lt;p&gt;由于模型价格和优惠会变化，真正使用前仍建议查看 DeepSeek 官方定价页，以及 TUI 当前版本里的成本估算说明。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;建议从低风险流程开始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在一个小型测试仓库里安装并运行 &lt;code&gt;deepseek doctor&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;使用 Plan 模式让它只读分析项目。&lt;/li&gt;
&lt;li&gt;在 Agent 模式里让它做小范围修改。&lt;/li&gt;
&lt;li&gt;每次修改后用 git diff 和测试命令确认结果。&lt;/li&gt;
&lt;li&gt;熟悉 &lt;code&gt;/restore&lt;/code&gt;、会话恢复和配置路径后，再尝试更长任务。&lt;/li&gt;
&lt;li&gt;YOLO 模式只用于你能接受自动修改的临时分支或测试目录。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要把 API key 写进项目目录，也不要把 &lt;code&gt;~/.deepseek/config.toml&lt;/code&gt; 复制到公共仓库。涉及公司代码时，还要确认模型服务、日志、web search 和第三方 provider 是否符合内部安全要求。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 是一个功能比较完整的终端 AI 编程 Agent。它把 DeepSeek V4、TUI、工具调用、LSP 诊断、会话恢复、工作区回滚、MCP 和 skills 系统放在同一套 Rust 工具链里，适合愿意在终端里完成 AI 辅助开发的人。&lt;/p&gt;
&lt;p&gt;它不是最轻的 DeepSeek 客户端，但它的优势也正在这里：它把“模型对话”推进到“可执行的本地开发流程”。如果你已经习惯 Claude Code、Codex 或其他终端 Agent，那么 DeepSeek-TUI 值得作为 DeepSeek 模型方向的一个重点选择。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepseek-tui.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/deepseek-tui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI npm 包&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.deepseek.com/api_keys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Keys&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>9Router：把 Claude Code、Codex、Cursor 接到同一个 AI 路由器</title>
        <link>https://knightli.com/2026/05/08/9router-ai-coding-router-token-saver/</link>
        <pubDate>Fri, 08 May 2026 13:32:38 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/08/9router-ai-coding-router-token-saver/</guid>
        <description>&lt;p&gt;9Router 是一个面向 AI 编程工具的本地路由器。它把 Claude Code、Codex、Cursor、Cline、Copilot、OpenCode、OpenClaw 等工具统一接到一个 OpenAI-compatible endpoint，再由 9Router 负责转发到不同模型和服务商。&lt;/p&gt;
&lt;p&gt;它的目标不是再做一个聊天客户端，而是放在 AI 编程工具和模型服务之间，解决几个实际问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不同工具的 API 格式不一致。&lt;/li&gt;
&lt;li&gt;订阅额度、免费额度和便宜 API 需要手动切换。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git diff&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;tree&lt;/code&gt; 等工具输出会快速消耗 token。&lt;/li&gt;
&lt;li&gt;某个模型限流或额度耗尽时，编码流程容易中断。&lt;/li&gt;
&lt;li&gt;多账号、多 provider、多模型组合管理成本高。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;根据项目说明，9Router 支持 40+ provider 和 100+ 模型，并提供 RTK Token Saver、自动 fallback、额度追踪、多账号轮询、格式转换和请求日志等功能。项目使用 JavaScript 编写，技术栈包括 Node.js、Next.js、React、Tailwind CSS 和 LowDB，许可证为 MIT。&lt;/p&gt;
&lt;h2 id=&#34;它适合解决什么问题&#34;&gt;它适合解决什么问题
&lt;/h2&gt;&lt;p&gt;9Router 最适合的场景，是你同时使用多个 AI 编程工具和多个模型来源。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 用订阅账号。&lt;/li&gt;
&lt;li&gt;Codex 或 Cursor 需要接自定义 OpenAI endpoint。&lt;/li&gt;
&lt;li&gt;Cline、Continue、RooCode 需要 OpenAI-compatible API。&lt;/li&gt;
&lt;li&gt;免费 provider 作为日常尝试。&lt;/li&gt;
&lt;li&gt;GLM、MiniMax、Kimi 等便宜 API 作为备用。&lt;/li&gt;
&lt;li&gt;某些高质量模型只在复杂任务时使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;没有 9Router 时，这些配置往往分散在不同工具里。每个工具都要单独写 endpoint、API key、模型名和 fallback 策略。9Router 的思路是让工具都访问同一个本地地址，再在路由器里配置 provider、combo 和优先级。&lt;/p&gt;
&lt;p&gt;默认本地地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Dashboard 地址通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:20128/dashboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;快速安装&#34;&gt;快速安装
&lt;/h2&gt;&lt;p&gt;如果只是本机使用，可以直接通过 npm 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g 9router
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9router
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后，Dashboard 会在本地打开。项目文档中的默认端口是 &lt;code&gt;20128&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果想从源码运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/decolua/9router.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; 9router
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20128&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;NEXT_PUBLIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:20128 npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生产模式可以先构建再启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20128&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HOSTNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.0.0.0 &lt;span class=&#34;nv&#34;&gt;NEXT_PUBLIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:20128 npm run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;npm 包当前要求 Node.js &lt;code&gt;&amp;gt;=18.0.0&lt;/code&gt;。如果是部署到 VPS 或 Docker，建议按项目 README 配置 &lt;code&gt;JWT_SECRET&lt;/code&gt;、&lt;code&gt;INITIAL_PASSWORD&lt;/code&gt;、&lt;code&gt;DATA_DIR&lt;/code&gt;、&lt;code&gt;API_KEY_SECRET&lt;/code&gt; 等环境变量，不要直接暴露默认配置。&lt;/p&gt;
&lt;h2 id=&#34;接入-ai-编程工具&#34;&gt;接入 AI 编程工具
&lt;/h2&gt;&lt;p&gt;9Router 对外提供 OpenAI-compatible API，因此大多数支持自定义 OpenAI endpoint 的工具都能接。&lt;/p&gt;
&lt;p&gt;常见配置大致如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: 从 9Router Dashboard 复制
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: 在 9Router 中配置的模型名或 combo 名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以 Codex CLI 为例，可以使用环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:20128&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your-9router-api-key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex &lt;span class=&#34;s2&#34;&gt;&amp;#34;your prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以 Cline、Continue、RooCode 这类工具为例，通常选择 &lt;code&gt;OpenAI Compatible&lt;/code&gt; 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;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;模型名取决于你在 9Router 中连接了哪些 provider。README 中示例包括 &lt;code&gt;cc/&lt;/code&gt;、&lt;code&gt;cx/&lt;/code&gt;、&lt;code&gt;gh/&lt;/code&gt;、&lt;code&gt;glm/&lt;/code&gt;、&lt;code&gt;minimax/&lt;/code&gt;、&lt;code&gt;kr/&lt;/code&gt;、&lt;code&gt;vertex/&lt;/code&gt; 等前缀。&lt;/p&gt;
&lt;h2 id=&#34;rtk-token-saver-的意义&#34;&gt;RTK Token Saver 的意义
&lt;/h2&gt;&lt;p&gt;AI 编程工具消耗 token 最快的地方，往往不是普通对话，而是工具输出。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git diff&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;日志片段&lt;/li&gt;
&lt;li&gt;大段文件列表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;9Router 内置 RTK Token Saver，会在请求发给模型前压缩这类工具输出。项目说明称，它可以在很多请求中节省 20%-40% input tokens。&lt;/p&gt;
&lt;p&gt;这个功能的价值在于：它不要求你更换模型，也不改变上层工具使用习惯，而是在路由层减少无效上下文。对经常让 AI 读 diff、搜代码、看目录结构的人来说，这比单纯换一个更便宜的模型更直接。&lt;/p&gt;
&lt;p&gt;不过它不是万能压缩。涉及关键上下文、完整日志或长文件内容时，仍然要留意是否需要保留原始信息。更稳妥的做法是先在本地开发环境里试用，确认回答质量没有明显下降，再把它放到长期工作流里。&lt;/p&gt;
&lt;h2 id=&#34;自动-fallback-怎么用&#34;&gt;自动 fallback 怎么用
&lt;/h2&gt;&lt;p&gt;9Router 的另一个重点是三层 fallback。你可以把模型按优先级组合起来：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 订阅模型
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 便宜 API
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 免费 provider
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;当第一层额度用完、限流或出错时，9Router 自动切到下一层。这样做的好处是减少手动切换模型的次数，也能避免写代码写到一半突然停住。&lt;/p&gt;
&lt;p&gt;一个常见组合可以是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;如果你追求稳定，可以把付费或订阅模型放前面，把便宜模型作为备用；如果你追求低成本，可以把免费 provider 放前面，把便宜 API 放在后面兜底。&lt;/p&gt;
&lt;p&gt;这里要注意：fallback 会影响输出一致性。不同模型的代码风格、推理强度和上下文处理能力不同。对需要严格一致性的任务，比如大型重构、协议实现、数据库迁移，最好固定主模型，只有失败时再手动切换。&lt;/p&gt;
&lt;h2 id=&#34;免费-provider-要谨慎理解&#34;&gt;免费 provider 要谨慎理解
&lt;/h2&gt;&lt;p&gt;项目 README 强调 Kiro、OpenCode Free、Vertex 等免费路径，并且提到部分历史免费层已经变化或不再推荐。&lt;/p&gt;
&lt;p&gt;这类信息变化很快，使用时要按当时 provider 的官方政策确认：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否真的免费。&lt;/li&gt;
&lt;li&gt;是否有区域、账号或使用场景限制。&lt;/li&gt;
&lt;li&gt;是否允许接入第三方工具。&lt;/li&gt;
&lt;li&gt;是否可能触发封号或限流。&lt;/li&gt;
&lt;li&gt;免费额度是否有到期时间。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;9Router 可以帮你管理路由和 fallback，但不能改变上游 provider 的服务条款。尤其是把个人订阅、OAuth token 或免费额度接给自动化工具时，最好只在自己可控的本机环境里使用，并定期检查账号安全。&lt;/p&gt;
&lt;h2 id=&#34;本地运行和部署建议&#34;&gt;本地运行和部署建议
&lt;/h2&gt;&lt;p&gt;本机使用时，最简单的方式是只监听 &lt;code&gt;localhost&lt;/code&gt;。这样 Claude Code、Codex、Cursor、Cline 等本地工具可以访问 9Router，但外部网络不能直接连进来。&lt;/p&gt;
&lt;p&gt;如果要部署到 VPS 或局域网服务器，建议至少做到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改默认登录密码。&lt;/li&gt;
&lt;li&gt;设置强 &lt;code&gt;JWT_SECRET&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;设置 &lt;code&gt;API_KEY_SECRET&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;开启访问控制或反向代理认证。&lt;/li&gt;
&lt;li&gt;避免把 Dashboard 裸露到公网。&lt;/li&gt;
&lt;li&gt;对 &lt;code&gt;/v1/*&lt;/code&gt; 接口启用 Bearer API key。&lt;/li&gt;
&lt;li&gt;定期备份 &lt;code&gt;DATA_DIR&lt;/code&gt; 下的配置和用量数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Docker 运行时可以参考项目文档，把数据目录挂载出来：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name 9router &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 20128:20128 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --env-file ./.env &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v 9router-data:/app/data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v 9router-usage:/root/.9router &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  9router
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只是个人开发机使用，没有必要一上来就公网部署。先在本地跑通 provider、combo、工具接入和日志，再决定是否迁移到服务器。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用
&lt;/h2&gt;&lt;p&gt;9Router 更适合这些用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时使用多个 AI 编程工具。&lt;/li&gt;
&lt;li&gt;同时有订阅、免费额度和付费 API。&lt;/li&gt;
&lt;li&gt;经常被 provider 限流或额度耗尽打断。&lt;/li&gt;
&lt;li&gt;想把模型 fallback 做成统一配置。&lt;/li&gt;
&lt;li&gt;想减少工具输出带来的 token 浪费。&lt;/li&gt;
&lt;li&gt;愿意自己维护本地代理和 provider 凭据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只用一个工具、一个模型，而且额度足够，9Router 可能会增加一层不必要的复杂度。它真正有价值的地方，是把“多工具、多模型、多账号、多价格层”的混乱收进一个本地路由层里。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;9Router 可以理解为 AI 编程工具的本地网关。它把 Claude Code、Codex、Cursor、Cline 等工具统一接到 &lt;code&gt;http://localhost:20128/v1&lt;/code&gt;，再由路由器处理模型选择、格式转换、token 压缩、额度追踪和 fallback。&lt;/p&gt;
&lt;p&gt;它适合重度 AI 编程用户，尤其适合已经在多个 provider 之间来回切换的人。最稳妥的使用方式是先本地安装，接入一个常用工具和一个 provider，确认请求、日志、模型名和 fallback 都正常后，再逐步增加账号和模型组合。&lt;/p&gt;
&lt;p&gt;如果你只是想省心，单一官方客户端仍然更简单。&lt;br&gt;
如果你想把 AI 编程工具变成一套可配置、可切换、可兜底的工作流，9Router 值得试试。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/decolua/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://9router.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router npm 包&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 24 个使用技巧：计划模式、回滚、CLAUDE.md、Skills、Agents 和插件</title>
        <link>https://knightli.com/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/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</guid>
        <description>&lt;p&gt;Claude Code 不只是一个聊天框。它更像一个能进入项目目录、读写文件、执行命令、维护上下文的编程 Agent。&lt;/p&gt;
&lt;p&gt;如果只是把需求丢进去让它生成代码，很快会遇到几个问题：计划不够清楚、权限反复确认、上下文越来越长、生成结果不满意、不知道怎么回滚，也不知道怎么把项目规则长期保存下来。&lt;/p&gt;
&lt;p&gt;下面整理一组常用操作，适合刚开始使用 Claude Code 的开发者快速建立工作流。&lt;/p&gt;
&lt;h2 id=&#34;先在项目目录启动&#34;&gt;先在项目目录启动
&lt;/h2&gt;&lt;p&gt;Claude Code 最好在项目目录里启动，而不是随便打开一个终端就开始用。&lt;/p&gt;
&lt;p&gt;可以先创建一个文件夹作为项目目录，进入目录后打开命令行，再启动 Claude Code：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;首次进入项目时，如果 Claude Code 询问是否信任当前文件夹，确认后再继续。这样它才能围绕当前项目读取文件、创建文件和执行后续操作。&lt;/p&gt;
&lt;p&gt;一个简单的练习方式是让它创建一个摄影师个人网站。这个任务足够直观：能看到页面效果，也能练习文件生成、命令执行、回滚和后续重构。&lt;/p&gt;
&lt;h2 id=&#34;计划模式先把方向想清楚&#34;&gt;计划模式先把方向想清楚
&lt;/h2&gt;&lt;p&gt;Claude Code 在面对较复杂任务时会进入计划模式。计划模式的作用是先讨论需求、拆解步骤，再让用户决定是否批准执行。&lt;/p&gt;
&lt;p&gt;当它给出计划后，通常会出现几类选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批准计划，并允许后续自动使用编辑工具。&lt;/li&gt;
&lt;li&gt;批准计划，但后续编辑仍然需要手动确认。&lt;/li&gt;
&lt;li&gt;暂停执行，继续和 Claude Code 讨论计划。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任务比较明确，可以批准计划并继续。如果任务还不清楚，建议先让它继续补充方案，比如页面风格、技术栈、目录结构、交互效果和验收标准。&lt;/p&gt;
&lt;p&gt;计划模式的好处是减少返工。直接让 Agent 动手，可能很快生成一堆文件；但如果方向错了，后面越改越乱。&lt;/p&gt;
&lt;h2 id=&#34;用-shift--tab-切换模式&#34;&gt;用 Shift + Tab 切换模式
&lt;/h2&gt;&lt;p&gt;在 Claude Code 中，可以用 &lt;code&gt;Shift + Tab&lt;/code&gt; 在不同工作模式之间切换。常见用途是进入计划模式，或者切换到自动同意编辑工具的模式。&lt;/p&gt;
&lt;p&gt;建议的习惯是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新项目、新功能、大改动：先进入计划模式。&lt;/li&gt;
&lt;li&gt;小改动、明确修复：可以直接执行。&lt;/li&gt;
&lt;li&gt;涉及删除、批量替换、安装依赖：保持人工确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;计划模式下，Claude Code 可能会主动询问项目细节。可以用方向键选择选项，用回车确认。提交反馈后，它会根据你的选择更新计划。&lt;/p&gt;
&lt;h2 id=&#34;权限确认不要一律放开&#34;&gt;权限确认不要一律放开
&lt;/h2&gt;&lt;p&gt;Claude Code 执行命令、编辑文件或启动程序时，可能会申请权限。&lt;/p&gt;
&lt;p&gt;常见选择包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只同意本次使用。&lt;/li&gt;
&lt;li&gt;在当前会话中以后都同意同类命令。&lt;/li&gt;
&lt;li&gt;拒绝或暂停。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是启动本地页面、运行开发服务器、查看文件，可以根据需要允许。但不要为了省事长期使用“自动同意所有权限”的启动方式。&lt;/p&gt;
&lt;p&gt;全自动权限适合非常确定、风险很低、项目已经有 Git 备份的场景。日常使用中，涉及删除文件、覆盖目录、安装依赖、联网、提交代码、执行脚本时，最好保留人工确认。&lt;/p&gt;
&lt;h2 id=&#34;用终端模式执行本地命令&#34;&gt;用终端模式执行本地命令
&lt;/h2&gt;&lt;p&gt;Claude Code 里可以进入终端命令模式，直接执行一些本地命令。&lt;/p&gt;
&lt;p&gt;例如页面生成后，可以用系统命令打开 HTML 文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;start index.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的 &lt;code&gt;start&lt;/code&gt; 是 Windows 下打开文件的命令，后面接文件名。这样可以快速查看生成页面，而不用手动去资源管理器里找文件。&lt;/p&gt;
&lt;p&gt;终端模式适合执行这些轻量操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开生成的页面。&lt;/li&gt;
&lt;li&gt;查看目录内容。&lt;/li&gt;
&lt;li&gt;启动本地开发服务器。&lt;/li&gt;
&lt;li&gt;运行测试或构建命令。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但高风险命令仍然要谨慎，比如递归删除、移动目录、批量覆盖和修改系统环境。&lt;/p&gt;
&lt;h2 id=&#34;回滚结果不满意时及时退回&#34;&gt;回滚：结果不满意时及时退回
&lt;/h2&gt;&lt;p&gt;如果 Claude Code 做出的页面或代码不是你想要的，而且越改越乱，就应该及时回滚。&lt;/p&gt;
&lt;p&gt;回滚功能可以把对话或代码退回到某个节点。常见选项包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时回滚代码和对话。&lt;/li&gt;
&lt;li&gt;只回滚对话。&lt;/li&gt;
&lt;li&gt;只回滚代码。&lt;/li&gt;
&lt;li&gt;把某个节点之前的内容压缩成摘要。&lt;/li&gt;
&lt;li&gt;取消操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更推荐在明显走偏时选择“同时回滚代码和对话”。这样可以让上下文和文件状态一起回到较干净的位置。&lt;/p&gt;
&lt;p&gt;需要注意：Claude Code 的回滚通常只能覆盖它通过内置工具创建或修改的文件。如果文件是通过外部命令生成的，未必能完整回滚。因此重要项目仍然要配合 Git 使用。&lt;/p&gt;
&lt;h2 id=&#34;长提示词用编辑器写&#34;&gt;长提示词用编辑器写
&lt;/h2&gt;&lt;p&gt;复杂需求不要全挤在一行输入框里。&lt;/p&gt;
&lt;p&gt;如果系统支持在文本编辑器中编辑长提示词，可以打开编辑器，把需求写完整后保存，再发送给 Claude Code。&lt;/p&gt;
&lt;p&gt;长提示词里建议写清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目标是什么。&lt;/li&gt;
&lt;li&gt;使用什么技术栈。&lt;/li&gt;
&lt;li&gt;不要做什么。&lt;/li&gt;
&lt;li&gt;需要保留哪些文件。&lt;/li&gt;
&lt;li&gt;完成后如何验证。&lt;/li&gt;
&lt;li&gt;页面或功能的验收标准。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如让 Claude Code 把一个普通 HTML 页面重构成更现代的技术栈时，不要只写“重构一下”。可以说明希望使用组件化结构、保留视觉内容、增加响应式布局，并要求它运行构建检查。&lt;/p&gt;
&lt;h2 id=&#34;退出后用历史恢复会话&#34;&gt;退出后用历史恢复会话
&lt;/h2&gt;&lt;p&gt;如果中途需要退出 Claude Code，可以正常退出。之后回到同一个项目目录，再次启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果发现前面的记录没有直接显示，可以使用历史相关命令查看最近会话，并加载之前的会话。&lt;/p&gt;
&lt;p&gt;这个功能适合中断后继续工作。不过不要把会话历史当成唯一记忆。项目规则、技术栈、常用命令和注意事项，最好写进项目文件里。&lt;/p&gt;
&lt;h2 id=&#34;用-claudemd-保存项目规则&#34;&gt;用 CLAUDE.md 保存项目规则
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是 Claude Code 很重要的记忆文件。它通常放在项目根目录，用来告诉 Claude Code 项目规则、技术栈、目录结构和协作约束。&lt;/p&gt;
&lt;p&gt;可以让 Claude Code 初始化这个文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 适合记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目目标。&lt;/li&gt;
&lt;li&gt;技术栈。&lt;/li&gt;
&lt;li&gt;常用启动、测试、构建命令。&lt;/li&gt;
&lt;li&gt;目录说明。&lt;/li&gt;
&lt;li&gt;代码风格。&lt;/li&gt;
&lt;li&gt;不允许执行的操作。&lt;/li&gt;
&lt;li&gt;提交和部署规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每次对话时，Claude Code 会把这类规则作为上下文的一部分使用。你可以把它理解成“项目说明书”。&lt;/p&gt;
&lt;p&gt;一个简单验证方式是：在 &lt;code&gt;CLAUDE.md&lt;/code&gt; 里加入一条明显规则，然后再向 Claude Code 提问。如果回答遵循了这条规则，就说明它确实读到了项目记忆。&lt;/p&gt;
&lt;h2 id=&#34;用--引用文件&#34;&gt;用 @ 引用文件
&lt;/h2&gt;&lt;p&gt;在输入框中使用 &lt;code&gt;@&lt;/code&gt;，可以选择文件或 Agent，把指定内容加入当前对话上下文。&lt;/p&gt;
&lt;p&gt;这适合几类场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让 Claude Code 阅读某个配置文件。&lt;/li&gt;
&lt;li&gt;让它修改某个指定页面。&lt;/li&gt;
&lt;li&gt;让它根据 &lt;code&gt;CLAUDE.md&lt;/code&gt; 或其他文档继续工作。&lt;/li&gt;
&lt;li&gt;明确告诉它“只看这个文件，不要猜项目结构”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相比把文件内容复制到输入框里，&lt;code&gt;@&lt;/code&gt; 引用更清晰，也更不容易漏内容。&lt;/p&gt;
&lt;h2 id=&#34;查看和压缩上下文&#34;&gt;查看和压缩上下文
&lt;/h2&gt;&lt;p&gt;长时间对话后，上下文会越来越大。上下文太长时，模型可能变慢，也可能开始忽略早期细节。&lt;/p&gt;
&lt;p&gt;可以使用上下文查看命令了解当前占用情况：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/context
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果上下文已经很长，可以压缩历史：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果压缩后效果仍然不好，可以考虑清空当前上下文：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;清空上下文后，Claude Code 仍然可以通过项目文件、&lt;code&gt;CLAUDE.md&lt;/code&gt; 和当前目录重新理解一部分项目情况，但不会保留完整对话历史。&lt;/p&gt;
&lt;p&gt;实用建议是：一个任务完成后就开新会话；项目级规则写进 &lt;code&gt;CLAUDE.md&lt;/code&gt;；临时讨论不要无限堆在一个聊天里。&lt;/p&gt;
&lt;h2 id=&#34;skills把固定流程做成说明书&#34;&gt;Skills：把固定流程做成说明书
&lt;/h2&gt;&lt;p&gt;Skills 可以理解为 Claude Code 的工作说明书。它不是一次性提示词，而是一套可复用的任务流程。&lt;/p&gt;
&lt;p&gt;例如你经常要生成周报，就可以创建一个周报 Skill，里面写清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入需要哪些信息。&lt;/li&gt;
&lt;li&gt;输出格式是什么。&lt;/li&gt;
&lt;li&gt;语气和结构怎么控制。&lt;/li&gt;
&lt;li&gt;哪些内容必须保留。&lt;/li&gt;
&lt;li&gt;哪些内容不能编造。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills 通常由 &lt;code&gt;name&lt;/code&gt;、&lt;code&gt;description&lt;/code&gt; 和具体指令组成。安装到全局 Skills 目录后，Claude Code 在遇到相关任务时可以识别并加载。&lt;/p&gt;
&lt;p&gt;这适合处理重复工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;周报。&lt;/li&gt;
&lt;li&gt;代码审查模板。&lt;/li&gt;
&lt;li&gt;文档整理。&lt;/li&gt;
&lt;li&gt;图片批处理。&lt;/li&gt;
&lt;li&gt;固定格式文章。&lt;/li&gt;
&lt;li&gt;项目初始化流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你发现自己反复复制同一段提示词，就可以考虑把它做成 Skill。&lt;/p&gt;
&lt;h2 id=&#34;agents把子任务交给独立助手&#34;&gt;Agents：把子任务交给独立助手
&lt;/h2&gt;&lt;p&gt;Agents 和 Skills 不一样。&lt;/p&gt;
&lt;p&gt;Skill 更像说明书，告诉 Claude Code 怎么做某类任务；Agent 更像一个独立助手，可以在当前主会话之外执行任务，完成后把结果返回。&lt;/p&gt;
&lt;p&gt;Agents 的价值在于隔离上下文。比如做代码巡检时，可以创建一个只读 Agent，让它只读取项目并输出报告，不直接修改文件。这样不会污染主会话，也能降低误操作风险。&lt;/p&gt;
&lt;p&gt;创建 Agent 时通常要考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是项目级 Agent，还是用户级 Agent。&lt;/li&gt;
&lt;li&gt;是否需要 Claude Code 帮你生成配置。&lt;/li&gt;
&lt;li&gt;允许哪些工具权限。&lt;/li&gt;
&lt;li&gt;使用哪个模型。&lt;/li&gt;
&lt;li&gt;是否保存记忆。&lt;/li&gt;
&lt;li&gt;Agent 的提示词是否足够明确。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于代码巡检类 Agent，建议只给读取权限，不给写入权限。先让它输出报告，再由主会话决定是否修改代码。&lt;/p&gt;
&lt;h2 id=&#34;插件打包-skillsagentsmcp-和-hooks&#34;&gt;插件：打包 Skills、Agents、MCP 和 Hooks
&lt;/h2&gt;&lt;p&gt;插件可以理解为更完整的能力包。它可能同时包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Agents&lt;/li&gt;
&lt;li&gt;MCP&lt;/li&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相比单独安装一个 Skill，插件更适合成套能力。例如前端设计插件可能会把页面审美、布局规则、组件习惯和相关 Agent 一起打包。&lt;/p&gt;
&lt;p&gt;安装插件时通常会有几个位置选项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装到用户目录，对所有项目生效。&lt;/li&gt;
&lt;li&gt;安装到项目目录，随项目共享。&lt;/li&gt;
&lt;li&gt;安装到本地项目目录，只在当前电脑生效。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是个人常用能力，可以放在用户目录；如果是团队项目约定，可以放进项目目录；如果只是临时测试，放本地项目目录更稳。&lt;/p&gt;
&lt;h2 id=&#34;插件能明显改善特定任务效果&#34;&gt;插件能明显改善特定任务效果
&lt;/h2&gt;&lt;p&gt;在前端页面生成这类任务里，插件往往比裸提示词更稳定。&lt;/p&gt;
&lt;p&gt;例如同样是“制作一个摄影师个人网页”，只用普通提示词可能生成一个能看的页面；如果明确使用前端设计插件，页面结构、视觉层次、间距、配色和整体完成度通常会更好。&lt;/p&gt;
&lt;p&gt;这并不意味着插件能替代人工审美。更合理的用法是：先让插件生成一个更好的初稿，再由人做细节微调。&lt;/p&gt;
&lt;h2 id=&#34;一套更稳的-claude-code-工作流&#34;&gt;一套更稳的 Claude Code 工作流
&lt;/h2&gt;&lt;p&gt;把上面这些技巧组合起来，可以形成一套比较稳的流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在项目目录启动 &lt;code&gt;claude&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;先用计划模式讨论需求。&lt;/li&gt;
&lt;li&gt;批准计划前确认技术栈和验收标准。&lt;/li&gt;
&lt;li&gt;涉及高风险操作时保留手动确认。&lt;/li&gt;
&lt;li&gt;用终端模式执行本地预览和测试。&lt;/li&gt;
&lt;li&gt;结果走偏时及时回滚。&lt;/li&gt;
&lt;li&gt;把项目规则写进 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;长对话定期查看和压缩上下文。&lt;/li&gt;
&lt;li&gt;重复流程沉淀成 Skills。&lt;/li&gt;
&lt;li&gt;巡检、研究、分析类任务交给只读 Agents。&lt;/li&gt;
&lt;li&gt;特定领域任务优先用插件。&lt;/li&gt;
&lt;li&gt;重要项目始终配合 Git 提交点。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样使用 Claude Code，会比单纯“发一句需求等它生成”稳定得多。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Claude Code 的效率不只来自模型能力，也来自工作流控制。&lt;/p&gt;
&lt;p&gt;计划模式决定方向，权限确认控制风险，回滚减少返工，&lt;code&gt;CLAUDE.md&lt;/code&gt; 保存项目规则，&lt;code&gt;/context&lt;/code&gt;、&lt;code&gt;/compact&lt;/code&gt; 和 &lt;code&gt;/clear&lt;/code&gt; 管理上下文，Skills 复用固定流程，Agents 隔离复杂子任务，插件则把成套能力打包进项目。&lt;/p&gt;
&lt;p&gt;真正好用的 Claude Code 工作方式，是让它在清楚边界内持续推进任务，而不是把整个项目一次性交给它自由发挥。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Opus 4.7、Sonnet 4.6、Haiku 4.5 有什么区别？Claude 模型选择指南</title>
        <link>https://knightli.com/2026/05/08/anthropic-claude-model-lineup/</link>
        <pubDate>Fri, 08 May 2026 08:19:03 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/08/anthropic-claude-model-lineup/</guid>
        <description>&lt;p&gt;Anthropic 的核心大模型主要通过 &lt;code&gt;Claude&lt;/code&gt; 系列迭代。到 2026 年 5 月，Claude 的主流产品线已经进入 4.x 阶段，整体仍然延续三档定位：&lt;code&gt;Opus&lt;/code&gt; 负责最高能力，&lt;code&gt;Sonnet&lt;/code&gt; 负责性能与成本平衡，&lt;code&gt;Haiku&lt;/code&gt; 负责速度和性价比。&lt;/p&gt;
&lt;p&gt;如果只想快速选型，可以先记住一句话：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最复杂、最重的推理和 agentic coding：优先看 &lt;code&gt;Claude Opus 4.7&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;大多数开发、写作、分析和企业 API 场景：从 &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; 开始最稳。&lt;/li&gt;
&lt;li&gt;高并发、低延迟、成本敏感任务：考虑 &lt;code&gt;Claude Haiku 4.5&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;当前主流模型&#34;&gt;当前主流模型
&lt;/h2&gt;&lt;p&gt;根据 Anthropic 官方模型文档，当前 Claude 主流模型可以这样理解。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;定位&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;当前最强的通用可用模型，面向复杂推理和 agentic coding&lt;/td&gt;
          &lt;td&gt;大型代码库重构、多步骤任务、复杂策略分析、要求更高一致性的工作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Claude Sonnet 4.6&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;速度、能力和成本的平衡点，支持 100 万 token 上下文窗口&lt;/td&gt;
          &lt;td&gt;代码生成、长文档分析、企业知识工作、Agent 开发、日常高质量生产任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Claude Haiku 4.5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;速度最快、成本更低的小模型，但仍有接近前沿模型的能力&lt;/td&gt;
          &lt;td&gt;实时对话、客服、批量分类、简单代码协作、高并发 API 调用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里需要注意两个命名细节。&lt;/p&gt;
&lt;p&gt;第一，官方名称是 &lt;code&gt;Claude Haiku 4.5&lt;/code&gt;，不是 &lt;code&gt;Claude 4.5 Haiku&lt;/code&gt;。第二，&lt;code&gt;Claude Mythos Preview&lt;/code&gt; 不是普通用户或开发者的主流可用模型，它是 Project Glasswing 相关的受控研究预览，主要面向防御性网络安全工作流，不应和常规 Claude 模型混在一起选型。&lt;/p&gt;
&lt;h2 id=&#34;opus处理最难的问题&#34;&gt;Opus：处理最难的问题
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Opus&lt;/code&gt; 是 Anthropic 给最强模型使用的档位。&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 的重点不是便宜，也不是最快，而是更适合处理复杂、多步骤、需要反复校验的任务。&lt;/p&gt;
&lt;p&gt;它更适合这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跨很多文件的大型代码修改。&lt;/li&gt;
&lt;li&gt;复杂系统重构和架构推理。&lt;/li&gt;
&lt;li&gt;长链路 Agent 任务。&lt;/li&gt;
&lt;li&gt;需要更强视觉理解、文档理解和多轮规划的工作。&lt;/li&gt;
&lt;li&gt;对错误成本比较敏感的企业分析任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一个任务失败一次的代价很高，或者你希望模型在开始动手前花更多时间理解上下文，&lt;code&gt;Opus&lt;/code&gt; 通常更值得尝试。&lt;/p&gt;
&lt;h2 id=&#34;sonnet多数人的默认起点&#34;&gt;Sonnet：多数人的默认起点
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; 是更适合作为默认入口的模型。它的定位不是“低配 Opus”，而是把足够强的推理、编程、视觉理解、长上下文和 agent planning 放在更可控的成本与速度里。&lt;/p&gt;
&lt;p&gt;对开发者来说，&lt;code&gt;Sonnet 4.6&lt;/code&gt; 的价值主要在三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;能处理很长的上下文，适合放入代码库、合同、报告或多篇资料。&lt;/li&gt;
&lt;li&gt;在 Claude Code、API 和企业场景中更容易作为常用模型。&lt;/li&gt;
&lt;li&gt;成本低于 Opus，更适合高频使用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你不知道该从哪个 Claude 模型开始，通常可以从 &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; 开始。只有在任务明显需要更强能力时，再切到 &lt;code&gt;Opus&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;haiku快和便宜更重要时&#34;&gt;Haiku：快和便宜更重要时
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Haiku 4.5&lt;/code&gt; 是小模型档位，但不能简单理解成“弱模型”。Anthropic 对它的定位是快速、低成本，同时保留接近前沿模型的能力。&lt;/p&gt;
&lt;p&gt;它适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;实时聊天和客服机器人。&lt;/li&gt;
&lt;li&gt;大量短文本分类。&lt;/li&gt;
&lt;li&gt;低延迟 API 调用。&lt;/li&gt;
&lt;li&gt;简单代码修改和快速原型。&lt;/li&gt;
&lt;li&gt;多 Agent 工作流中的子任务执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任务本身很清楚、上下文不复杂、需要吞吐量，&lt;code&gt;Haiku&lt;/code&gt; 往往比盲目使用更大的模型更合理。&lt;/p&gt;
&lt;h2 id=&#34;claude-的工具能力&#34;&gt;Claude 的工具能力
&lt;/h2&gt;&lt;p&gt;Claude 系列不只是聊天模型。Anthropic 现在把模型能力放进了多种产品和开发工具里。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude Code&lt;/code&gt; 是面向开发者的命令行编程工具，可以读取代码库、编辑文件、运行命令和测试，适合持续推进工程任务。它的体验很依赖模型本身的代码理解、上下文管理和工具调用稳定性。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Computer Use&lt;/code&gt; 是让模型通过截图、鼠标和键盘操作桌面环境的能力。它仍然需要谨慎使用，官方文档也强调要放在隔离环境中运行，避免误操作或安全风险。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Artifacts&lt;/code&gt; 更偏向 Claude 应用侧体验，可以把代码、页面原型、图表或文档结果放在界面中预览和迭代。它不是一个单独模型，而是 Claude 产品形态的一部分。&lt;/p&gt;
&lt;p&gt;至于“Managed Agents”或“自我进化 Agent”这类说法，写文章时要谨慎。Anthropic 确实在强化 Agent SDK、Claude Code、长上下文、工具调用和企业工作流，但不要把它描述成已经具备不受控自我进化能力。&lt;/p&gt;
&lt;h2 id=&#34;访问方式&#34;&gt;访问方式
&lt;/h2&gt;&lt;p&gt;普通用户可以通过 &lt;code&gt;Claude.ai&lt;/code&gt; 网页端或移动端使用 Claude，不同套餐会影响可用模型、额度和功能。&lt;/p&gt;
&lt;p&gt;开发者通常有几种接入方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic Console 和 Claude API。&lt;/li&gt;
&lt;li&gt;Amazon Bedrock。&lt;/li&gt;
&lt;li&gt;Google Cloud Vertex AI。&lt;/li&gt;
&lt;li&gt;Microsoft Foundry。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具体可用模型、上下文窗口、价格和地区支持会变化，开发前最好以 Anthropic 官方模型文档和对应云平台页面为准。&lt;/p&gt;
&lt;h2 id=&#34;怎么选&#34;&gt;怎么选
&lt;/h2&gt;&lt;p&gt;实际使用时，不需要一开始就追求最强模型。更好的方式是按任务成本分层。&lt;/p&gt;
&lt;p&gt;如果是日常写作、代码生成、长文档分析、知识整理和大多数 Agent 原型，先用 &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt;。它通常是性价比和通用能力的最佳起点。&lt;/p&gt;
&lt;p&gt;如果任务需要更强的复杂推理、跨文件工程修改、长链路规划或更高可靠性，再切到 &lt;code&gt;Claude Opus 4.7&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果任务简单、数量大、对延迟敏感，例如分类、摘要、客服、批量处理，就把 &lt;code&gt;Claude Haiku 4.5&lt;/code&gt; 放进候选。&lt;/p&gt;
&lt;p&gt;Claude 的模型线不是单纯的“新版本替代旧版本”，而是一套按任务难度、速度和成本分层的工具箱。选对模型，比盲目使用最贵模型更重要。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Anthropic Models Overview：&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/about-claude/models/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://platform.claude.com/docs/en/about-claude/models/overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introducing Claude Opus 4.7：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-opus-4-7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-opus-4-7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introducing Claude Sonnet 4.6：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-sonnet-4-6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-sonnet-4-6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introducing Claude Haiku 4.5：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-haiku-4-5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-haiku-4-5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anthropic Computer Use Tool：&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/docs/build-with-claude/computer-use&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.anthropic.com/en/docs/build-with-claude/computer-use&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-5.5、GPT-5.5 Instant、GPT-5.5 Thinking 和 GPT-5.5 Pro 有什么区别</title>
        <link>https://knightli.com/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/2026/05/07/gpt-5-5-instant-thinking-pro-differences/</guid>
        <description>&lt;p&gt;OpenAI 现在把 GPT-5.5 拆成了几个更明确的使用层级：&lt;code&gt;Instant&lt;/code&gt;、&lt;code&gt;Thinking&lt;/code&gt; 和 &lt;code&gt;Pro&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;很多人看到 &lt;code&gt;GPT-5.5&lt;/code&gt;、&lt;code&gt;GPT-5.5 Instant&lt;/code&gt;、&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;、&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 会混在一起。简单说：&lt;code&gt;GPT-5.5&lt;/code&gt; 是这一代模型能力的总称，&lt;code&gt;Instant&lt;/code&gt; 是日常快速模型，&lt;code&gt;Thinking&lt;/code&gt; 是深度推理模式，&lt;code&gt;Pro&lt;/code&gt; 是更高强度的研究级模式。&lt;/p&gt;
&lt;h2 id=&#34;快速对比&#34;&gt;快速对比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;本质&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
          &lt;th&gt;速度/成本&lt;/th&gt;
          &lt;th&gt;可用性&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5&lt;/td&gt;
          &lt;td&gt;GPT-5.5 主模型/家族名；在 ChatGPT 里通常对应 GPT-5.5 Thinking 的能力定位&lt;/td&gt;
          &lt;td&gt;复杂工作、代码、研究、分析、工具调用&lt;/td&gt;
          &lt;td&gt;比 Instant 更重，但能力更强&lt;/td&gt;
          &lt;td&gt;Plus、Pro、Business、Enterprise&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Instant&lt;/td&gt;
          &lt;td&gt;快速默认模型，替代 GPT-5.3 Instant&lt;/td&gt;
          &lt;td&gt;日常问答、写作、总结、轻量代码、快速查询&lt;/td&gt;
          &lt;td&gt;最快、最省额度&lt;/td&gt;
          &lt;td&gt;面向所有 ChatGPT 用户逐步推出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Thinking&lt;/td&gt;
          &lt;td&gt;深度推理模式&lt;/td&gt;
          &lt;td&gt;难题、长上下文分析、复杂代码、研究、文档密集任务&lt;/td&gt;
          &lt;td&gt;较慢，但推理更稳&lt;/td&gt;
          &lt;td&gt;付费用户可手动选择&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Pro&lt;/td&gt;
          &lt;td&gt;更高强度的研究级模式&lt;/td&gt;
          &lt;td&gt;高风险/高精度任务：法律、商业、教育、数据科学、科研分析&lt;/td&gt;
          &lt;td&gt;最慢、最重，追求质量&lt;/td&gt;
          &lt;td&gt;Pro、Business、Enterprise、Edu&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只想记一个选择规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;日常快速任务&lt;/strong&gt;：用 &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复杂推理和代码分析&lt;/strong&gt;：用 &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特别难、特别重要、需要更全面严谨&lt;/strong&gt;：用 &lt;code&gt;GPT-5.5 Pro&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;gpt-55-是什么&#34;&gt;GPT-5.5 是什么
&lt;/h2&gt;&lt;p&gt;单独说 &lt;code&gt;GPT-5.5&lt;/code&gt; 时，通常是在说 GPT-5.5 这一代主模型能力，而不是某一个固定按钮。&lt;/p&gt;
&lt;p&gt;OpenAI 对 GPT-5.5 的定位是“面向真实工作的更强模型”。它重点提升的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agentic coding；&lt;/li&gt;
&lt;li&gt;复杂代码调试；&lt;/li&gt;
&lt;li&gt;研究和资料综合；&lt;/li&gt;
&lt;li&gt;文档、表格、演示文稿生成；&lt;/li&gt;
&lt;li&gt;计算机使用和跨工具工作；&lt;/li&gt;
&lt;li&gt;长任务中的持续推理和自我检查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 ChatGPT 里，用户看到的不是一个笼统的 &lt;code&gt;GPT-5.5&lt;/code&gt; 按钮，而是更具体的 &lt;code&gt;Instant&lt;/code&gt;、&lt;code&gt;Thinking&lt;/code&gt;、&lt;code&gt;Pro&lt;/code&gt;。所以如果有人说“我在用 GPT-5.5”，最好再问一句：是 Instant、Thinking，还是 Pro？&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-instant默认快速日常使用&#34;&gt;GPT-5.5 Instant：默认、快速、日常使用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 是新的快速默认模型。OpenAI 官方说明里，它开始替代 &lt;code&gt;GPT-5.3 Instant&lt;/code&gt;，成为 ChatGPT 的默认模型，并在 API 中作为 &lt;code&gt;chat-latest&lt;/code&gt; 提供。&lt;/p&gt;
&lt;p&gt;它适合这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常聊天；&lt;/li&gt;
&lt;li&gt;快速问答；&lt;/li&gt;
&lt;li&gt;普通写作；&lt;/li&gt;
&lt;li&gt;总结文章；&lt;/li&gt;
&lt;li&gt;改写邮件；&lt;/li&gt;
&lt;li&gt;轻量代码解释；&lt;/li&gt;
&lt;li&gt;简单表格和清单；&lt;/li&gt;
&lt;li&gt;不需要长时间推理的任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instant 的核心优势是速度和默认可用性。你不需要每次都手动选择推理模式，也不需要为普通问题付出更高延迟。&lt;/p&gt;
&lt;p&gt;它还有一个变化：OpenAI 强调 GPT-5.5 Instant 的回答更清晰、更简洁，并且个性化能力更强。对普通用户来说，这意味着它更适合“每天一直开着用”。&lt;/p&gt;
&lt;p&gt;需要注意的是，Instant 不是“最强模式”。遇到复杂数学、长代码、架构设计、多文件分析、严肃研究时，它可能会自动切换到 Thinking，也可能需要你手动选择 Thinking。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-thinking复杂任务的主力&#34;&gt;GPT-5.5 Thinking：复杂任务的主力
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; 是更适合复杂任务的推理模式。&lt;/p&gt;
&lt;p&gt;它适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码调试；&lt;/li&gt;
&lt;li&gt;架构设计；&lt;/li&gt;
&lt;li&gt;多步骤推理；&lt;/li&gt;
&lt;li&gt;长文档分析；&lt;/li&gt;
&lt;li&gt;学术资料整理；&lt;/li&gt;
&lt;li&gt;商业方案推演；&lt;/li&gt;
&lt;li&gt;数据分析解释；&lt;/li&gt;
&lt;li&gt;需要比较、权衡、验证的任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thinking 的特点是会花更多时间推理。OpenAI Help Center 提到，当 GPT-5.5 Thinking 或 GPT-5.5 Pro 开始推理时，可能会先显示一个简短 preamble，说明它打算怎么做。用户也可以在模型还在 thinking 时追加指令，提前调整方向。&lt;/p&gt;
&lt;p&gt;在 ChatGPT 里，手动选择 Thinking 时，还可以调整 thinking time。官方说明中，Plus 和 Business 用户可以使用 &lt;code&gt;Standard&lt;/code&gt; 和 &lt;code&gt;Extended&lt;/code&gt;；Pro 用户还会有 &lt;code&gt;Light&lt;/code&gt; 和 &lt;code&gt;Heavy&lt;/code&gt; 等更多选项。&lt;/p&gt;
&lt;p&gt;我的理解是：Thinking 是“认真干活”的默认选择。只要任务涉及多步骤、长上下文或高准确性要求，就比 Instant 更合适。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-pro研究级更重更严谨&#34;&gt;GPT-5.5 Pro：研究级、更重、更严谨
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 是面向更难问题和更高精度工作的模式。&lt;/p&gt;
&lt;p&gt;它适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;法律材料分析；&lt;/li&gt;
&lt;li&gt;商业研究；&lt;/li&gt;
&lt;li&gt;教育和课程设计；&lt;/li&gt;
&lt;li&gt;数据科学；&lt;/li&gt;
&lt;li&gt;科研资料综合；&lt;/li&gt;
&lt;li&gt;高风险决策前的深度审阅；&lt;/li&gt;
&lt;li&gt;多文档、多约束、多轮验证任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 在 GPT-5.5 发布说明中提到，早期测试者认为 GPT-5.5 Pro 相比 GPT-5.4 Pro，在完整性、结构性、准确性、相关性和实用性上都有明显提升，尤其在商业、法律、教育和数据科学领域表现更强。&lt;/p&gt;
&lt;p&gt;Pro 的缺点也很明显：它更慢、更重，不适合每个小问题都用。它更像“专家审阅/研究伙伴”，而不是日常聊天入口。&lt;/p&gt;
&lt;p&gt;另外，Pro 在工具支持上有特殊限制。OpenAI Help Center 写明，Apps、Memory、Canvas 和图像生成不适用于 Pro。如果你的任务需要这些 ChatGPT 功能，可能要用 Instant 或 Thinking。&lt;/p&gt;
&lt;h2 id=&#34;工具支持有什么不同&#34;&gt;工具支持有什么不同
&lt;/h2&gt;&lt;p&gt;根据 OpenAI Help Center，&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 和 &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; 支持 ChatGPT 的常用工具，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web search；&lt;/li&gt;
&lt;li&gt;Data analysis；&lt;/li&gt;
&lt;li&gt;Image analysis；&lt;/li&gt;
&lt;li&gt;File analysis；&lt;/li&gt;
&lt;li&gt;Canvas；&lt;/li&gt;
&lt;li&gt;Image generation；&lt;/li&gt;
&lt;li&gt;Memory；&lt;/li&gt;
&lt;li&gt;Custom Instructions。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 更偏研究级推理，但不是所有 ChatGPT 工具都可用。尤其要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apps 不可用；&lt;/li&gt;
&lt;li&gt;Memory 不可用；&lt;/li&gt;
&lt;li&gt;Canvas 不可用；&lt;/li&gt;
&lt;li&gt;图像生成不可用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以选择模型时，不只看“哪个更聪明”，还要看你要用哪些工具。&lt;/p&gt;
&lt;h2 id=&#34;上下文窗口有什么区别&#34;&gt;上下文窗口有什么区别
&lt;/h2&gt;&lt;p&gt;官方 Help Center 给出的 ChatGPT 上下文窗口说明大致是：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;上下文窗口&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Instant&lt;/td&gt;
          &lt;td&gt;Free：16K；Plus/Business：32K；Pro/Enterprise：128K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Thinking&lt;/td&gt;
          &lt;td&gt;付费档手动选择时通常为 256K；Pro 档可到 400K&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通聊天和短文档，Instant 足够；&lt;/li&gt;
&lt;li&gt;多文件、多轮研究、长代码库分析，Thinking 更合适；&lt;/li&gt;
&lt;li&gt;特别长、特别复杂的高精度任务，Pro 用户可以利用更大的上下文和更重推理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;怎么选&#34;&gt;怎么选
&lt;/h2&gt;&lt;h3 id=&#34;日常问答&#34;&gt;日常问答
&lt;/h3&gt;&lt;p&gt;用 &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它速度快，足够聪明，适合随手问、快速写、快速改。&lt;/p&gt;
&lt;h3 id=&#34;写文章总结改邮件&#34;&gt;写文章、总结、改邮件
&lt;/h3&gt;&lt;p&gt;优先用 &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果文章很长、需要结构重写、需要多轮校对，再切到 &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;写代码和调试&#34;&gt;写代码和调试
&lt;/h3&gt;&lt;p&gt;简单代码解释用 &lt;code&gt;Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;多文件调试、架构设计、复杂报错分析，用 &lt;code&gt;Thinking&lt;/code&gt;。如果是非常棘手的长期工程问题，可以考虑 &lt;code&gt;Pro&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;研究和资料分析&#34;&gt;研究和资料分析
&lt;/h3&gt;&lt;p&gt;普通资料整理用 &lt;code&gt;Thinking&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果是法律、商业、科研、数据科学这类高精度任务，用 &lt;code&gt;Pro&lt;/code&gt; 更合适。&lt;/p&gt;
&lt;h3 id=&#34;需要图像生成canvasmemory&#34;&gt;需要图像生成、Canvas、Memory
&lt;/h3&gt;&lt;p&gt;优先用 &lt;code&gt;Instant&lt;/code&gt; 或 &lt;code&gt;Thinking&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;不要默认选 &lt;code&gt;Pro&lt;/code&gt;，因为 Pro 不支持部分 ChatGPT 工具。&lt;/p&gt;
&lt;h2 id=&#34;简短结论&#34;&gt;简短结论
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 是日常默认模型，快、清晰、省额度，适合多数普通任务。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; 是复杂任务主力，适合代码、研究、长文档、分析和多步骤推理。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 是高精度研究模式，适合更难、更重要、更需要严谨性的任务，但工具支持和速度都更受限制。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; 本身更像这一代模型的总称。真正选择时，要看你在 ChatGPT 里选的是 &lt;code&gt;Instant&lt;/code&gt;、&lt;code&gt;Thinking&lt;/code&gt; 还是 &lt;code&gt;Pro&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GPT-5.5 Instant 发布说明：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/gpt-5-5-instant/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://openai.com/index/gpt-5-5-instant/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GPT-5.5 发布说明：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://openai.com/index/introducing-gpt-5-5/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GPT-5.5 in ChatGPT Help Center：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11909943-gpt-53-and-gpt-55-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/11909943-gpt-53-and-gpt-55-in-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Pixelle-Video：一句主题生成短视频的开源 AI 引擎</title>
        <link>https://knightli.com/2026/05/07/pixelle-video-ai-short-video-engine/</link>
        <pubDate>Thu, 07 May 2026 20:25:17 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/07/pixelle-video-ai-short-video-engine/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AIDC-AI/Pixelle-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pixelle-Video&lt;/a&gt; 是 AIDC-AI 开源的全自动短视频生成引擎。它的目标很直白：用户输入一个主题，系统自动完成视频文案、AI 配图或视频、语音解说、背景音乐和最终合成。&lt;/p&gt;
&lt;p&gt;这类工具适合短视频批量创作、知识科普、口播内容、小说解说、历史文化类视频和自媒体素材实验。它不是单一的“文生视频模型”，而是把多种 AI 能力接成一条生产流水线。&lt;/p&gt;
&lt;h2 id=&#34;它能自动做什么&#34;&gt;它能自动做什么
&lt;/h2&gt;&lt;p&gt;Pixelle-Video 的默认流程可以概括为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;输入主题或固定文案；&lt;/li&gt;
&lt;li&gt;由大语言模型生成解说词；&lt;/li&gt;
&lt;li&gt;根据分镜规划生成配图或视频素材；&lt;/li&gt;
&lt;li&gt;使用 TTS 生成语音解说；&lt;/li&gt;
&lt;li&gt;添加背景音乐；&lt;/li&gt;
&lt;li&gt;套用视频模板并合成最终成片。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;README 中给出的流程是“文案生成 → 配图规划 → 逐帧处理 → 视频合成”。这种模块化设计的好处是清晰：每一步都可以替换模型、调整参数或改用自定义工作流。&lt;/p&gt;
&lt;h2 id=&#34;功能亮点&#34;&gt;功能亮点
&lt;/h2&gt;&lt;p&gt;项目支持的能力比较完整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 智能文案：根据主题自动生成视频解说词；&lt;/li&gt;
&lt;li&gt;AI 配图：为每句话或每个分镜生成插图；&lt;/li&gt;
&lt;li&gt;AI 视频生成：支持接入 WAN 2.1 等视频生成模型；&lt;/li&gt;
&lt;li&gt;TTS 语音：支持 Edge-TTS、Index-TTS 等方案；&lt;/li&gt;
&lt;li&gt;背景音乐：可以使用内置 BGM，也可以放入自定义音乐；&lt;/li&gt;
&lt;li&gt;多尺寸输出：支持竖屏、横屏等不同视频比例；&lt;/li&gt;
&lt;li&gt;多模型选择：可接入 GPT、通义千问、DeepSeek、Ollama 等；&lt;/li&gt;
&lt;li&gt;ComfyUI 工作流：可以使用预置工作流，也可以替换生图、TTS、视频生成等环节。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最近更新里还提到动作迁移、数字人口播、图生视频、多语言 TTS 音色、RunningHub 支持、Windows 一键整合包等内容。这说明项目已经不只是一个脚本，而是在往完整创作工具方向发展。&lt;/p&gt;
&lt;h2 id=&#34;安装和启动方式&#34;&gt;安装和启动方式
&lt;/h2&gt;&lt;p&gt;Windows 用户可以优先看官方提供的一键整合包。它的定位是降低安装门槛，不需要手动准备 Python、uv 或 ffmpeg，解压后运行 &lt;code&gt;start.bat&lt;/code&gt;，再在浏览器里打开 Web 界面配置 API 和图像生成服务。&lt;/p&gt;
&lt;p&gt;如果从源码启动，README 给出的基本方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/AIDC-AI/Pixelle-Video.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; Pixelle-Video
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv run streamlit run web/app.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;源码方式适合 macOS、Linux 用户，也适合需要修改模板、工作流或服务配置的人。前置依赖主要是 &lt;code&gt;uv&lt;/code&gt; 和 &lt;code&gt;ffmpeg&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;配置重点&#34;&gt;配置重点
&lt;/h2&gt;&lt;p&gt;第一次使用时，关键不是先点“生成”，而是把几个外部能力接好。&lt;/p&gt;
&lt;p&gt;LLM 配置决定文案质量。你可以选择通义千问、GPT、DeepSeek、Ollama 等模型，并填写对应的 API Key、Base URL 和模型名。如果想尽量降低成本，本地 Ollama 是一个方向；如果追求稳定效果，云端模型会更省心。&lt;/p&gt;
&lt;p&gt;图像和视频生成配置决定画面质量。项目支持本地 ComfyUI，也支持 RunningHub。懂 ComfyUI 的用户可以把自己的工作流放进 &lt;code&gt;workflows/&lt;/code&gt; 目录，用来替换默认生图、视频或 TTS 流程。&lt;/p&gt;
&lt;p&gt;模板配置决定最终成片的视觉形态。项目用 &lt;code&gt;templates/&lt;/code&gt; 目录组织视频模板，静态模板、图片模板和视频模板按命名规则区分。对内容创作者来说，这比只生成一段素材更实用，因为最终交付物是可以直接预览和下载的视频。&lt;/p&gt;
&lt;h2 id=&#34;适合什么人&#34;&gt;适合什么人
&lt;/h2&gt;&lt;p&gt;Pixelle-Video 比较适合三类用户：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;短视频创作者&lt;/strong&gt;：想快速把选题变成可发布的草稿视频；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AIGC 工具玩家&lt;/strong&gt;：想把 LLM、ComfyUI、TTS 和视频合成串起来；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开发者和自动化用户&lt;/strong&gt;：想基于开源项目改模板、改工作流，甚至接入自己的素材和模型。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你只想偶尔做一个高质量精品视频，它未必能直接替代人工剪辑；但如果你想批量生成结构一致的解释类、口播类、科普类内容，它的流水线思路很有价值。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的地方&#34;&gt;需要注意的地方
&lt;/h2&gt;&lt;p&gt;这类工具的上限由多个环节共同决定。文案模型不好，内容会空；配图模型不好，画面会散；TTS 不自然，视频会显得粗糙；模板不合适，最终成片也会缺少辨识度。&lt;/p&gt;
&lt;p&gt;所以使用 Pixelle-Video 时，建议先从一个固定场景开始调试，比如“60 秒知识科普竖屏视频”。把 LLM、画面风格、TTS 音色、BGM 和模板固定下来，再逐步扩大到其他主题。&lt;/p&gt;
&lt;p&gt;另外，项目虽然支持本地免费方案，但本地方案通常需要显卡、ComfyUI 配置和模型文件。没有本地推理环境的用户，可以用云端 LLM 加 RunningHub 的方式降低部署难度，但要留意调用成本。&lt;/p&gt;
&lt;h2 id=&#34;简短判断&#34;&gt;简短判断
&lt;/h2&gt;&lt;p&gt;Pixelle-Video 的看点不只是“输入一句话生成视频”，而是它把短视频生产拆成可替换的模块：文案、画面、语音、音乐、模板和合成。对普通用户，它是一个低门槛 AI 视频工具；对开发者，它更像一个可改造的短视频自动化框架。&lt;/p&gt;
&lt;p&gt;如果你正在研究 AI 短视频流水线，或者想把 ComfyUI、TTS、LLM 和模板合成串成一个可用产品，Pixelle-Video 值得试用和拆解。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ChatGPT、Claude Code 和 Gemini 的记忆机制有什么不同？</title>
        <link>https://knightli.com/2026/05/07/chatgpt-claude-code-gemini-memory-comparison/</link>
        <pubDate>Thu, 07 May 2026 14:47:17 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/07/chatgpt-claude-code-gemini-memory-comparison/</guid>
        <description>&lt;p&gt;AI 产品里的“记忆”正在变得越来越重要。它标志着 AI 从“单次对话工具”走向“长期协作伙伴”：不用每次重新介绍背景，不用反复解释偏好，也不用让模型一次次重新理解项目。&lt;/p&gt;
&lt;p&gt;但不同产品里的记忆并不是一回事。&lt;code&gt;ChatGPT&lt;/code&gt;、&lt;code&gt;Claude Code&lt;/code&gt; 和 &lt;code&gt;Gemini&lt;/code&gt; 都在解决“AI 如何记得更久”的问题，但它们的设计目标、存储位置、透明度和适用场景差异很大。&lt;/p&gt;
&lt;p&gt;截至 2026 年 5 月 7 日，可以把它们粗略理解成三类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT 更像“个人助理记忆”。&lt;/li&gt;
&lt;li&gt;Claude Code 更像“工程项目记忆”。&lt;/li&gt;
&lt;li&gt;Gemini 更像“Google 生态上下文”。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgpt围绕人的长期偏好&#34;&gt;ChatGPT：围绕人的长期偏好
&lt;/h2&gt;&lt;p&gt;ChatGPT 的记忆机制主要面向个人协作。它关心的是“你是谁”“你偏好什么”“你长期在做什么”。&lt;/p&gt;
&lt;p&gt;OpenAI 目前把 ChatGPT 的记忆分成两类：&lt;code&gt;saved memories&lt;/code&gt; 和 &lt;code&gt;chat history&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;saved memories&lt;/code&gt; 是 ChatGPT 保存下来的重要信息，比如你的名字、偏好、目标、常用技术栈、写作习惯等。你可以直接要求它记住某件事，它也可能在对话中自动保存它认为未来有用的信息。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;chat history&lt;/code&gt; 则是让 ChatGPT 在回答时参考过去聊天。它不等于把每一段聊天都完整变成记忆，而是在需要时从过往对话里找相关上下文。&lt;/p&gt;
&lt;p&gt;所以 ChatGPT 的核心逻辑是：跨会话理解同一个用户。&lt;/p&gt;
&lt;p&gt;典型例子包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“以后给我代码示例时尽量简洁。”&lt;/li&gt;
&lt;li&gt;“我主要使用 Python 和 TypeScript。”&lt;/li&gt;
&lt;li&gt;“我正在写一个关于 AI 工具的 Hugo 博客。”&lt;/li&gt;
&lt;li&gt;“我喜欢先看结论，再看细节。”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些记忆不是绑定某个单独项目，而是跟随账号和个人使用习惯。&lt;/p&gt;
&lt;h2 id=&#34;memory-sources让个性化来源更可见&#34;&gt;Memory Sources：让个性化来源更可见
&lt;/h2&gt;&lt;p&gt;OpenAI 在 2026 年 5 月的更新中强调了 &lt;code&gt;Memory sources&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它的作用不是新增另一种记忆，而是让用户看到 ChatGPT 在个性化回答时参考了哪些来源。根据 OpenAI 帮助文档，Memory Sources 可能显示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;过去聊天。&lt;/li&gt;
&lt;li&gt;保存记忆。&lt;/li&gt;
&lt;li&gt;自定义指令。&lt;/li&gt;
&lt;li&gt;文件库中的文件。&lt;/li&gt;
&lt;li&gt;已连接 Gmail 中的邮件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中，文件和 Gmail 的可见范围会受到计划、地区和连接状态限制。OpenAI 也明确说明，Memory sources 不一定展示影响回答的所有因素，而是帮助用户理解和管理个性化。&lt;/p&gt;
&lt;p&gt;这一步很重要。因为 AI 越会“记住你”，用户越需要知道它到底根据什么在回答。否则个性化很容易变成黑箱：你感觉它好像知道你，但不知道它为什么知道。&lt;/p&gt;
&lt;p&gt;ChatGPT 的优势是跨会话、跨主题持续理解个人偏好；风险是记忆容易过期，或者用户忘了某条旧记忆还在影响回答。因此，适合定期清理 saved memories 和旧聊天。&lt;/p&gt;
&lt;h2 id=&#34;claude-code围绕代码库和工程规则&#34;&gt;Claude Code：围绕代码库和工程规则
&lt;/h2&gt;&lt;p&gt;Claude Code 的记忆机制更偏工程协作。它关心的不是“用户平时爱喝什么咖啡”，而是“这个代码库应该怎么改”。&lt;/p&gt;
&lt;p&gt;Claude Code 有两类容易混在一起的记忆：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显式项目记忆：&lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;自动项目记忆：Auto Memory。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是最基础、最稳定的项目记忆文件。它可以放在项目根目录，也可以在子目录中存在。Claude Code 会读取这些文件，把它们作为项目说明和操作规则。&lt;/p&gt;
&lt;p&gt;适合写进 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常用构建、测试、lint 命令。&lt;/li&gt;
&lt;li&gt;代码风格和命名规则。&lt;/li&gt;
&lt;li&gt;项目架构说明。&lt;/li&gt;
&lt;li&gt;模块边界和危险区域。&lt;/li&gt;
&lt;li&gt;团队约定和提交流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 &lt;code&gt;CLAUDE.md&lt;/code&gt; 放在代码库里，它可以提交到 Git，成为团队共享的 agent 说明书。这一点和 ChatGPT 的云端个人记忆完全不同。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-auto-memory自动积累项目经验&#34;&gt;Claude Code Auto Memory：自动积累项目经验
&lt;/h2&gt;&lt;p&gt;Claude Code 现在也有 &lt;code&gt;Auto Memory&lt;/code&gt;。它的目标是让 Claude 在多个会话之间自动积累项目经验，而不要求用户每次手写说明。&lt;/p&gt;
&lt;p&gt;根据 Claude Code 文档，Auto Memory 会让 Claude 在工作过程中为自己保存笔记，例如构建命令、调试发现、架构说明、代码风格偏好和工作流习惯。它不会每个会话都保存，而是判断哪些信息未来可能有用。&lt;/p&gt;
&lt;p&gt;这里有一个容易误解的点：Auto Memory 默认不是把内容写到项目根目录的 &lt;code&gt;.claude/memory.md&lt;/code&gt;。官方文档说明，每个项目会在用户目录下拥有自己的 memory 目录，路径类似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.claude/projects/&amp;lt;project&amp;gt;/memory/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;MEMORY.md&lt;/code&gt; 会在每次对话开始时加载前 200 行或前 25KB，详细内容则可能被拆到其他主题文件里。Auto Memory 文件是本机本地的 Markdown 文件，用户可以通过 &lt;code&gt;/memory&lt;/code&gt; 查看、编辑或删除。&lt;/p&gt;
&lt;p&gt;这让 Claude Code 的记忆更像“本机上的项目经验库”。它比 ChatGPT 的个人记忆更贴近代码库，也比单纯的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 更动态。&lt;/p&gt;
&lt;p&gt;但要注意，Auto Memory 是机器本地的，不会天然跟随代码库同步到其他机器或云环境。如果要团队共享稳定规则，仍然应该优先写进项目中的 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;gemini围绕-google-生态上下文&#34;&gt;Gemini：围绕 Google 生态上下文
&lt;/h2&gt;&lt;p&gt;Gemini 的记忆逻辑又不同。&lt;/p&gt;
&lt;p&gt;Gemini 也有保存信息和参考过去聊天的能力。Google 帮助文档提到，用户可以保存关于生活、工作或偏好的信息，也可以让 Gemini 在回答前参考过去聊天。Gemini 使用这些信息时，可能会在回答底部的来源区域显示 &lt;code&gt;Your saved info&lt;/code&gt; 或 &lt;code&gt;Previous chats&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;但 Gemini 的差异化不只在“保存几条偏好”，而在 Google 生态集成。&lt;/p&gt;
&lt;p&gt;在用户授权和功能可用的前提下，Gemini 可以通过连接的 Google 应用获取上下文，例如 Gmail、Google Drive、Docs、Sheets 等。它的优势不是让用户一条条教它记住什么，而是把已有的 Google 账号资料变成可检索的工作上下文。&lt;/p&gt;
&lt;p&gt;典型区别是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT 记得：“我最近在做 LTO 磁带机修复。”&lt;/li&gt;
&lt;li&gt;Gemini 可能可以从 Gmail 找到购买确认邮件，或从 Drive 里读取相关维修笔记。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当然，这不代表 Gemini 可以无条件读取你所有 Google 数据。它取决于账号类型、地区、权限、连接应用、Keep Activity 设置和具体产品可用性。对企业或学校账号，还可能受 Google Workspace 管理员控制。&lt;/p&gt;
&lt;p&gt;所以更准确地说，Gemini 的记忆不是一个单纯的“备忘录”，而是“保存信息 + 过去聊天 + Google 生态连接”的组合。&lt;/p&gt;
&lt;h2 id=&#34;三者核心差异&#34;&gt;三者核心差异
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;ChatGPT&lt;/th&gt;
          &lt;th&gt;Claude Code&lt;/th&gt;
          &lt;th&gt;Gemini&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;核心对象&lt;/td&gt;
          &lt;td&gt;人和偏好&lt;/td&gt;
          &lt;td&gt;项目和代码库&lt;/td&gt;
          &lt;td&gt;Google 账号与生态资料&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;典型记忆&lt;/td&gt;
          &lt;td&gt;偏好、背景、长期目标&lt;/td&gt;
          &lt;td&gt;架构、命令、规范、调试经验&lt;/td&gt;
          &lt;td&gt;saved info、过去聊天、Gmail/Drive/Docs 上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;存储形态&lt;/td&gt;
          &lt;td&gt;OpenAI 账户内的记忆和聊天上下文&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;MEMORY.md&lt;/code&gt;、本地 Markdown 文件&lt;/td&gt;
          &lt;td&gt;Google 账号活动、保存信息、连接应用数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;透明度&lt;/td&gt;
          &lt;td&gt;Memory sources 可见一部分来源&lt;/td&gt;
          &lt;td&gt;Markdown 文件可直接查看和编辑&lt;/td&gt;
          &lt;td&gt;通过来源提示、Gemini Apps Activity 和 Google 设置管理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;跨项目能力&lt;/td&gt;
          &lt;td&gt;强，跟随用户账号&lt;/td&gt;
          &lt;td&gt;弱，主要跟随项目或本机项目 memory&lt;/td&gt;
          &lt;td&gt;强，取决于 Google 生态资料和权限&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;团队共享&lt;/td&gt;
          &lt;td&gt;不适合直接共享&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 可随 Git 共享&lt;/td&gt;
          &lt;td&gt;主要依赖 Workspace 和权限体系&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最适合&lt;/td&gt;
          &lt;td&gt;个人偏好和长期助理&lt;/td&gt;
          &lt;td&gt;长期代码项目和 agent 协作&lt;/td&gt;
          &lt;td&gt;Google Workspace 资料检索和跨工具工作&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;该怎么选择和使用&#34;&gt;该怎么选择和使用
&lt;/h2&gt;&lt;p&gt;如果你想让 AI 记住“我是谁、我喜欢什么风格、我长期怎么工作”，ChatGPT 的记忆更合适。&lt;/p&gt;
&lt;p&gt;它适合保存个人偏好，例如写作风格、常用技术栈、回答格式、职业背景、长期项目方向。它的重点是减少自我介绍成本，让每次新对话更快进入状态。&lt;/p&gt;
&lt;p&gt;如果你想让 AI 记住“这个代码库怎么改、哪些命令能跑、哪些坑不能踩”，Claude Code 更合适。&lt;/p&gt;
&lt;p&gt;稳定规则写进 &lt;code&gt;CLAUDE.md&lt;/code&gt;，团队共享；动态经验交给 Auto Memory 辅助积累；关键决策最好仍然整理进文档或 &lt;code&gt;CLAUDE.md&lt;/code&gt;，避免只停留在本机自动记忆里。&lt;/p&gt;
&lt;p&gt;如果你的资料大量存在 Gmail、Drive、Docs、Sheets 里，Gemini 的生态上下文更有优势。&lt;/p&gt;
&lt;p&gt;它适合查找过去邮件、整理 Google Drive 文档、联动日历和办公资料。使用 Gemini 的关键，不是反复在聊天里提醒它，而是确保相关应用连接、权限和活动设置正确。&lt;/p&gt;
&lt;h2 id=&#34;一个实用分工&#34;&gt;一个实用分工
&lt;/h2&gt;&lt;p&gt;可以把三者这样分工：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT 记住“我的通用偏好”。&lt;/li&gt;
&lt;li&gt;Claude Code 记住“这个仓库的工程知识”。&lt;/li&gt;
&lt;li&gt;Gemini 检索“我在 Google 生态里的资料”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，ChatGPT 更像私人秘书，Claude Code 更像项目里的资深工程同事，Gemini 更像 Google 账号里的资料索引员。&lt;/p&gt;
&lt;p&gt;这三种记忆没有绝对高低，只是目标不同。&lt;/p&gt;
&lt;p&gt;最需要警惕的是把它们混为一谈。个人偏好不一定适合写进项目记忆；项目架构不一定适合存在云端个人记忆；Google 生态检索也不等于模型真正“长期理解”了你。&lt;/p&gt;
&lt;h2 id=&#34;简短判断&#34;&gt;简短判断
&lt;/h2&gt;&lt;p&gt;AI 记忆的下一阶段，不是简单地“记得越多越好”，而是记忆要分层、可见、可控。&lt;/p&gt;
&lt;p&gt;ChatGPT 的重点是跨会话个人化，Claude Code 的重点是代码项目连续性，Gemini 的重点是 Google 生态上下文。真正好用的长期 AI 协作，不是把所有信息塞进一个黑箱，而是让不同类型的记忆待在合适的位置。&lt;/p&gt;
&lt;p&gt;个人偏好放在个人记忆里，工程规则放在代码库里，历史资料放在原本的文档和邮件系统里。AI 要做的，是在需要时准确调用这些上下文，而不是把所有东西混成一团。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OpenAI Memory FAQ：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/8590148-memory-faq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/8590148-memory-faq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ChatGPT Release Notes：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code Memory：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/memory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gemini Saved info：&lt;a class=&#34;link&#34; href=&#34;https://support.google.com/gemini/answer/15637730&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.google.com/gemini/answer/15637730&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gemini Apps Privacy Hub：&lt;a class=&#34;link&#34; href=&#34;https://support.google.com/gemini/answer/13594961&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.google.com/gemini/answer/13594961&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ChatGPT Release Notes 更新：记忆来源、GPT-5.5 Instant 和表格插件</title>
        <link>https://knightli.com/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/2026/05/07/chatgpt-release-notes-memory-gpt-5-5-sheets/</guid>
        <description>&lt;p&gt;OpenAI 的 &lt;code&gt;ChatGPT Release Notes&lt;/code&gt; 页面在 2026 年 5 月初更新，最新一批重点包括三件事：ChatGPT 的记忆来源和个性化能力增强，&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 成为新的默认模型，以及 ChatGPT for Excel 和 Google Sheets 全球上线。&lt;/p&gt;
&lt;p&gt;这几项更新放在一起看，方向很清楚：ChatGPT 正在从一个聊天入口，继续变成更持续、更个性化、也更贴近办公场景的工作助手。&lt;/p&gt;
&lt;h2 id=&#34;memory-sources个性化要更透明&#34;&gt;Memory sources：个性化要更透明
&lt;/h2&gt;&lt;p&gt;最新更新里，最值得关注的是 &lt;code&gt;memory sources&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;OpenAI 表示，ChatGPT Plus 和 Pro 用户会开始获得更强的记忆改进。ChatGPT 可以更好地从过去聊天、保存的记忆、可用文件，以及已连接的 Gmail 应用中提取相关上下文，用来给出更贴合用户的想法、建议和下一步行动。&lt;/p&gt;
&lt;p&gt;这意味着用户不必在每次新对话里反复解释自己的项目背景、偏好、工作习惯或已有材料。对于长期写作、项目规划、资料整理、学习和团队协作来说，连续性会更强。&lt;/p&gt;
&lt;p&gt;但个性化越强，透明度就越重要。OpenAI 因此推出 memory sources，让用户看到哪些信息帮助 ChatGPT 个性化了某个回答。用户可以点击回答下方的 Sources 图标，查看相关保存记忆、过去聊天和自定义指令。Plus 和 Pro 用户还可能看到资料库中的文件，以及已连接 Gmail 中被引用的邮件。&lt;/p&gt;
&lt;p&gt;如果某些信息过期、不相关或错误，用户可以更正、删除，或标记为不相关。&lt;/p&gt;
&lt;h2 id=&#34;记忆控制仍然是关键&#34;&gt;记忆控制仍然是关键
&lt;/h2&gt;&lt;p&gt;OpenAI 也说明，memory sources 不一定展示影响回答的全部因素，后续还会继续改进这个视图。&lt;/p&gt;
&lt;p&gt;这个提醒很重要。它说明 memory sources 不是完整的“模型思考日志”，而是让用户理解个性化上下文的一种产品界面。它能提高可见性，但不能把所有影响因素都完全展开。&lt;/p&gt;
&lt;p&gt;隐私和控制方面，OpenAI 表示 memory sources 只会显示在用户自己的账户体验里。如果用户分享聊天，相关 sources 不会出现在共享聊天中。用户也可以删除聊天，使用不会使用或更新记忆、也不会出现在历史记录中的临时聊天，关闭记忆，随时断开应用连接，并管理自己的内容是否用于改进模型。&lt;/p&gt;
&lt;p&gt;这说明 ChatGPT 的个性化正在走一条更明确的路线：既要更懂用户，也要让用户知道它为什么这么回答，并保留管理入口。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-instant-成为默认模型&#34;&gt;GPT-5.5 Instant 成为默认模型
&lt;/h2&gt;&lt;p&gt;Release Notes 还确认，&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 正在作为 ChatGPT 的新默认模型推出，并替代面向所有用户的 &lt;code&gt;GPT-5.3 Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这次默认模型更新主要改善几个方面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;准确性。&lt;/li&gt;
&lt;li&gt;清晰度和简洁度。&lt;/li&gt;
&lt;li&gt;图片理解。&lt;/li&gt;
&lt;li&gt;STEM 问题回答。&lt;/li&gt;
&lt;li&gt;判断何时需要联网搜索。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 强调，GPT-5.5 Instant 在事实可靠性上更好，尤其是在准确性更重要的提示词中表现更稳。它也会给出更紧凑、更直接的回答，减少不必要的追问，降低过度格式化和无意义装饰带来的干扰。&lt;/p&gt;
&lt;p&gt;对用户来说，这类变化可能不会像新功能按钮那样显眼，但会影响每天打开 ChatGPT 时的体感：回答更少绕路，更少啰嗦，也更少在简单问题上堆格式。&lt;/p&gt;
&lt;h2 id=&#34;个性化和默认模型结合起来&#34;&gt;个性化和默认模型结合起来
&lt;/h2&gt;&lt;p&gt;GPT-5.5 Instant 对 Plus 和 Pro 网页端用户还会更有效地使用过去聊天、文件和已连接 Gmail 的上下文。&lt;/p&gt;
&lt;p&gt;这和 memory sources 是同一条产品线。模型不只是“更聪明”，还要在合适的时候知道你之前做过什么、关心什么、已经提供过哪些材料。比如继续一个项目、写一份计划、整理邮件里的信息，或根据过去偏好给出建议时，ChatGPT 可以减少重复询问。&lt;/p&gt;
&lt;p&gt;付费用户仍可在三个月内通过模型配置继续使用 GPT-5.3 Instant，之后该模型会退役。&lt;/p&gt;
&lt;h2 id=&#34;chatgpt-for-excel-和-google-sheets&#34;&gt;ChatGPT for Excel 和 Google Sheets
&lt;/h2&gt;&lt;p&gt;另一个重要更新，是 ChatGPT for Excel 和 Google Sheets 全球上线。&lt;/p&gt;
&lt;p&gt;它把 ChatGPT 放进 Microsoft Excel 和 Google Sheets 的侧边栏中，让用户可以在表格里直接构建、更新和理解数据。OpenAI 提到的场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;追踪表。&lt;/li&gt;
&lt;li&gt;预算。&lt;/li&gt;
&lt;li&gt;公式。&lt;/li&gt;
&lt;li&gt;多工作表文件。&lt;/li&gt;
&lt;li&gt;情景分析。&lt;/li&gt;
&lt;li&gt;表格清理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在可用地区和条件下，它还支持 Skills 和 apps。&lt;/p&gt;
&lt;p&gt;这类功能的意义很直接：很多办公数据并不在专门的 BI 系统里，而是在 Excel 和 Google Sheets 里。把 ChatGPT 放进表格侧边栏，比让用户复制粘贴到聊天窗口更自然，也更容易进入真实工作流。&lt;/p&gt;
&lt;h2 id=&#34;使用限制和安装方式&#34;&gt;使用限制和安装方式
&lt;/h2&gt;&lt;p&gt;Release Notes 提到，Free 和 Go 计划包含有限使用量；Plus 和 Pro 使用与 Codex 相同的 agentic 使用限制。如果用户超出计划限制，可以购买额外 credits。&lt;/p&gt;
&lt;p&gt;安装方式也比较直接：Excel 版本从 Microsoft Marketplace 安装，Google Sheets 版本从 Google Workspace Marketplace 安装，然后使用符合条件的 ChatGPT 账户登录。&lt;/p&gt;
&lt;p&gt;OpenAI 也提醒，用户在依赖公式或分析前需要检查输出。这点不能忽略。AI 可以加速表格工作，但公式、预算、财务和业务分析仍然需要人工复核。&lt;/p&gt;
&lt;h2 id=&#34;近期更新脉络&#34;&gt;近期更新脉络
&lt;/h2&gt;&lt;p&gt;如果把 4 月底到 5 月初的 release notes 放在一起看，ChatGPT 的方向更清楚。&lt;/p&gt;
&lt;p&gt;4 月 30 日，OpenAI 推出 Advanced Account Security，给个人 ChatGPT 账户提供更强的登录要求和账户保护，包括 passkeys、安全密钥、恢复密钥、更短会话和登录通知。&lt;/p&gt;
&lt;p&gt;4 月 28 日，模型选择入口移到输入框附近，让用户在发送消息前更容易选择模型；Thinking 和 Pro 模型的 thinking effort 控制也被放进模型选择器。&lt;/p&gt;
&lt;p&gt;4 月 22 日，ChatGPT 推出 Fast answers，用于一些不需要个性化、且模型有高置信答案的常见信息查询。Fast answers 不引用过去聊天或记忆，用户也可以在个性化设置里关闭。&lt;/p&gt;
&lt;p&gt;这些更新都围绕同一个目标：让 ChatGPT 更适合日常高频使用。该快的时候快，该个性化的时候个性化，该需要安全保护和可见控制的时候给出入口。&lt;/p&gt;
&lt;h2 id=&#34;简短判断&#34;&gt;简短判断
&lt;/h2&gt;&lt;p&gt;这次 ChatGPT Release Notes 的重点，不是单个功能，而是产品形态继续收束。&lt;/p&gt;
&lt;p&gt;GPT-5.5 Instant 提升默认回答质量，memory sources 让个性化更可见，Excel 和 Google Sheets 插件把 ChatGPT 放进办公表格，Advanced Account Security 和模型选择改动则补上账户安全和操作体验。&lt;/p&gt;
&lt;p&gt;ChatGPT 正在变成更长期的工作层：它会记住更多上下文，进入更多工具，也承担更多日常任务。接下来真正需要观察的是，个性化透明度是否足够清楚，办公插件在真实复杂表格里是否稳定，以及用户能否在便利和控制之间保持平衡。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ChatGPT Release Notes：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Grok Imagine Quality Mode API：xAI 想把图像生成推向企业工作流</title>
        <link>https://knightli.com/2026/05/07/grok-imagine-quality-mode-api/</link>
        <pubDate>Thu, 07 May 2026 14:27:29 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/07/grok-imagine-quality-mode-api/</guid>
        <description>&lt;p&gt;xAI 在 2026 年 5 月 6 日发布了 &lt;code&gt;Grok Imagine Quality Mode API&lt;/code&gt;。这是 Grok Imagine 面向企业开发者和团队开放的图像生成与编辑质量模式，主打更高真实感、更强文字渲染和更好的创意控制。&lt;/p&gt;
&lt;p&gt;这次更新的重点不是再做一个普通文生图入口，而是把 Grok Imagine 放进企业内容生产工作流：产品图、营销素材、广告变体、UGC 风格内容、品牌视觉和视频生成，都在它的目标范围内。&lt;/p&gt;
&lt;h2 id=&#34;quality-mode-提供了什么&#34;&gt;Quality Mode 提供了什么
&lt;/h2&gt;&lt;p&gt;xAI 对 Quality Mode 的定位很明确：更真实、更会写字、更听提示词。&lt;/p&gt;
&lt;p&gt;第一是真实感提升。官方展示的示例强调自然皮肤、材质细节、光线、场景氛围和摄影质感。对商业图像来说，这很重要。很多图像模型看起来已经“漂亮”，但一旦放进广告、产品页或社交媒体素材，就会暴露人物皮肤、衣物纹理、手部、空间关系和光影不自然的问题。&lt;/p&gt;
&lt;p&gt;第二是文字渲染增强。xAI 特别提到 Quality Mode 支持更干净的多语言文本能力。图像模型能不能稳定生成文字，是商业落地的一道门槛。菜单、海报、包装、广告、按钮、标牌、社交图文，只要文字错一个字，素材就很难直接使用。&lt;/p&gt;
&lt;p&gt;第三是创意控制。官方描述包括更紧的提示词跟随、更深入的场景和世界理解，以及更一致的品牌结果。换句话说，Quality Mode 想解决的不只是“生成一张好看的图”，而是“按团队的要求生成可控、可复用、可迭代的图”。&lt;/p&gt;
&lt;h2 id=&#34;面向企业而不只是个人玩图&#34;&gt;面向企业，而不只是个人玩图
&lt;/h2&gt;&lt;p&gt;这次公告中，xAI 把企业使用场景放在了很靠前的位置。&lt;/p&gt;
&lt;p&gt;最典型的是产品可视化和营销素材。企业可以用它生成写实产品渲染、主视觉图、社交媒体素材、图标和广告变体。相比个人用户随手生成一张图片，企业更关心三个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;画面是否足够真实，能不能接近商业摄影或高质量渲染。&lt;/li&gt;
&lt;li&gt;是否能遵守品牌风格，包括颜色、构图、文字位置和视觉语气。&lt;/li&gt;
&lt;li&gt;是否能批量生成变体，用于 A/B 测试、活动物料和不同渠道投放。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quality Mode 的价值就在这里。它不是取代设计师，而是把很多“先出十几版方向看看”的工作压缩到更短时间内。团队可以先用 API 生成候选方案，再由设计、市场和品牌人员筛选、修正和落地。&lt;/p&gt;
&lt;h2 id=&#34;图像编辑比文生图更关键&#34;&gt;图像编辑比文生图更关键
&lt;/h2&gt;&lt;p&gt;公告里不只展示了从零生成图片，也展示了基于参考图继续编辑的流程。例如把产品放到宣传册上、保持 T 恤图案、让同一个人物出现在不同 UGC 场景里。&lt;/p&gt;
&lt;p&gt;这类能力对企业更有用。因为真实业务里，素材通常不是凭空开始的，而是已经有产品图、品牌规范、人物参考、包装设计或活动主题。AI 工具如果只能随机生成漂亮图，价值有限；如果能围绕已有素材做稳定变体，才更容易进入工作流。&lt;/p&gt;
&lt;p&gt;这也是图像生成模型竞争的一个方向：从“提示词抽卡”走向“可控编辑”。用户要的不只是惊喜，而是可预测的修改结果。&lt;/p&gt;
&lt;h2 id=&#34;ugc-风格内容的商业意义&#34;&gt;UGC 风格内容的商业意义
&lt;/h2&gt;&lt;p&gt;xAI 还展示了 UGC 风格内容，比如让同一人物穿着指定 T 恤、吃生日蛋糕、在电梯里自拍。&lt;/p&gt;
&lt;p&gt;这背后对应的是广告和社交内容生产的变化。很多品牌不再只需要精修棚拍图，也需要看起来更自然、更像用户真实分享的内容。UGC 风格素材适合短视频封面、信息流广告、社交平台帖子和创作者合作预览。&lt;/p&gt;
&lt;p&gt;当然，这类能力也意味着企业需要更清楚地处理肖像授权、品牌授权和内容标注问题。AI 可以降低制作门槛，但不代表素材使用风险自动消失。尤其是涉及真人形象、相似人物、商品标识和广告投放时，合规仍然要提前设计。&lt;/p&gt;
&lt;h2 id=&#34;文字世界理解和视觉范围&#34;&gt;文字、世界理解和视觉范围
&lt;/h2&gt;&lt;p&gt;Quality Mode 还强调世界理解和广泛视觉风格。&lt;/p&gt;
&lt;p&gt;官方示例包括在蛋糕上用文字解释亚历山大大帝、生成电影感野餐场景、制作 UI 风格图标等。这些例子说明 xAI 想让 Grok Imagine 不局限于单一审美，而是覆盖写实摄影、商业广告、产品渲染、图标、海报和视频素材前置图。&lt;/p&gt;
&lt;p&gt;这里最值得关注的是文字和世界理解的结合。很多图像任务不是简单画物体，而是要求模型理解场景里的关系、用途、历史事实、文字含义和视觉呈现。模型越能理解这些约束，越有机会从娱乐工具变成生产工具。&lt;/p&gt;
&lt;h2 id=&#34;quality-mode-也增强视频生成&#34;&gt;Quality Mode 也增强视频生成
&lt;/h2&gt;&lt;p&gt;xAI 在公告中提到，最新图像模型与视频能力结合后，可以用于社交媒体视频资产、产品展示和广告等场景。&lt;/p&gt;
&lt;p&gt;这符合当前多模态产品的趋势：图像生成不再是孤立能力，而是视频生成、广告创意、产品演示和社交内容流水线的一环。企业可能先生成一张高质量产品图，再扩展成短视频、动效广告或多版本素材。&lt;/p&gt;
&lt;p&gt;从这个角度看，Quality Mode 的意义不只是“图片更清晰”，而是为后续视频和营销自动化提供更稳定的视觉起点。&lt;/p&gt;
&lt;h2 id=&#34;开发者如何调用&#34;&gt;开发者如何调用
&lt;/h2&gt;&lt;p&gt;官方给出的调用示例很简单，使用 &lt;code&gt;xai_sdk&lt;/code&gt; 调用 &lt;code&gt;grok-imagine-image-quality&lt;/code&gt; 模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;xai_sdk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xai_sdk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A collage of London landmarks in a stenciled street-art style&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;grok-imagine-image-quality&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这说明 Quality Mode 不是只放在 Grok 前端里的功能，而是通过 API 面向企业开发者和团队开放。对企业来说，API 形态更重要，因为它可以接入内部素材系统、广告平台、CMS、设计工具和自动化流程。&lt;/p&gt;
&lt;h2 id=&#34;简短判断&#34;&gt;简短判断
&lt;/h2&gt;&lt;p&gt;Grok Imagine Quality Mode API 的核心方向，是把图像生成从“好玩”推进到“可用于企业生产”。&lt;/p&gt;
&lt;p&gt;它强调真实感、文字渲染、提示词跟随、品牌一致性、图像编辑、UGC 风格和视频生成衔接。每一项都指向同一个目标：让团队能批量、稳定、可控地生产视觉素材。&lt;/p&gt;
&lt;p&gt;接下来真正要看的，不只是单张图片效果有多惊艳，而是三件事：文字渲染在复杂场景中是否稳定，参考图编辑是否能保持身份和品牌一致性，以及 API 在大规模生成时的速度、成本和可控性。只有这些环节站住，Grok Imagine 才能真正进入企业内容生产流水线。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;xAI 公告：&lt;a class=&#34;link&#34; href=&#34;https://x.ai/news/grok-imagine-quality-mode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://x.ai/news/grok-imagine-quality-mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;API 文档：&lt;a class=&#34;link&#34; href=&#34;https://docs.x.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.x.ai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek V4 Flash 做 Godot 游戏 Demo：几毛钱能跑通到什么程度？</title>
        <link>https://knightli.com/2026/05/06/deepseek-v4-flash-godot-game-demo/</link>
        <pubDate>Wed, 06 May 2026 09:22:18 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/06/deepseek-v4-flash-godot-game-demo/</guid>
        <description>&lt;p&gt;&lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; 用来开发 Godot 游戏 Demo，到底能不能打？&lt;/p&gt;
&lt;p&gt;重点很直接：它能不能做出一个可运行、可观察、带物理效果的 Godot 小 Demo。&lt;/p&gt;
&lt;p&gt;结论先说：可以跑通，效果不算商业级，但已经足够作为玩法原型和物理交互 Demo 使用。更重要的是，成本非常低，适合快速验证想法。&lt;/p&gt;
&lt;h2 id=&#34;demo-表现&#34;&gt;Demo 表现
&lt;/h2&gt;&lt;p&gt;这个 Demo 的重点是物理交互。&lt;/p&gt;
&lt;p&gt;几个比较直观的效果包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;绳子可以被切断。&lt;/li&gt;
&lt;li&gt;箱子会掉到地上。&lt;/li&gt;
&lt;li&gt;调大质量后，箱子碰撞会更猛烈。&lt;/li&gt;
&lt;li&gt;绳子表现出比较明显的弹性。&lt;/li&gt;
&lt;li&gt;调整摩擦力和弹性后，箱子会出现明显的滑动和反弹。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从呈现效果看，它已经不是“只生成几段 Godot 脚本”那么简单，而是一个能运行、能观察物理表现的小型原型。&lt;/p&gt;
&lt;h2 id=&#34;可用程度&#34;&gt;可用程度
&lt;/h2&gt;&lt;p&gt;这个 Demo 的价值在于“能跑、能看、能改”。它不是完整游戏，也不是可以直接商业化的工程，但已经能说明几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; 能理解 Godot Demo 的基本目标。&lt;/li&gt;
&lt;li&gt;AI Agent 可以把需求转成可运行工程。&lt;/li&gt;
&lt;li&gt;Godot 物理交互这种非网页类任务，已经可以进入低成本原型阶段。&lt;/li&gt;
&lt;li&gt;对个人开发者来说，它能把“想法”快速变成“能看的东西”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果目标是做一个正式游戏，它当然还不够；但如果目标是验证“这个玩法有没有意思”“物理效果大概能不能做出来”，这个 Demo 已经可用。&lt;/p&gt;
&lt;h2 id=&#34;成本意义&#34;&gt;成本意义
&lt;/h2&gt;&lt;p&gt;最值得关注的不是画面有多精致，而是成本。&lt;/p&gt;
&lt;p&gt;如果一个 Godot 物理 Demo 只需要几毛钱级别的模型成本，就能得到一个可运行版本，那么它的意义就不是替代专业游戏开发，而是大幅降低原型试错成本。&lt;/p&gt;
&lt;p&gt;以前想验证一个小游戏想法，至少需要自己熟悉 Godot、写脚本、调场景、调物理参数。现在可以先让 AI Agent 生成一个可运行版本，再由人判断方向对不对。&lt;/p&gt;
&lt;p&gt;对独立开发者来说，这类低成本试错很有用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速验证玩法概念。&lt;/li&gt;
&lt;li&gt;生成临时 Demo 给别人看。&lt;/li&gt;
&lt;li&gt;探索 Godot API 和物理系统。&lt;/li&gt;
&lt;li&gt;把想法转成能跑的初版工程。&lt;/li&gt;
&lt;li&gt;在不确定方向前减少手写代码成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deepseek-v4-flash-的表现&#34;&gt;DeepSeek V4 Flash 的表现
&lt;/h2&gt;&lt;p&gt;比较值得注意的是，使用的是 &lt;code&gt;DeepSeek V4 Flash&lt;/code&gt;，而不是更贵、更重的旗舰模型。&lt;/p&gt;
&lt;p&gt;它在“低成本原型”这个定位上表现不错。它不是最强、最稳、最适合交付生产工程的模型，但在预算敏感、想快速试一下方向的场景里，很有吸引力。&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DeepSeek V4 Flash + Agent + Godot&lt;/code&gt; 更适合下面这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小型玩法原型。&lt;/li&gt;
&lt;li&gt;物理效果 Demo。&lt;/li&gt;
&lt;li&gt;UI 或交互概念验证。&lt;/li&gt;
&lt;li&gt;教学示例。&lt;/li&gt;
&lt;li&gt;辅助理解 Godot 项目结构。&lt;/li&gt;
&lt;li&gt;生成第一版可运行工程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合直接承担这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大型游戏架构。&lt;/li&gt;
&lt;li&gt;复杂角色控制器。&lt;/li&gt;
&lt;li&gt;网络同步。&lt;/li&gt;
&lt;li&gt;商业项目核心代码。&lt;/li&gt;
&lt;li&gt;高精度物理模拟。&lt;/li&gt;
&lt;li&gt;不经过人工测试的自动提交。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，它适合做“第一稿”和“试验场”，不适合当生产工程负责人。&lt;/p&gt;
&lt;h2 id=&#34;这说明了什么&#34;&gt;这说明了什么
&lt;/h2&gt;&lt;p&gt;这说明，AI 编程正在从网页、脚本、后端接口，继续向游戏开发和交互原型扩展。&lt;/p&gt;
&lt;p&gt;过去游戏开发的门槛很高，尤其是引擎、脚本、资源管理和物理系统混在一起时，新手很容易卡住。现在模型加 Agent 工具，可以先把工程搭起来，让开发者把注意力放在玩法判断和效果调优上。&lt;/p&gt;
&lt;p&gt;它带来的变化可能有三点：&lt;/p&gt;
&lt;p&gt;第一，游戏原型会更便宜。很多想法不用等到完整开发阶段才验证，可以先得到可运行 Demo。&lt;/p&gt;
&lt;p&gt;第二，独立开发者会更敢尝试。不会 Godot 的人，也可以借助 AI 先摸到项目结构和基本流程。&lt;/p&gt;
&lt;p&gt;第三，模型稳定性会变得更重要。游戏开发不是只要代码能跑，还要效果合理、手感正常、参数可控。未来谁能更好地结合实际画面和运行状态，谁就更适合做这类任务。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Flash 做 Godot Demo，可以概括成一句话：&lt;strong&gt;效果不完美，但足够便宜、足够快，也足够适合做原型。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它离商业游戏还很远，但如果目标是用极低成本验证一个小游戏想法，它已经很有价值。&lt;/p&gt;
&lt;p&gt;对个人开发者来说，最现实的用法不是把游戏全交给 AI，而是让 AI 先给出能跑的工程，再由人负责判断、取舍和打磨。这样用，DeepSeek V4 Flash 这类低成本模型反而会很香。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CC Switch：一个桌面工具统一管理 Claude Code、Codex、Gemini CLI 和 OpenClaw</title>
        <link>https://knightli.com/2026/05/06/cc-switch-ai-cli-manager/</link>
        <pubDate>Wed, 06 May 2026 09:03:08 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/06/cc-switch-ai-cli-manager/</guid>
        <description>&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 是一个面向 AI 编程重度用户的桌面管理工具。它要解决的问题很直接：现在很多人同时使用 &lt;code&gt;Claude Code&lt;/code&gt;、&lt;code&gt;Codex&lt;/code&gt;、&lt;code&gt;Gemini CLI&lt;/code&gt;、&lt;code&gt;OpenCode&lt;/code&gt;、&lt;code&gt;OpenClaw&lt;/code&gt;，但每个工具都有自己的配置格式、Provider 写法、MCP 配置和 Skills 管理方式。&lt;/p&gt;
&lt;p&gt;当你只用一个工具时，手动改配置还能忍；一旦多个工具混用，再加上官方账号、第三方 API、中转服务、本地模型和团队共享配置，手动编辑 JSON、TOML、&lt;code&gt;.env&lt;/code&gt; 很快就会变成一件很烦的事。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的定位，就是把这些分散配置收进一个跨平台桌面应用里。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;现代 AI 编程工具越来越像“命令行里的开发同事”，但每个工具的生态还没有完全统一。&lt;/p&gt;
&lt;p&gt;常见痛点包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 配置格式不同。&lt;/li&gt;
&lt;li&gt;切换 API Provider 时，要反复改配置文件。&lt;/li&gt;
&lt;li&gt;MCP server 在不同工具之间重复配置。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;GEMINI.md&lt;/code&gt; 这类提示文件难以统一维护。&lt;/li&gt;
&lt;li&gt;Skills 安装、同步、备份和卸载缺少一个集中入口。&lt;/li&gt;
&lt;li&gt;多个账号、多个 relay、多个模型服务切换很容易搞混。&lt;/li&gt;
&lt;li&gt;配置文件手工修改出错后，排查成本很高。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的思路是：不要让用户记住每个工具的配置细节，而是用一个统一界面管理 Provider、MCP、Prompts、Skills、Sessions 和代理。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些工具&#34;&gt;支持哪些工具
&lt;/h2&gt;&lt;p&gt;README 中列出的核心支持对象包括五类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Codex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemini CLI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenCode&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenClaw&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这几个工具本身定位相近，都是围绕 AI 编程、Agent 工作流和命令行协作展开。但它们的配置体系不同，&lt;code&gt;CC Switch&lt;/code&gt; 的价值就在于把这些差异包装起来。&lt;/p&gt;
&lt;p&gt;对经常比较不同 AI 编程工具的人来说，这比每次手动翻配置文件省心很多。&lt;/p&gt;
&lt;h2 id=&#34;provider-管理&#34;&gt;Provider 管理
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的第一层能力是 Provider 管理。&lt;/p&gt;
&lt;p&gt;它内置了 50 多个 Provider 预设，README 中提到的方向包括 AWS Bedrock、NVIDIA NIM，以及各种社区 relay。用户可以复制 API key，一键导入，然后在界面中切换。&lt;/p&gt;
&lt;p&gt;实用点主要有几个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一键添加 Provider。&lt;/li&gt;
&lt;li&gt;Provider 拖拽排序。&lt;/li&gt;
&lt;li&gt;系统托盘快速切换。&lt;/li&gt;
&lt;li&gt;Provider 导入和导出。&lt;/li&gt;
&lt;li&gt;部分通用 Provider 可同步到多个应用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对很多人来说，这个功能已经足够有吸引力。因为 AI 编程工具的日常使用，经常不是“模型不会用”，而是“今天这个 key 用哪个工具、哪个 endpoint、哪个账号”容易乱。&lt;/p&gt;
&lt;h2 id=&#34;本地代理与故障切换&#34;&gt;本地代理与故障切换
&lt;/h2&gt;&lt;p&gt;除了写配置文件，&lt;code&gt;CC Switch&lt;/code&gt; 还提供本地代理模式。&lt;/p&gt;
&lt;p&gt;这个能力的重点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;热切换 Provider。&lt;/li&gt;
&lt;li&gt;格式转换。&lt;/li&gt;
&lt;li&gt;自动故障转移。&lt;/li&gt;
&lt;li&gt;熔断器。&lt;/li&gt;
&lt;li&gt;Provider 健康检查。&lt;/li&gt;
&lt;li&gt;请求修正。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，它不只是把配置写进目标工具，还可以在中间加一层本地代理，让不同工具通过代理访问模型服务。&lt;/p&gt;
&lt;p&gt;这对多 Provider 用户很有用：一个服务挂了，可以切到另一个；一个模型贵，可以换成更便宜的；某个请求格式不兼容，也可以通过代理层做适配。&lt;/p&gt;
&lt;h2 id=&#34;mcpprompts-和-skills&#34;&gt;MCP、Prompts 和 Skills
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 比较重要的第二层能力，是统一管理 MCP、Prompts 和 Skills。&lt;/p&gt;
&lt;h3 id=&#34;mcp&#34;&gt;MCP
&lt;/h3&gt;&lt;p&gt;它提供统一 MCP 面板，可以在多个应用之间管理 MCP server，并支持双向同步和 Deep Link 导入。&lt;/p&gt;
&lt;p&gt;这对正在用 MCP 的用户很实用。因为 MCP server 一多，配置很容易分散在不同客户端里。统一面板可以减少重复配置，也方便迁移。&lt;/p&gt;
&lt;h3 id=&#34;prompts&#34;&gt;Prompts
&lt;/h3&gt;&lt;p&gt;Prompts 部分支持 Markdown 编辑，并且可以在不同工具之间同步对应文件，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GEMINI.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些文件本质上都是给 Agent 的项目说明书。统一管理后，可以更容易维护团队规则、项目约定和全局提示。&lt;/p&gt;
&lt;h3 id=&#34;skills&#34;&gt;Skills
&lt;/h3&gt;&lt;p&gt;Skills 支持从 GitHub 仓库或 ZIP 文件一键安装，也支持自定义仓库管理、符号链接和文件复制。&lt;/p&gt;
&lt;p&gt;如果你同时使用 Claude Code、Codex、OpenClaw 这类工具，Skills 很容易变成一堆散落在不同目录的文件。&lt;code&gt;CC Switch&lt;/code&gt; 把它们集中起来，能降低维护成本。&lt;/p&gt;
&lt;h2 id=&#34;会话与工作区&#34;&gt;会话与工作区
&lt;/h2&gt;&lt;p&gt;README 还提到 Session Manager 和 Workspace 相关能力。&lt;/p&gt;
&lt;p&gt;它可以浏览、搜索和恢复多个应用里的会话历史。对长期使用 AI 编程工具的人来说，会话管理其实很重要：很多有价值的上下文、调试过程、方案比较，都埋在旧对话里。&lt;/p&gt;
&lt;p&gt;此外，它还为 OpenClaw 提供 Workspace editor，可以编辑 &lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;SOUL.md&lt;/code&gt; 等 agent 文件，并带 Markdown 预览。&lt;/p&gt;
&lt;p&gt;这说明 &lt;code&gt;CC Switch&lt;/code&gt; 不只是一个“切换 key 的小工具”，而是在往 AI Agent 工作台方向扩展。&lt;/p&gt;
&lt;h2 id=&#34;云同步与数据存储&#34;&gt;云同步与数据存储
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 支持通过 Dropbox、OneDrive、iCloud、NAS 或 WebDAV 同步 Provider 数据。&lt;/p&gt;
&lt;p&gt;本地数据存储方式也比较清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据库：&lt;code&gt;~/.cc-switch/cc-switch.db&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;本地设置：&lt;code&gt;~/.cc-switch/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;自动备份：&lt;code&gt;~/.cc-switch/backups/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Skills：&lt;code&gt;~/.cc-switch/skills/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Skill 备份：&lt;code&gt;~/.cc-switch/skill-backups/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它使用 SQLite 作为主要数据源，并强调原子写入和自动备份，目标是避免配置文件在切换或写入时损坏。&lt;/p&gt;
&lt;p&gt;这个设计对重度用户很关键。因为一旦配置管理工具本身把配置写坏，影响的是所有 AI 编程工具。&lt;/p&gt;
&lt;h2 id=&#34;安装方式&#34;&gt;安装方式
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 是跨平台桌面应用，基于 Tauri 2 构建。&lt;/p&gt;
&lt;p&gt;系统要求大致如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows：Windows 10 及以上&lt;/li&gt;
&lt;li&gt;macOS：macOS 12 Monterey 及以上&lt;/li&gt;
&lt;li&gt;Linux：Ubuntu 22.04+、Debian 11+、Fedora 34+ 等主流发行版&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows 用户可以下载 &lt;code&gt;.msi&lt;/code&gt; 安装包或便携版压缩包。&lt;/p&gt;
&lt;p&gt;macOS 用户可以用 Homebrew：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew tap farion1231/ccswitch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --cask cc-switch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更新：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew upgrade --cask cc-switch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux 用户可以选择 &lt;code&gt;.deb&lt;/code&gt;、&lt;code&gt;.rpm&lt;/code&gt; 或 AppImage。Arch Linux 用户也可以通过 &lt;code&gt;paru -S cc-switch-bin&lt;/code&gt; 安装。&lt;/p&gt;
&lt;p&gt;截至 2026 年 5 月 6 日，仓库页面显示最新 release 为 &lt;code&gt;CC Switch v3.14.1&lt;/code&gt;，发布时间是 2026 年 4 月 23 日。&lt;/p&gt;
&lt;h2 id=&#34;技术栈&#34;&gt;技术栈
&lt;/h2&gt;&lt;p&gt;从仓库结构看，&lt;code&gt;CC Switch&lt;/code&gt; 是典型的 Tauri 桌面应用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前端：React 18、TypeScript、Vite、TailwindCSS、TanStack Query、shadcn/ui&lt;/li&gt;
&lt;li&gt;后端：Tauri 2、Rust、SQLite、Tokio&lt;/li&gt;
&lt;li&gt;测试：Vitest、MSW、Testing Library&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心设计模式包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLite 作为 Single Source of Truth。&lt;/li&gt;
&lt;li&gt;JSON 保存设备级本地设置。&lt;/li&gt;
&lt;li&gt;切换时写入目标工具的 live config。&lt;/li&gt;
&lt;li&gt;编辑当前 Provider 时从 live config 回填。&lt;/li&gt;
&lt;li&gt;使用临时文件加 rename 的方式做原子写入。&lt;/li&gt;
&lt;li&gt;数据库连接加锁，避免并发写入问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类架构说明项目并不是简单脚本，而是按长期桌面工具来设计的。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 适合下面几类用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时使用 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw。&lt;/li&gt;
&lt;li&gt;经常切换官方账号、第三方 relay、本地模型或团队 Provider。&lt;/li&gt;
&lt;li&gt;已经开始大量使用 MCP。&lt;/li&gt;
&lt;li&gt;想统一维护 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;GEMINI.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;经常安装、测试和迁移 Skills。&lt;/li&gt;
&lt;li&gt;想看不同工具的会话历史和使用情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只用一个 AI 编程工具，而且一直走官方登录，不怎么折腾 Provider、MCP 和 Skills，那它的价值可能没那么明显。&lt;/p&gt;
&lt;p&gt;但如果你已经进入“多工具、多账号、多 Provider、多项目”的状态，它能省掉很多琐碎配置工作。&lt;/p&gt;
&lt;h2 id=&#34;需要注意什么&#34;&gt;需要注意什么
&lt;/h2&gt;&lt;p&gt;这类工具很方便，但也要注意边界。&lt;/p&gt;
&lt;p&gt;第一，它会管理多个 AI CLI 的配置，因此要确认自己信任这个工具和它的写入逻辑。&lt;/p&gt;
&lt;p&gt;第二，API key、relay endpoint、MCP server 都属于敏感配置。开启云同步前，要确认同步目录和 WebDAV 服务本身安全可靠。&lt;/p&gt;
&lt;p&gt;第三，切换 Provider 后，多数工具仍然需要重启终端或 CLI 才能生效。README 中提到，Claude Code 对 Provider 数据支持热切换，但其他工具通常仍需要重启。&lt;/p&gt;
&lt;p&gt;第四，切回官方登录时，最好按项目说明添加 official provider，再重新走对应工具的登录流程。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的价值不在于又做了一个 AI 编程工具，而在于它承认了一个现实：AI 编程生态已经进入多工具并存阶段。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 各有自己的配置系统，MCP、Skills、Prompts、Provider 又在快速扩展。继续靠手动改配置，迟早会变成负担。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 把这些东西收进一个桌面应用里，让用户可以更轻松地切换 Provider、同步 MCP、管理 Skills、维护提示文件和查看会话。对重度 AI 编程用户来说，这类工具很可能会从“可选小工具”变成“日常基础设施”。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/farion1231/cc-switch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;farion1231/cc-switch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex App 保姆级上手：安装、沙盒、并行任务、Skills 与 MCP</title>
        <link>https://knightli.com/2026/05/06/codex-app-complete-guide-skills-mcp/</link>
        <pubDate>Wed, 06 May 2026 08:41:17 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/06/codex-app-complete-guide-skills-mcp/</guid>
        <description>&lt;p&gt;Codex App 可以理解成一个面向 AI 编程的任务工作台。它不是传统 IDE，也不是单纯聊天窗口，而是把多任务、项目管理、沙盒权限、Git、云端运行、插件、Skills、MCP 和自动化集中到一个界面里。&lt;/p&gt;
&lt;p&gt;如果你已经在用 Codex CLI、Claude Code、Cursor 或其他 coding agent，Codex App 最值得关注的地方，是它把“多个 agent 并行干活”做成了一个更清晰的桌面工作流。&lt;/p&gt;
&lt;h2 id=&#34;codex-app-适合做什么&#34;&gt;Codex App 适合做什么
&lt;/h2&gt;&lt;p&gt;Codex App 的核心价值不是让 AI 回答问题，而是让 AI 在项目目录里持续执行任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改代码、运行命令、启动开发服务。&lt;/li&gt;
&lt;li&gt;管理多个项目和多个任务。&lt;/li&gt;
&lt;li&gt;在本地或云端执行长任务。&lt;/li&gt;
&lt;li&gt;调用插件、Skills 和 MCP 扩展能力。&lt;/li&gt;
&lt;li&gt;通过 Git、worktree 和 PR 管理改动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 官方也把 Codex App 定位成一个用于管理多个 coding agent 的界面。它适合需要同时推进多个代码任务的人，尤其适合前端页面、脚本工具、小型应用、文档整理和自动化工作流。&lt;/p&gt;
&lt;h2 id=&#34;安装前准备&#34;&gt;安装前准备
&lt;/h2&gt;&lt;p&gt;使用 Codex App 前，建议先准备好三个基础工具：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Node.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VS Code&lt;/code&gt; 或你常用的 IDE&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Codex App 支持 macOS 和 Windows。安装后使用 ChatGPT 账号登录，首次进入时可以选择主要使用场景，例如编程或日常工作。Codex 会根据选择预装一部分插件和 Skills，后续也可以在设置和插件市场里调整。&lt;/p&gt;
&lt;p&gt;Windows 和 macOS 的主要功能大体一致，但部分电脑自动化能力可能依赖具体平台和插件支持，实际以你当前版本显示为准。&lt;/p&gt;
&lt;h2 id=&#34;界面结构项目任务和对话&#34;&gt;界面结构：项目、任务和对话
&lt;/h2&gt;&lt;p&gt;Codex App 是典型的三栏布局：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左侧：项目、任务、历史对话、插件和自动化入口。&lt;/li&gt;
&lt;li&gt;中间：当前对话窗口。&lt;/li&gt;
&lt;li&gt;右侧：文件、浏览器、终端、运行结果等多功能区域。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个项目通常对应一个本地文件夹。你可以在同一个项目里开多个对话，也可以同时打开多个项目，让不同 agent 并行执行任务。&lt;/p&gt;
&lt;p&gt;任务列表会显示不同状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正在运行：agent 仍在执行。&lt;/li&gt;
&lt;li&gt;等待批准：需要你确认权限、联网、安装依赖或执行高风险操作。&lt;/li&gt;
&lt;li&gt;已完成：任务已经结束，可以查看结果或继续追问。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比在多个终端窗口里来回切换更直观，也更适合同时管理多个 AI 任务。&lt;/p&gt;
&lt;h2 id=&#34;沙盒与权限控制&#34;&gt;沙盒与权限控制
&lt;/h2&gt;&lt;p&gt;Codex App 的权限体系围绕沙盒展开。默认情况下，当前项目文件夹会成为 agent 的主要工作范围。&lt;/p&gt;
&lt;p&gt;常见权限边界包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以读取和修改项目目录内的文件。&lt;/li&gt;
&lt;li&gt;默认不能随意修改项目外文件。&lt;/li&gt;
&lt;li&gt;默认会限制联网或高风险命令。&lt;/li&gt;
&lt;li&gt;需要越权时，会向用户申请批准。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比较实用的模式是“自动审查”：低风险操作由系统自动放行，高风险操作再交给用户确认。这样既能减少频繁弹窗，又能避免 agent 在不知情的情况下执行危险操作。&lt;/p&gt;
&lt;p&gt;“完全访问”要谨慎开启。它适合你明确知道 agent 要做什么，并且项目已经有 Git 备份、重要文件也有额外备份的场景。日常使用不建议长期保持完全访问。&lt;/p&gt;
&lt;h2 id=&#34;上下文模型和额度&#34;&gt;上下文、模型和额度
&lt;/h2&gt;&lt;p&gt;Codex App 会显示当前对话的上下文使用情况。对话越长，历史内容越多，模型需要处理的上下文也越大。&lt;/p&gt;
&lt;p&gt;实用建议是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个任务完成后，优先开新对话。&lt;/li&gt;
&lt;li&gt;长对话可以手动压缩，但不要把压缩当成万能记忆。&lt;/li&gt;
&lt;li&gt;复杂任务先写清楚目标、边界和验收标准。&lt;/li&gt;
&lt;li&gt;不要把大量无关日志、报错和文件一次性塞进对话。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型选择上，可以根据任务复杂度调整思考强度。简单修改、文案整理、重复任务不一定需要最高规格模型；架构迁移、疑难 bug、跨文件重构则更适合使用更强模型。&lt;/p&gt;
&lt;p&gt;如果界面里有快速模式，也要注意它通常会带来更高的额度消耗。赶时间时可以开，日常不必默认开启。&lt;/p&gt;
&lt;h2 id=&#34;图片生成与多模态输入&#34;&gt;图片生成与多模态输入
&lt;/h2&gt;&lt;p&gt;Codex App 可以接收图片和文件作为上下文，也可以在合适场景中调用图像生成能力。&lt;/p&gt;
&lt;p&gt;这对前端和内容类项目很有用。例如你可以让 Codex：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根据截图修正页面样式。&lt;/li&gt;
&lt;li&gt;替换网页中的不合适配图。&lt;/li&gt;
&lt;li&gt;生成产品图、轮播图或页面素材。&lt;/li&gt;
&lt;li&gt;根据 UI 截图指出需要修改的位置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更高效的用法是：不要只说“改好看一点”，而是结合截图指出具体问题，例如“这个卡片间距太大”“这里的图和服务场景不匹配”“把地图区域做得更清楚”。&lt;/p&gt;
&lt;h2 id=&#34;steer任务执行中及时纠偏&#34;&gt;Steer：任务执行中及时纠偏
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Steer&lt;/code&gt; 可以理解成“执行中接管方向”。当 agent 已经开始执行，但你发现它理解错了方向，不应该等它全部跑完再改。&lt;/p&gt;
&lt;p&gt;这时可以使用引导功能，把新的指令插入当前执行流程，让 Codex 及时修正路线。&lt;/p&gt;
&lt;p&gt;适合使用 Steer 的场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agent 误解了需求。&lt;/li&gt;
&lt;li&gt;生成的页面风格明显不对。&lt;/li&gt;
&lt;li&gt;正在执行的方案成本太高。&lt;/li&gt;
&lt;li&gt;你临时补充了关键约束。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一般建议保留默认排队行为，只在确实需要干预时手动使用 Steer。这样既不会打乱正常任务，也能在关键时刻把方向拉回来。&lt;/p&gt;
&lt;h2 id=&#34;计划模式和内置浏览器&#34;&gt;计划模式和内置浏览器
&lt;/h2&gt;&lt;p&gt;复杂任务建议先开计划模式。计划模式下，Codex 不会马上改代码，而是先输出方案，必要时还会用卡片形式追问关键选择。&lt;/p&gt;
&lt;p&gt;适合开计划模式的任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;框架迁移，例如从普通 React 项目迁到 Next.js。&lt;/li&gt;
&lt;li&gt;大范围重构。&lt;/li&gt;
&lt;li&gt;涉及数据库、认证、部署的功能。&lt;/li&gt;
&lt;li&gt;你还没想清楚技术路线的需求。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Codex App 的右侧区域可以打开内置浏览器，用来预览本地开发服务。你可以在页面上做批注，让 Codex 按具体 UI 位置修改问题。这种“看页面、点位置、让 AI 改”的流程，比纯文字描述更适合前端调试。&lt;/p&gt;
&lt;h2 id=&#34;gitide-和代码回滚&#34;&gt;Git、IDE 和代码回滚
&lt;/h2&gt;&lt;p&gt;Codex App 不是完整 IDE。它可以查看代码、批注代码，但真正的手写编辑仍然更适合交给 VS Code、Cursor、Windsurf 等 IDE。&lt;/p&gt;
&lt;p&gt;建议每个 Codex 项目都尽早初始化 Git：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;让 Codex 创建或检查 &lt;code&gt;.gitignore&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在完成一个可用状态后提交一次。&lt;/li&gt;
&lt;li&gt;每次大改前确保有干净提交点。&lt;/li&gt;
&lt;li&gt;不满意时用 Git 回滚代码。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果只回滚对话历史，代码不会自动跟着回滚。比较稳的做法是：对话层面回到合适节点，代码层面用 Git commit hash 回到对应状态。&lt;/p&gt;
&lt;h2 id=&#34;worktree并行开发多个方向&#34;&gt;Worktree：并行开发多个方向
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git worktree&lt;/code&gt; 是 Codex App 里非常适合并行 agent 的能力。&lt;/p&gt;
&lt;p&gt;它的本质是：基于同一个仓库创建多个独立工作目录，每个目录对应不同分支。这样你可以让不同 agent 在不同文件夹里同时开发，不互相覆盖。&lt;/p&gt;
&lt;p&gt;典型用法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个 worktree 优化客户评价组件。&lt;/li&gt;
&lt;li&gt;一个 worktree 调整门店信息和地图布局。&lt;/li&gt;
&lt;li&gt;两个任务完成后分别合并回主干。&lt;/li&gt;
&lt;li&gt;合并完成后删除临时 worktree。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比在同一个目录里让多个 agent 同时改代码稳得多。遇到冲突时，也可以按正常 Git 流程 review 和合并。&lt;/p&gt;
&lt;h2 id=&#34;云端运行环境&#34;&gt;云端运行环境
&lt;/h2&gt;&lt;p&gt;Codex 不只能在本机工作，也可以把任务委托到云端环境执行。&lt;/p&gt;
&lt;p&gt;云端运行适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出门在外，手边只有手机。&lt;/li&gt;
&lt;li&gt;希望 agent 在后台跑长任务。&lt;/li&gt;
&lt;li&gt;代码已经同步到 GitHub，需要让 Codex 基于远端仓库修改。&lt;/li&gt;
&lt;li&gt;希望通过 PR 形式审查和合并改动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型流程是：先把本地代码推到 GitHub，再让 Codex 在云端环境中拉取仓库、执行任务、生成改动，最后以 PR 或 diff 的方式交给你审核。&lt;/p&gt;
&lt;p&gt;本地继续开发时，要记得把远端最新改动同步回来。&lt;/p&gt;
&lt;h2 id=&#34;记忆系统写好-agentsmd&#34;&gt;记忆系统：写好 AGENTS.md
&lt;/h2&gt;&lt;p&gt;新对话默认没有完整历史记忆。项目一复杂，如果每次都重新解释背景，会很浪费。&lt;/p&gt;
&lt;p&gt;最通用的做法，是在项目根目录维护 &lt;code&gt;AGENTS.md&lt;/code&gt;。这个文件可以记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目目标和主要技术栈。&lt;/li&gt;
&lt;li&gt;常用命令。&lt;/li&gt;
&lt;li&gt;目录结构说明。&lt;/li&gt;
&lt;li&gt;代码风格和命名约定。&lt;/li&gt;
&lt;li&gt;禁止事项，例如不要批量删除文件。&lt;/li&gt;
&lt;li&gt;测试、构建和部署规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你也可以让 Codex 先通读项目，再生成一版 &lt;code&gt;AGENTS.md&lt;/code&gt;，然后人工审一遍。复杂项目里，这个文件非常值得维护。&lt;/p&gt;
&lt;p&gt;全局规则也要谨慎。适合写入所有项目都通用的安全约束，例如“不要递归删除目录”“执行破坏性操作前必须确认”。不要把某个项目的细节写进全局规则，否则会污染其他项目。&lt;/p&gt;
&lt;h2 id=&#34;插件和自动化&#34;&gt;插件和自动化
&lt;/h2&gt;&lt;p&gt;插件用于把外部服务接入 Codex，例如 GitHub、Gmail、Google Drive、数据库、部署平台等。&lt;/p&gt;
&lt;p&gt;插件的价值在于减少复制粘贴。比如你可以让 Codex：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看某个 GitHub 仓库的 star 趋势。&lt;/li&gt;
&lt;li&gt;整理邮件内容并发给自己。&lt;/li&gt;
&lt;li&gt;定期执行某个检查任务。&lt;/li&gt;
&lt;li&gt;把结果写成摘要。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自动化则适合重复任务。例如每周五下午检查一次仓库数据，并发送邮件报告。简单自动化任务通常不需要最高规格模型，选择较轻量的模型即可。&lt;/p&gt;
&lt;h2 id=&#34;skills把工作流变成可复用能力&#34;&gt;Skills：把工作流变成可复用能力
&lt;/h2&gt;&lt;p&gt;Skills 是 Codex 的“专业说明书”。它不是单次提示词，而是把某类任务的流程、规范、脚本和注意事项沉淀下来，让 Codex 后续稳定复用。&lt;/p&gt;
&lt;p&gt;常见来源有三类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方 Skills。&lt;/li&gt;
&lt;li&gt;第三方 Skills。&lt;/li&gt;
&lt;li&gt;自己编写的 Skills。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;适合做成 Skill 的工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把字幕整理成图文笔记。&lt;/li&gt;
&lt;li&gt;按公司规范写周报。&lt;/li&gt;
&lt;li&gt;批量处理图片或文档。&lt;/li&gt;
&lt;li&gt;固定格式的代码审查。&lt;/li&gt;
&lt;li&gt;特定框架的项目初始化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果某个提示词你已经复制粘贴了很多次，就值得考虑把它做成 Skill。&lt;/p&gt;
&lt;h2 id=&#34;mcp接入外部工具和数据库&#34;&gt;MCP：接入外部工具和数据库
&lt;/h2&gt;&lt;p&gt;MCP 可以理解成给大模型使用的标准化工具协议。通过 MCP，Codex 可以调用外部服务完成更具体的任务。&lt;/p&gt;
&lt;p&gt;例如接入 Supabase 后，可以让 Codex：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建数据表。&lt;/li&gt;
&lt;li&gt;读取数据库结构。&lt;/li&gt;
&lt;li&gt;修改后端接口。&lt;/li&gt;
&lt;li&gt;把前端表单提交到数据库。&lt;/li&gt;
&lt;li&gt;根据数据库状态调试问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类能力很强，但也要注意权限边界。数据库、生产环境、部署平台、邮件账号都属于高风险资源。第一次接入时，最好使用测试项目和低权限账号。&lt;/p&gt;
&lt;h2 id=&#34;部署插件&#34;&gt;部署插件
&lt;/h2&gt;&lt;p&gt;部署平台插件可以让 Codex 直接完成构建和发布，例如把前端项目部署到 Netlify 一类平台。&lt;/p&gt;
&lt;p&gt;这类插件适合小型网站、原型页面、内部工具和展示项目。实际使用时建议注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部署前先跑本地构建。&lt;/li&gt;
&lt;li&gt;环境变量不要直接写进代码。&lt;/li&gt;
&lt;li&gt;发布后检查页面是否能正常访问。&lt;/li&gt;
&lt;li&gt;生产项目要保留人工 review。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 可以帮你打通发布流程，但发布权限仍然要谨慎管理。&lt;/p&gt;
&lt;h2 id=&#34;电脑自动化&#34;&gt;电脑自动化
&lt;/h2&gt;&lt;p&gt;在支持的平台和插件环境里，Codex 还可以操作浏览器或桌面应用，完成更接近 RPA 的任务。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开聊天软件并准备一条消息。&lt;/li&gt;
&lt;li&gt;浏览项目看板，汇总任务状态。&lt;/li&gt;
&lt;li&gt;生成英文简报。&lt;/li&gt;
&lt;li&gt;在你确认后发送给指定对象。&lt;/li&gt;
&lt;li&gt;把这套流程做成定时自动化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类功能很有想象力，但也最需要安全边界。凡是涉及发消息、发邮件、提交表单、付款、删除数据的操作，都应该保留人工确认。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;Codex App 的正确打开方式，不是让它一次性全自动接管一切，而是把任务拆清楚，让它在受控环境里高效执行。&lt;/p&gt;
&lt;p&gt;推荐习惯：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个项目先初始化 Git。&lt;/li&gt;
&lt;li&gt;复杂任务先开计划模式。&lt;/li&gt;
&lt;li&gt;并行任务优先用 worktree。&lt;/li&gt;
&lt;li&gt;项目规则写进 &lt;code&gt;AGENTS.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;高风险操作保留人工确认。&lt;/li&gt;
&lt;li&gt;重复流程沉淀成 Skill 或自动化。&lt;/li&gt;
&lt;li&gt;插件和 MCP 先在测试环境验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-the-codex-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing the Codex app - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11369540-codex-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Codex with your ChatGPT plan - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/academy/codex-plugins-and-skills/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Plugins and skills - OpenAI Academy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Codex App 的重点不是“多一个 AI 聊天窗口”，而是把 AI 编程变成一个可管理的工作台：本地项目、云端任务、Git、worktree、插件、Skills、MCP 和自动化都能串起来。&lt;/p&gt;
&lt;p&gt;真正用好它的关键，是在“放权”和“控制”之间找到平衡。小任务可以大胆交给 Codex，复杂任务先让它计划，高风险动作必须确认。这样它才会从一个会写代码的助手，变成可以长期协作的工程工具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes &#43; Qwen3.6：本地 Agent 的一套低成本部署方案</title>
        <link>https://knightli.com/2026/05/04/hermes-qwen36-local-agent/</link>
        <pubDate>Mon, 04 May 2026 06:40:30 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/04/hermes-qwen36-local-agent/</guid>
        <description>&lt;p&gt;用 &lt;code&gt;llama.cpp&lt;/code&gt; 在 WSL2 中运行 Qwen3.6 GGUF 模型，再把 Hermes Agent 接到本地 OpenAI-compatible API。这样可以在自己的电脑上获得一个可长期在线的本地 AI 助手，不再按在线服务的 Token 额度计费。&lt;/p&gt;
&lt;p&gt;这套方案适合想体验本地 AI Agent、又希望保留数据隐私和长期可控性的用户。它可以用于日常问答、写作、代码辅助、资料整理和简单自动化任务。需要注意的是，模型规模越大，对显存要求越高；原文示例使用的是 Qwen3.6-27B，显存 24GB 更稳。如果显存较小，应选择更小尺寸或更低量化的模型。&lt;/p&gt;
&lt;h2 id=&#34;方案结构&#34;&gt;方案结构
&lt;/h2&gt;&lt;p&gt;整体链路很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows 上安装 WSL2 和 Ubuntu 24.04。&lt;/li&gt;
&lt;li&gt;在 WSL2 中安装 CUDA Toolkit、编译 &lt;code&gt;llama.cpp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;下载 Qwen3.6 GGUF 模型。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;llama-server&lt;/code&gt; 启动本地模型服务。&lt;/li&gt;
&lt;li&gt;安装 Hermes Agent，并把它配置到 &lt;code&gt;http://localhost:8080/v1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;可选：写启动脚本，让 WSL2 打开时自动启动模型服务。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hermes 负责 Agent 能力，Qwen3.6 负责本地大模型能力。两者组合后，可以把电脑变成一个本地私有 AI 助理。&lt;/p&gt;
&lt;h2 id=&#34;安装-wsl2-和-ubuntu&#34;&gt;安装 WSL2 和 Ubuntu
&lt;/h2&gt;&lt;p&gt;在 Windows PowerShell 管理员窗口中执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-set-default-version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重启后安装 Ubuntu 24.04：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-d&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;24.04&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后，Ubuntu 会提示设置用户名和密码。进入 Ubuntu 后，先检查 NVIDIA GPU 是否能在 WSL2 中正常识别：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果无法识别 GPU，通常需要先更新 Windows 端的 NVIDIA 显卡驱动。WSL2 会继承 Windows 驱动，但 CUDA Toolkit 仍需要在 WSL2 内单独安装。&lt;/p&gt;
&lt;h2 id=&#34;安装-python-和基础工具&#34;&gt;安装 Python 和基础工具
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y python3-pip python3-venv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;后续还需要编译工具、Git 和 CMake：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y cmake build-essential git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;编译-llamacpp&#34;&gt;编译 llama.cpp
&lt;/h2&gt;&lt;p&gt;先拉取源码：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/ggerganov/llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 WSL2 中已经有可用 CUDA 环境，可以直接编译：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build -DGGML_CUDA&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ON -DCMAKE_CUDA_ARCHITECTURES&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;89&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;CMAKE_CUDA_ARCHITECTURES=89&lt;/code&gt; 适合 Ada 架构显卡，例如 RTX 40 系列。其他显卡应按实际架构调整。&lt;/p&gt;
&lt;p&gt;如果编译时报 CUDA Toolkit 缺失，先在 WSL2 中安装 CUDA Toolkit：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dpkg -i cuda-keyring_1.1-1_all.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y cuda-toolkit-12-8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后配置环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/cuda-12.8/bin:&lt;span class=&#34;nv&#34;&gt;$PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/cuda-12.8/lib64:&lt;span class=&#34;nv&#34;&gt;$LD_LIBRARY_PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export PATH=/usr/local/cuda-12.8/bin:$PATH&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后重新编译：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build -DGGML_CUDA&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ON -DCMAKE_CUDA_ARCHITECTURES&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;89&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;下载-qwen36-gguf-模型&#34;&gt;下载 Qwen3.6 GGUF 模型
&lt;/h2&gt;&lt;p&gt;原文示例使用 &lt;code&gt;unsloth/Qwen3.6-27B-GGUF&lt;/code&gt; 中的 &lt;code&gt;Qwen3.6-27B-UD-Q4_K_XL.gguf&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hf download unsloth/Qwen3.6-27B-GGUF &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--local-dir ~/models/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个文件约 17GB。如果 Hugging Face 下载慢，可以换 ModelScope 等国内镜像。显存不足时不要硬上 27B，可以换更小模型或更低量化版本。&lt;/p&gt;
&lt;h2 id=&#34;启动本地模型服务&#34;&gt;启动本地模型服务
&lt;/h2&gt;&lt;p&gt;根据自己的模型文件名启动 &lt;code&gt;llama-server&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/llama.cpp/build/bin/llama-server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--n-gpu-layers &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ctx-size &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--flash-attn on &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--temp 1.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-p 0.95 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-k &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--presence-penalty 1.5 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动成功后，在 Windows 浏览器访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要让 Hermes Agent 或其他 OpenAI-compatible 客户端调用，API 地址通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;thinking-模式取舍&#34;&gt;Thinking 模式取舍
&lt;/h2&gt;&lt;p&gt;Qwen3.6 默认可能启用 Thinking 模式。它适合复杂推理、复杂代码问题、多步骤分析，但速度会慢一些。&lt;/p&gt;
&lt;p&gt;如果想关闭 Thinking 模式，可以停止服务后增加 &lt;code&gt;--chat-template-kwargs&lt;/code&gt; 参数：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/llama.cpp/build/bin/llama-server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--n-gpu-layers &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ctx-size &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--flash-attn on &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--temp 1.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-p 0.95 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-k &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--presence-penalty 1.5 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--chat-template-kwargs &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;enable_thinking&amp;#34;:false}&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;关闭 Thinking 后，简单问答、写作、代码补全和解释代码会更快；但复杂算法设计、疑难 Debug 和架构分析仍建议开启 Thinking。&lt;/p&gt;
&lt;h2 id=&#34;安装-hermes-agent&#34;&gt;安装 Hermes Agent
&lt;/h2&gt;&lt;p&gt;保持 &lt;code&gt;llama-server&lt;/code&gt; 运行，再新开一个 WSL2 终端安装 Hermes Agent：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装脚本会处理 Python、Node.js、ripgrep、ffmpeg 等依赖。配置模型端点时选择自定义 endpoint：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;URL: http://localhost:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: 12345678
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: 自动识别
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;API Key 对本地 &lt;code&gt;llama-server&lt;/code&gt; 来说可以随便填一个占位值。配置完成后，可以继续接 Telegram、微信、QQ、Discord 等聊天工具，让 Hermes Agent 通过这些入口调用本地模型并执行任务。&lt;/p&gt;
&lt;h2 id=&#34;自动启动模型服务&#34;&gt;自动启动模型服务
&lt;/h2&gt;&lt;p&gt;可以写一个启动脚本，让 WSL2 终端打开时自动启动模型服务。&lt;/p&gt;
&lt;p&gt;创建脚本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; ~/start-llm.sh &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;Starting Qwen3.6-27B llama-server...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;~/llama.cpp/build/bin/llama-server \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--n-gpu-layers 99 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--ctx-size 65536 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--flash-attn on \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--temp 1.0 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--top-p 0.95 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--top-k 20 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--presence-penalty 1.5 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--port 8080 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--host 0.0.0.0 &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;llama-server started, PID: $!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;API: http://localhost:8080/v1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;Chat UI: http://localhost:8080&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x ~/start-llm.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;写入 &lt;code&gt;.bashrc&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;# Auto-start llama-server&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;if ! pgrep -f &amp;#34;llama-server&amp;#34; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;    ~/start-llm.sh&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;fi&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样每次打开 WSL2 终端时，如果 &lt;code&gt;llama-server&lt;/code&gt; 没有运行，就会自动启动；如果已经在运行，就会跳过，避免重复启动。&lt;/p&gt;
&lt;h2 id=&#34;注意事项&#34;&gt;注意事项
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;27B 模型对显存要求较高，24GB 显存体验更稳；显存较小时应换小模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ctx-size 65536&lt;/code&gt; 会显著增加显存和内存压力，不稳定时先降到 &lt;code&gt;32768&lt;/code&gt; 或更低。&lt;/li&gt;
&lt;li&gt;WSL2 中 CUDA Toolkit 和 Windows 显卡驱动都要正常，缺一边都可能导致 CUDA 编译或运行失败。&lt;/li&gt;
&lt;li&gt;Hermes Agent 接本地服务时，本质上是调用 OpenAI-compatible API，关键是 &lt;code&gt;http://localhost:8080/v1&lt;/code&gt; 能正常响应。&lt;/li&gt;
&lt;li&gt;如果要从手机或其他设备访问，需要额外处理 Windows 防火墙、局域网地址和安全隔离，不要把本地模型服务直接暴露到公网。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原文：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24036.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes + Qwen3.6：本地最强 Agent 组合！零成本、无限 Token，太香了！&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;llama.cpp：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggerganov/llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggerganov/llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes Agent：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Qwen3.6 GGUF 示例：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/Qwen3.6-27B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/Qwen3.6-27B-GGUF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Embedding 2：把文本、图像、视频和音频放进同一个向量空间</title>
        <link>https://knightli.com/2026/05/04/gemini-embedding-2-multimodal-rag/</link>
        <pubDate>Mon, 04 May 2026 06:01:10 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/04/gemini-embedding-2-multimodal-rag/</guid>
        <description>&lt;p&gt;Google Developers Blog 介绍了 Gemini Embedding 2 的开发用法。这个模型已经通过 Gemini API 和 Gemini Enterprise Agent Platform 进入 GA，重点不只是“新的 embedding 模型”，而是把文本、图像、视频、音频和文档映射到同一个语义空间。&lt;/p&gt;
&lt;p&gt;这会让检索系统的边界变宽：过去很多 RAG 流程需要先把图片、视频、音频拆成文字或元数据，再单独建索引；Gemini Embedding 2 则可以直接处理多模态输入，让代理、搜索和分类系统更容易围绕真实业务材料工作。&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a class=&#34;link&#34; href=&#34;https://developers.googleblog.com/building-with-gemini-embedding-2/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building with Gemini Embedding 2: Agentic multimodal RAG and beyond&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;模型能力&#34;&gt;模型能力
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 支持 100 多种语言。单次请求可以处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最多 8,192 个文本 token&lt;/li&gt;
&lt;li&gt;最多 6 张图片&lt;/li&gt;
&lt;li&gt;最多 120 秒视频&lt;/li&gt;
&lt;li&gt;最多 180 秒音频&lt;/li&gt;
&lt;li&gt;最多 6 页 PDF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的关键点是“统一语义空间”。开发者可以把不同模态的内容放在同一套向量表示里，用同一种检索、聚类或重排序逻辑处理。&lt;/p&gt;
&lt;p&gt;例如，文本描述和图片可以放在同一次 embedding 请求里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google.genai&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;dog.png&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;rb&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image_bytes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embed_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;gemini-embedding-2&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;An image of a dog&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;from_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;mime_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;image/png&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你希望每个输入分别得到 embedding，而不是聚合成一个向量，可以使用 Batch API。原文也提到，Agent Platform 对这类批量支持还在跟进中。&lt;/p&gt;
&lt;h2 id=&#34;对-rag-的意义&#34;&gt;对 RAG 的意义
&lt;/h2&gt;&lt;p&gt;多模态 embedding 对代理式 RAG 很有用。一个 AI agent 可能需要同时检查代码仓库、PDF、截图、图表、音频会议记录和产品图片。如果所有资料都能进入同一个语义空间，检索链路就不必为每种材料单独设计一套入口。&lt;/p&gt;
&lt;p&gt;Google 建议根据任务使用 task prefix，让 embedding 更贴近检索目标。例如问答、事实核查、代码检索和搜索结果，可以使用不同前缀：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for your task&amp;#39;s query:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;task: question answering | query: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: fact checking | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: code retrieval | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: search result | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for document of an asymmetric retrieval task:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;none&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;title: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; | text: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种前缀适合非对称检索：用户查询往往很短，文档内容往往很长。把 query 和 document 分别按任务格式整理，可以改善短查询到长文档之间的匹配。&lt;/p&gt;
&lt;p&gt;原文给了两个落地反馈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Harvey 在法律检索基准上，Recall@20 precision 相比上一代 embedding 提升 3%。&lt;/li&gt;
&lt;li&gt;Supermemory 在 Recall@1 搜索准确率上提升 40%，并把它用于记忆、索引、搜索和问答管线。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些数字不代表所有场景都会同幅度提升，但说明多模态 embedding 已经不只是演示能力，而是在真实检索产品中产生效果。&lt;/p&gt;
&lt;h2 id=&#34;视觉搜索&#34;&gt;视觉搜索
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 也适合做以图搜图、图文混合搜索和商品识别。原文提到服装租赁公司 Nuuly 用它匹配仓库中未打标签的服装照片，使 Match@20 从 60% 提升到接近 87%，总体成功识别率从 74% 提升到 90% 以上。&lt;/p&gt;
&lt;p&gt;这类场景的关键不是生成内容，而是理解“这张图片和哪个库存、文档或商品记录最接近”。如果你的业务里有大量图片、视频片段或扫描件，多模态 embedding 会比纯文本索引更自然。&lt;/p&gt;
&lt;h2 id=&#34;检索重排序&#34;&gt;检索重排序
&lt;/h2&gt;&lt;p&gt;Embedding 还可以用于 rerank。常见做法是先用基础检索拿到一批候选结果，再计算候选结果和用户查询之间的相似度，把更相关的内容排到前面：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. Define a function to calculate the dot product (cosine similarity)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;dot_product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ndarray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ndarray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;@&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;T&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. Retrieve your embeddings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# (Assuming &amp;#39;summaries&amp;#39; is your list of search results)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;search_res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;summaries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;embedded_query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. Calculate similarity scores&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sim_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dot_product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;search_res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;embedded_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. Select the most relevant result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;best_match_index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;argmax&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sim_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原文还提到一种思路：先让模型根据内部知识生成一个假设答案，再把这个假设答案做 embedding，与候选内容比较相似度，用来挑出语义更贴近的结果。这对问答型 RAG 尤其有用。&lt;/p&gt;
&lt;h2 id=&#34;聚类分类和异常检测&#34;&gt;聚类、分类和异常检测
&lt;/h2&gt;&lt;p&gt;除了检索，embedding 也适合聚类、分类和异常检测。和前面的问答检索不同，这些属于对称任务，query 和 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;这类任务可以用于舆情分类、内容审核、相似资产归类、异常样本发现，也可以帮助 agent 对大量上下文材料先做整理，再进入后续推理。&lt;/p&gt;
&lt;h2 id=&#34;存储和成本&#34;&gt;存储和成本
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 默认输出 3,072 维向量。它使用 Matryoshka Representation Learning，因此可以通过 &lt;code&gt;output_dimensionality&lt;/code&gt; 把向量截断到更小维度。Google 推荐在效率优先时使用 1,536 或 768 维：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embed_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-embedding-2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;What is the meaning of life?&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dimensionality&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;768&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;向量可以存到 Agent Platform Vector Search、Pinecone、Weaviate、Qdrant、ChromaDB 等系统里。成本方面，原文提到 Batch API 可提供更高吞吐，并达到默认 embedding 价格的 50%。&lt;/p&gt;
&lt;h2 id=&#34;开发者该怎么用&#34;&gt;开发者该怎么用
&lt;/h2&gt;&lt;p&gt;如果你已有文本 RAG，可以先从两类增量改造开始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把 PDF、截图、图片说明和文本文档放入同一个索引，测试查询召回是否更稳定。&lt;/li&gt;
&lt;li&gt;给不同任务加 task prefix，例如问答、事实核查、代码检索、商品搜索，不要把所有内容都按同一种 embedding 方式处理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你在做新产品，可以优先考虑这些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企业知识库：同时检索文档、图表、演示稿截图和会议材料。&lt;/li&gt;
&lt;li&gt;视觉搜索：用图片、文本或混合输入查找商品、资产、设计稿和档案。&lt;/li&gt;
&lt;li&gt;Agent 工具链：让 coding agent、研究 agent 或客服 agent 检索多种格式的业务材料。&lt;/li&gt;
&lt;li&gt;内容治理：对文本、图片、视频片段做统一分类、聚类和异常检测。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemini Embedding 2 的价值在于把多模态材料变成同一套可检索资产。对开发者来说，这会减少“先转文字再检索”的中间层，也让 RAG 系统更接近真实世界的数据形态。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：UI 与社媒案例</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/</guid>
        <description>&lt;p&gt;本页收录 &lt;code&gt;UI 与社媒&lt;/code&gt; 分类下的 56 个案例。每个条目保留原案例链接、作者、生成图和完整提示词。&lt;/p&gt;
&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ui-与社媒&#34;&gt;UI 与社媒
&lt;/h2&gt;&lt;h3 id=&#34;一句提示词生成-ui-设计&#34;&gt;一句提示词生成 UI 设计
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/austinit/status/2044968740782272596&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/austinit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@austinit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/000.webp&#34;
	width=&#34;983&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/000_hu_a0509e119117b487.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/000_hu_fee7ad21aafb346f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;一句提示词生成 UI 设计&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;81&#34;
		data-flex-basis=&#34;196px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用这种风格帮我生成一套UI设计系统，包含网页、移动端、卡片、控件、按钮 以及其它
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;业余-iphone-keynote-抓拍&#34;&gt;业余 iPhone Keynote 抓拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale/status/2044687244368441742&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@patrickassale&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/001.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/001_hu_6a976169b655751e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/001_hu_6146ba205d59f349.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;业余 iPhone Keynote 抓拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Amateur iPhone photo at Apple Park during the iPhone 20 keynote, Tim Cook presenting on stage. Shot from the crowd at a distance
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;手写笔记本照片&#34;&gt;手写笔记本照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale/status/2044569086013718958&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@patrickassale&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/002.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/002_hu_a790d3353f5c70e9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/002_hu_67826a1ed311f24.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;手写笔记本照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Amateur photo of an open notebook lying flat, filled with handwritten notes in black ballpoint pen. The handwriting is casual and slightly messy, like personnal notes, natural imperfections, crossed out words, underlined headings. Shot from slightly above, natural daylight from a window, no flash. Casual desk setting, shot on iPhone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;宋代社交媒体信息流&#34;&gt;宋代社交媒体信息流
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902/status/2045385588065313057&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Panda20230902&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/003.webp&#34;
	width=&#34;400&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/003_hu_6467411051bf9ba.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/003_hu_7433fbf98c017d2c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;宋代社交媒体信息流&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;33&#34;
		data-flex-basis=&#34;80px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;宋朝人的朋友圈&amp;#34;/&amp;#34;SONG DYNASTY SOCIAL MEDIA FEED&amp;#34;，古今穿越幽默融合界面设计风格，画面模拟手机社交媒体界面，但内容全部是宋朝场景头像是宋代文人画像，用户名&amp;#34;苏东坡SuShi_Official&amp;#34;，发布内容&amp;#34;刚到黄州，被贬了但心情还行。今天自己做了东坡肉，味道绝了，附菜谱：&amp;#34;，配图为工笔画风格的东坡肉特写，点赞列表&amp;#34;黄庭坚、秦观、佛印等126人&amp;#34;，评论区&amp;#34;王安石：呵呵&amp;#34;&amp;#34;司马光：还是那个味道&amp;#34;，界面元素如点赞图标用宋代花纹替代，状态栏显示&amp;#34;大宋移动 5G&amp;#34;和&amp;#34;元丰三年&amp;#34;，配色为手机深色模式搭配宋代雅致色调，历史与社交媒体的趣味碰撞杰作
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;多平台内容截图&#34;&gt;多平台内容截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2045373105041007013&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/004.webp&#34;
	width=&#34;555&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/004_hu_e0e9a2612bd3b890.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/004_hu_4f5213e6702ea897.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;多平台内容截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;111px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1、生成视频号内容截图，主题：中老年不要盲目催婚，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2、生成抖音内容截图，主题：跟上AI浪潮9.9包教会，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3、生成小红书内容截图，主题：精致女孩背后都有网贷，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4、生成快手内容截图：主题：直播离婚预告，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;刘亦菲抖音直播截图&#34;&gt;刘亦菲抖音直播截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanblogsooo/status/2044784762594918516&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanblogsooo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanblogsooo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/005.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/005_hu_933d147f1c4bffb3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/005_hu_52d31acefd4caf39.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;刘亦菲抖音直播截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 的图片比例，生成一张抖音直播的截图，里面是 刘亦菲 在直播，刘亦菲 手里拿着牌子，牌子里写着 今晚直播，欢迎来参亦菲畅聊！
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;太祖李成桂的-x-主页&#34;&gt;太祖李成桂的 X 主页
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SKA_Neotype/status/2044637900978217334&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SKA_Neotype&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SKA_Neotype&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/006.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/006_hu_2b6cce52a6aee798.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/006_hu_c3e9bc7604f9c77a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;太祖李成桂的 X 主页&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;태조 이성계의 X  페이지(위화도 회군을 벌이기 직전- 최영 장군과 서로 디스하는 내용이 담긴 게시글들)을 만들어 주세요.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;风格转-ui-设计系统&#34;&gt;风格转 UI 设计系统
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/stark_nico99/status/2045836554451706125&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/stark_nico99&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@stark_nico99&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/007.webp&#34;
	width=&#34;1199&#34;
	height=&#34;1312&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/007_hu_7734ca6292c1e429.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/007_hu_6901a3a91a9b4f0a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;风格转 UI 设计系统&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;91&#34;
		data-flex-basis=&#34;219px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用这种风格帮我生成一套UI设计系统，包含网页、移动端、卡片、控件、按钮以及其它。把这套视觉风格作为参考生成网页。我尝试了宇宙、飞行、蝴蝶主题。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;桃太郎讲解幻灯片&#34;&gt;桃太郎讲解幻灯片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yammamon/status/2045778624092254603&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/yammamon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yammamon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/008.webp&#34;
	width=&#34;1280&#34;
	height=&#34;853&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/008_hu_bf54d5d0ed5b99e4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/008_hu_2f206b995e83ec1c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;桃太郎讲解幻灯片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;「いらすとや」のほのぼのとした雰囲気と、「霞ヶ関スライド」の圧倒的な情報密度を融合させた、桃太郎の解説スライド（ポンチ絵）を作成して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;博物馆风汉服拆解信息图&#34;&gt;博物馆风汉服拆解信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2045504669401653414&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/009.webp&#34;
	width=&#34;1074&#34;
	height=&#34;1280&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/009_hu_d938583209d8ce73.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/009_hu_c0a7a9e3e48dbd34.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;博物馆风汉服拆解信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;83&#34;
		data-flex-basis=&#34;201px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】自动生成一张“博物馆图鉴式中文拆解信息图”。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求整张图兼具真实写实主视觉、结构拆解、中文标注、材质说明、纹样寓意、色彩含义和核心特征总结。你需要根据【主题】自动判断最合适的主体对象、服饰体系、器物结构、时代风格、关键部件、材质工艺、颜色方案与版式结构，用户无需再提供其他信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体风格应为：国家博物馆展板、历史服饰图鉴、文博专题信息图，而不是普通海报、古风写真、电商详情页或动漫插画。背景采用米白、绢纸白、浅茶色等纸张质感，整体高级、克制、专业、可收藏。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;版式固定为：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 顶部：中文主标题 + 副标题 + 导语
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 左侧：结构拆解区，中文引线标注关键部件，并配局部特写
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 右上：材质 / 工艺 / 质感区，展示真实纹理小样并附说明
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 右中：纹样 / 色彩 / 寓意区，展示主色板、纹样样本和文化解释
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 底部：穿着顺序 / 构成流程图 + 核心特征总结
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;若主题适合人物展示，则以真实人物全身站姿为中央主体；若更适合器物或单体结构，则改为中心主体拆解图，但整体仍保持完整中文信息图形式。所有文字必须为简体中文，清晰、规整、可读，不要乱码、错字、英文或拼音。重点突出真实结构、材质差异、文化说明与图鉴气质。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;避免：海报感、影楼感、电商感、动漫感、cosplay感、乱标注、错结构、糊字、假材质、过度装饰。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;手相诊断报告&#34;&gt;手相诊断报告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/agi_aibusi/status/2046530764871696750&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/agi_aibusi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@agi_aibusi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/010.webp&#34;
	width=&#34;701&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/010_hu_55204af3273c2953.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/010_hu_79f3fe6eb5476e32.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;手相诊断报告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;58&#34;
		data-flex-basis=&#34;140px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPT-image-2でこの手相を診断して詳細な鑑定書を作って
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生命線・知能線・感情線・運命線・太陽線・財運線・結婚線を、線の形状・濃淡・枝分かれ・起点終点まで分析すること。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;助言を重点的に高品質な占い鑑定書にまとめること。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;书法字帖页&#34;&gt;书法字帖页
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046510310253539764&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/011.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/011_hu_5717a7c1927bd9b1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/011_hu_d59e3a2e0bd44d92.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;书法字帖页&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一张【字体】书法临摹字帖
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;唐吉诃德促销-pop-海报&#34;&gt;唐吉诃德促销 POP 海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog/status/2046437230127034774&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@loglogrog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/012.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/012_hu_4b3a5e93f98ba7ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/012_hu_ff03b8952b0ad690.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;唐吉诃德促销 POP 海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPT Image 2を使って、OpenClawの情報を調べてドンキの広告ポップ風に実際のドンキに貼っているような感じで画像生成してください
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式抽卡游戏界面&#34;&gt;日式抽卡游戏界面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/the_wheel_2024/status/2046519658166317160&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/the_wheel_2024&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@the_wheel_2024&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/013.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/013_hu_d74bbc1c76c72374.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/013_hu_bbfad2e020a69830.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式抽卡游戏界面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;日本のソシャゲのガチャ画面を生成して、
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;elon-musk-抖音直播截图&#34;&gt;Elon Musk 抖音直播截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2046501587762188535&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/014.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/014_hu_f74afb08f82e0e53.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/014_hu_e335904cbedf2c0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Elon Musk 抖音直播截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A 9:16 vertical version, high-detail realistic style Chinese TikTok live screenshot, Elon Musk is talking to the mobile phone camera in the live broadcast room, excited, smiling, and the live atmosphere is warm and real. He held a white handwritten sign in one hand, which clearly said: &amp;#34;Thank you Shinning&amp;#34;. There are obvious Chinese TikTok interface elements in the live broadcast screen, including likes, comments and share icons arranged vertically on the right, scrolling Chinese bullet screens and interactive comments below, and the &amp;#34;live broadcast&amp;#34; logo at the top, which looks like a real mobile phone screenshot. There is an eye-catching gift prompt special effect in the screen: &amp;#34;Shinning sent TikTok No. 1&amp;#34;, with gift animation light effect and platform-style prompt box. Musk is in a professional live broadcast environment, with a mobile phone holder, a ring fill light and a desktop microphone in front of him. The background is a modern technology live broadcast room with bright lights and a slight neon atmosphere. The composition is real and natural, like the ongoing live screenshot of the Chinese short video platform. The interface information is rich but not messy, the characters are clear, the expression is vivid, the details are rich, the sense of real photography, the depth of field, high definition, cinematic, photorealistic, realistic livestream screenshot, social media UI, Chinese Douyin live room, detailed lighting, natural skin texture.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative prompts:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Low definition, blur, cartoon, illustration, too strong CG sense, two-dimensional, deformed fingers, wrong text, scrambled code, multiple mobile phones, multiple brands, character repetition, face collapse, facial features distortion, excessive skin polishing, overexposure, too dark, messy background, wrong UI, non-Chinese short video interface, too many English bullet screens, gift special effects are not obvious, cropping error, proportional error
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Supplementary reinforcement words:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Real mobile phone screen recording screenshot feeling, the live broadcast UI is complete, the gift prompt box conforms to the style of the Chinese short video platform, the Chinese comment area is active, the number of people online in the live broadcast room is clearly displayed, and the time, power and signal bar are visible.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;刘亦菲抖音直播截图-1&#34;&gt;刘亦菲抖音直播截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/kylegeeks/status/2046479783765397629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/kylegeeks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@kylegeeks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/015.webp&#34;
	width=&#34;1200&#34;
	height=&#34;772&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/015_hu_210a3d6381ab38f7.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/015_hu_3ce3f3478f4c7132.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;刘亦菲抖音直播截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;155&#34;
		data-flex-basis=&#34;373px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 的图片比例,生成一张抖音直播的截图,里面是 刘亦菲 在直播,刘亦菲 手里拿着牌子,牌子里写着 今晚直播,欢迎来参亦菲畅聊!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;赛博朋克霓虹-ui-设计系统&#34;&gt;赛博朋克霓虹 UI 设计系统
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AZLnfvp/status/2046468976092533180&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AZLnfvp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AZLnfvp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/016.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/016_hu_88fb7dfbe578c750.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/016_hu_6861dde16988fed4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;赛博朋克霓虹 UI 设计系统&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用未来都市风格生成UI设计系统,灵感来自赛博朋克城市夜景,包含霓虹灯、玻璃建筑反射、高对比光影,配色以紫色、蓝色、粉色霓虹为主,设计网页Dashboard、移动端界面、卡片、按钮、控件等,视觉炫酷、层次丰富、科技感极强
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;trump-and-kim-livestream-pk-截图&#34;&gt;Trump and Kim Livestream PK 截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq/status/2046048929490612464&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanlovelq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/017.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/017_hu_86f0321dd3c4882f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/017_hu_4b71a2ab2286bfba.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Trump and Kim Livestream PK 截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1、生成特朗普和金正恩在抖音直播间打PK的截图  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2、生成不知火舞的小红书主页截图  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3、生成图片: 手写在教室黑板上的出师表全文,真实感的粉笔字迹,晴朗白天用iPhone手机实拍  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4、生成图片: T-800机器人的淘宝商品详情页,展示: 机器人的正面侧面背面三视图, 产品价格, 产品细节, 功能和使用场景等
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式-ai-游戏开发概览幻灯片提示词&#34;&gt;日式 AI 游戏开发概览幻灯片提示词
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ailovedirector/status/2046905387274891296&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ailovedirector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ailovedirector&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/018.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/018_hu_cbe5a586cb328e0a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/018_hu_8c67b1f43e45c185.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式 AI 游戏开发概览幻灯片提示词&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;横長のパワポ画像ここで生成してみて　どのモデル使ってるか判定するから、今のAIゲーム開発の概要をまとめた1枚パワポで　日本語で
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ゲーム開発の技術に関して、工数ベースでどこにパワーかかるかの分析資料といかに量産が大事かについての説明とかのパワポ画も作って
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;基于生成角色制作截图界面&#34;&gt;基于生成角色制作截图界面&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/khaiinit/status/2047219694130827273&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/khaiinit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@khaiinit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/019.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/019_hu_8b6725f5dd23affb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/019_hu_8f807fa5b4b16d83.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;基于生成角色制作截图界面…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;based on the generated character help me generate a screenshot of screenshot of an pvp game themed around *zelda: wind breaker*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;参考这张图的风格与配色创建落地页&#34;&gt;参考这张图的风格与配色创建落地页&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/D_studioproject/status/2047212826264211540&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/D_studioproject&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@D_studioproject&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/020.webp&#34;
	width=&#34;339&#34;
	height=&#34;475&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/020_hu_c3c8a43953642ff6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/020_hu_232ea5fdd98ce77d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;参考这张图的风格与配色创建落地页…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;71&#34;
		data-flex-basis=&#34;171px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a landing page using this image as a reference for style and color grading.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;李佳琦口红直播背景&#34;&gt;李佳琦口红直播背景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047207826913972518&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/021.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/021_hu_94305250a7e186b8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/021_hu_e1b1d851741502b5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;李佳琦口红直播背景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;李佳琦直播间背景，口红矩阵展示墙，暖光氛围灯，文案OMG买它
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;apple-pods-pro-3-耳机电商信息图&#34;&gt;Apple Pods Pro 3 耳机电商信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695/status/2047935217231663186&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@meng_dagg695&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/022.webp&#34;
	width=&#34;1152&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/022_hu_23f0b833ea7cf39d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/022_hu_3acb00488177719.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Apple Pods Pro 3 耳机电商信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;92
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact e-commerce infographic for &amp;#34;Apple Pods Pro 3&amp;#34; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;premium wireless over-ear headphones.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FOREGROUND - PRODUCT HERO SHOT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Extreme close-up of a hand holding a sleek, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;matte-white premium over-ear headphone toward the camera 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;at a slight angle. The headphone features:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Glossy white ear cushions with soft memory foam padding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Brushed aluminum silver headband with subtle Apple Pods 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Pro 3 embossed branding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Black mesh speaker grille visible on the ear cup face
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A tiny glowing green LED status indicator on the 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  right ear cup edge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Subtle touch-control icons etched on the outer cup surface
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Macro-lens shallow depth of field — hand and headphone 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;slightly blurred at edges to create cinematic depth. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Product remains razor-sharp in center frame.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CENTRAL SUBJECT — MODEL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the mid-ground: a smiling young woman with freckles 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;and wavy pastel-pink hair. She wears:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A vibrant lime-green knit beanie
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A psychedelic black and white-striped long-sleeve shirt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- The white over-ear headphones resting stylishly 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  around her neck (not on ears) — one hand casually 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  touching the ear cup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Expression: relaxed, confident, joyful. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;She is glancing slightly off-camera with a natural smile.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BACKGROUND &amp;amp; ATMOSPHERE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Clean soft-focus studio backdrop — light gray gradient 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fading to warm white at center. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Atmospheric overlays:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Diagonal rainbow prism lens flares cutting across 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  upper-left to lower-right
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Soft pastel light leaks in pink and yellow at corners
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 4–5 blurred white over-ear headphones floating 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  artistically in the background at various depths 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  and rotation angles
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Subtle bokeh circles from background studio lights
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Soft professional three-point studio lighting. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Key light from upper-left, fill light right side. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Rim light behind model for separation. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Glossy highlights on headphone surfaces catching light naturally.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TYPOGRAPHY &amp;amp; LAYOUT — Sans-Serif, Clean white 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOP CENTER (behind model, large background text):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Massive bold oversized text: &amp;#34;HEADPHONES&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Semi-transparent white, spanning full width behind subject
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOP RIGHT CORNER:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Bold clean text: &amp;#34;Apple Pods Pro 3&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Subtitle smaller text: &amp;#34;Over-Ear Wireless&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MID LEFT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Icon: small sound wave symbol
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Bold text: &amp;#34;Premium Sound&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Sub-text: &amp;#34;Active Noise Cancellation + Transparency Mode&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MID RIGHT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Extra-large bold numeral: &amp;#34;40&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Smaller text below: &amp;#34;hours of battery life&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LOWER LEFT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Extra-large bold numeral: &amp;#34;0&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   with &amp;#34;to&amp;#34; beside it → then bold &amp;#34;100%&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Sub-text: &amp;#34;Fast charge — 10 min = 3hrs playback&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BOTTOM RIGHT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Extra-large bold numeral: &amp;#34;1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Sub-text: &amp;#34;Year Warranty Included&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BOTTOM CENTER (fine print style):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Small elegant text: 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &amp;#34;Bluetooth 5.4  |  Hi-Res Audio Certified  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    |  Foldable Design  |  USB-C Charging&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TECHNICAL SPECS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Resolution: 8K ultra-sharp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: Commercial product photography meets 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       editorial fashion advertising
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Color Palette: White, lime green, pastel pink, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               rainbow prism accents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Focus: Tack-sharp on headphone product — 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       shallow DOF on everything else
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lens: 85mm macro, slight low angle
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Render Quality: Hyperrealistic, clean ad aesthetic, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                vibrant yet professional color grading
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;apple-pods-pro-3-耳塞电商信息图&#34;&gt;Apple Pods Pro 3 耳塞电商信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rovvmut_/status/2047912710365761828&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/rovvmut_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rovvmut_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/023.webp&#34;
	width=&#34;1360&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/023_hu_9d284e83fa8ed923.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/023_hu_b3aae5396a7445c5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Apple Pods Pro 3 耳塞电商信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact e-commerce infographic for &amp;#34;Apple Pods Pro 3&amp;#34; wireless earbuds.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;美妆产品商业营销照片&#34;&gt;美妆产品商业营销照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_/status/2047904483359760677&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSarah_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/024.webp&#34;
	width=&#34;1529&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/024_hu_2fc18589c5ab85e1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/024_hu_49494874c0f1388c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;美妆产品商业营销照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-resolution commercial marketing photograph features a young woman with sleek dark hair and a pink ribbed top in a neutral grey studio setting, centered behind a glossy Ellie Beauty spray bottle held prominently in the foreground. The composition is energized by vibrant, lime-green graphic &amp;#34;swooshes&amp;#34; and floating pill-shaped callouts that highlight product features like &amp;#34;glossy finish&amp;#34; and &amp;#34;upto 450°F protection&amp;#34; in bold black sans-serif text. The lighting is professionally diffused, casting soft highlights on the model’s face while creating a sharp, vertical reflection on the metallic green-to-gold gradient bottle label. Topping the scene is a large, lime-green headline in the upper right asking, &amp;#34;What does it do?&amp;#34;, altogether creating a clean, modern, and high-contrast aesthetic with a shallow depth of field that keeps the product and the model&amp;#39;s focused expression in sharp relief.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;aaa-电子游戏截图概念设计&#34;&gt;AAA 电子游戏截图概念设计
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ChiefMonkeyMike/status/2047828814580138156&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ChiefMonkeyMike&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ChiefMonkeyMike&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/025.webp&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/025_hu_9d87da51691dd0b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/025_hu_2a6fa1a60d0f68c3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AAA 电子游戏截图概念设计&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;generate screenshots from a AAA video game based off what The Sims Castaways sequel could look like. https://t.co/aL7hMdUYvj
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;西班牙语-grwm-早晨美妆缩略图&#34;&gt;西班牙语 GRWM 早晨美妆缩略图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/S0N_IA_/status/2047414367243657296&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/S0N_IA_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@S0N_IA_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/026.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/026_hu_32ebb9c4c41cdb8b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/026_hu_d7b7561cda28184f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;西班牙语 GRWM 早晨美妆缩略图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A vertical 9:16 TikTok-style GRWM beauty thumbnail set in a warm, sunlit Mediterranean-inspired bedroom. A stylish young woman with {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair in a messy curly updo sits at a marble vanity, leaning forward with one arm folded and the other hand applying lip balm or lipstick to her mouth. Her face is covered by a centered rectangular blur block for privacy, but the rest of her styling is elegant and natural: tan glowing skin, delicate gold necklace with a small round pendant, thin gold bracelet, stacked gold rings, and a white lace camisole with thin straps. In the foreground on the vanity are exactly 7 visible beauty objects: 1 round tabletop vanity mirror on the left, 1 cup holding 5 makeup brushes, 1 clear glass dropper bottle, 1 tall white pump skincare bottle, 1 small black dropper bottle, 1 beige rounded cosmetic sponge or puff, and 1 pale green squeeze tube on the right. The background shows a softly blurred cozy bedroom with 1 arched window on the left, 1 leafy potted plant, 1 bed with white bedding and a mustard accent pillow, exposed wooden ceiling detail, and 1 framed landscape painting on the wall. Use golden-hour sunlight streaming from the left, soft shadows, creamy skin tones, shallow depth of field, luxury lifestyle editorial photography, intimate self-care mood, polished but natural composition. Add bold playful Spanish headline text in the upper left in three stacked lines reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Mi rutina de belleza matutina&amp;#34;}, with each line large and rounded, white outline and soft drop shadow, using pastel colors: first line white, second line pink, third line pale yellow. Add 3 pink doodle accent strokes above the headline, 1 curved pink underline-swoosh beneath it, and 1 small yellow sun icon to the right of the last line. Place a clean white {argument name=&amp;#34;brand text&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;} logo in the upper right. High-end influencer thumbnail aesthetic, crisp product focus in foreground, warm inviting lifestyle scene.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电影感城市爆炸追逐&#34;&gt;电影感城市爆炸追逐
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gugombly/status/2047310862428303636&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gugombly&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gugombly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/027.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/027_hu_ec87a1df69e1c275.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/027_hu_ff2ed2d0e6656017.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电影感城市爆炸追逐&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic photorealistic action scene in a rainy downtown city street canyon, showing {argument name=&amp;#34;main subject&amp;#34; default=&amp;#34;a dark-haired man in his 30s&amp;#34;} sprinting directly toward the camera in the center foreground with a tense survival expression, wearing a soaked dark jacket, dark shirt, and dark pants, mid-stride with one arm pumping forward. Behind him, a massive urban explosion tears through the street and lower facade of a high-rise building, sending a huge cloud of smoke, fire, dust, shattered concrete, glass, and metal debris outward in all directions. The scene includes exactly 3 visible damaged vehicles: 1 dark sedan in the left foreground with headlights on and a crumpled hood splashing through rainwater, 1 wrecked dark car in the right midground with severe front-end damage, and 1 overturned or airborne black SUV tilted upward behind it on the right side. Wet asphalt reflects headlights, firelight, and gray skyscrapers. Dense debris fills the air, with chunks of rubble frozen in motion. Overcast stormy daylight, desaturated blue-gray color palette with orange fire accents, dramatic motion blur in flying debris but sharp focus on the running figure, low-angle wide-lens composition, blockbuster disaster-movie realism, ultra-detailed textures, high contrast, dynamic depth, volumetric smoke, rain spray, cinematic lighting. Add a white {argument name=&amp;#34;watermark text&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;} logo in the top-right corner.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫-vtuber-minecraft-直播缩略图&#34;&gt;动漫 VTuber Minecraft 直播缩略图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rerxmsz06/status/2047261622121705782&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/rerxmsz06&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rerxmsz06&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/028.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/028_hu_19722c166657124a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/028_hu_5e7e88cf6b5865b8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫 VTuber Minecraft 直播缩略图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A vibrant anime-style YouTube thumbnail for a livestream gaming broadcast, in a wide 16:9 composition, with a neon purple and pink streamer room. Center the scene on a cute catgirl VTuber sitting at a desk, shown from the waist up, leaning forward energetically with one hand on a computer mouse and the other hand reaching toward the viewer. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;light orange-blonde&amp;#34;} bob-cut hair with soft bangs, fluffy brown-and-cream cat ears, and a visible cat tail. Her face is intentionally obscured by a solid rectangular censor block in the center. She wears a black-and-white maid-inspired outfit with a frilly white blouse, black dress bodice, puff sleeves, white ruffles, black ribbon bow, and a gold bell choker. Place a mechanical keyboard with bright RGB lighting on the desk, a glowing gaming mouse, and a streamer microphone on the far left with pink-purple LED lighting. Put 2 cat-themed desk items in the foreground: a plush cat face on the bottom left and a black cat-shaped mug on the bottom right. Behind her is a gaming chair with paw-print details. On the left side, add large bold Korean headline text in thick white block letters with black fill shadows and a glowing purple outline, stacked in 2 lines: {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;방송중 대참사&amp;#34;}. Below it, add a smaller yellow comic-style burst caption with black outline reading {argument name=&amp;#34;sub text&amp;#34; default=&amp;#34;&amp;gt; 크리퍼 실화냐&amp;#34;}. On the right side, show 1 large computer monitor angled inward, displaying a Minecraft-like scene with bright blue sky, green trees, water, and a large green Creeper popping out toward the viewer, outlined dramatically like a sticker cutout. Add starburst effects and neon accents around the monitor to heighten the chaos. Use exaggerated thumbnail aesthetics: ultra-saturated colors, sharp cel shading, thick outlines, glossy highlights, high contrast, dynamic perspective, and a clickworthy streamer-disaster mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;温馨动漫-asmr-掏耳少女&#34;&gt;温馨动漫 ASMR 掏耳少女
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shion_yamabuki/status/2047232198382964969&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shion_yamabuki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shion_yamabuki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/029.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/029_hu_c688082893a459f2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/029_hu_352bacb0545e3ced.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;温馨动漫 ASMR 掏耳少女&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A soft, dreamy anime illustration of a cute young woman doing ASMR in a cozy bedroom at night, seated close to the viewer with her knees pulled up and a black 3Dio-style binaural microphone centered in front of her. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;deep violet&amp;#34;} hair in a loose messy updo with wispy bangs framing her face, large sparkling {argument name=&amp;#34;eye color&amp;#34; default=&amp;#34;blue&amp;#34;} eyes, a gentle blush, and a sweet open-mouth smile. Her head is tilted slightly toward the viewer in a warm, affectionate pose. She wears a delicate white lace camisole with thin straps and an oversized fluffy knit cardigan in {argument name=&amp;#34;cardigan color&amp;#34; default=&amp;#34;soft pink-lavender&amp;#34;} draped off her shoulders, creating a tender, intimate late-night healing atmosphere. Both hands lightly touch the white silicone ears of the microphone as if about to give an ear massage. The room is softly lit with pink and amber ambient lighting, heavy curtains in the background, a bed or sofa with plush cushions, warm fairy-light bokeh, and a small plant on the right side. Add glowing handwritten Japanese neon text integrated into the composition: on the left, 4 text elements reading &amp;#34;とろける&amp;#34;, &amp;#34;耳&amp;#34;, &amp;#34;マッサージ&amp;#34;, and &amp;#34;ASMR&amp;#34; with 2 small heart symbols; on the right, vertical text reading &amp;#34;いっぱい癒してあげるね...♡&amp;#34;. Use a polished modern anime style, highly detailed face and hair, glossy eyes, smooth luminous skin, soft shading, pastel highlights, shallow depth of field, romantic cozy streamer-thumbnail composition, and a soothing feminine color palette dominated by pink, lavender, cream, and warm gold.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;名人直播概念图&#34;&gt;名人直播概念图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SelenaGmzIN/status/2047185882009198865&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SelenaGmzIN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SelenaGmzIN&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/030.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/030_hu_57bd5d6a0e1e0e36.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/030_hu_efeff596d19acddc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;名人直播概念图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;celebrity&amp;#34; default=&amp;#34;selena gomez&amp;#34;} started a surprise {argument name=&amp;#34;platform&amp;#34; default=&amp;#34;youtube&amp;#34;} livestream.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;monika-动漫横幅插画&#34;&gt;Monika 动漫横幅插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/031.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/031_hu_cb7954af0d3e5f46.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/031_hu_a4c7b40777951277.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Monika 动漫横幅插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly polished anime banner illustration in a warm golden classroom-literature-club setting, wide cinematic composition. On the left half, a large elegant glowing script title reads {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Monika&amp;#34;} in oversized calligraphy, colored white and pale green with a soft neon glow, metallic highlights, decorative flourishes, hearts, sparkles, and swirling ornamental lines around it. On the right half, a beautiful anime schoolgirl inspired by {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Monika&amp;#34;} sits at a wooden desk, facing slightly left, with long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;chestnut brown&amp;#34;} hair, a very large white ribbon bow, warm brown eyes, and a thoughtful, confident expression. She wears a Japanese high school uniform with exactly 4 visible clothing pieces: a brown blazer, white shirt, red ribbon tie, and brown argyle sweater vest. She holds a fountain pen over papers on the desk with one hand while the other rests near her face in a poised writing pose. The room is filled with sunset light streaming through tall windows, dust motes, trailing green ribbons, floating petals, handwritten notes pinned and hanging in the background, and a dark chalkboard covered with faint cursive writing and geometric doodles. Include exactly 9 prominent desk and room props: a bouquet of white roses at lower left, a stack of books at left, an hourglass near the center-left, a sealed envelope with a small green leaf emblem, scattered manuscript pages on the desk, a pen cap near the writing hand, a green-upholstered chair, a piano in the back right, and a stack of 4 books on the right. The 4 right-side book spines read, from top to bottom: &amp;#34;Save Me&amp;#34;, &amp;#34;My Feelings&amp;#34;, &amp;#34;Poems for the Literature Club&amp;#34;, and &amp;#34;Just Monika.&amp;#34; Add lush volumetric lighting, glittering particles, green-and-gold color harmony, delicate linework, ultra-detailed painterly shading, romantic visual-novel key art quality, and a premium polished thumbnail/banner aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;紫色动漫-yuri-横幅&#34;&gt;紫色动漫 Yuri 横幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/032.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/032_hu_b649d3a35900259e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/032_hu_96c3fba8e68ccf8e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;紫色动漫 Yuri 横幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A polished anime-style banner illustration in a dreamy violet palette, wide cinematic composition, showing a quiet literary room at twilight. On the right side, a beautiful teenage anime girl named {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Yuri&amp;#34;} sits at a wooden desk beside a large window with purple curtains, holding a dark ornate hardcover book close to her chest and gazing softly downward with a shy, introspective expression. She has very long straight {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;deep violet&amp;#34;} hair with glossy highlights, side bangs, a small hair clip, and violet eyes, wearing a Japanese school uniform with a gray blazer, white shirt, red ribbon tie, and dark skirt. Across the left-center of the image, the glowing calligraphic word {argument name=&amp;#34;title text&amp;#34; default=&amp;#34;Yuri&amp;#34;} appears large in luminous neon-lavender script with elegant flourishes, a small heart, and decorative filigree, integrated into the scene like magical typography. The desk contains exactly 8 visible item groups: 1 open book in the foreground center, 1 black inkwell with a white feather quill, 1 closed book near the candle, 1 stack of books under papers, 1 loose handwritten page in front, 1 small purple flower on the desk, 1 floral porcelain teacup with saucer on the right, and 1 dark book stack at the far right. Additional background details include exactly 6 decorative environmental elements: 1 lit candle in a glass holder on the left, 1 cluster of purple flowers in the left foreground, 1 hanging spray of purple blossoms in the upper left, 1 pinned botanical note in the upper right, 1 bookshelf with books and flowers in the right background, and 1 sunset sky visible through the window. Add drifting flower petals, faint handwritten script textures, ornate gold border lines around the frame, soft volumetric window light, subtle sparkles, rich shadows, and a romantic melancholic atmosphere. Highly detailed, clean line art, glossy anime rendering, premium visual-novel key art, perfect for a niche anime banner or character-themed thumbnail.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉色动漫-natsuki-横幅&#34;&gt;粉色动漫 Natsuki 横幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/033.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/033_hu_b393e9af90388b65.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/033_hu_e2b33106bf913462.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉色动漫 Natsuki 横幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A glossy pastel pink anime banner in a wide cinematic layout, themed around cute romance and sweets. Place a confident teenage anime girl on the right side, shown from about thigh-up, with short fluffy bob hair in {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;soft pink&amp;#34;}, large pink-magenta eyes, a small gentle smile, and arms crossed. She wears a Japanese school uniform: 1 brown blazer, 1 white shirt, 1 red ribbon bow at the collar, and 1 dark navy-and-purple plaid skirt. Add 2 red ribbon hair accessories, one larger bow on the side and one smaller ribbon accent. On the left half, feature the large handwritten script name {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Natsuki&amp;#34;} in bold glossy 3D cursive, white-to-pink fill with bright pink outline, soft bevel, subtle drop shadow, sparkles, and a small heart flourish integrated into the lettering. The background should be a layered scrapbook collage in blush pink tones with notebook paper texture, faint grid and torn paper details, scattered doodled hearts, flower petals, sparkles, and cute bakery motifs. Include exactly 4 pinned or taped sketch-style portrait cards of the same girl behind her on the upper-right and mid-right, arranged like overlapping polaroids. Add exactly 2 cupcakes in the foreground near the bottom left and lower center-left, both with pink frosting, striped wrappers, and tiny heart toppers or candy accents. Frame the composition with flowing satin ribbons and bows: exactly 4 major ribbon elements visible, including 1 bow near the top left, 1 bow near the bottom left, and 2 long curling ribbons sweeping across the top and right edges. Use a soft high-detail anime illustration style, polished lighting, dreamy bloom, romantic Valentine palette, delicate textures, and a clean impactful thumbnail-like composition.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;梦幻动漫-sayori-横幅&#34;&gt;梦幻动漫 Sayori 横幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/034.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/034_hu_5322be357707c779.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/034_hu_11a6eee064b46f5b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;梦幻动漫 Sayori 横幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A wide anime banner illustration of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Sayori&amp;#34;} in a bright dreamy classroom, rendered in a polished, high-end visual novel style with soft painterly lighting, warm pastel colors, and sparkling atmosphere. Show a cheerful teenage schoolgirl with short fluffy coral-pink hair, messy bob layers, and a large red bow on the right side of her head, wearing a Japanese school uniform with a light brown blazer, white shirt, red ribbon tie, brown sweater vest, and pleated navy skirt. She stands slightly left of center with arms open wide in an inviting, joyful pose, as if welcoming the viewer, with dynamic perspective and gentle motion in her hair and clothes. Her face is intentionally obscured by a flat rectangular skin-tone censor block. Behind her, tall classroom windows reveal a vivid blue sky with soft white clouds and warm sunlight streaming in. The right half of the image features a large decorative handwritten script reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Sayori&amp;#34;}, cream-white lettering with a soft orange-gold outline and glow, integrated into a scrapbook-like wall background. Surround the scene with hanging photo prints clipped to string, including sky photos and a sunflower photo, plus hand-drawn doodles of clouds, stars, hearts, and a sun. Add blue and yellow paper stars, ribbons, floating confetti, a blue paper airplane, notebook pages, a spiral sketchbook, and scattered stationery elements. Place sunflowers prominently in the foreground and edges, with warm golden bokeh and soft depth of field. Make the composition energetic, cute, nostalgic, and emotionally uplifting, like a premium anime-themed YouTube banner or character tribute header, ultra-detailed, clean, stylish, luminous, and impact-focused.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;赛博朋克-404-女巫召唤&#34;&gt;赛博朋克 404 女巫召唤
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Eris_Create_Lab/status/2047537707904274795&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Eris_Create_Lab&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Eris_Create_Lab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/035.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/035_hu_b5363cd3ebd4a4b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/035_hu_4b461d992e17609.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;赛博朋克 404 女巫召唤&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic anime-style cyberpunk witch standing on a dark rooftop high above a dense futuristic city at night, viewed from a slightly elevated angle. The main subject is a petite young witch girl with pale skin, short icy blue bobbed hair, pointed elf-like ears, and glowing red eyes, wearing a sly confident smile. She raises a black wand overhead in her right hand, with a dangling orb charm at the tip glowing faintly purple and red. Her oversized crooked witch hat is black with purple lining and covered in stitched patches, warning labels, straps, and white graphics including a large “404” and a skull emblem. She wears a black and purple techwear outfit: oversized hooded jacket with many straps and tags, black crop top with “404” on the chest, layered belts, short bottoms, fishnet on one leg, black lace-up combat boots, chokers, and metallic accessories. Several hanging straps and tags visibly read words like “WITCH 404,” “404,” and glitch-themed markings. Beneath and beside her, a large glowing violet magic circle mixed with hacker interface aesthetics is projected on the rooftop floor, filled with occult rings, sigils, a central skull symbol, and scattered neon system text such as error-code fragments, creating a fusion of sorcery and digital corruption. Emerging from the circle is 1 large armored summoned figure: a black futuristic demon-knight or robotic familiar with jagged reflective armor, a narrow purple-lit visor, and a heavy weapon held in one hand, partially dissolving into purple energy shards and smoke. The background shows a sprawling rainy megacity of apartment towers and industrial rooftops, packed with windows, balconies, cables, signs, and haze. On a nearby building wall is a giant vertical graffiti-style sign with 3 readable elements: “404”, “Witch”, and “ERROR NOT FOUND”, plus a smaller “E404”. Additional purple neon glitch text and symbols are scattered across rooftops and in the air. Use a dark palette of black, indigo, and deep violet with sharp magenta-purple highlights, cinematic contrast, reflective wet surfaces, dense detail, and a high-end polished illustration style. The mood is occult, edgy, stylish, and dangerous, combining urban fantasy, hacker aesthetics, and magical summoning.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫奇幻旅行电影海报&#34;&gt;动漫奇幻旅行电影海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Design4p0/status/2047531978346398002&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Design4p0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Design4p0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/036.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/036_hu_f9b3ef362bb33790.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/036_hu_61c831e17c5229a1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫奇幻旅行电影海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic anime movie poster for a fictional film titled {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;EL VIAJE DE LA LUNA DE PLATA&amp;#34;}, in polished modern Japanese animation style with a natural, less over-detailed look. Center a teenage anime girl from mid-thigh up, facing forward, with a short silver bob haircut, pale skin, a black choker, small black geometric earrings, a white tank top, and a dark navy oversized zip hoodie with two yellow stripes running down the sleeves. She has a backpack strap over one shoulder and both hands tucked casually into the hoodie pockets. Her face is obscured by a flat rectangular censor block in a muted beige tone, covering the entire face area. Place her in a dramatic twilight coastal city setting that blends travel, nostalgia, and fantasy: on the left, a lit train platform with a commuter train approaching, its destination sign showing Japanese characters; behind it, a glowing city skyline with a ferris wheel. In the distance and lower left, layered mountains and a winding illuminated valley road. On the right, a cliffside coast at sunset with the sea reflecting warm light, a crescent moon in the sky, several flying seabirds, and a curving highway descending along the hillside. Also on the right, include a wooden signpost with exactly 3 directional signs labeled &amp;#34;NUEVOS CAMINOS&amp;#34;, &amp;#34;VIEJOS RECUERDOS&amp;#34;, and &amp;#34;SIN LÍMITES&amp;#34;. At the top center, add the Spanish tagline {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;CADA DESTINO CAMBIA SU HISTORIA&amp;#34;} in elegant serif capitals. On the upper left, create an awards column in gold typography with laurel wreaths and exactly 4 award blocks: one text block reading &amp;#34;GANADORA DE MÚLTIPLES PREMIOS&amp;#34; with 5 gold stars beneath it, then three laurel award sections reading &amp;#34;MEJOR PELÍCULA ANIMADA / FESTIVAL INTERNACIONAL DE ANIMACIÓN / 2024&amp;#34;, &amp;#34;PREMIO DEL PÚBLICO / FESTIVAL INTERNACIONAL DE CINE / 2024&amp;#34;, and &amp;#34;MEJOR BANDA SONORA ORIGINAL / ACADEMIA DE CINE ANIMADO / 2024&amp;#34;. Place the film title large across the lower center in luminous ornate serif lettering with a magical glow and sweeping flourishes, layered partly over the character. Beneath it, add the Spanish quote {argument name=&amp;#34;quote&amp;#34; default=&amp;#34;A veces, para encontrarte... tienes que perderte en el mundo.&amp;#34;}. Below that, add &amp;#34;UNA PELÍCULA DE ESTUDIO LUMINARIA&amp;#34; in small caps. At the bottom, add the release line {argument name=&amp;#34;release text&amp;#34; default=&amp;#34;PRÓXIMAMENTE EN CINES&amp;#34;} in large gold serif capitals, plus tiny production logos and credits along the footer, including a small studio emblem on the left. Rich blue, violet, and warm sunset orange palette, glossy poster lighting, romantic adventure mood, balanced composition, highly polished theatrical key art, vertical one-sheet film poster.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫音乐训练营宣传海报&#34;&gt;动漫音乐训练营宣传海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sorane_aimusic/status/2047507066697507134&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sorane_aimusic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sorane_aimusic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/037.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/037_hu_9ebcb90fe3d33c90.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/037_hu_c896eb8c5c5520af.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫音乐训练营宣传海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a dramatic Japanese anime-style promotional thumbnail poster for an event, vertical 4:5 composition, ultra-detailed, cinematic, neon-lit, high contrast, designed like a social media announcement image. The main subject is a beautiful anime girl centered slightly right, shown from the waist up, with long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;deep blue&amp;#34;} hair blowing in the wind, decorated with small star hairpins, wearing a dark hoodie and large studio headphones around her neck, against a glowing sunset-to-night city skyline filled with sparkling lights, music-energy particles, lens flares, and flying glowing petals. Her face area is obscured by a soft rectangular blur block. Use a vivid palette of electric blue, violet, magenta, gold, and sunset orange. Fill the design with layered Japanese typography that is crisp, readable, and integrated into the art like a polished event advertisement. Include exactly 8 major text groups: top left copy reading 「始まるのは、キミと創る 音楽の物語。」 with a smaller subcopy beneath reading 「AIを使って、みんなで音楽をつくる特別な3日間。」; top right a glowing marquee sign reading 「GW連休!」 and a smaller neon box below reading 「みんなで最高の音楽をつくろう!」; center main title with small English text 「AI MUSIC BOOTCAMP 2」 above huge Japanese title text 「AI音楽 ブートキャンプ 2」; a gigantic gold metallic announcement across the middle reading 「開催決定!」; a date bar reading 「開催期間」 followed by 「5.2 SAT 土」 and 「5.4 MON 月」; a hashtag callout near the bottom reading 「参加はカンタン!! #AI音楽ブートキャンプ2 をつけて投稿するだけ!」; a lower encouragement line reading 「初心者も大歓迎! みんなで最高の音楽体験を!」; and 3 bottom feature captions with icons reading 「一緒に学ぶ 仲間とつながる」, 「AIで創る 新しい音楽体験」, and 「想いをカタチに 自分だけの1曲を」. On the left edge, add a vertical filmstrip with exactly 4 inset panels showing the same girl in music-related scenes: 1) performing on a stage before a crowd, 2) working at a music production desk with screens and equipment, 3) singing into a microphone, 4) playing an acoustic guitar. Add exactly 2 neon music-themed icon illustrations in the lower area: a tilted smartphone with a music note on the lower left and a glowing microphone with musical notes on the lower right. Make the text effects glossy, luminous, and embossed with gold and white highlights, with energetic streaks and spark explosions around the headline. The overall feeling should be inspiring, celebratory, futuristic, and emotionally uplifting, like a high-impact Japanese Golden Week music bootcamp ad for {argument name=&amp;#34;event name&amp;#34; default=&amp;#34;AI音楽ブートキャンプ 2&amp;#34;}.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;热带鹦鹉像素马赛克&#34;&gt;热带鹦鹉像素马赛克
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/erikmackinnon/status/2048190288179675290&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/erikmackinnon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@erikmackinnon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/038.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/038_hu_e7d5a0eeeb2f8e5f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/038_hu_cee3d515fddffdd5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;热带鹦鹉像素马赛克&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A vibrant pixel-art style mosaic of a tropical parrot perched on a small brown branch in the middle of dense rainforest foliage. The entire image is rendered as a tight grid of tiny square tiles with visible black outlines, creating a stained-glass or LED-screen effect. The bird is shown in side profile facing right, with a large curved black beak, a pale cream face, a bright red-orange forehead and throat, vivid green upper body, and long wings and tail in saturated blue and cyan. The surrounding jungle is filled edge to edge with layered green leaves in many shades, with a soft light green glow behind the parrot to separate it from the background. High color contrast, rich tropical palette, crisp tile pattern, centered composition, decorative digital mosaic aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;温室酒吧里的金色鸡尾酒&#34;&gt;温室酒吧里的金色鸡尾酒
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/FernandesK47117/status/2048183925294371147&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/FernandesK47117&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@FernandesK47117&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/039.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/039_hu_252e19d6194745a9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/039_hu_d48d1ae02359ae40.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;温室酒吧里的金色鸡尾酒&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic vertical photo of a hand holding up a large balloon wine glass filled with a sparkling golden-yellow citrus cocktail in a lush indoor greenhouse bar. The drink is backlit by warm late-afternoon sunlight, making it glow translucent amber. Inside the glass there is 1 visible citrus wedge, and at the rim there is 1 fresh mint garnish cluster. The hand enters from the lower left, delicately gripping the stem, wearing 1 chunky translucent amber bracelet. The setting is dense with tropical greenery, hanging ferns, and vine-covered walls, with a bright greenhouse roof structure visible overhead and 2 warm exposed hanging bulbs softly glowing in the background. Use shallow depth of field with creamy bokeh, strong sun rays filtering through leaves, soft haze, and rich green-and-gold color contrast. Add a blurred foreground leaf or plant along the right edge to frame the composition. The lower background should suggest a busy café or cocktail lounge with indistinct people, but keep them heavily out of focus. Photorealistic, elegant lifestyle photography, moody yet sun-drenched, shot from a low angle looking upward at the raised glass, high detail on condensation, glass reflections, and the luminous drink.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;多面板图像板模板&#34;&gt;多面板图像板模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/aimikoda/status/2048183782876778821&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/aimikoda&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@aimikoda&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/040.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/040_hu_19301fce8cc60ac5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/040_hu_89197a97ec704f92.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;多面板图像板模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a {argument name=&amp;#34;grid layout&amp;#34; default=&amp;#34;4x3&amp;#34;} borderless grid where each panel is an independent image of the {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;a young woman&amp;#34;}. Maintain strong subject consistency across all panels, with consistent color and lighting. Depict {argument name=&amp;#34;theme&amp;#34; default=&amp;#34;childhood memories&amp;#34;} with a {argument name=&amp;#34;mood&amp;#34; default=&amp;#34;warm, nostalgic&amp;#34;} mood in {argument name=&amp;#34;style&amp;#34; default=&amp;#34;nostalgic cinematic realism&amp;#34;} style. No text. No gap.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;handwritten-写实-letter&#34;&gt;Handwritten 写实 Letter
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mosthssan/status/2048160477658980711&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mosthssan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mosthssan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/041.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/041_hu_a2746ec4437d71a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/041_hu_8c20723e8c102965.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Handwritten 写实 Letter&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a highly realistic image of a handwritten letter containing a ({argument name=&amp;#34;message&amp;#34; default=&amp;#34;message or reflection carrying meanings of affection and loyalty to my account followers&amp;#34;}) on lined paper, with very touching words written in liquid ink pen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-band-finale-at-budokan&#34;&gt;Anime Band Finale at Budokan
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SDAI1807097011/status/2048127178592915583&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SDAI1807097011&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SDAI1807097011&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/042.webp&#34;
	width=&#34;767&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/042_hu_6f38d7ee23d7fca4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/042_hu_2a77149fd84bbfd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime Band Finale at Budokan&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic anime concert illustration seen from behind the performers onstage, showing 4 teenage girls standing shoulder to shoulder at the front of a huge indoor arena, arms around each other in a triumphant post-performance moment. The camera is positioned slightly behind and below them, facing out toward the audience and the giant venue screen. The atmosphere is dazzling and emotional, filled with dense blue-and-gold confetti, sparkling particles, and strong white stage spotlights pouring down from above. The crowd fills the entire arena as a sea of tiny glowing blue lights. At center top, a giant rectangular screen displays elegant serif concert text: {argument name=&amp;#34;band name&amp;#34; default=&amp;#34;ELEMAYU&amp;#34;}, &amp;#34;1st LIVE at 日本武道館&amp;#34;, {argument name=&amp;#34;concert date&amp;#34; default=&amp;#34;2024.6.15&amp;#34;}, and &amp;#34;SOLD OUT&amp;#34;. On both upper side walls of the arena, the large venue name &amp;#34;日本武道館&amp;#34; is visible. The 4 girls all wear matching dark stage outfits: black or very dark navy hooded jackets with subtle decorative back prints, short pleated skirts, and live-performance styling. Count and depict all 4 members distinctly from left to right: 1) a girl with short wavy silver-lavender hair holding a bass guitar slung over her shoulder, 2) a girl with long straight black hair holding a red electric guitar, 3) a girl with fluffy shoulder-length blonde hair holding a dark guitar, 4) a girl with brown hair in a high ponytail, no visible instrument, raising one arm high and holding a drumstick or baton in celebration while the other arm wraps around the blonde member. Show their backs and silhouettes rim-lit by stage light, with soft highlights on their hair. Include stage equipment: a microphone stand and part of a bass neck at the far left, and a visible drum kit with cymbals at the right edge. The stage floor is glossy and reflective, covered with scattered confetti and several blue flower bouquets near the bottom foreground. Use rich midnight blues, violet shadows, warm golden sparkles, and cinematic bloom. The mood should feel like a sold-out dream performance finale, sentimental, victorious, and breathtakingly luminous, in highly detailed painterly anime style.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫少女与男性约会照片拼贴&#34;&gt;动漫少女与男性约会照片拼贴
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIillust_studio/status/2048099186214900130&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIillust_studio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIillust_studio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/043.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/043_hu_fbe12bbcbcb09878.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/043_hu_deb555056dbb63f9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫少女与男性约会照片拼贴&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A 4x4 photo collage of 16 warm, cinematic lifestyle snapshots featuring a real adult man and an anime-style young woman companion posed together as if in casual date photos. The man has short dark hair, light skin, an average build, and wears a plain dark navy or black long-sleeve shirt; his face is intentionally obscured and softly blurred in every frame. The anime girl has long blonde twin ponytails, large blue eyes, light skin, and a slim petite build, wearing a black sleeveless top, layered silver necklaces including a cross pendant, black wrist accessories, a red plaid pleated mini skirt, and black-and-white striped thigh-high socks. Blend realistic photography with a convincingly integrated 2D anime character, keeping her clean cel-shaded look while matching the scene lighting, perspective, focus, and color grading so she appears naturally present beside him. Use moody evening tones, soft bokeh, shallow depth of field, and intimate candid couple energy. The 16 panels are: 1) close indoor portrait with both seated close together, the girl resting beside him; 2) nighttime city street side profile conversation under blurred streetlights; 3) indoors, both reading a book together, the girl leaning on his shoulder; 4) outdoor cafe table, both holding takeaway coffee cups; 5) restaurant table with multiple dishes visible, dining together; 6) mirror selfie in an elevator, the man holding a smartphone while the girl makes a peace sign; 7) car interior road-trip shot, the man driving and the anime girl in the passenger seat; 8) seaside sunset from behind, both sitting side by side watching the ocean; 9) neon-lit city night portrait, the girl pointing toward the camera; 10) intimate elevator close-up, the girl with eyes closed leaning affectionately against him; 11) full mirror selfie in an elevator showing more of both outfits; 12) night city skyline portrait with a lit tower in the background; 13) camera selfie close-up, the man holding a compact camera toward a mirror or reflective surface; 14) cozy indoor lounge moment, the man holding a glass of red wine while the girl smiles and makes a peace sign; 15) rear full-body rainy night street shot, the pair walking away hand in hand under glowing streetlights; 16) extreme close-up night portrait with the girl flashing a peace sign. Keep the collage tightly gridded with thin white dividers, square overall format, consistent amber-brown color grading, romantic urban realism, and subtle social-media photo-dump aesthetics.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢华-lifestyle-mustang-shot&#34;&gt;奢华 Lifestyle Mustang Shot
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Just_sharon7/status/2048095904138485962&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Just_sharon7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Just_sharon7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/044.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/044_hu_32ee949f06932356.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/044_hu_d07d56ec1c576cb8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢华 Lifestyle Mustang Shot&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A stylish young woman with {argument name=&amp;#34;hair style&amp;#34; default=&amp;#34;long wavy blonde hair&amp;#34;}, defined cheekbones, and a confident expression, wearing black sunglasses and a {argument name=&amp;#34;clothing&amp;#34; default=&amp;#34;thick white puffer jacket&amp;#34;} over a fitted black top, standing confidently in front of a {argument name=&amp;#34;car&amp;#34; default=&amp;#34;vibrant hot-pink Ford Mustang&amp;#34;}. She is posing with one hand slightly raised near her chest, exuding effortless attitude and elegance. The car is parked on a scenic coastal road lined with blooming pink cherry blossom trees and tall palm trees. Behind them is a calm sea under a dramatic overcast sky with soft clouds. Pink petals are scattered on the wet asphalt. A wooden bench is visible on the left side near the water. Cinematic lighting, photorealistic, ultra-detailed skin texture, natural lighting reflections, Instagram-style luxury lifestyle shot, vibrant colors, moody atmosphere, 8k resolution --ar 9:16 --stylize 250
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-friends-eating-soba&#34;&gt;Anime Friends Eating Soba
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIMAG31G/status/2048089673621516547&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIMAG31G&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIMAG31G&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/045.webp&#34;
	width=&#34;1200&#34;
	height=&#34;821&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/045_hu_f3ad5e7e56139856.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/045_hu_d22c9a09750d4c8e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime Friends Eating Soba&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;146&#34;
		data-flex-basis=&#34;350px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cozy anime-style interior of a traditional Japanese soba restaurant, viewed from table height in a booth, with two young women seated across the near corners of a rectangular wooden table and facing the viewer in a casual dining snapshot. The left woman has long straight pastel {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;lavender with cyan highlights&amp;#34;} hair with glossy strands and soft bangs, and wears a white kimono-style top with bright blue trim and a deep blue obi-like sash skirt; she is slightly curvy, sitting on the left red vinyl bench, turned a little toward the camera, raising her left hand in an open friendly wave. The right woman has a sleek short bob in dark brown to black with a purple underlayer visible near the ends, red rectangular glasses, small earrings, a fitted charcoal-gray long-sleeve scoop-neck top, and light blue jeans; she sits on the right red vinyl bench, leaning slightly toward the table and holding chopsticks in her right hand as if about to eat. Place 2 large black bowls of soba on the table, one in front of each woman, both filled with dark broth, noodles, sliced duck meat, and chopped green onions; add 1 clear water glass near the center back of the table and 2 small condiment dishes beside it. The restaurant should feel warm and nostalgic, with wooden paneling, a shoji-style window on the left, a small potted plant on the windowsill, a back counter with condiments and utensils, and a navy noren curtain on the right bearing large white Japanese text &amp;#34;蕎麦&amp;#34; and smaller vertical text &amp;#34;手打ちそば&amp;#34;. On the back wall, show 7 vertical wooden menu boards with Japanese dish names and prices, including labels such as &amp;#34;もりそば&amp;#34;, &amp;#34;ざるそば&amp;#34;, &amp;#34;かけそば&amp;#34;, &amp;#34;たぬきそば&amp;#34;, &amp;#34;肉そば&amp;#34;, &amp;#34;天ぷらそば&amp;#34;, and &amp;#34;鴨南蛮そば&amp;#34;. Use clean polished anime rendering, crisp line art, soft warm lighting, detailed food illustration, rich wood textures, and a friendly everyday outing mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;哥特机械战士大教堂关键视觉&#34;&gt;哥特机械战士大教堂关键视觉
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yanagihara_0805/status/2048085829713842405&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/yanagihara_0805&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yanagihara_0805&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/046.webp&#34;
	width=&#34;675&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/046_hu_5f71e547796d351b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/046_hu_29c0319bd8507c36.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;哥特机械战士大教堂关键视觉&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic dark fantasy anime illustration in a ruined gothic cathedral, vertical composition. Show a lone female android-like warrior from behind, centered slightly low in frame, kneeling or sitting back on her heels on a reflective stone floor. She has extremely long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;silver white&amp;#34;} hair spreading across the floor and air, a sleek black blindfold visor covering her eyes, and a black high-cut gothic combat dress with elegant straps, long black opera gloves, and thigh-high black boots. Her physique is slim and graceful. She holds 1 large ornate sword upright in front of her, with both hands resting on the hilt, the blade planted on the ground like a memorial. The sword has a dark blade and a decorative gold ring-like guard near the handle. The atmosphere is solemn, tragic, and reverent. Place 3 tall pointed arched windows in the background, glowing with cold white backlight through haze and dust. Include 4 stone angel statues total: 2 larger angels in the left background and 2 in the right background, partially obscured by fog and darkness. Fill the air with drifting ash, snow-like particles, black debris fragments, and a few faint orange embers near the floor. Use dramatic volumetric light rays, soft bloom, smoky mist, high contrast, and a desaturated palette of charcoal gray, silver, blue-gray, and black. The scene should feel like a memorial after a battle, highly detailed, ultra-polished, melancholic, ethereal, and game key art inspired by {argument name=&amp;#34;franchise title&amp;#34; default=&amp;#34;NieR:Automata&amp;#34;}. Add 1 vertical Japanese title inscription near the lower left reading {argument name=&amp;#34;vertical text&amp;#34; default=&amp;#34;儚き夢と共にあれ&amp;#34;}, with 1 small vertical English subtitle beside it reading {argument name=&amp;#34;subtitle text&amp;#34; default=&amp;#34;NieR:Automata&amp;#34;}.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;cloud-shape-doodle-generation&#34;&gt;Cloud shape doodle generation
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gorden_Sun/status/2048080137149899133&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gorden_Sun&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gorden_Sun&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/047.webp&#34;
	width=&#34;1200&#34;
	height=&#34;972&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/047_hu_e30673326a8eb001.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/047_hu_3e83eb8d79a3319b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Cloud shape doodle generation&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;123&#34;
		data-flex-basis=&#34;296px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Based on the shape of the {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;clouds&amp;#34;} in the image, identify what object, animal, or person they most resemble. Do not change the original image; instead, draw that object, animal, or person over the original image in a {argument name=&amp;#34;art style&amp;#34; default=&amp;#34;doodle&amp;#34;} style.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;rural-station-schoolgirl-scene&#34;&gt;Rural Station Schoolgirl Scene
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/m_Raiko_AIart/status/2048069313387737222&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/m_Raiko_AIart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@m_Raiko_AIart&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/048.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/048_hu_66cd8f2405b1b74d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/048_hu_d773f4afd927dd3d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Rural Station Schoolgirl Scene&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic anime-style illustration of a quiet rural Japanese train station in early summer, filled with travel nostalgia and bright midday light. In the foreground, one high school girl stands alone on the platform near the left side of the frame, facing slightly toward the viewer with a shy, gentle posture, her legs together and one foot angled inward. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;black&amp;#34;} short bobbed hair with soft bangs, and wears a classic Japanese sailor school uniform: a white long-sleeved sailor blouse with navy trim, a vivid red neckerchief, a dark navy pleated skirt, white socks, and dark brown loafers. She holds a dark school bag in one hand at her side. Her expression should feel calm, a little wistful, as if she was just about to speak before the train arrived. Place her beside an old weathered wooden station building with large windowpanes and a simple wooden bench. Above her is 1 hanging station sign reading {argument name=&amp;#34;station name&amp;#34; default=&amp;#34;山ノ下駅&amp;#34;}, with smaller romanized text “YAMANOSHITA” and small local line information beneath it. The right half of the image opens to 1 set of railway tracks receding into the distance, bordered by lush green grass and wildflowers, with 1 small local train approaching from far down the line. Add a few utility poles running alongside the tracks. In the deep background, show a dramatic mountain range with lingering snow on the peaks under a vivid blue sky with scattered white clouds. Composition should balance the girl on the left and the railway perspective on the right, with detailed background scenery, crisp sunlight, soft anime rendering, realistic textures in the station wood and rails, and a heartfelt slice-of-life travel mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;真实居酒屋里的动漫角色照片&#34;&gt;真实居酒屋里的动漫角色照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin/status/2048066779835220392&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sub_raw_jin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/049.webp&#34;
	width=&#34;1200&#34;
	height=&#34;676&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/049_hu_3829d64e8a65e8fe.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/049_hu_b545c96841923dc4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;真实居酒屋里的动漫角色照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A candid indoor restaurant photo in a realistic anime-inspired style, showing two young women seated at a small worn wooden table inside a cozy Japanese izakaya with vertical wood-paneled walls and a clear plastic tent-like curtain on the right side. The camera is slightly above table height and angled diagonally toward the table, creating a casual snapshot feeling. One woman is in the left foreground with her back mostly to the viewer, leaning forward over the table; she has long straight dark hair and wears a bulky dark navy or black puffer jacket with a large hood. The second woman sits across from her on the right, facing the camera with a relaxed posture and one arm bent on the table; she has shoulder-length dark brown to black hair, a center part, a black puffer jacket, and a light inner shirt. Replace only the people with clean, natural-looking anime characters while keeping the restaurant environment photorealistic and unchanged. Preserve the mixed-media look of anime characters composited believably into a real photo. On the table, include 2 stainless steel mugs, 2 pairs of chopsticks, 1 smartphone with a bright blue case near the center-left edge of the table, 1 cigarette pack near the right woman, 1 large oval plate with thinly sliced white onions and a lemon wedge, 1 small dish of green vegetables, 1 small plate of brown food, 1 small plate with toast or grilled bread, 1 small dark bowl, 2 small empty white bowls, and 1 printed handwritten Japanese menu sheet lying on the lower right corner of the table. In the upper left background, include a wooden counter with white ceramic bottles and dishes, plus 1 handwritten Japanese wall menu poster. Warm indoor lighting, everyday nightlife atmosphere, documentary realism, detailed wood grain, slightly cluttered tabletop, authentic casual dining scene in Japan.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-campers-in-a-winter-tent&#34;&gt;Anime Campers in a Winter Tent
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin/status/2048066779835220392&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sub_raw_jin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/050.webp&#34;
	width=&#34;1200&#34;
	height=&#34;555&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/050_hu_a99b34861ac85714.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/050_hu_98e47f7fff418fc8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime Campers in a Winter Tent&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;216&#34;
		data-flex-basis=&#34;518px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cozy winter camping scene inside a large beige canvas tent, rendered as a semi-realistic anime illustration with natural lighting and realistic environmental detail. Show exactly 2 seated young women around a compact kerosene heater used as a camp table, with a large black metal pot resting on top. The viewpoint is a candid wide-angle photo composition from slightly above seated height, making the scene feel like a casual snapshot taken inside the tent. The woman on the left has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair tied in a high ponytail with loose bangs, and wears a fluffy brown fleece jacket, dark pants, and a red lanyard with an ID card. She sits in a low camping chair and leans forward, using chopsticks over a small bowl or food container in her hands. The woman on the right has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;black&amp;#34;} shoulder-length hair and wears a muted purple hoodie layered under a black puffer vest, light gray sweatpants, and dark shoes. She sits in another low camping chair, resting her cheek on one hand in a relaxed, sleepy pose. Keep both faces obscured by a soft rectangular blur block, as if anonymized in a posted photo. Around them, include exactly 4 red beverage cans visible in the scene: 2 on the wooden table planks near the center, 1 cropped in the lower right foreground, and 1 farther back near the right side. Build a low U-shaped arrangement of 3 wooden bench planks surrounding the heater. Add small camping details: 1 olive duffel bag on the left ground, 1 plastic storage box with supplies behind the left woman, 1 white plastic shopping bag on top of the box, 1 small bowl on the table, 1 colorful snack package on the right-side plank, 1 soft brown cloth on the far left floor, and 1 black metal rack frame standing at the back right. The tent interior should have taut canvas walls, visible seams and support poles, a gravel ground, and a warm muted color palette. Preserve the feeling of a real camping photo where only the people have been turned into anime-style characters while the setting remains highly realistic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;bmw-performance-social-海报&#34;&gt;BMW Performance Social 海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2048063332624843046&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/051.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/051_hu_6c345699f3ac4fe0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/051_hu_7a3e30600c6fd652.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;BMW Performance Social 海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a 4:5 vertical social poster in ultra high resolution, 8K print quality sharpness. Use the {argument name=&amp;#34;car model&amp;#34; default=&amp;#34;BMW car&amp;#34;} from the reference image as the main subject and use the background structure/composition from the reference image, but transform it into a BMW themed design. Replace all black tones with a flat {argument name=&amp;#34;background color&amp;#34; default=&amp;#34;high-saturation BMW blue&amp;#34;} background. Keep the same layout, spacing, visual balance, and poster composition from the reference image. Background should use a smooth gradient from slightly lighter electric blue at the top to deep navy blue at the bottom. Add subtle grain texture (2 to 3%) and faint rectangular overlays (2 to 4% opacity). Keep it clean, graphic, premium, and non-realistic. Add a soft contact shadow under the car. Use the same BMW from the reference image, changing only the {argument name=&amp;#34;paint finish&amp;#34; default=&amp;#34;matte frozen blue&amp;#34;} or deep metallic navy. Keep the original body shape, wheels, stance, and design details from the reference image. Show the car in a rear 3/4 perspective matching the reference image angle exactly. Use a slightly elevated camera angle. Position the car slightly right of center. Include visible carbon roof, aggressive rear diffuser, sharp controlled reflections, and subtle brake details. Keep composition identical to the reference image: Top: branding Middle: giant type Center: car overlapping text Bottom: editorial block and specs Typography: Primary text: “BMW” Ultra condensed bold sans serif, tall vertical scaling like the reference poster. Color deep navy or near black. Static text with no distortion. Acts as structural backdrop. Secondary header: “BMW M4 G82” Thin font with wide tracking. Logo area: BMW roundel centered above. Editorial block: Headline: “BMW — Where Driving Becomes Instinct” Body copy focused on: driver connection control performance precision Use the same boxed editorial layout as the reference image. Background faded text: “M4” large scale with 3 to 5% opacity behind the box. Bottom left: “ M4 G82” Bottom right specs: 405 kW / 550 PS 3.4 s 307 km/h Lighting should be clean studio lighting with sharp but controlled highlights. Color grading should use deep blues, high contrast, clean blacks. Camera lens: 50mm, slightly elevated rear 3/4 angle. Mood: Performance. Precision. Driver focus. Add Bottom-right watermark: harboriis , with small x and Instagram logo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电影感-chicken-momos-ad-海报&#34;&gt;电影感 Chicken Momos Ad 海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme/status/2048060325925470358&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Diplomeme&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/052.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/052_hu_7112beaf8f90a74a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/052_hu_b8863ee9d849010b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电影感 Chicken Momos Ad 海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-realistic cinematic street-food advertisement poster for {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;Licious&amp;#34;} frozen {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;Chicken Momos&amp;#34;}, shot in a dark premium studio with dramatic moody lighting, deep navy-black background, glossy black tabletop, and high contrast commercial food photography styling. The composition is a square social-media ad layout with oversized bold condensed white sans-serif headline text on the left reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;PERFECTLY MADE.&amp;#34;} stacked across two lines, and a smaller white subheadline beneath it reading {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;PRECISION IN EVERY BITE.&amp;#34;}. Along the far left edge, add thin vertical small caps text reading “FRESH • CLEAN • CONTROLLED”. Across the upper-right background, repeat the phrase “CUT / STEAM / SERVE / REPEAT” in a subtle dark gray pattern, and faintly repeat “CUT / STEAM / SERVE / REPEAT” again near the bottom-left floor area as perspective text. Feature exactly 6 momos total: 5 intact steamed chicken momos floating and arranged dynamically across the center and right side, and 1 split-open momo in the center revealing juicy orange-brown chicken filling with herbs, with a glossy red-orange sauce droplet dripping downward from the opened dumpling. Scatter small chili flakes, herb bits, and seasoning particles suspended in the air around the momos for explosive motion. Place exactly 3 retail product boxes on the right side, staggered in depth, black packaging with the {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;Licious&amp;#34;} logo and red product title “CHICKEN MOMOS,” including food photography of the dumplings on the box front. At the bottom right foreground, place 1 small black bowl filled with bright red dipping sauce. Add a thin footer line of small white text across the bottom reading “CHICKEN MOMOS • FRESHLY PREPARED • 2026 EDITION” and place “licious.com” in the lower-right corner. Use premium ad design, ultra-detailed food texture, glossy highlights on the dumplings, subtle steam sheen, crisp typography, shallow depth of field, and a polished high-end commercial campaign aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;nostalgic-16-photo-couple-grid&#34;&gt;Nostalgic 16-Photo Couple Grid
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/zenkaiAI/status/2048051889460437351&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/zenkaiAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@zenkaiAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/053.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/053_hu_7c3db8708f8b6482.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/053_hu_92bd8818f70e0b78.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Nostalgic 16-Photo Couple Grid&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;16-photo nostalgic contact sheet collage&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;dreamy film photography, soft blur, slightly underexposed, candid youthful romance, flash snapshots mixed with ambient dusk light, subtle grain, sentimental and bittersweet mood&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;people_count&amp;#34;:2,&amp;#34;relationship&amp;#34;:&amp;#34;young couple or former lovers spending time together&amp;#34;,&amp;#34;ages&amp;#34;:&amp;#34;early 20s&amp;#34;,&amp;#34;appearance&amp;#34;:{&amp;#34;male&amp;#34;:{&amp;#34;build&amp;#34;:&amp;#34;slim&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;short dark hair&amp;#34;,&amp;#34;clothing&amp;#34;:&amp;#34;loose white short-sleeve shirt, camera strap around neck in several shots&amp;#34;},&amp;#34;female&amp;#34;:{&amp;#34;build&amp;#34;:&amp;#34;slim&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;shoulder-length dark hair&amp;#34;,&amp;#34;clothing&amp;#34;:&amp;#34;light sleeveless tops or soft casual summer clothes&amp;#34;}},&amp;#34;faces&amp;#34;:&amp;#34;intentionally obscured by soft rectangular blur blocks over every visible face&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16,&amp;#34;border&amp;#34;:&amp;#34;thin white dividers, equal square cells&amp;#34;},&amp;#34;images&amp;#34;:[{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close cropped portrait of the woman in a white top at night, soft flash, dark background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close cropped blurred two-person selfie framing, both subjects partially visible, dark nighttime setting&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;young man standing at night and holding a compact silver camera up to his face, white shirt, distant lights behind him&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;woman on a beach or shoreline in low light, softly blurred, ocean horizon behind her&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;street candid of the man holding a camera near his face while walking outdoors in the evening, urban background with motion blur&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close-up of the woman indoors or in a dim warm setting, hand raised near her face, flash-lit snapshot&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;blurred two-shot of the couple sitting close together by water at dusk, intimate candid composition&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;young man outdoors in greenery during daytime or early evening, looking down at a camera in his hands, white shirt and camera strap visible&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;woman close to the camera giving a peace sign, casual sleeveless top, sandy or beachlike background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;back view of the man in a white shirt looking out over a cityscape at night from a high vantage point&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;woman indoors at night holding a compact camera directly toward the viewer, city lights beyond a window, flash aesthetic&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;tight cropped two-person selfie-like frame with both subjects partially visible, dark background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;young man at the waterfront at dusk holding a camera to his eye, cloudy blue sky and distant shoreline behind him&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;soft night portrait of the woman on a city street with warm bokeh lights in the background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close intimate couple snapshot with both faces near each other, one subject making a peace sign, heavy blur and flash look&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;rear view of the woman walking alone down a warmly lit narrow street at night, shoulder-length hair and light top visible&amp;#34;}]},&amp;#34;composition&amp;#34;:&amp;#34;each square feels like a memory fragment from one summer evening and a few nearby outings, varied framing, natural imperfection, casual amateur photography&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;muted blues, warm tungsten yellows, soft skin tones, dark greens, charcoal night shadows, faded white clothing&amp;#34;,&amp;#34;camera_look&amp;#34;:&amp;#34;35mm point-and-shoot or disposable camera feel, shallow focus, motion blur, bloom around lights, occasional flash overexposure&amp;#34;,&amp;#34;quality&amp;#34;:&amp;#34;high-resolution collage with authentic analog softness, emotionally evocative and realistic&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-bl-promo-缩略图&#34;&gt;Anime BL Promo 缩略图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/himukai_an/status/2047981800535085555&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/himukai_an&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@himukai_an&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/054.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/054_hu_c949bbb5ffc3da07.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/054_hu_22313a14959dca4c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime BL Promo 缩略图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A bright, polished anime-style promotional thumbnail with a summer romance atmosphere. The composition is split visually, with large typography on the left and two handsome young men on the right. On the left side, place layered translucent white panels with soft glow and sparkles over a sky-blue background, featuring large elegant serif text &amp;#34;GPT&amp;#34; in a blue gradient at the top and &amp;#34;BL&amp;#34; in a lavender-to-violet gradient below. Add three lines of Japanese text arranged between and under them: &amp;#34;最新の画像生成で&amp;#34;, &amp;#34;作って&amp;#34;, and &amp;#34;遊んでみた&amp;#34;, in deep blue calligraphic Japanese type. Include subtle decorative accents such as small star glints, diagonal light streaks, dotted texture, and a cyan underline swoosh beneath the middle text. On the right side, show 2 anime boys from the waist up, leaning casually together beside a chain-link fence under leafy trees. The taller boy has tousled dark brown hair, a navy overshirt worn open over a white T-shirt, layered silver necklaces, and holds 1 plastic cup of iced coffee with a straw. The shorter boy has messy silver-white hair, a white T-shirt with a small crest emblem on the chest, black backpack straps over both shoulders, layered silver necklaces, and one small earring. Their poses are relaxed and intimate, with the dark-haired boy’s arm resting around the other. Use a luminous blue-and-white palette with soft sunlight, lens flare, bokeh, and a faint cityscape in the background, creating a clean social-media header or article thumbnail aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;夜晚的艺术家与空灵缪斯&#34;&gt;夜晚的艺术家与空灵缪斯
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/almimeister/status/2048309710118687101&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/almimeister&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@almimeister&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/055.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/055_hu_8c4d3b82e3d3a6f7.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/055_hu_98818098bf668f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;夜晚的艺术家与空灵缪斯&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic anime-inspired digital illustration set at night inside a cozy artist&amp;#39;s room with large window panes and a warm city glow outside. On the left, a young male artist with {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} messy hair sits at a cluttered desk in side profile, leaning forward with one hand near his mouth and the other drawing with a pen on a tablet or sketchbook. The desk is covered with exactly 1 pen cup filled with pencils, 1 coffee mug, 1 open laptop or pen-display showing a sunset landscape, 1 spiral sketchbook with manga-style character drawings, 2 additional drawing books or pads, 1 small stack of about 4 books, and many scattered art cards and printed illustrations. On the right, a luminous ethereal anime girl made of blue-white light appears life-sized, facing the artist with both hands gently extended toward him. Her form is translucent, delicate, and composed of glowing contour lines, starry particles, and flowing strands of light, with long windblown hair and a soft dress-like silhouette. Between them, a magical stream of golden and white light spirals upward from the artist&amp;#39;s desk into the air, connecting creator and creation. Inside this swirling ribbon are exactly 12 to 16 floating image fragments and sketch pages: monochrome character sketches, scenic sunset paintings, small photo-like panels, and tiny icon-like cards, all orbiting in a curved arc from lower center to upper left and upper center. Around the upper half of the image, dozens of glowing musical notes float through the air, mixed with sparkling particles, creating the feeling that inspiration has become visible sound and memory. The palette is rich warm gold and amber on the artist&amp;#39;s side, contrasted with cool electric blue and white on the spirit girl&amp;#39;s side, with dramatic rim light, volumetric glow, intricate particles, and a dreamy emotional atmosphere. Composition is vertical, highly detailed, intimate, and poetic, evoking the relationship between {argument name=&amp;#34;person one&amp;#34; default=&amp;#34;you&amp;#34;} and {argument name=&amp;#34;person two&amp;#34; default=&amp;#34;me&amp;#34;} as artist and imagined muse, where drawings, music, memories, and fantasy physically manifest in the room. Add a small handwritten note card on the desk with {argument name=&amp;#34;note text&amp;#34; default=&amp;#34;二人だけの物語&amp;#34;}, and display one prominent artwork on the desk and one floating scenic panel using {argument name=&amp;#34;scene theme&amp;#34; default=&amp;#34;sunset sky over a distant city&amp;#34;}.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ui.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分类文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：电商、海报、人像、UI 全收录</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-case-index/</guid>
        <description>&lt;p&gt;这是一组 GPT Image 2 提示词案例索引。原始案例量很大，单页收录会过长，所以这里按内部分类拆成多个页面。&lt;/p&gt;
&lt;h2 id=&#34;分类导航&#34;&gt;分类导航
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;分类&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;案例数&lt;/th&gt;
          &lt;th&gt;页面&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;电商主图&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;广告创意&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;19&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;人像摄影&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;55&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;海报插画&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;101&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;角色设计&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI 与社媒&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;对比与社区案例&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ecommerce.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;电商主图案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ad-creative.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;广告创意案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/portrait.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;人像摄影案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/poster.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;海报插画案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/character.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;角色设计案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ui.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;UI 与社媒案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/comparison.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;对比与社区案例案例&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：电商主图案例</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/</guid>
        <description>&lt;p&gt;本页收录 &lt;code&gt;电商主图&lt;/code&gt; 分类下的 20 个案例。每个条目保留原案例链接、作者、生成图和完整提示词。&lt;/p&gt;
&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;电商主图&#34;&gt;电商主图
&lt;/h2&gt;&lt;h3 id=&#34;电商主图---奢华琥珀香水广告&#34;&gt;电商主图 - 奢华琥珀香水广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Polanco_IA/status/2047689647967609037&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Polanco_IA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Polanco_IA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/000.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/000_hu_f485d4c5980da91f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/000_hu_79f504b06facaeba.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 奢华琥珀香水广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A luxurious cinematic product photograph of a classic rectangular perfume bottle inspired by {argument name=&amp;#34;brand label&amp;#34; default=&amp;#34;N°5 CHANEL PARIS PARFUM&amp;#34;}, placed upright on a glossy black marble surface with white veining. The bottle is centered slightly to the right, made of clear faceted glass with a large transparent crystal stopper, filled with rich amber-gold perfume that glows from within. Tiny condensation droplets cover the glass, adding texture and realism. Dramatic warm lighting from the upper left creates golden highlights, deep reflections on the marble, and a soft luminous bloom in the background. Wisps of elegant smoke curl around the bottle on both sides, enhancing a moody high-end advertisement feel. Dark background, shallow depth of field, ultra-detailed studio product photography, luxury beauty campaign aesthetic, crisp focus on the bottle, realistic reflections, warm black-and-gold color palette. Add a small white {argument name=&amp;#34;corner logo&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;} in the top-right corner. Square composition, premium commercial ad, photorealistic, high contrast, refined and sophisticated.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---护肤品棚拍图&#34;&gt;电商主图 - 护肤品棚拍图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2047636636847231222&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/001.webp&#34;
	width=&#34;1002&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/001_hu_9109c57a0d6d7ec.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/001_hu_8aeaca4f0da10272.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 护肤品棚拍图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;83&#34;
		data-flex-basis=&#34;200px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A soft {argument name=&amp;#34;bottle color&amp;#34; default=&amp;#34;cream-colored&amp;#34;} bottle with a {argument name=&amp;#34;pump color&amp;#34; default=&amp;#34;pastel yellow&amp;#34;} pump stands on a matte podium, surrounded by silky foam and {argument name=&amp;#34;flowers&amp;#34; default=&amp;#34;chamomile blossoms&amp;#34;}. The background is a pale yellow gradient with subtle bubble details. The label emphasizes organic chamomile and calming care. Fresh chamomile flowers accentuate the gentle appeal.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---热带柑橘汽水广告海报&#34;&gt;电商主图 - 热带柑橘汽水广告海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/edimakorfr/status/2047635133466124726&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/edimakorfr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@edimakorfr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/002.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/002_hu_50a6f41beed238c7.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/002_hu_4bc62e586c85aec0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 热带柑橘汽水广告海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a vibrant tropical commercial poster for a citrus soda bottle, in a bright summer advertising style. Show a single large plastic bottle of {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;Soda&amp;#34;} centered slightly to the right, tilted a little left, with a yellow cap and transparent bottle covered in cold condensation droplets, filled with glowing golden-orange soda. The label should feature sliced oranges and citrus artwork with the brand text &amp;#34;{argument name=&amp;#34;product name&amp;#34; default=&amp;#34;Soda&amp;#34;}&amp;#34;, the phrase &amp;#34;aux agrumes d&amp;#39;été&amp;#34;, and a small green &amp;#34;500 ml&amp;#34; mark. Use a sunny beach background with vivid blue sky, turquoise ocean, soft clouds, and blurred tropical palm leaves entering from the upper right corner. Add dramatic water splashes around the base of the bottle, scattered clear ice cubes, and 5 visible citrus pieces in the foreground: 2 orange wedges, 1 lime half, 1 grapefruit half, and 1 partial orange slice at the far right edge. Place large French promotional text on the left: a huge white headline &amp;#34;{argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Soda&amp;#34;}&amp;#34; with a small splash accent above it, then yellow script text &amp;#34;aux agrumes d&amp;#39;été&amp;#34; underneath. Add a yellow paint-stroke badge at mid-left with the text &amp;#34;LA FRAÎCHEUR QUI PÉTILLE !&amp;#34;. Add a vertical feature list on the lower left with 3 round icons and French captions: &amp;#34;SAVEURS NATURELLES&amp;#34;, &amp;#34;SANS COLORANTS ARTIFICIELS&amp;#34;, and &amp;#34;EXTRA RAFRAÎCHISSANT&amp;#34;. Add a green brushstroke banner at the bottom left reading &amp;#34;FORMAT PRATIQUE 500 ml&amp;#34;. Add a round beige eco-style seal at the bottom right with green outline and leaf motif, containing the text &amp;#34;{argument name=&amp;#34;seal text&amp;#34; default=&amp;#34;PLAISIR FRUITÉ À CHAQUE GORGÉE&amp;#34;}&amp;#34;. Lighting should be glossy and high-energy with strong sun flare from the upper left, saturated citrus colors, crisp packaging detail, realistic droplets, and polished supermarket-ad realism.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---工业设计展示图&#34;&gt;电商主图 - 工业设计展示图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ShamsAmin56/status/2047627860752621647&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ShamsAmin56&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ShamsAmin56&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/003.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/003_hu_8784fe7f2988eab8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/003_hu_78434c2c0300ee54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 工业设计展示图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Core Subject: [{argument name=&amp;#34;reference&amp;#34; default=&amp;#34;use the uploaded image&amp;#34;}, keep the details, typography and structure locked 100%]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Layout &amp;amp; Composition: A {argument name=&amp;#34;presentation type&amp;#34; default=&amp;#34;professional industrial design presentation sheet&amp;#34;}. The image should be organized into a clean grid system.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top Row: A 3x3 layout showing top-down flat lay views and close-up macro details of materials.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Middle Section: Three hero shots of the product standing upright in different color ways (Matte Black, Arctic White, and accented variants). The products should be slightly tilted to show depth and form.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom Section: A dynamic &amp;#34;floating&amp;#34; composition featuring two products overlapping at opposing angles to showcase the front and side profiles simultaneously.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Environment &amp;amp; Lighting: Set against a minimalist, neutral studio gray background. Soft top-down lighting with realistic contact shadows. High-end product photography aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style &amp;amp; Finish: Matte textures, clean silhouettes, and sharp edges. Leave designated blank areas on the product surfaces for &amp;#34;Placeholder Branding&amp;#34; and &amp;#34;Graphic Mockups.&amp;#34; 4k resolution, Unreal Engine 5 render style, hyper-realistic, clean aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---奢华毛里乐福鞋生活方式照片&#34;&gt;电商主图 - 奢华毛里乐福鞋生活方式照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/dynamicwangs/status/2047580984342925545&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/dynamicwangs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@dynamicwangs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/004.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/004_hu_50c9da49cd05f85d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/004_hu_49bd32fdee48211d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 奢华毛里乐福鞋生活方式照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A warm, editorial-style lifestyle product photo shot indoors from a low close-up angle, focused on a woman&amp;#39;s lower legs and feet as she tries on 1 pair of black leather backless loafers with tan faux-fur lining. One loafer is worn on the right foot and the left foot is bare, hovering just above the textured cream shag rug, while the second matching loafer lies on the rug in the lower left foreground. The shoes have smooth black leather uppers, a rounded almond toe, open mule-style heel, plush brown fur spilling out around the opening, and a small polished gold horsebit hardware detail across the vamp. The model wears cropped medium-blue denim jeans with a raw frayed hem. The setting is a cozy minimalist interior with a cream rug featuring 2 thin irregular black lines, a neutral wall, and a leaning rectangular mirror with a medium wood frame in the upper right background, softly reflecting the rug and part of the scene. Use soft natural window light, shallow depth of field, subtle film grain, realistic skin texture, muted beige and black palette, relaxed candid composition, premium fashion catalog mood, high detail, photorealistic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---大理石梳妆台香水广告&#34;&gt;电商主图 - 大理石梳妆台香水广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MiguelMaestroIA/status/2047555836252151831&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MiguelMaestroIA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MiguelMaestroIA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/005.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/005_hu_5d7059f8adafa1a9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/005_hu_1be1808bff17b871.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 大理石梳妆台香水广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A luxury e-commerce advertising photo of a premium perfume bottle on a polished gray-and-white marble vanity, shot in a warm cinematic studio style with soft golden lighting, shallow depth of field, and elegant reflections. The composition is square and high-end, with the perfume bottle centered slightly right of frame and promotional text on the left. The bottle is a tall sculpted hourglass-shaped glass flacon with smoky transparent gray glass fading darker at the base, a glossy gold spherical cap, a gold collar engraved with fine branding, and a large metallic gold interlocking monogram on the front. Keep the branding-inspired feel but do not add extra products. In the foreground left, include 1 cut-crystal bowl with a gold rim, partially cropped. In the background right, include 1 brushed gold cylindrical vase holding 1 bouquet of soft white flowers, blurred. Behind the bottle, add 1 black marble rectangular box with subtle white veining and gold trim. In the lower right foreground, include 1 draped piece of champagne-colored satin fabric, softly out of focus. The background should be dark, luxurious, and softly blurred, with rich brown-black tones and a vertical shadowed panel on the left to support typography. Add elegant serif headline text on the upper left reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Premium Perfume,&amp;#34;} in large warm beige letters, with a smaller serif subheading beneath reading {argument name=&amp;#34;tagline&amp;#34; default=&amp;#34;Subtlety and Elegance&amp;#34;}, plus a thin short gold horizontal line below the subheading. Place a small white logo in the top-right corner reading {argument name=&amp;#34;brand logo&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;}. Emphasize premium materials, realistic glass refraction, gold metallic highlights, luxury product photography, refined composition, soft bokeh, and upscale beauty-ad aesthetics.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---微缩场景护肤品广告&#34;&gt;电商主图 - 微缩场景护肤品广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2048074514278563949&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/006.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/006_hu_7a1232684c10cd23.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/006_hu_a4c6ffc53a2a0509.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 微缩场景护肤品广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-realistic miniature diorama product advertisement featuring an oversized luxury skincare pump bottle labeled &amp;#34;LUXEVEIL Skin Science – Radiance Nourishing Body Lotion&amp;#34; in cream/beige with a polished gold pump top, placed on a circular platform. Tiny figurine construction workers dressed in yellow coveralls and white hard hats swarm around the bottle climbing scaffolding, painting the bottle with rollers, operating a tower crane, working near industrial tanks and pipework, and unloading a miniature flatbed truck. The scene includes metal scaffolding structures, industrial silos, orange traffic cones, wooden barricades, and storage barrels. The overall color palette is warm beige, cream, gold, and mustard yellow. Studio photography style with soft diffused lighting, no shadows, clean beige background. The concept metaphorically shows workers &amp;#34;crafting&amp;#34; or &amp;#34;building&amp;#34; the perfect lotion. Tilt-shift miniature aesthetic, ultra-detailed, commercial product photography, 8K resolution, photorealistic CGI render.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---中国传统艺术与瓷瓶&#34;&gt;电商主图 - 中国传统艺术与瓷瓶
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2048046906585280977&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/007_hu_f04a5b4d6381699.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/007_hu_d9ceaf33efae3a35.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 中国传统艺术与瓷瓶&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A scarf inspired by &amp;#39;A Thousand Li of Rivers and Mountains&amp;#39;, surrounded by Wang Ximeng&amp;#39;s blue-green landscape, with a silky texture and soft lighting.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A famille rose porcelain vase featuring Lady Yang Guifei enjoying flowers, with peony and butterfly patterns in the style of imperial kilns.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---高端游戏主板棚拍图&#34;&gt;电商主图 - 高端游戏主板棚拍图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rojassartorio/status/2048019666816163867&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/rojassartorio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rojassartorio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/008.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/008_hu_dfe6d504cd7e65ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/008_hu_f4c8963d2dfc27a9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 高端游戏主板棚拍图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end enthusiast ATX gaming motherboard product photo on a dark studio background, shown in a three-quarter top-down perspective angled from the lower left toward the upper right. The board is mostly matte black and gunmetal with sharp geometric armor plates, brushed metal textures, and subtle RGB edge lighting in blue, purple, and magenta. Feature an exposed modern Intel-style CPU socket near the upper center, 4 black DIMM memory slots on the right, large VRM heatsinks across the top and upper left, and multiple reinforced PCIe slots in the lower half. Include 3 major branded heatsink zones: a tall rear I/O shroud at upper left with an illuminated RGB eye logo and the text &amp;#34;MAXIMUS HERO&amp;#34;, a left-side chipset/slot armor piece with the text &amp;#34;SUPREMEFX&amp;#34;, and a large angular lower-right chipset cover with a silver ROG-style emblem plus a lower strip that reads &amp;#34;FOR THOSE WHO DARE&amp;#34;. Show detailed capacitors, headers, power connectors, debug display reading &amp;#34;88&amp;#34; at the top right, and a small round start button nearby. Ultra-detailed commercial product photography, crisp focus across the board, realistic reflections on metal, premium luxury tech aesthetic, dramatic low-key lighting, clean black seamless backdrop, no cables, no CPU, no RAM, no other objects.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---高端谷物粉广告板&#34;&gt;电商主图 - 高端谷物粉广告板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/WooGabriel76263/status/2047988112094101770&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/WooGabriel76263&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@WooGabriel76263&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/009.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/009_hu_1aee47064dac42f4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/009_hu_59cfbae4fc6e62d6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 高端谷物粉广告板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Chinese e-commerce product marketing board&amp;#34;,&amp;#34;product&amp;#34;:{&amp;#34;category&amp;#34;:&amp;#34;instant grain powder drink&amp;#34;,&amp;#34;brand&amp;#34;:&amp;#34;五谷磨房&amp;#34;,&amp;#34;name&amp;#34;:&amp;#34;核桃芝麻黑豆粉&amp;#34;,&amp;#34;packaging&amp;#34;:&amp;#34;matte black retail box with gold Chinese typography and a large swirling bowl graphic on the front, plus individual black sachets inside&amp;#34;,&amp;#34;net weight&amp;#34;:&amp;#34;320g (32g×10袋)&amp;#34;},&amp;#34;style&amp;#34;:{&amp;#34;overall&amp;#34;:&amp;#34;premium dark food advertising layout&amp;#34;,&amp;#34;color palette&amp;#34;:[&amp;#34;black&amp;#34;,&amp;#34;deep brown&amp;#34;,&amp;#34;warm gold&amp;#34;,&amp;#34;beige&amp;#34;,&amp;#34;walnut brown&amp;#34;],&amp;#34;lighting&amp;#34;:&amp;#34;dramatic studio lighting with glossy highlights and warm rim light&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;luxurious, nourishing, healthy, appetizing&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;format&amp;#34;:&amp;#34;single tall composite board divided into 5 major sections plus a bottom storyboard table&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;主图/Main image&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-left&amp;#34;,&amp;#34;count&amp;#34;:8,&amp;#34;labels&amp;#34;:[&amp;#34;五谷磨房&amp;#34;,&amp;#34;核桃芝麻黑豆粉&amp;#34;,&amp;#34;32g×10袋 独立包装&amp;#34;,&amp;#34;五黑谷物&amp;#34;,&amp;#34;香浓醇厚&amp;#34;,&amp;#34;独立小袋&amp;#34;,&amp;#34;即冲即饮&amp;#34;,&amp;#34;product box and drink cup&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;详情页/Details page&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-right&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;黑芝麻&amp;#34;,&amp;#34;黑豆&amp;#34;,&amp;#34;黑米&amp;#34;,&amp;#34;核桃&amp;#34;,&amp;#34;谷物粉&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;香浓细腻 顺滑好喝&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;mid-right&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;一冲即饮 营养美味&amp;#34;,&amp;#34;粉质细腻 Fine powder&amp;#34;,&amp;#34;浓香醇厚 Rich &amp;amp; Smooth&amp;#34;,&amp;#34;营养代餐 Nutritious&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;冲泡方式 HOW TO MAKE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;mid-left lower&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;1 倒入一袋粉(32g)&amp;#34;,&amp;#34;2 加入200ml 热水或牛奶&amp;#34;,&amp;#34;3 搅拌均匀 即可享用&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;一杯好谷物 轻松好生活&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower-left&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;元气早餐&amp;#34;,&amp;#34;办公室下午茶&amp;#34;,&amp;#34;健身代餐&amp;#34;,&amp;#34;睡前暖饮&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;独立小袋 随身携带&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower-right&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;独立小袋 便携卫生&amp;#34;,&amp;#34;锁住新鲜 防潮防氧化&amp;#34;,&amp;#34;1袋1杯 精准份量&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;视频推广广告 seedance 2.0 视频提示词 + 分镜头脚本&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom full width&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;镜头1 开场-产品展示&amp;#34;,&amp;#34;镜头2 食材特写&amp;#34;,&amp;#34;镜头3 倒粉入杯&amp;#34;,&amp;#34;镜头4 冲泡搅拌&amp;#34;,&amp;#34;镜头5 饮用场景&amp;#34;,&amp;#34;镜头6 产品卖点&amp;#34;,&amp;#34;镜头7 结尾口号&amp;#34;]}],&amp;#34;grid&amp;#34;:&amp;#34;top area split into left main image and right detail page; middle area split into preparation guide and feature panel; lower area split into lifestyle scenarios and sachet carry section; bottom is a full-width tabular storyboard&amp;#34;},&amp;#34;scene_elements&amp;#34;:{&amp;#34;ingredients&amp;#34;:[{&amp;#34;name&amp;#34;:&amp;#34;black sesame&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;small black seeds in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;black beans&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;glossy whole beans in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;black rice&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;dark long grains in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;walnuts&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;walnut halves in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;grain powder&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;light beige powder in a round bowl&amp;#34;}],&amp;#34;serving&amp;#34;:{&amp;#34;drink&amp;#34;:&amp;#34;thick gray-brown sesame walnut bean beverage with smooth surface swirl&amp;#34;,&amp;#34;cup&amp;#34;:&amp;#34;transparent glass cup with handle&amp;#34;,&amp;#34;utensil&amp;#34;:&amp;#34;metal spoon stirring or resting inside drink&amp;#34;},&amp;#34;supporting props&amp;#34;:[&amp;#34;walnuts on table&amp;#34;,&amp;#34;scattered black beans&amp;#34;,&amp;#34;grain stalks or wheat stems&amp;#34;,&amp;#34;dark tabletop&amp;#34;,&amp;#34;ingredient bowls&amp;#34;,&amp;#34;open package showing 5 visible sachets&amp;#34;]},&amp;#34;text_treatment&amp;#34;:{&amp;#34;headline_font&amp;#34;:&amp;#34;bold elegant Chinese display type in metallic gold&amp;#34;,&amp;#34;body_font&amp;#34;:&amp;#34;clean sans serif Chinese with occasional English subtitles&amp;#34;,&amp;#34;accent&amp;#34;:&amp;#34;thin gold divider lines and circular ingredient frames&amp;#34;},&amp;#34;camera_and_composition&amp;#34;:{&amp;#34;product_shots&amp;#34;:&amp;#34;front-facing hero box, angled sachet display box, close-up beverage macro&amp;#34;,&amp;#34;food_photography&amp;#34;:&amp;#34;high-detail commercial food styling, shallow depth of field, crisp texture emphasis&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;portrait, approximately 9:16&amp;#34;},&amp;#34;quality&amp;#34;:&amp;#34;ultra-detailed commercial design mockup, polished e-commerce key visual plus details page plus ad storyboard, 4K&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---耳机电商信息图&#34;&gt;电商主图 - 耳机电商信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2047981795552153860&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/010.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/010_hu_cc55fe000899aae1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/010_hu_eb8189134e486547.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 耳机电商信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact e-commerce infographic for &amp;#34;{argument name=&amp;#34;product&amp;#34; default=&amp;#34;Apple Pods Pro 3&amp;#34;}&amp;#34; wireless earbuds.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Foreground: An extreme close-up of a hand holding an open glossy white wireless earbud charging case toward the camera. Inside the case are two sleek white earbuds with black speaker accents. A small glowing green LED indicator is visible on the front of the case. The hand and case have slight macro-lens depth blur for realism.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mid-ground: A {argument name=&amp;#34;model&amp;#34; default=&amp;#34;confident young woman&amp;#34;} with tan skin, brown eyes, and dark hair tied in a messy bun. She has natural makeup with a dewy glow. She is wearing a plain {argument name=&amp;#34;clothing&amp;#34; default=&amp;#34;yellow athletic t-shirt&amp;#34;} (no logos). One white earbud is in her ear. She is looking directly at the camera with a subtle, confident expression.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background: Clean soft gray gradient studio backdrop with shallow depth of field. Diagonal rainbow prism lens flares and soft light leaks across the scene. Several blurred floating white earbuds in the background for depth and motion.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Soft professional studio lighting with glossy highlights on the product, subtle rim light on the model, high dynamic range.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Typography (modern sans-serif, white):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top center (behind model): Large bold text “AIRPODS”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top right: “Apple Pods Pro 3”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mid-left: “Premium sound and noise cancellation”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mid-right: Large bold “30” with “hours of battery life”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom-right: Large bold “1” with “year warranty”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: Ultra-realistic, commercial product photography, 8k resolution, sharp focus on product case, shallow depth of field, vibrant yet clean color palette, premium advertising aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---可持续-t-恤种植吊牌广告&#34;&gt;电商主图 - 可持续 T 恤种植吊牌广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme/status/2047957339974828092&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Diplomeme&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/011.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/011_hu_2738b20eb2a75528.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/011_hu_de172573b08c1c84.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 可持续 T 恤种植吊牌广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A premium eco-conscious fashion advertisement, shot as a refined editorial product photo. A single off-white or natural cream crew-neck T-shirt hangs on a smooth wooden hanger with a black metal hook, placed against a lush wall of dense green leaves and climbing vines. The hanger has a small minimalist brand monogram engraved near the neck. The shirt is shown from the upper torso down to part of the hem, slightly angled, with soft natural folds and high-quality cotton texture. Printed inside the collar is a minimalist brand mark and the text &amp;#34;JUGGERKNOT ORIGINALS&amp;#34;. Hanging from the neckline is 1 rectangular recycled-paper seed tag tied with rustic brown twine; the tag reads &amp;#34;Tulsi&amp;#34; and &amp;#34;Plantable Seed Tag&amp;#34; with a tiny sprouting seed detail near the bottom. From the tag, 1 real tulsi plant stem grows upward across the front of the shirt, with several fresh green leaves, visually demonstrating that the tag is plantable. Add a small fine-label annotation near the tag reading &amp;#34;TULSI PLANTABLE SEED TAG&amp;#34;. On the right side, large elegant white serif typography says {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Plant it.&amp;#34;}. Beneath it, place 3 stacked lines of narrow uppercase sans-serif copy: &amp;#34;WEAR IT.&amp;#34;, &amp;#34;PLANT IT.&amp;#34;, and &amp;#34;GROW WITH IT.&amp;#34;. At the lower left, add the brand name in spaced uppercase serif text: {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;JUGGERKNOT ORIGINALS&amp;#34;}, with a thin horizontal line above it. At the lower right, add 3 lines of small uppercase sans-serif text: &amp;#34;FSC® CERTIFIED PACKAGING.&amp;#34;, &amp;#34;ZERO SYNTHETIC FIBRE&amp;#34;, and &amp;#34;BACKED BY ZERODHA.&amp;#34;. Use soft diffused daylight, shallow depth of field, moody green-and-cream color grading, luxury sustainable-brand aesthetics, clean composition, vertical poster layout, subtle shadows, and a calm organic atmosphere. Keep the design minimal, premium, and photorealistic, with the shirt occupying the left half and the typography balanced on the right.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---优雅化妆品海报提示词&#34;&gt;电商主图 - 优雅化妆品海报提示词
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Adam38363368936/status/2047917266361360682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Adam38363368936&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Adam38363368936&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/012.webp&#34;
	width=&#34;1192&#34;
	height=&#34;1136&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/012_hu_801114ffae558d17.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/012_hu_a8bcdc57dbe93eef.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 优雅化妆品海报提示词&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;104&#34;
		data-flex-basis=&#34;251px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;An image in a {argument name=&amp;#34;reference style&amp;#34; default=&amp;#34;similar style&amp;#34;}, a product image for {argument name=&amp;#34;product&amp;#34; default=&amp;#34;lipstick&amp;#34;}, requiring color coordination and a grand aesthetic in a {argument name=&amp;#34;style&amp;#34; default=&amp;#34;poster style&amp;#34;}, with language changed to Simplified Chinese.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---极简产品广告pure-crunch&#34;&gt;电商主图 - 极简产品广告：PURE CRUNCH
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2047917220165231011&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/013.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/013_hu_dde28b1797efbf91.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/013_hu_344e164be8d1104e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 极简产品广告：PURE CRUNCH&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A minimalist product advertisement with a {argument name=&amp;#34;product&amp;#34; default=&amp;#34;fried chicken bucket&amp;#34;} placed on a clean white podium.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background: soft gradient ({argument name=&amp;#34;background gradient&amp;#34; default=&amp;#34;light cream to white&amp;#34;}), clean studio.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: soft diffused, premium Apple-style.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Typography (center): “{argument name=&amp;#34;headline&amp;#34; default=&amp;#34;PURE CRUNCH&amp;#34;}”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Small text below: “Nothing extra. Just perfection.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: ultra clean, editorial minimal, high-end branding, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---浅蓝-crocs-时尚广告&#34;&gt;电商主图 - 浅蓝 Crocs 时尚广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2047907058079650035&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/014.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/014_hu_f4086b06d0c96f5b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/014_hu_13b9e9394ec702f2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 浅蓝 Crocs 时尚广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end studio advertising poster for {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;crocs&amp;#34;}, in a monochrome pastel blue and white color palette, with a glossy reflective floor and a soft sky-blue backdrop. The background is dominated by the word {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;CROCS&amp;#34;} in gigantic bold white condensed sans-serif letters spanning nearly the full height of the image. In the top-right corner, add small white text reading &amp;#34;Designed with ChatGPT&amp;#34;. Feature 3 adult women with shoulder-length wavy light brown to dark blonde hair, all wearing loose oversized white long-sleeve tops and flowing white wide-leg pants, styled as minimalist fashion models with relaxed neutral expressions. Their faces are intentionally obscured or blurred. One model reclines against an enormous upright white clog shoe on the left side, one model sits casually on top of a giant white clog on the upper right, and one model lounges on the floor at the lower right, leaning back on one arm while seated partly on a glossy blue sphere. Include 2 oversized white clog shoes as hero props: one standing vertically on the left showing the sole and side profile, and one angled on blue crystalline blocks at center-right showing the upper and toe box. Both clogs are classic foam slip-on style with perforation holes, chunky tread, heel straps, and circular logo rivets. The center-right clog is decorated with exactly 8 visible charms pinned to the upper: a blue-green iridescent round charm, a white daisy with yellow center, a black-and-white round emblem near the strap, a small &amp;#34;CROCS&amp;#34; word charm, a dark flower, a peace-hand sign, an orange smiley face, a white cloud, and an orange flower. Scatter exactly 7 glossy floating or grounded blue spheres of varying sizes around the set: one large sphere behind the left model, one medium sphere floating near center, one medium sphere at bottom left foreground, one medium sphere used as a seat under the lower-right model, one small sphere near the upper left, and 2 additional blue spheres integrated into the composition. Add translucent sculptural gel-like forms at the far left and far right edges, plus angular blue crystal-like rocks beneath the right shoe. At the bottom center, place white promotional copy in a clean sans-serif font: {argument name=&amp;#34;tagline line 1&amp;#34; default=&amp;#34;Made for comfort, worn for confidence.&amp;#34;} on the first line and {argument name=&amp;#34;tagline line 2&amp;#34; default=&amp;#34;Because life feels better when your feet stop complaining.&amp;#34;} on the second line. Beneath that, show 4 minimalist feature icons with labels in white: &amp;#34;ICONIC COMFORT&amp;#34;, &amp;#34;LIGHTWEIGHT&amp;#34;, &amp;#34;EASY TO CLEAN&amp;#34;, and &amp;#34;UNIQUELY YOU&amp;#34;. Place the {argument name=&amp;#34;logo text&amp;#34; default=&amp;#34;crocs&amp;#34;} logo in bold lowercase white at the bottom center with a small trademark symbol. The overall style should feel like a premium surreal fashion campaign, clean editorial lighting, soft shadows, glossy textures, airy composition, and modern lifestyle product advertising.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商主图---九宫格产品-tvc-分镜&#34;&gt;电商主图 - 九宫格产品 TVC 分镜
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Magncsans/status/2047876253898903594&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Magncsans&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Magncsans&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/015.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/015_hu_d4d090f6211890cf.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/015_hu_67b26eab7b29b5cd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商主图 - 九宫格产品 TVC 分镜&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using the provided reference image, transform the single casual product photo into a polished e-commerce TVC storyboard board for a {argument name=&amp;#34;video duration&amp;#34; default=&amp;#34;15-second&amp;#34;} ad in a {argument name=&amp;#34;aspect ratio&amp;#34; default=&amp;#34;9:16&amp;#34;} vertical format, presented as a 9-panel grid. Keep the same blue-and-white ceramic ashtray as the product base, but restage it across cinematic advertising shots with warm premium lighting, shallow depth of field, and a refined lifestyle desktop environment. Add a dark storyboard layout with Chinese titles and timing for each panel. Include exactly 9 scenes: 1) environment-establishing wide shot with desk, books, window, and the product placed in context; 2) hero product medium shot on the table; 3) extreme close-up of the blue floral craftsmanship pattern; 4) use case showing a hand placing a cigarette into the ashtray with visible smoke; 5) top-down capacity display showing multiple cigarette butts inside; 6) cleaning scene under running water in a sink with a hand holding the product; 7) bottom-detail close-up showing the underside and anti-slip pads; 8) mood/lifestyle scene at night with the product on a desk, smoke rising, and ambient lamp light; 9) brand closing frame with the product as the hero plus Chinese marketing text. Add the overall header text “产品TVC分镜脚本(15秒 / 9:16竖屏 / 9宫格)” and a product subtitle naming it {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;青花瓷烟灰缸&amp;#34;}. Give each of the 9 panels a Chinese scene title and timestamp, plus small descriptive Chinese copy beneath each image in the style of a professional commercial shot list. Use premium, realistic commercial photography throughout, consistent product identity, elegant Chinese aesthetic, and a clean high-end storyboard presentation.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电商直播-ui-样机&#34;&gt;电商直播 UI 样机
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sjbbxhz/status/2045684734714380687&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sjbbxhz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sjbbxhz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/016.webp&#34;
	width=&#34;1093&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/016_hu_ee2c217cb49a7e0b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/016_hu_891113257a7a7fc5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电商直播 UI 样机&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;91&#34;
		data-flex-basis=&#34;218px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;live stream UI mockup&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;description&amp;#34;: &amp;#34;portrait of {argument name=\&amp;#34;host name\&amp;#34; default=\&amp;#34;Elon Musk\&amp;#34;}, smiling, wearing a black t-shirt with a white technical schematic graphic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;background&amp;#34;: &amp;#34;left side shows a screen with &amp;#39;{argument name=\&amp;#34;left background logo\&amp;#34; default=\&amp;#34;SPACEX\&amp;#34;}&amp;#39; text, right side shows a red &amp;#39;{argument name=\&amp;#34;right background logo\&amp;#34; default=\&amp;#34;Tesla T logo\&amp;#34;}&amp;#39; and a dark car&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;ui_overlay&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;top_header&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;host_info&amp;#34;: &amp;#34;avatar, name &amp;#39;{argument name=\&amp;#34;host name\&amp;#34; default=\&amp;#34;Elon Musk\&amp;#34;}&amp;#39;, subtext &amp;#39;55.6万本场点赞&amp;#39;, red &amp;#39;关注&amp;#39; button&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;rank_badge&amp;#34;: &amp;#34;gold coin icon with &amp;#39;全站第1名&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;viewer_stats&amp;#34;: &amp;#34;3 top viewer avatars with &amp;#39;12.3w&amp;#39;, &amp;#39;8.6w&amp;#39;, &amp;#39;5.7w&amp;#39;, total &amp;#39;68.7万&amp;#39;, &amp;#39;X&amp;#39; close button&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;right_links&amp;#34;: &amp;#34;&amp;#39;更多直播 &amp;gt;&amp;#39;, &amp;#39;礼物展馆 0/24&amp;#39; with blue &amp;#39;经典&amp;#39; tag&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;mid_left_gifts&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;items&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;avatar &amp;#39;科技爱好者&amp;#39;, &amp;#39;送小心心&amp;#39;, heart icon x 1314&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;avatar &amp;#39;星辰大海&amp;#39;, &amp;#39;送火箭&amp;#39;, rocket icon x 666&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_left_chat&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;system_message&amp;#34;: &amp;#34;level 37 badge &amp;#39;宇宙漫游者 加入了直播间&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;message_count&amp;#34;: 7,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;messages&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;小火箭: 马斯克!未来可期!🚀&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;future: 特斯拉Model 2什么时候出?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;星空梦想家: SpaceX今年能上火星吗?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;AI探索者: Neuralink进展如何?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;帅气的网友: 马总好!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Mars: 第一次来你的直播,超激动!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;用户123: 讲讲AI吧,会取代人类吗?&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_right_product_card&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;hot_tag&amp;#34;: &amp;#34;orange &amp;#39;热卖 x 1888&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;image&amp;#34;: &amp;#34;Tesla Cybertruck&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;title&amp;#34;: &amp;#34;{argument name=\&amp;#34;product name\&amp;#34; default=\&amp;#34;特斯拉Cybertruck 电动皮卡\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;price&amp;#34;: &amp;#34;{argument name=\&amp;#34;product price\&amp;#34; default=\&amp;#34;¥ 1,618,000\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;button&amp;#34;: &amp;#34;red &amp;#39;抢&amp;#39; button&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;floating_animation&amp;#34;: &amp;#34;translucent hearts floating up the right edge&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_bar&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;input_field&amp;#34;: &amp;#34;&amp;#39;说点什么...&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;icons&amp;#34;: [&amp;#34;smiley face&amp;#34;, &amp;#34;three dots&amp;#34;, &amp;#34;shopping cart&amp;#34;, &amp;#34;gift box&amp;#34;, &amp;#34;share&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;高端产品棚拍模板&#34;&gt;高端产品棚拍模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX/status/2049141839882522707&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@PrometheanAIX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/017_hu_26d0e5c826e59305.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/017_hu_fa7e495c6ca472c4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;高端产品棚拍模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium product studio image of a [PRODUCT] for [BRAND], designed in line with [BRAND REFERENCE]. Show the [PRODUCT] floating against a clean light gray to soft white gradient background with a minimal high-end tech aesthetic. The [PRODUCT] should feel sleek, modern, refined, and premium, with subtle illuminated accents in [LIGHTING COLOR]. Use a three-quarter front angle so both earcups are visible, with detailed industrial design elements. Include the [BRAND] name cleanly on the product. Lighting should be soft, controlled, and editorial, with crisp highlights, soft shadows, and a subtle colored rim light or glow in [LIGHTING COLOR]. Emphasize material realism and clean geometric forms. Keep the background uncluttered and minimal. No extra props, no people, no text overlays, no packaging, and no distracting elements. Focus entirely on the [PRODUCT] as the hero product.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;高端食品摄影模板&#34;&gt;高端食品摄影模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX/status/2049122713722106161&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@PrometheanAIX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/018.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/018_hu_d9cf8eee6ceebcb6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/018_hu_86ce7cfe747e2670.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;高端食品摄影模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a square [ASPECT RATIO] premium food photography image of a steaming [FOOD] served in a dark black stone bowl or cast-iron skillet on a wooden board. The dish should look hot, glossy, spicy, and freshly served, with bite-sized pieces of browned protein, dried red chilies, green scallions, white onion, garlic, chili flakes, and visible Sichuan peppercorns coated in a deep red, oily Szechuan sauce. Use a slightly elevated close-up camera angle with shallow depth of field. Make the food the clear hero of the image, centered and richly detailed. Add visible steam rising naturally from the dish. Surround the bowl with subtle restaurant-style props like a dark red tray, scattered dried chilies, peppercorns, a small sauce bowl, or a blurred teapot in the background. Lighting should feel warm, moody, and editorial, like a high-end restaurant food shoot. Emphasize realistic textures and keep the image appetizing, realistic, cinematic, and polished. Avoid text, logos, hands, people, utensils covering the food, cartoon styling, fake plastic textures, excessive symmetry, or an overly clean stock-photo look.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;汉堡主视觉与九宫格广告分镜&#34;&gt;汉堡主视觉与九宫格广告分镜
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gdgtify/status/2049449869530775877&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gdgtify&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gdgtify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/019.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/019_hu_b07edc1e2ab93dae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/019_hu_7eadfa0842e62977.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;汉堡主视觉与九宫格广告分镜&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Prompt 1: Create a cinematic hero image of a gourmet cheeseburger on a dark stone surface with glossy brioche bun, melted cheese, crisp lettuce, tomato, grilled patty, sauce, realistic texture, appetizing steam, warm side light, shallow depth of field, premium food commercial style, no text/logos/watermark.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Prompt 2: Create a 9-cell hybrid keyframe-to-transition storyboard sheet for a 15-second gourmet burger ad, moving from empty surface to ingredient assembly to final macro hero shot. Use large S cells and smaller T cells, motion arrows, ghosted ingredient positions, steam, sauce trails, and camera push-in icons. Style: premium food commercial, warm lighting, rich texture, appetizing, cinematic, minimal labels only. No logos, no watermark.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ecommerce.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分类文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：对比与社区案例</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/</guid>
        <description>&lt;p&gt;本页收录 &lt;code&gt;对比与社区案例&lt;/code&gt; 分类下的 48 个案例。每个条目保留原案例链接、作者、生成图和完整提示词。&lt;/p&gt;
&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;对比与社区案例&#34;&gt;对比与社区案例
&lt;/h2&gt;&lt;h3 id=&#34;木质书架提示词测试&#34;&gt;木质书架提示词测试
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chetaslua/status/2044331451077013749&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/chetaslua&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chetaslua&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/000.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/000_hu_349a75f53e60885a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/000_hu_60fe6fed947c682a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;木质书架提示词测试&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A wooden bookshelf consisting of three shelves: On the top shelf, there should be one book, on the second shelf, there should be three books, and on the bottom shelf, there should be seven books.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;gpt-image-2-细节展示&#34;&gt;GPT-Image-2 细节展示
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045000106919997637&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/001.webp&#34;
	width=&#34;456&#34;
	height=&#34;703&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/001_hu_e0b361543eb632d3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/001_hu_8ce9a910d53d3bc2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;GPT-Image-2 细节展示&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;64&#34;
		data-flex-basis=&#34;155px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以眼部特写图片为基础，生成3:4的四屏构图超写实眼部特写，四屏按春夏秋冬上下排序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第一屏：眼眸中带着绽粉樱色的美瞳，睫毛缀满迷你春花，脸颊散落樱瓣与黄蕊小花，粉蝶萦绕眉眼，浅金发丝轻垂，下方簇簇樱花怒放，画面中央&amp;#34;SPRING&amp;#34;白色艺术字点缀，风格细腻唯美，光影柔和，色彩粉嫩治愈，下面用书法体写着春；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第二屏：眼眸中带着着清荷色的美瞳，睫毛饰以粉莲与绿荷，脸颊挂着晶莹水珠，粉瓣、绿荷点缀其间，蜻蜓轻绕，浅金发丝若隐若现，画面中央&amp;#34;Summer&amp;#34;白色艺术字凸显，光影通透流光感，色彩清透凉爽，下面用书法体写着夏；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第三屏：眼眸中带着金黄红相间的美瞳，睫毛饰以橙红枫叶，脸颊散落金红秋叶，橙蝶翩跹眉眼间，浅金发丝隐约可见，画面中央&amp;#34;AUTUMN&amp;#34;白色艺术字醒目，光影暖金流光，色彩浓郁温暖，下面用书法笔写着秋；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第四屏：眼眸中带着雪花蓝色的美瞳，睫毛覆满冰晶雪片，脸颊散落白色雪花与红色腊梅，银白蝴蝶翩跹眉眼，浅金发丝朦胧似雪，画面中央&amp;#34;WINTER&amp;#34;白色艺术字亮眼，光影冷冽蓝白流光，色彩清透纯净，下面用书法体写着冬。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体呈现梦幻眼眸四季交替的唯美梦幻治愈画面，微调各屏的光影强度，让画面氛围感更浓郁。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ab-测试签名输出&#34;&gt;A/B 测试签名输出
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/saskr_13/status/2044744396932079934&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/saskr_13&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@saskr_13&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/002.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/002_hu_84c99483702d69b4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/002_hu_d27853e0cb13d54a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;A/B 测试签名输出&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;私があなたをどんなふうに扱ってきたか、4 コマ漫画風に描いてください。まずは 800 字くらいのプロットをテキストで出して、私が「描いて」と言ったらプロットに沿った 4 コマ漫画を描いてください。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;剪影宇宙叙事海报&#34;&gt;剪影宇宙叙事海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2045418028733538620&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/003.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/003_hu_69c60fbc35d186ac.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/003_hu_f2a47467a79d8d90.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;剪影宇宙叙事海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题：xxx】自动生成一张高审美的“轮廓宇宙 / 收藏版叙事海报”风格作品。不要将画面局限于固定器物或常见容器，不要优先默认瓶子、沙漏、玻璃罩、怀表之类的常规载体，而是由 AI 根据主题自行判断并选择一个最契合、最有象征意义、轮廓最强、最适合承载完整叙事世界的主轮廓载体。这个主轮廓可以是器物、建筑、门、塔、拱门、穹顶、楼梯井、长廊、雕像、侧脸、眼睛、手掌、头骨、羽翼、面具、镜面、王座、圆环、裂缝、光幕、阴影、几何结构、空间切面、舞台框景、抽象符号或其他更有创意与主题代表性的视觉轮廓，要求合理布局。优先选择最能放大主题气质、最能形成强烈视觉记忆点、最能体现史诗感、神秘感、诗意感或设计感的轮廓，而不是最安全、最普通、最常见的容器。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面的核心不是简单把世界装进某个物体里，而是让完整的主题世界自然生长在这个主轮廓之中、之内、之上、之边界里或与其结构融为一体，形成一种“主题宇宙依附于一个象征性轮廓展开”的高级叙事效果。主轮廓必须清晰、优雅、有辨识度，并在整体构图中占据核心地位。轮廓内部或边界中需要自动生成与主题强绑定的完整叙事世界，内容应当丰富、饱满、层次清晰，包括最能代表主题的标志性场景、核心建筑或空间结构、象征符号与隐喻元素、角色关系或文明痕迹、远景中景近景的空间递进、具有命运感和情绪张力的氛围层次，以及门、台阶、桥梁、水面、烟雾、路径、光源、遗迹、机械结构、自然景观、抽象形态、生物或道具等叙事细节。所有元素必须统一、自然、有主次、有层级地融合，像一个完整世界真实孕育在这个轮廓结构之中，而不是简单拼贴、裁切填充、素材堆叠或模板化背景。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体构图需要具有强烈的收藏版海报气质与高级设计感，大结构稳定，主轮廓强烈明确，内部世界具有纵深、秩序和呼吸感，细节丰富但不拥挤，内容丰满但不杂乱，可以适度加入小比例人物剪影、远处建筑、光柱、门洞、桥、阶梯、回廊、倒影、天光或远景结构来增强尺度感、故事感与史诗感。整体画面要安静、宏大、凝练、富有余味，不要平均铺满，不要廉价热闹，不要无重点堆砌。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;风格融合收藏版电影海报构图、高级叙事型视觉设计、梦幻水彩质感与纸张印刷品气质，强调纸张颗粒感、边缘飞白、水彩刷痕、轻微晕染、空气透视、柔和雾化、局部体积光、光雾穿透、大面积留白与克制版式，让画面看起来像设计师完成的高端收藏版视觉作品，而不是普通 AI 跑图。整体气质要高级、诗意、宏大、神圣、怀旧、安静、具有传说感和叙事感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;色彩由 AI 根据主题自动判断并匹配最合适的高级配色方案，但必须保持统一、克制、耐看、低饱和、高级，不要杂乱高饱和，不要廉价霓虹感，不要塑料数码感。配色可以围绕黑金灰、冷蓝灰、雾白灰、褐红米白、暗铜、旧纸色、深海蓝、暮色紫、银灰等体系自由变化，但必须始终服务主题，并保持海报级审美与整体和谐。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最终要求：第一眼有强烈的主题识别度和轮廓记忆点，第二眼有完整丰富的叙事世界，第三眼仍有细节和余味。轮廓选择必须具有创意和主题匹配度，尽量避免重复、保守、常见的容器套路，优先选择更有象征性、更有空间感、更有设计潜力的轮廓形式。不要普通背景拼接，不要生硬裁切，不要模板化奇幻素材，不要游戏宣传图感，不要过度卡通化，不要过度写实导致失去艺术感，不要形式大于内容。如果合适，可以自然加入低调克制的标题、编号、签名或落款，让它更像收藏版海报设计的一部分，但不要喧宾夺主。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;狮驼岭暗黑神话场景&#34;&gt;狮驼岭暗黑神话场景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MANISH1027512/status/2045743158860878312&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MANISH1027512&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MANISH1027512&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/004.webp&#34;
	width=&#34;1200&#34;
	height=&#34;673&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/004_hu_f5f4bf455e2347e6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/004_hu_2545fff147bf08cb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;狮驼岭暗黑神话场景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;178&#34;
		data-flex-basis=&#34;427px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;中式怪异，黑暗神秘风格融合中式美学，完美细节，多重管线渲染，完美建模。西游记背景，狮驼岭，千妖万怪，坐在左边巨大王座上的大象王重甲妖精，坐在中间巨大王座上的狮王重甲妖精，坐在右边巨大王座上大鹏鸟王重甲妖精。渺小的背对镜头孙悟空肩抗金箍棒步行前进，孙悟空身穿铠甲，近地仰拍镜头，长焦镜头，强烈阴影。极致细节刻画，多次修改，正确透视和主体线条，精致细节
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;counter-strike-x-terraria-截图混搭&#34;&gt;Counter-Strike x Terraria 截图混搭
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yssrski/status/2046410519595348397&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/yssrski&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yssrski&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/005.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/005_hu_22dc16342dfb23c0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/005_hu_e8fbbe23ea2f380e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Counter-Strike x Terraria 截图混搭&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;counter strike in game screenshot, mixed with Terraria
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;战前日本实验室-minecraft-截图&#34;&gt;战前日本实验室 Minecraft 截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/RitaStar1128/status/2046406024303976904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/RitaStar1128&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@RitaStar1128&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/006.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/006_hu_b537e6a2e4d3a01c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/006_hu_1a35c7e6d109f154.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;战前日本实验室 Minecraft 截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;戦前日本の怪しげな研究所を探検しているマイクラのスクリーンショット画像を作成して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;锻造杰作提示词测试&#34;&gt;锻造杰作提示词测试
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046201836525302032&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/007.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/007_hu_bdee5d7a2fb77f90.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/007_hu_6ea37f78bc207883.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;锻造杰作提示词测试&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我生成xxxx真迹图片
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;多概念战斗海报组&#34;&gt;多概念战斗海报组
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/joshesye/status/2046493442428039212&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/joshesye&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@joshesye&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/008.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/008_hu_5444105119fd235a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/008_hu_1b363ada840cafe7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;多概念战斗海报组&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1、生成不知火舞和貂蝉的游戏对战海报图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2、生成一张K-pop团体时尚专辑封面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3、请你生成 《斗破苍穹》 的关键人物关系图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4、帮我截一张上传图片的抖音首页的女网红图
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;rust-游戏内截图&#34;&gt;Rust 游戏内截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/FixlationAI/status/2046272578705068476&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/FixlationAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@FixlationAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/009.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/009_hu_2f33baa8eee8a96f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/009_hu_2f3d7557f468088e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Rust 游戏内截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;an ingame screenshot of rust
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sam-altman-熊自拍&#34;&gt;Sam Altman 熊自拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/JustinGorya/status/2046510831832006970&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/JustinGorya&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@JustinGorya&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/010.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/010_hu_cbb4341cfe620805.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/010_hu_99cec28b7bfdb7dc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sam Altman 熊自拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;generate image: Selfie of Sam Altman riding a bear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Edit prompt: Remove the background make it transparent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;among-us-写实截图&#34;&gt;Among Us 写实截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ReYYYYoking/status/2046502217843376292&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ReYYYYoking&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ReYYYYoking&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/011.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/011_hu_a07430ca8e2ce37c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/011_hu_7e0764d762a8c7b1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Among Us 写实截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AmongUsの精密な実際のゲーム画像を生成して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;复古编程博物馆卡通图&#34;&gt;复古编程博物馆卡通图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/XiaohuiAI666/status/2046515319947354603&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/XiaohuiAI666&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@XiaohuiAI666&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/012.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/012_hu_590bc6590b95ca8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/012_hu_9f60f996346a18fd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;复古编程博物馆卡通图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在计算机博物馆里,一个程序员在展厅中央,正在演示C语言编程,很多参观者在围观,屏幕上的代码清晰可见。旁边的牌子写着:古法编程,现场表演。2D卡通画风,16:9
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第-14-维投影场景&#34;&gt;第 14 维投影场景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/workingclassbud/status/2046506783850815703&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/workingclassbud&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@workingclassbud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/013.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/013_hu_d98de914cb7ba1f8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/013_hu_2c2d101467fb6782.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;第 14 维投影场景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dusk shindig  with multiple fake imagination projections all aligned in the 14th dimensions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sam-altman-棒球转播画面&#34;&gt;Sam Altman 棒球转播画面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/16kthir0GRXgNqn/status/2046507362266259832&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/16kthir0GRXgNqn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@16kthir0GRXgNqn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/014.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/014_hu_8bd08cc6b26c642b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/014_hu_6dacced72af126fe.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sam Altman 棒球转播画面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;サムアルトマンがメジャーリーガーでバットを構えている。よくあるようなテレビ画面の構図
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;基于视频内容和当前帧生成-youtube-缩略图&#34;&gt;基于视频内容和当前帧生成 YouTube 缩略图&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chatcutapp/status/2047228386117128475&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/chatcutapp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chatcutapp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/015.webp&#34;
	width=&#34;1200&#34;
	height=&#34;635&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/015_hu_2eb49e69d901da0d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/015_hu_7ed47c8d420869e2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;基于视频内容和当前帧生成 YouTube 缩略图…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;188&#34;
		data-flex-basis=&#34;453px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Based on the video content and this current frame, use GPT to generate a YouTube thumbnail that fits the video. You can reference the style of the image I gave you, but replace the logo on the right side of AE with theChatCut logo. I&amp;#39;ll attach the logo for you.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;生成-2020-年最重大事件的图像&#34;&gt;生成 2020 年最重大事件的图像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959/status/2047211900769878234&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Rufus87078959&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/016.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/016_hu_687922d1e7a63a2a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/016_hu_5b15c5c496429717.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成 2020 年最重大事件的图像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate an image of the most significant event of 2020
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;编辑图像将总金额改为-2445-泰铢&#34;&gt;编辑图像，将总金额改为 244.5 泰铢&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/elliscrosby/status/2047211507596071235&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/elliscrosby&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@elliscrosby&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/017_hu_16dc39ca901c6b82.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/017_hu_a50df358fa6989a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;编辑图像，将总金额改为 244.5 泰铢…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Edit this image so that total amount changes to 244.5 baht. You can change the quantity of each of the stacks of coins until we hit the target total.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;生成-2001-年最重大事件的图像&#34;&gt;生成 2001 年最重大事件的图像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959/status/2047210051216011682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Rufus87078959&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/018.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/018_hu_deead110f1a8dd0a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/018_hu_bd38033b18d24a88.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成 2001 年最重大事件的图像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate an image of the most significant event of 2001
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;研究-lime-药物设计并制作详细信息图&#34;&gt;研究 LIME 药物设计并制作详细信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/WillSpagnoli/status/2047172976463040851&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/WillSpagnoli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@WillSpagnoli&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/019.webp&#34;
	width=&#34;849&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/019_hu_25a4361b50c33c7d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/019_hu_47733dfbffd47eb7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;研究 LIME 药物设计并制作详细信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Research LIME Drug Design and make a detailed infographic about it
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;抖音直播带货截图&#34;&gt;抖音直播带货截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/laogeai/status/2047228458351120625&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/laogeai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@laogeai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/020.webp&#34;
	width=&#34;555&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/020_hu_f32bbd02312def58.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/020_hu_eb8b785a739867f4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;抖音直播带货截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;111px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一个抖音直播的截图 里面是一个美女在直播，在卖丝袜和内衣，她的在线人数是99996，热度是18+，有个叫小互的大哥，给她刷了一个飞机礼物
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;社交-app-匹配成功界面&#34;&gt;社交 App 匹配成功界面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047220490486612450&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/021.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/021_hu_923f02bf30c4aca3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/021_hu_eae15aed44a17514.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;社交 App 匹配成功界面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;社交App匹配成功界面，两个用户资料卡碰撞爱心特效
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;吕布-boss-设计表&#34;&gt;吕布 Boss 设计表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047198090009190441&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/022.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/022_hu_5c8a9cf9cc09493f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/022_hu_da22a045a479988d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;吕布 Boss 设计表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;吕布游戏Boss设定，赤兔马方天画戟，暗黑进化形态双形态对比
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;哪吒暗黑奇幻小说封面&#34;&gt;哪吒暗黑奇幻小说封面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047196508270084104&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/023.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/023_hu_7c0698aae9a158cb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/023_hu_1562cbd59e61549a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;哪吒暗黑奇幻小说封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;玄幻小说封面，哪吒三头六臂悬浮虚空，火焰莲台底座，暗黑史诗风
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;新中式极简花卉插画&#34;&gt;新中式极简花卉插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2047180347448914195&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/024.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/024_hu_e1aa195cdc4af4e8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/024_hu_3b629338b5210b1a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;新中式极简花卉插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;新中式极简东方美学 × 高端商业插画，主题一花一世界，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;极简，克制，空灵，高级商业视觉，超现实东方意境，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面干净通透，无灰雾、无脏色，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一朵巨大的荷花作为空间容器，从平静水面自然生长，轻微倾斜，构图优雅留白充足，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;低饱和干净粉色，柔和胭脂调，花瓣半透明，轻盈通透，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;哑光低对比，边缘柔化 + 轻微景深，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;荷花内部为唯一视觉焦点：发光的3D微缩广州城市，包含：广州塔，珠江新城建筑群，猎德大桥，珠江水岸，少量岭南建筑，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;城市超精细结构，真实材质，极高细节清晰度，城市高光是暖金色，城市阴影是冷青蓝，形成冷暖对比，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;灯光通透有能量，局部高饱和但不泛滥，城市亮度明显高于荷花，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;水面清澈极简平静，仅少量柔和涟漪，弱反射，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景暖米白宣纸质感，无水墨、无笔触，大面积留白，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;中心有极轻微光晕渐变，整体通透、不灰、不闷，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面下方一艘极简小船，船上一位红衣渔女，极小比例，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;静立仰望荷花，红色为唯一高纯度点缀，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体光线通透、干净、有层次，无灰雾、无泛白，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;高端CG商业插画，电影级真实光影，高动态范围，超精细，8K细节，ArtStation 级画质，强化分色，干净调色，青橙对比，暖高光冷暗部，仅城市灯光提亮饱和度，色调柔和通透，光影锐利明亮，无灰雾、无暗沉、无低饱和雾化。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;苏妲己古风魅惑人像&#34;&gt;苏妲己古风魅惑人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/nidiedeba/status/2047147223281270878&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/nidiedeba&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@nidiedeba&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/025.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/025_hu_57012c8d3330874.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/025_hu_10091a87be8e4b13.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;苏妲己古风魅惑人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;苏妲己古风写真，红色纱衣半透，狐耳若隐若现，媚态撩人
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;鲁迅朝花夕拾插画&#34;&gt;鲁迅《朝花夕拾》插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Aurora_62340/status/2047139992355680530&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Aurora_62340&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Aurora_62340&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/026.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/026_hu_39b845c01a0f8f13.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/026_hu_6ca7c93238508cbe.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;鲁迅《朝花夕拾》插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;结合鲁迅的《朝花夕拾》里的内容，生成一副图片，要求图片背景符合《朝花夕拾》的意境，背景图可以使用蒙版，前景是 鲁迅的全身画像位于图片左侧或右侧
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;地铁手机随拍&#34;&gt;地铁手机随拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AntCaveClub/status/2047136306485133428&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AntCaveClub&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AntCaveClub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/027.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/027_hu_e73df417ccc689da.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/027_hu_112ce48141e686fb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;地铁手机随拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;地铁上低头看手机的美丽女人，偷拍照片。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;能免费试一次 ⬇️
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;中国航天纪念邮票张&#34;&gt;中国航天纪念邮票张
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047129703702802811&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/028.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/028_hu_eb60c01370c01934.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/028_hu_3db265d15e769808.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;中国航天纪念邮票张&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;中国航天纪念邮票小全张，火箭发射场景，烫金边框工艺
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;竖版武侠女侠人像&#34;&gt;竖版武侠女侠人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/CoderDaMing/status/2047127585256358221&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/CoderDaMing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@CoderDaMing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/029.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/029_hu_a8f0a65ddfdcf7b2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/029_hu_894cf766aa61d435.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;竖版武侠女侠人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 竖版，极致武侠风，绝美东方女侠，20岁出头，冷艳锐利丹凤眼，眉宇英气逼人，肤白如玉，长直黑发湿漉漉随狂风剧烈飞舞，几缕发丝贴在脸颊和颈侧，穿着湿透的深黑改良武侠劲装，外披宽袖玄色长袍，衣袍和长袖被风吹得剧烈飘扬翻飞，紧身劲装勾勒身材，腰束软剑带，足踏长靴，右手持一把古剑，剑身散发幽蓝剑气光芒，动态姿势：身体微侧回眸，衣袂猎猎，背景为月夜雨雾笼罩的竹林古道，巨大明月高悬，石板小径，古灯笼，薄雾雨丝，戏剧性冷月光与蓝光剑气结合，湿身水光效果，超强动态感，细腻布料褶皱、头发丝飘动、真实水珠反光，电影级光影，8k，masterpiece, best quality, ultra realistic, cinematic, dramatic atmosphere
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;基于佛经的写实观音人像&#34;&gt;基于佛经的写实观音人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01/status/2047123570485260753&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Zhaoge01&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/030.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/030_hu_79247bf19d7df29f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/030_hu_6564a8aaada7451c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;基于佛经的写实观音人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;根据佛经对观音菩萨的形象描述，原原本本的还原一张真实的观音菩萨形象照片，皮肤与衣服接近真实，画质iPhone 15 pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;唐代长安灯会全景&#34;&gt;唐代长安灯会全景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047122441454096527&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/031.webp&#34;
	width=&#34;1200&#34;
	height=&#34;600&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/031_hu_134154d5364f596.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/031_hu_a01776cc2a06ae8c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;唐代长安灯会全景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;200&#34;
		data-flex-basis=&#34;480px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;唐代长安城元宵灯会全景，万盏花灯照亮夜空，工笔重彩长卷
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;历史感杨贵妃写实人像&#34;&gt;历史感杨贵妃写实人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01/status/2047110776897638568&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Zhaoge01&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/032.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/032_hu_9260a969e43c58ec.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/032_hu_7925640563d18b20.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;历史感杨贵妃写实人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;根据真实历史对杨玉环的形象描述，生成一张杨贵妃真实照片，画质为iPhone 15 pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超现实日本未来城市插画&#34;&gt;超现实日本未来城市插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tresmort/status/2047105322863460496&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tresmort&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Tresmort&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/033.webp&#34;
	width=&#34;672&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/033_hu_4d3ca5a30ab2dcad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/033_hu_2fdd875a8febb08d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超现实日本未来城市插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;134px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;参考这张图的透视和风格，绘制一张更加精细的超高清插画，表现超现实主义的日式未来都市，要能看清很小的细节，包括街道上的传统文化游行的人，小巷里的黑帮，烟花巷的舞女，疲惫的社畜，楼房的窗户里也有各式各样的人物，学习的学生，吵架的夫妻，玩游戏的宅男，以及更多的发挥细节。讽刺现实拥挤中的无聊，都市繁华下的孤独，无意义的人生中又有一种病态的美感。画面要有极高的审美价值 ，不能因为拼内容而损失美和协调感，比例是9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;涂山雅雅奇幻魅力人像&#34;&gt;涂山雅雅奇幻魅力人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sdjn_wgc/status/2046981757325475954&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sdjn_wgc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sdjn_wgc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/034.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/034_hu_aca7edbe689ae342.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/034_hu_5a8d1598f7f60220.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;涂山雅雅奇幻魅力人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;狐妖小红娘涂山雅雅写真大片，粉色九尾狐裘紧身裙，媚眼如丝，红唇微张，极致妖媚
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;抖音直播带货截图-1&#34;&gt;抖音直播带货截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/LVWANGJI_0327/status/2046974302227206525&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/LVWANGJI_0327&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@LVWANGJI_0327&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/035.webp&#34;
	width=&#34;555&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/035_hu_babe578c9021c9eb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/035_hu_b24fa3bc309b5223.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;抖音直播带货截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;111px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一个抖音直播的截图 里面是一个美女在直播，在卖丝袜和内衣，她的在线人数是99996，热度是18+，有个叫小互的大哥，给她刷了一个飞机礼物
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;东方奇幻女性半身像&#34;&gt;东方奇幻女性半身像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2046962895775580442&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/036.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/036_hu_a9e322f740143588.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/036_hu_b4fefc36a1f44d63.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;东方奇幻女性半身像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;东方幻想风格女性，半身肖像，回眸侧脸，气质空灵优雅，柔和神性美感，细腻五官，微垂眼神，冷白细腻肌肤，淡雅橘粉妆容，金色高光点缀
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;长发飘动，发丝中融入彩色花朵与光粒（红、蓝、橙、紫），头发具有流动感与空气感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;身穿半透明丝绸礼服与披肩，材质轻盈通透，布料随风飘动，表面带有鎏金纹理与闪耀颗粒。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体光影为暖金色逆光，强边缘光，体积光明显，光粒漂浮，柔光泛光，梦幻氛围
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景干净浅色渐变，带微光与粒子效果，整体氛围空灵、梦境、神圣
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;风格：高端CG插画，超精细，电影级光影，柔光渲染，8K细节，artstation 热门作品风格
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;竖版东方年轻女性艺术人像&#34;&gt;竖版东方年轻女性艺术人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/zhiyangzhu22222/status/2046952985562062888&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/zhiyangzhu22222&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@zhiyangzhu22222&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/037.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/037_hu_6abef56a6312093c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/037_hu_4cf6b460212173c7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;竖版东方年轻女性艺术人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 竖向构图，单人女性艺术肖像，年轻东方女生，五官清秀，脸部线条柔和，皮肤自然通透，保留真实肌理，气质安静高级，带一点疏离感和故事感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;摄影棚风格与自然光融合，柔和侧光，面部有细腻高光，阴影轻柔，整体光线通透不刺眼，带轻微黑雾滤镜效果，微朦胧、微泛光、空气感强。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景极简干净，奶油灰、米白、浅卡其或雾感暖灰色墙面，留有大面积负空间，整体画面简洁、有呼吸感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;模特坐在地面或低台上，一条腿自然弯曲，一条腿放松伸展，身体轻微前倾或侧倾，肩膀不对称，头部轻轻倾斜，动作自然松弛，不刻意摆拍。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;表情平静克制，眼神柔和，略微疏离，带一点若有所思的情绪，嘴唇自然微张或轻闭，状态慵懒、安静、细腻。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;发型为自然蓬松的长发，微凌乱碎发，发丝轻柔，有空气感和层次感，像刚整理过但保留自然随性感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;妆容为高级淡妆，韩系清透底妆，皮肤柔雾光泽，鼻梁与面颊有自然高光，眉形干净，眼妆淡雅但有神，睫毛纤长，唇色为低饱和玫瑰豆沙色或奶茶裸粉色。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;服装为简约高级风：米白色紧身罗纹针织背心，外搭宽松白衬衫或柔软针织开衫，下装为高腰半裙或简约短裤，布料柔软贴合身形但不过分暴露，呈现自然身体线条与文艺感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面强调细腻质感、柔和色调、轻法式与韩系杂志感结合，真实摄影感，电影级肤色，细节丰富，层次分明，构图克制，高级审美，时尚 编辑人像，柔和的电影感人像，细腻的质感，超高细节，逼真，优雅，精致，高端时尚摄影，含蓄的性感，简洁的构图。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;汽车人集结月球基地&#34;&gt;汽车人集结月球基地
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2046952548469530716&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/038.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/038_hu_fc0d03188fef8d07.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/038_hu_75e9a58aa1d6430a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;汽车人集结月球基地&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片1：汽车人全员月球基地集结，地球悬于身后星空，赛博坦旗帜飘扬
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片2：霸天虎全员列阵外星战舰甲板，威震天坐于王座俯视全军
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;自然志风食物标本剖面&#34;&gt;自然志风食物标本剖面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX/status/2046939656244318676&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GeekCatX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/039.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/039_hu_30825d91596e59d8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/039_hu_8224a59ff709b4cc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;自然志风食物标本剖面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一颗/一块/一枚【食物名称】，以博物学大师发现野外标本的方式解剖。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;剖开、展开、固定——如同博物馆的珍贵藏品，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;却以卡拉瓦乔为《国家地理》掌镜时的光线照亮。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每一个内部结构都以自身的材质真相发光。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;截面锋利得近乎暴力。内部美丽得近乎神圣。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面中呈现完整标本：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一半保持原状，展示【外表面描述：质感/颜色/纹理】；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;另一半剖开至核心，【内部核心结构描述：最重要的1—2个内部视觉特征】清晰可见。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【补充1—2句该食物最具视觉张力的横截面细节描述】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景：纯粹的黑丝绒。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【食物名称】悬浮其中，如同某件珍贵而危险的事物。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;标注文字紧贴结构边缘，手写感衬线字体，绝不悬空飘浮。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面包含以下标注，每处标注三行：第一行结构名称，第二行成分数据，第三行一句人话：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构01名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构02名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构03名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构04名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构05名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构06名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;省略其他如果有继续保持这个格式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主标题，左上角，暖象牙白大写字体：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【食物名称】·解剖
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;斜体副标题紧随其下：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【一句揭示这种食物本质的话，不超过15字】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体气质：奥杜邦博物插画×卡拉瓦乔光影×有史以来最美的科学摄影。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4K精度，标本照明，极致内部细节。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;没有任何临床感，一切都鲜活。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;写实风格，非示意图，非卡通，非简化图解。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每一种材质都有真实的物理质感：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;粗糙的、光滑的、湿润的、干燥的、致密的、疏松的。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;宝丽来相框突破场景&#34;&gt;宝丽来相框突破场景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MajaDesignJP/status/2047235632934928765&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MajaDesignJP&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MajaDesignJP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/040.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/040_hu_e11ed3612b1be3e9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/040_hu_c4e74768217d3d5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;宝丽来相框突破场景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ポラロイド写真の中に人が写っていて、その人がフレームから外に飛び出している画像。日本語が書いてある画像生成して
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;←下の画像
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPT Image-2で生成したやつ→
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;餐厅-pov-变化对比&#34;&gt;餐厅 POV 变化对比
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb/status/2047714457774637213&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chesnyfcb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/041.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/041_hu_c3be8e5523986d4f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/041_hu_46f34758a3d6ee94.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;餐厅 POV 变化对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A side-by-side comparison graphic on a black background demonstrating a camera-angle change in the same restaurant scene. At the top, large white sans-serif text reads: &amp;#34;Show me the POV from someone standing behind the bar looking out over this crowded restaurant. Change NOTHING in the scene other than the pov&amp;#34;. Below, place 2 stacked rectangular photos centered vertically: the top image labeled &amp;#34;Source&amp;#34; in large white text on the left, and the bottom image labeled &amp;#34;Output&amp;#34; in large white text on the left. The top photo shows a warmly lit, upscale, crowded restaurant interior seen from the dining room side, facing a tall back bar filled with many illuminated liquor bottles on wall-to-wall shelves, with bartenders and guests in front, amber lighting, globe pendant lights, wood ceiling, beige columns, and tightly packed seated diners in the foreground. The bottom photo shows the exact same restaurant, same crowd density, same warm lighting, same decor, same bar shelving, same globe pendant lights, and same overall composition elements, but now from the point of view of someone standing behind the bar and looking outward across the crowded restaurant; the foreground includes the bar counter with glassware, metal bar tools, bottles, and a point-of-sale screen visible at the lower left, while guests and staff fill the middle ground and the dining room extends into the background. Preserve the sense that only the camera position changed between the 2 images, with no other scene alterations.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫人群-pov-对比&#34;&gt;动漫人群 POV 对比
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb/status/2047714457774637213&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chesnyfcb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/042.webp&#34;
	width=&#34;680&#34;
	height=&#34;506&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/042_hu_ed0399bfad9e8fc0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/042_hu_f726205b2c45a4df.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫人群 POV 对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;134&#34;
		data-flex-basis=&#34;322px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;comparison graphic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;anime cinematic demonstration image on a black presentation background&amp;#34;,&amp;#34;canvas&amp;#34;:{&amp;#34;aspect_ratio&amp;#34;:&amp;#34;4:3&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;solid black&amp;#34;},&amp;#34;text_elements&amp;#34;:[{&amp;#34;text&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;Move the camera POV to be at ground level in the crowd.\&amp;#34;}&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top center&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;large white sans-serif&amp;#34;},{&amp;#34;text&amp;#34;:&amp;#34;Source&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;left of upper image&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;large white sans-serif&amp;#34;},{&amp;#34;text&amp;#34;:&amp;#34;Output&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;left of lower image&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;large white sans-serif&amp;#34;}],&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;Source&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;overhead crowd scene&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;Output&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ground-level crowd POV scene&amp;#34;]}],&amp;#34;image_frames&amp;#34;:2},&amp;#34;images&amp;#34;:[{&amp;#34;role&amp;#34;:&amp;#34;source image&amp;#34;,&amp;#34;composition&amp;#34;:&amp;#34;busy top-down view of a densely packed historical street crowd, seen from above&amp;#34;,&amp;#34;scene&amp;#34;:&amp;#34;a chaotic crowd gathered around a wagon and a horse-drawn carriage, people pressed shoulder to shoulder, many wearing caps and muted early-20th-century or old-European clothing, bundles and sacks visible, one brown horse at the right edge, wooden wagon wheel and cart structure partially visible&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;high overhead bird&amp;#39;s-eye angle looking down into the crowd&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;soft daylight&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;muted earthy browns, dusty blues, beige, olive, warm gray&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;hand-painted anime film still, detailed crowd illustration, slightly soft shading&amp;#34;},{&amp;#34;role&amp;#34;:&amp;#34;output image&amp;#34;,&amp;#34;composition&amp;#34;:&amp;#34;the same crowded historical street reimagined from inside the mass of people at near-ground height&amp;#34;,&amp;#34;scene&amp;#34;:&amp;#34;view from within the crowd beside a carriage wheel, bodies filling the foreground and midground, a person in dark maroon clothing bent forward at left, a crouched figure in green near the bottom center, a woman in a light blue dress at right-center turning back, tightly packed figures, horse and cart implied nearby, dramatic sense of compression and closeness&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;very low ground-level POV from inside the crowd, upward and forward through people, emphasizing complex occlusion and depth&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;soft daylight with warm cinematic shadows&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;muted earthy browns, dusty blues, beige, olive, warm gray&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;hand-painted anime film still, cinematic perspective shift, detailed character crowding, soft painterly shading&amp;#34;}],&amp;#34;overall_goal&amp;#34;:&amp;#34;show a before-and-after camera angle transformation of the same anime crowd scene, with the output moving from an overhead view to a low immersive POV inside the crowd&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;霓虹-ai-缩略图对比&#34;&gt;霓虹 AI 缩略图对比
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219/status/2047698611665096732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MoveHiro1219&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/043.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/043_hu_33f15e3a0c84a481.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/043_hu_175d60632bcf6b51.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;霓虹 AI 缩略图对比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a dramatic Japanese YouTube thumbnail in a futuristic neon cyberpunk style, 16:9 landscape. Use a dark tech-city background with faint skyscrapers, digital grid lines, glowing particles, and high-contrast blue, pink, and gold lighting. In the exact center, place a young woman from the waist up with long straight pastel blue hair, wearing a plain white short-sleeve T-shirt and a light pink skirt, posing thoughtfully with one hand near her chin and the other arm folded; anonymize her face with a soft rectangular blur. Across the very top, add huge distressed bold white Japanese headline text reading 主導権が揺れた, and directly below it add large bold yellow text reading {argument name=&amp;#34;subheadline text&amp;#34; default=&amp;#34;Nano Bananaから&amp;#34;}. On the left side, create a glowing blue hexagonal-framed panel titled Nano Banana with a smaller subtitle 画像生成. Inside that panel, include exactly 4 image tiles in a 2x2 grid: 1) a fantasy floating island landscape at sunset, 2) a sunlit forest path with tall trees, 3) a neon futuristic city street at night, 4) an outer-space planet scene with stars and a spacecraft. Beneath the left panel, add a blue glowing ribbon label reading かつては優位だった. On the right side, create a glowing magenta hexagonal-framed panel titled {argument name=&amp;#34;right panel title&amp;#34; default=&amp;#34;GPT Image 2&amp;#34;} with a smaller subtitle 実務で使える出力へ. Inside it, include exactly 4 example thumbnail cards in a 2x2 grid, each featuring the same blue-haired woman with a blurred face and bold Japanese text. The 4 card labels above the tiles are: サムネイル画像, 記事のアイキャッチ画像, LPのセクション画像, SNS投稿画像. The large text inside the 4 cards should read respectively: 1) AIで変わるクリエイティブの未来, 2) AI時代のクリエイティブ戦略 成功する企業の条件, 3) AIで加速するビジネス成長, 4) 未来をつくるのは AI×あなたのアイデア. Between the left and right panels, place a bright glowing gold arrow pointing from left to right with spark-like particle trails, indicating transition or superiority shift. Along the bottom, add a very large black banner with a glowing gold border and massive bold gold text reading {argument name=&amp;#34;bottom banner text&amp;#34; default=&amp;#34;GPT Image 2へ&amp;#34;}. Overall composition should feel like a comparison graphic showing a shift from older image generation to more practical commercial output, with aggressive thumbnail typography, strong glow effects, metallic texture on major text, and polished social-media marketing visuals.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;赛博朋克-ai-工具对比海报&#34;&gt;赛博朋克 AI 工具对比海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219/status/2047698611665096732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MoveHiro1219&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/044.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/044_hu_e993eef1ea220a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/044_hu_6755473a85ce3e57.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;赛博朋克 AI 工具对比海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A futuristic Japanese tech comparison poster in a dark cyberpunk control-room setting, wide 16:9 composition. Large distressed white Japanese headline text at the upper left reading &amp;#34;三つ巴&amp;#34;, with a bold gold subtitle directly below reading &amp;#34;それぞれの武器&amp;#34;. Across the center-left are 3 glowing holographic comparison panels arranged horizontally and connected by neon arrows: a blue panel labeled &amp;#34;Google&amp;#34;, an amber-gold panel labeled &amp;#34;Claude&amp;#34;, and a purple-magenta panel labeled &amp;#34;OpenAI&amp;#34;. The Google panel contains 4 inner cards: 2 larger top cards labeled &amp;#34;Gemini&amp;#34; and &amp;#34;Antigravity&amp;#34;, plus 2 smaller bottom cards showing analytics/dashboard-like visuals and a blue isometric cube graphic. The Claude panel contains 4 inner cards: 1 large top card labeled &amp;#34;Claude Code&amp;#34;, plus 3 smaller bottom cards showing a network diagram, text/code list, and chart analytics. The OpenAI panel contains 5 inner cards: 2 larger top cards labeled &amp;#34;ChatGPT&amp;#34; and &amp;#34;Codex&amp;#34;, plus 3 smaller bottom cards showing interface/code windows and a geometric wireframe cube. Add glowing bidirectional arrows between Google and Claude, and between Claude and OpenAI. At the bottom center, place a large neon-framed banner with gold text reading &amp;#34;Google / Claude / OpenAI&amp;#34;. On the right side, include a young woman standing and pointing left toward the panels, with long straight split-dyed hair in pastel pink and cyan blue, a plain white t-shirt with black text reading &amp;#34;{argument name=&amp;#34;shirt text&amp;#34; default=&amp;#34;OKIHIRO AI Creative&amp;#34;}&amp;#34;, and a soft pink pleated skirt. Her face is obscured by a smooth rectangular blur block. Use cinematic sci-fi lighting, glossy hologram UI details, high contrast, vivid blue-gold-purple accents, and a polished YouTube thumbnail aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式-ai-对战-youtube-缩略图&#34;&gt;日式 AI 对战 YouTube 缩略图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219/status/2047698611665096732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MoveHiro1219&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/045.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/045_hu_70f595024db82dbb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/045_hu_e83698ae32159172.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式 AI 对战 YouTube 缩略图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A bold Japanese YouTube thumbnail about the AI competition era, 16:9 widescreen, high contrast, dramatic tech-news style. Use a dark futuristic control-room background filled with 3 glowing holographic dashboard screens and blue cyber interface elements around the edges. On the left and center, place a luminous circular hub labeled “AI” in bright blue, with 3 directional glowing energy arrows branching outward to competing platforms: “Google” on the left in a blue electric region, “Claude” on the upper right in a gold electric region, and “OpenAI” at the bottom center in a magenta-purple electric region. Add a subtle world-map or territory-battle visualization effect under each brand region, like illuminated digital land masses or influence zones. On the right side, show a young Japanese-looking woman from waist up, facing forward, wearing a long straight split-color wig with pastel pink on one side and pastel blue on the other, a plain white T-shirt with the printed text “OKIHIRO AI Creative”, and a light pink skirt. She raises one index finger beside her face in a presenter pose. Her face is fully obscured by a large soft-edged rectangular blur block. Across the top, add huge distressed white Japanese headline text: {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;AI戦国時代&amp;#34;}. Beneath it, add a second line in bold gold Japanese text: {argument name=&amp;#34;subheadline text&amp;#34; default=&amp;#34;性能だけの話じゃない&amp;#34;}. Across the bottom, place a wide black banner with massive bold gold Japanese text: {argument name=&amp;#34;bottom text&amp;#34; default=&amp;#34;空気を取った側が勝つ&amp;#34;}. Make the typography oversized, gritty, and attention-grabbing, with slight glow and drop shadow. Use a color palette of black, electric blue, gold, magenta, and neon white, with intense contrast and thumbnail readability.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;东京-disneysea-前排战斗-ui&#34;&gt;东京 DisneySea 前排战斗 UI
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mikko_20100518/status/2047514897404354598&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mikko_20100518&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mikko_20100518&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/046.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/046_hu_b2c64723a1135d80.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/046_hu_445e6e63a044c7d2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;东京 DisneySea 前排战斗 UI&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a hyper-detailed comedic Japanese arcade fighting game screenshot styled like a versus battle scene, using a real-world photo aesthetic with game UI overlaid on top. The scene shows an intense mock battle between two groups of theme-park fans competing for the front row at an outdoor show plaza in Tokyo DisneySea. Use a wide 16:9 composition. In the background, clearly show Mediterranean Harbor and Mount Prometheus under bright daytime skies, with the waterfront and DisneySea architecture visible. In the foreground, show exactly 10 young adult people in winter casual clothing, split into 2 opposing teams of 5, physically leaning, grabbing, reaching, and shoving in a tug-of-war-like scrum over position, with exaggerated competitive body language and frozen action as if in a fighting game. Faces should be anonymized with soft blurred blocks. Add floating character labels above each person with levels and names in Japanese. The overall tone is absurdly realistic, like a real candid photo transformed into a polished arcade game battle screen.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add a full Japanese fighting-game HUD with glossy blue-versus-red interface styling. At the very top, place a center stage title bar reading &amp;#34;東京ディズニーシー ミッキー広場 ショー最前列バトル&amp;#34; and a large timer in the middle reading &amp;#34;TIME 89&amp;#34;. In the top left, add a blue team header &amp;#34;PLAYER1&amp;#34; and team name &amp;#34;最前列ガチ勢A&amp;#34;. In the top right, add a red team header &amp;#34;RIVAL&amp;#34; and team name &amp;#34;ライバルグループB&amp;#34;. On the left side, stack exactly 5 blue player status panels with portraits, level, Japanese class-like nicknames, HP, SP, and BURST meters. The 5 left-side labels are: &amp;#34;Lv.25 ガチ勢リーダー ユウキ&amp;#34;, &amp;#34;Lv.24 筋肉マン タケシ&amp;#34;, &amp;#34;Lv.23 眼鏡オタク シンジ&amp;#34;, &amp;#34;Lv.23 開角心MAX ケント&amp;#34;, &amp;#34;Lv.22 サポート要員 リョウ&amp;#34;. On the right side, stack exactly 5 red rival status panels with the labels: &amp;#34;Lv.27 ライバルリーダー ダイキ&amp;#34;, &amp;#34;Lv.26 パワフル代表 マサル&amp;#34;, &amp;#34;Lv.24 戦略家 コウジ&amp;#34;, &amp;#34;Lv.23 熱血漢 リク&amp;#34;, &amp;#34;Lv.22 サポート女子 サキ&amp;#34;. Each panel should include numeric HP and SP values and segmented BURST gauges, styled like a Japanese arcade RPG-fighter interface.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Place exactly 10 in-battle nameplates above the fighters in the center scene, color-coded blue for the left team and red for the right team. The 10 labels are: &amp;#34;Lv.24 タケシ&amp;#34;, &amp;#34;Lv.25 ユウキ&amp;#34;, &amp;#34;Lv.23 シンジ&amp;#34;, &amp;#34;Lv.23 ケント&amp;#34;, &amp;#34;Lv.22 リョウ&amp;#34;, &amp;#34;Lv.27 ダイキ&amp;#34;, &amp;#34;Lv.26 マサル&amp;#34;, &amp;#34;Lv.23 リク&amp;#34;, &amp;#34;Lv.22 サキ&amp;#34;, &amp;#34;Lv.22 ミサキ&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;At the lower left, add a skill menu titled &amp;#34;スキル&amp;#34; listing exactly 5 skills with SP costs: &amp;#34;ダッシュ突撃 SP 20&amp;#34;, &amp;#34;肩押し強奪 SP 25&amp;#34;, &amp;#34;荷物で場所確保 SP 15&amp;#34;, &amp;#34;ロープくぐり SP 10&amp;#34;, &amp;#34;本気の根性 SP 50&amp;#34;. Beneath that, add a dark description box explaining the highlighted skill &amp;#34;本気の根性&amp;#34; with the Japanese text: &amp;#34;気合で相手を威圧し、どかす! 一定時間、相手が怯みやすくなる! (バーストゲージを大きく消費する) 効果時間:10秒&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;At the bottom center, add an item menu titled &amp;#34;アイテム&amp;#34; with exactly 5 item slots showing icons and counts: a water bottle &amp;#34;x3&amp;#34;, a folded purple towel &amp;#34;x2&amp;#34;, a blue drawstring bag &amp;#34;x1&amp;#34;, a gray backpack &amp;#34;x1&amp;#34;, and a boxed meal &amp;#34;x2&amp;#34;. At the lower right, add a quest panel titled &amp;#34;クエスト&amp;#34; with the mission text &amp;#34;ショー開始までに最前列を死守しろ!&amp;#34; and condition text &amp;#34;条件:ライバルグループを全員後ろに押し戻せ!&amp;#34; and countdown text &amp;#34;ショー開始まで:02:30&amp;#34;. Beside it, add a mini-map titled &amp;#34;ミッキー広場MAP&amp;#34; showing red and blue dots for both teams in the plaza. Along the very bottom edge, include small controller prompts in Japanese for actions such as skill use, item use, grab/push, and dash.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use dramatic, saturated lighting, crisp detail, realistic clothing folds, authentic plaza stone pavement, and a high-end Japanese game screenshot look. The image should feel like a ridiculous but believable crossover between a real Tokyo DisneySea crowd photo and a competitive arcade battle game interface.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;宫崎骏风短片流程&#34;&gt;宫崎骏风短片流程
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/happycapyai/status/2049468986828697940&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/happycapyai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@happycapyai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/047.webp&#34;
	width=&#34;832&#34;
	height=&#34;709&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/047_hu_c16f4cb372376a6f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/047_hu_b83a8c81f3c6afa3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;宫崎骏风短片流程&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;117&#34;
		data-flex-basis=&#34;281px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Given a story concept, generate a complete Miyazaki-style animated short film: write a 30-shot script → generate watercolor storyboard images (gpt-image-1) → plan SOFT/HARD transitions → produce video clips with Seedance 2.0 using first/last-frame binding → synthesize the original ambient piano score → stitch everything into a final MP4 with music.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/comparison.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分类文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：广告创意案例</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/</guid>
        <description>&lt;p&gt;本页收录 &lt;code&gt;广告创意&lt;/code&gt; 分类下的 19 个案例。每个条目保留原案例链接、作者、生成图和完整提示词。&lt;/p&gt;
&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;广告创意&#34;&gt;广告创意
&lt;/h2&gt;&lt;h3 id=&#34;四宫格日式数字广告横幅&#34;&gt;四宫格日式数字广告横幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/makaneko_AI/status/2045764016858087720&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/makaneko_AI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@makaneko_AI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/000.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/000_hu_b4b22c98e45c267c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/000_hu_b3b79859672a67c1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;四宫格日式数字广告横幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;96
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;2x2 grid of Japanese digital advertisement banners&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;structure&amp;#34;: &amp;#34;4 equal quadrants&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;quadrants&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top-left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Travel&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;A couple holding hands on a white sand beach, looking out at turquoise ocean water under a bright blue sky.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;red hibiscus flower in bottom left corner&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;今年こそ、解き放て。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;travel destination\&amp;#34; default=\&amp;#34;沖縄旅行\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;3日間の癒やし旅&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;航空券+ホテル&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;39,800円〜&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;絶景、グルメ、体験 ぜんぶ叶う!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;icons&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;descriptions&amp;#34;: [&amp;#34;airplane&amp;#34;, &amp;#34;hotel building&amp;#34;, &amp;#34;car&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top-right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Skincare&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;Close-up portrait of a young woman with glowing, dewy skin, eyes closed, gently touching her cheeks.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;soft pink gradient background&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;dynamic water splash effects&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;pink cosmetic jar labeled &amp;#39;{argument name=\&amp;#34;skincare product name\&amp;#34; default=\&amp;#34;LUMIÈRE\&amp;#34;} Brightening Gel&amp;#39;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;毛穴・くすみ卒業!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;透明感あふれる&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;水光肌へ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;新感覚スキンケア&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;初回限定 78%OFF&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;discount price\&amp;#34; default=\&amp;#34;1,980円\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;badges&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;style&amp;#34;: &amp;#34;gold circular&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;毛穴ケア&amp;#34;, &amp;#34;高保湿&amp;#34;, &amp;#34;ハリ・ツヤ&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom-left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Gourmet Food&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;Thick, sliced, medium-rare steak sizzling on a dark grill plate.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;garlic chips&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;rosemary sprig&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;dark background with smoke and glowing embers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;とろける旨さ!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;food item\&amp;#34; default=\&amp;#34;黒毛和牛\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;贅沢ステーキ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;期間限定&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;特別価格&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;通常価格 8,980円&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;4,980円&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;badges&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;style&amp;#34;: &amp;#34;red circular&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;A4 A5等級&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom-right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Online Education&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;Young man in a blue shirt studying at a desk, writing in a notebook next to an open laptop.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;bright indoor lighting&amp;#34;, &amp;#34;desk environment&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;スキマ時間で&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;education goal\&amp;#34; default=\&amp;#34;最短合格!\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;オンライン資格講座&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;スマホで完結&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;効率学習で差がつく!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;今だけ! 受講料 20%OFF&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;badges&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;style&amp;#34;: &amp;#34;blue circular&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;受講者数 10万人 突破!&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;icons&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;descriptions&amp;#34;: [&amp;#34;smartphone&amp;#34;, &amp;#34;open book&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫角色品牌识别与周边展示板&#34;&gt;动漫角色品牌识别与周边展示板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chi_vc_/status/2046061073720369228&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/chi_vc_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chi_vc_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/001_hu_6a8012585d54d59a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/001_hu_e92905938aad48d5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫角色品牌识别与周边展示板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;brand identity and merchandise design board&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;theme&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;color_palette&amp;#34;: &amp;#34;{argument name=\&amp;#34;theme color\&amp;#34; default=\&amp;#34;pastel pink\&amp;#34;} and white&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;motif&amp;#34;: &amp;#34;{argument name=\&amp;#34;motif\&amp;#34; default=\&amp;#34;cherry blossoms\&amp;#34;} and pink hearts&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;character&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;description&amp;#34;: &amp;#34;anime girl with short brown bob hair, pink eyes, wearing a white hoodie, gentle smile&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;branding&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;main_logo&amp;#34;: &amp;#34;{argument name=\&amp;#34;character name\&amp;#34; default=\&amp;#34;癒音ちー\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sub_logo&amp;#34;: &amp;#34;{argument name=\&amp;#34;character subtext\&amp;#34; default=\&amp;#34;ゆおんちー\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;header banner&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;large main logo&amp;#34;, &amp;#34;sub logo&amp;#34;, &amp;#34;cherry blossom graphics&amp;#34;, &amp;#34;character portrait on the right&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;product packaging&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;middle left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;1 square box with heart-shaped transparent window showing pink heart candies&amp;#34;, &amp;#34;character illustration on box&amp;#34;, &amp;#34;2 individual candy wrappers&amp;#34;, &amp;#34;5 scattered heart candies&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;promotional poster&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;middle right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;character portrait&amp;#34;, &amp;#34;heart-shaped candy bowl&amp;#34;, &amp;#34;main logo&amp;#34;, &amp;#34;text &amp;#39;4.26 NEW OPEN&amp;#39;&amp;#34;, &amp;#34;text &amp;#39;{argument name=\&amp;#34;social handle\&amp;#34; default=\&amp;#34;@yuonchii\&amp;#34;}&amp;#39;&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;horizontal web banner&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;lower middle&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;main logo&amp;#34;, &amp;#34;cherry blossoms&amp;#34;, &amp;#34;character portrait on the right&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;social media profile mockup&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;header image with logo&amp;#34;, &amp;#34;1 circular profile picture&amp;#34;, &amp;#34;handle &amp;#39;{argument name=\&amp;#34;social handle\&amp;#34; default=\&amp;#34;@yuonchii\&amp;#34;}&amp;#39;&amp;#34;, &amp;#34;1 follow button&amp;#34;, &amp;#34;mock bio text&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;merchandise collection&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 9,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;items&amp;#34;: [&amp;#34;1 white t-shirt with logo&amp;#34;, &amp;#34;1 white mug with character&amp;#34;, &amp;#34;4 round pin badges&amp;#34;, &amp;#34;1 acrylic keychain&amp;#34;, &amp;#34;2 candy packets&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;深色模式营销案例-ui&#34;&gt;深色模式营销案例 UI
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/IndieDevHailey/status/2044974254769463312&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/IndieDevHailey&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@IndieDevHailey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/002.webp&#34;
	width=&#34;569&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/002_hu_7b2c77f5b4960ac5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/002_hu_6146746c8fe8f5d5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;深色模式营销案例 UI&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;47&#34;
		data-flex-basis=&#34;113px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;UI/UX landing page mockup&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;theme&amp;#34;: &amp;#34;dark mode, sleek modern aesthetic, glassmorphism, {argument name=\&amp;#34;primary accent color\&amp;#34; default=\&amp;#34;neon purple and blue\&amp;#34;} glowing accents&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;header&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;logo&amp;#34;: &amp;#34;{argument name=\&amp;#34;brand name\&amp;#34; default=\&amp;#34;goViralX\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;top_right_tag&amp;#34;: &amp;#34;VIRAL CAMPAIGN CASE STUDY&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Hero&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;headline&amp;#34;: &amp;#34;{argument name=\&amp;#34;hero headline\&amp;#34; default=\&amp;#34;How We Created 10M+ Viral Impact\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subheadline&amp;#34;: &amp;#34;3天引爆全网, 助力品牌实现指数级增长&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;stats_row&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 4,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;总播放量&amp;#34;, &amp;#34;互动率&amp;#34;, &amp;#34;转化咨询&amp;#34;, &amp;#34;执行周期&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;values&amp;#34;: [&amp;#34;{argument name=\&amp;#34;main statistic\&amp;#34; default=\&amp;#34;10,240,000+\&amp;#34;}&amp;#34;, &amp;#34;18.7%&amp;#34;, &amp;#34;3,200+&amp;#34;, &amp;#34;72小时&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;visual&amp;#34;: &amp;#34;cinematic shot of a person in a hoodie looking at glowing digital screens and graphs, large play button overlay&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Strategy&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;Our 3-Day Execution Strategy&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;layout_type&amp;#34;: &amp;#34;vertical timeline&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;steps_count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements_per_step&amp;#34;: [&amp;#34;timeline node&amp;#34;, &amp;#34;title&amp;#34;, &amp;#34;bullet points&amp;#34;, &amp;#34;video thumbnail with play button&amp;#34;, &amp;#34;description box&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;Data-Driven Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;left_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;stat_cards_count&amp;#34;: 4,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;values&amp;#34;: [&amp;#34;10M+&amp;#34;, &amp;#34;43%&amp;#34;, &amp;#34;28,000+&amp;#34;, &amp;#34;3,200+&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;right_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;charts_count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;chart_1&amp;#34;: &amp;#34;line graph showing 7-day growth peaking at Day 3&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;chart_2&amp;#34;: &amp;#34;horizontal segmented bar chart showing platform distribution (TikTok 52%, Instagram 24%, X 15%, YouTube 9%)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Keys to Success&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;The 3 Keys to Viral Success&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;cards_count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;card_elements&amp;#34;: [&amp;#34;glowing icon (fire, target, antenna)&amp;#34;, &amp;#34;title&amp;#34;, &amp;#34;description&amp;#34;, &amp;#34;VIEW DETAIL link&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Social Proof&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;TRUSTED BY CREATORS &amp;amp; BRANDS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;left_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;logos_count&amp;#34;: 8,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;grid&amp;#34;: &amp;#34;2x4&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;brands&amp;#34;: [&amp;#34;SHEIN&amp;#34;, &amp;#34;SHOPLINE&amp;#34;, &amp;#34;Blueglass&amp;#34;, &amp;#34;instacart&amp;#34;, &amp;#34;lemon8&amp;#34;, &amp;#34;mi&amp;#34;, &amp;#34;CIDER&amp;#34;, &amp;#34;bellroy&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;right_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;testimonial_cards_count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;elements&amp;#34;: [&amp;#34;quote&amp;#34;, &amp;#34;author title (SaaS Founder, Growth Manager)&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Call to Action&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;READY TO GO VIRAL?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;interactive_elements&amp;#34;: [&amp;#34;text input field&amp;#34;, &amp;#34;glowing button with text &amp;#39;{argument name=\&amp;#34;call to action text\&amp;#34; default=\&amp;#34;获取专属增长方案 -&amp;gt;\&amp;#34;}&amp;#39;&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;visual&amp;#34;: &amp;#34;3D render of a rocket ship taking off with purple and blue flames&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;18-页吉祥物品牌识别文档&#34;&gt;18 页吉祥物品牌识别文档
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Colin_Leeee/status/2044802802149650631&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Colin_Leeee&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Colin_Leeee&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/003.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/003_hu_38654e96cad54ea8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/003_hu_b4c26ee66844dace.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;18 页吉祥物品牌识别文档&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;18-panel brand identity and character design document&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;brand&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;name&amp;#34;: &amp;#34;{argument name=\&amp;#34;brand name\&amp;#34; default=\&amp;#34;沐阳 MUYANG TEA\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;industry&amp;#34;: &amp;#34;{argument name=\&amp;#34;industry\&amp;#34; default=\&amp;#34;tea shop\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;colors&amp;#34;: [&amp;#34;{argument name=\&amp;#34;primary color\&amp;#34; default=\&amp;#34;yellow\&amp;#34;}&amp;#34;, &amp;#34;{argument name=\&amp;#34;secondary color\&amp;#34; default=\&amp;#34;green\&amp;#34;}&amp;#34;, &amp;#34;white&amp;#34;, &amp;#34;brown&amp;#34;, &amp;#34;dark green&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: &amp;#34;{argument name=\&amp;#34;character description\&amp;#34; default=\&amp;#34;3D rendered cute Shiba Inu mascot wearing a green apron\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;grid&amp;#34;: &amp;#34;3 columns by 6 rows&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;01 品牌DNA分析 / BRAND DNA ANALYSIS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;logo&amp;#34;, &amp;#34;5 color swatches&amp;#34;, &amp;#34;6 icons&amp;#34;, &amp;#34;target audience charts&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;02 概念构思 / CONCEPT MOODBOARD&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 photo references&amp;#34;, &amp;#34;4 mood icons&amp;#34;, &amp;#34;design equation&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;03 形态研究 / FORM STUDY&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;4 logo anatomy icons&amp;#34;, &amp;#34;4 evolution steps&amp;#34;, &amp;#34;4 silhouettes&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;04 概念探索 / CONCEPT EXPLORATION&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;12 line-art character sketches&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;05 精细线稿 / REFINED LINE ART&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;3 rows of front and side line art with proportion guides&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;06 细节精修 / DETAIL REFINEMENT&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;2 full-body renders with labels&amp;#34;, &amp;#34;4 circular close-ups&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;07 表情设定 / EXPRESSION SHEET&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;11 3D rendered head expressions&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;08 姿势库 / POSE LIBRARY&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;9 full-body 3D rendered poses&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;09 转身视图 / TURNAROUND VIEW&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 full-body 3D renders&amp;#34;, &amp;#34;5 matching line-art views&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;10 色彩开发 / COLOR DEVELOPMENT&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 rows of 5-color palettes&amp;#34;, &amp;#34;color psychology text&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;11 材质规格 / MATERIAL SPECIFICATION&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 texture swatches&amp;#34;, &amp;#34;property sliders&amp;#34;, &amp;#34;4 manufacturing icons&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;12 色彩应用 / COLOR APPLICATION&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;4 color variant renders&amp;#34;, &amp;#34;2 light/dark renders&amp;#34;, &amp;#34;4 contrast rating circles&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;13 构造指南 / CONSTRUCTION GUIDE&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;2 line-art diagrams for geometry and grid&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;14 设计系统规则 / DESIGN SYSTEM RULES&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;minimum size icons&amp;#34;, &amp;#34;clear space diagram&amp;#34;, &amp;#34;4 usage examples&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;15 资产变体 / ASSET VARIANTS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;3 size variants&amp;#34;, &amp;#34;3 line-art variants&amp;#34;, &amp;#34;3 simplified flat heads&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;16 数字应用 / DIGITAL APPLICATIONS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;1 app icon&amp;#34;, &amp;#34;2 social avatars&amp;#34;, &amp;#34;UI elements&amp;#34;, &amp;#34;3-step animation cycle&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;17 实物应用 / PHYSICAL APPLICATIONS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;plush toy mockup&amp;#34;, &amp;#34;packaging mockup&amp;#34;, &amp;#34;merchandise mockup&amp;#34;, &amp;#34;storefront mockup&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;18 最终主视觉 / FINAL RENDERING&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;large high-res 3D render of mascot holding tea&amp;#34;, &amp;#34;logo&amp;#34;, &amp;#34;file format list&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式中餐外卖传单&#34;&gt;日式中餐外卖传单
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/xc5_/status/2048310696686014935&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/xc5_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@xc5_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/004.webp&#34;
	width=&#34;896&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/004_hu_1975f05f33c39ac1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/004_hu_52b41b2a6d938981.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式中餐外卖传单&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A Japanese neighborhood Chinese restaurant delivery flyer for mailbox posting (3:4 aspect ratio). Designed to look like a double-sided B5 print.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Flyer characteristics (following the grammar of real delivery flyers):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Flashy red and yellow color scheme.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Large text at the top: &amp;#34;Delivery Available! {argument name=&amp;#34;shop name&amp;#34; default=&amp;#34;Mona-Hanten&amp;#34;}&amp;#34; (shadowed Gothic font).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- An illustration of a {argument name=&amp;#34;character&amp;#34; default=&amp;#34;Chinese girl in a red cheongsam with a brown short bob&amp;#34;} holding ramen and saying &amp;#34;Welcome!&amp;#34; in a speech bubble.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A menu photo grid (4x3) featuring various dishes: different types of ramen, fried rice, gyoza, sweet and sour pork, shrimp in chili sauce, mapo tofu, liver and leek stir-fry, tenshinhan, twice-cooked pork, spring rolls, annin tofu, and fried rice sets.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Names and prices for each dish.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A large yellow banner saying &amp;#34;Free delivery on all menu items over ¥1,000!&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &amp;#34;Order by phone! ☎ 072-XX-XXXX&amp;#34; emphasized with a red circle.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Business hours &amp;#34;11:00-22:00 (Closed on Tuesdays)&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Delivery area map (simple schematic map).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Coupon (perforated line for clipping): &amp;#34;One free plate of gyoza with this flyer!&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Texture of cheap paper printing. Includes fold marks. Precision that could be mistaken for a real Japanese delivery flyer.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉彩水母房间商品海报&#34;&gt;粉彩水母房间商品海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ayu_AI_0912/status/2048309565817766139&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ayu_AI_0912&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ayu_AI_0912&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/005.webp&#34;
	width=&#34;898&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/005_hu_f904a82df3a72a81.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/005_hu_b36028bbd48c5f54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉彩水母房间商品海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pastel lifestyle poster / character room-goods feature sheet&amp;#34;,&amp;#34;theme&amp;#34;:&amp;#34;soft dreamy lavender jellyfish aesthetic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;Japanese cute editorial graphic, airy white background, pastel lilac palette, delicate handwritten notes, sparkles and tiny doodles, soft product photography mixed with magazine layout&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;character&amp;#34;:{&amp;#34;name&amp;#34;:&amp;#34;{argument name=\&amp;#34;character name\&amp;#34; default=\&amp;#34;くらげちゃん\&amp;#34;}&amp;#34;,&amp;#34;appearance&amp;#34;:&amp;#34;young woman with a short platinum-blonde bob haircut, wearing a fluffy pale-lavender zip hoodie over a white inner top, shown from chest up on the lower right, face intentionally obscured with a plain beige rectangle&amp;#34;}},&amp;#34;layout&amp;#34;:{&amp;#34;orientation&amp;#34;:&amp;#34;vertical poster&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;clean white with faint pastel doodles of stars, bubbles, tiny jellyfish, and musical notes&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;header&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;speech bubble intro&amp;#34;,&amp;#34;main title&amp;#34;,&amp;#34;small subtitle GOODS&amp;#34;,&amp;#34;horizontal lavender ribbon tagline&amp;#34;,&amp;#34;round badge on the top right&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;featured goods grid&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper and middle left&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;ゆらゆらくらげランプ&amp;#34;,&amp;#34;くらげと夢見るベッドリネン&amp;#34;,&amp;#34;くらげシェルミラー&amp;#34;,&amp;#34;くらげグラデマグ&amp;#34;,&amp;#34;くらげのときめき収納ボックス&amp;#34;,&amp;#34;くらげふわもこマット&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;side handwritten note&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper right&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;みんなも くらげちゃんRoomで いっしょに まったりしよー♡♡&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;room concept box&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;くらげちゃんの お部屋作りのこだわり&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;pick up circle&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower center-left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;Pick up!&amp;#34;]}],&amp;#34;product_images&amp;#34;:{&amp;#34;count&amp;#34;:6,&amp;#34;items&amp;#34;:[{&amp;#34;name&amp;#34;:&amp;#34;ゆらゆらくらげランプ&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small translucent jellyfish-shaped lamp on a white base, glowing softly in pale blue-lavender&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげと夢見るベッドリネン&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;plush pastel-lavender bed with fluffy comforter and pillows, dreamy cozy bedroom styling&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげシェルミラー&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small tabletop mirror with a puffy shell-like pastel-lilac frame and rounded base&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげグラデマグ&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;ceramic mug with lavender-to-pink gradient and a simple jellyfish illustration&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげのときめき収納ボックス&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;pastel storage box holding cosmetics and small bottles, decorated with a jellyfish emblem&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげふわもこマット&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small fluffy cloud-like or jellyfish-like mat in pale lavender and white&amp;#34;}]},&amp;#34;text_elements&amp;#34;:{&amp;#34;main_title&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;くらげちゃんの お部屋アイテム\&amp;#34;}&amp;#34;,&amp;#34;badge_text&amp;#34;:&amp;#34;くらげちゃんの Room お部屋作りの こだわりポイントも 教えちゃうよ。&amp;#34;,&amp;#34;tagline&amp;#34;:&amp;#34;ふわふわで甘くて、ちょっぴり夢みたいな私のお部屋へようこそ♡&amp;#34;,&amp;#34;speech_bubble&amp;#34;:&amp;#34;くらげちゃんの お気に入りだけ集めた お部屋アイテムを紹介するよ♪&amp;#34;,&amp;#34;concept_points&amp;#34;:{&amp;#34;count&amp;#34;:3,&amp;#34;items&amp;#34;:[&amp;#34;色は白とラベンダーで統一!&amp;#34;,&amp;#34;光が集まるふわっとした空間に&amp;#34;,&amp;#34;お友達入りのアイテムに囲まれて 自分らしくいられる空間を大切にしてるよ♪&amp;#34;]},&amp;#34;product_blurbs&amp;#34;:&amp;#34;each product has a short handwritten Japanese description in a cute casual font beside or below the image&amp;#34;},&amp;#34;composition&amp;#34;:&amp;#34;the poster is left-heavy with product cards and text, while the character portrait occupies the lower right third, slightly overlapping the layout&amp;#34;,&amp;#34;color_palette&amp;#34;:{&amp;#34;count&amp;#34;:5,&amp;#34;colors&amp;#34;:[&amp;#34;white&amp;#34;,&amp;#34;pastel lavender&amp;#34;,&amp;#34;soft lilac&amp;#34;,&amp;#34;pale gray-violet&amp;#34;,&amp;#34;touches of pastel blue-pink gradient&amp;#34;]},&amp;#34;rendering_notes&amp;#34;:&amp;#34;keep everything very soft, feminine, and cozy; rounded corners on all product photos; mix of bold Japanese headline typography and light handwritten annotations; subtle shadows; clean high-key lighting; social-media-ready editorial collage aesthetic&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;魔法种子包装微缩场景&#34;&gt;魔法种子包装微缩场景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AllaAisling/status/2048156345518768190&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AllaAisling&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AllaAisling&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/006.webp&#34;
	width=&#34;1200&#34;
	height=&#34;801&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/006_hu_444babc81c045359.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/006_hu_b9411ae15ce3b04.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;魔法种子包装微缩场景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;149&#34;
		data-flex-basis=&#34;359px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Epic 3D scene: a weathered seed packet lying open on a potting bench, its promise erupting into the garden it describes. The illustration on the front becomes real. {argument name=&amp;#34;plant type&amp;#34; default=&amp;#34;[PLANT / FLOWER]&amp;#34;} growing at full scale from the paper, roots visible through the packet&amp;#39;s base pushing into soil below.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;detail left&amp;#34; default=&amp;#34;[DETAIL 1]&amp;#34;} in full bloom at one corner. {argument name=&amp;#34;detail right&amp;#34; default=&amp;#34;[DETAIL 2]&amp;#34;} mid-growth at the other, not yet what it will be.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Tiny insects that belong to this plant, {argument name=&amp;#34;insect type&amp;#34; default=&amp;#34;[BEE / BUTTERFLY / BEETLE]&amp;#34;}, hovering at correct scale.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The written instructions on the back become garden calendar, &amp;#34;sow in spring&amp;#34; manifests as actual spring light. &amp;#34;full sun&amp;#34; manifests as a single shaft of it, hitting the tallest bloom perfectly.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Scattered seeds between packet and soil each showing their germination stage, split coat, first root, first shoot, first leaf.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The packet&amp;#39;s torn top edge becomes a treeline.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Potting bench surface with soil scatter and water droplets.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Tilt-shift depth of field, greenhouse morning light, the packet as the garden it always intended.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢华计时腕表广告&#34;&gt;奢华计时腕表广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca/status/2048147643809865950&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AlwaveNazca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/007_hu_53f7b8075433d847.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/007_hu_6b013650585f2bb7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢华计时腕表广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic luxury product advertising image for a motorsport-inspired chronograph wristwatch in a dark studio. Center-left foreground, show a single stainless steel chronograph watch standing upright at a slight three-quarter angle, with a black dial, two red-accent subdials, slim silver hour markers, a tachymeter bezel, and visible crown and pushers on the right side. The watch has a black leather strap with bold red stitching along both edges and a sporty premium finish. To the right of the watch, place one black square presentation box slightly behind it, textured like leather, with red stitching around the lid and a silver embossed eye-shaped logo above the text “NESS STUDIO” and smaller red text “TRACK SURFACE.” At the top center of the composition, add the same silver eye logo with the words “NESS STUDIO” and smaller “BY NICOLAS.” Across the background, place one oversized blurred word, {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;PRECISION&amp;#34;}, in large gray capital letters spanning nearly the full width. The scene is set against a deep black background with cinematic red and white horizontal light streaks crossing behind the products from left to right, suggesting speed and racetrack energy. Use a glossy wet ground plane with reflective texture, catching red highlights and mirrorlike reflections beneath the watch and box. At the bottom center, add the text “CHRONOGRAPH SERIES” in clean white spaced capitals with thin red horizontal lines extending on both sides, and below it smaller red capitals reading {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;ALSACE MADE&amp;#34;}. Color palette: black, charcoal gray, silver steel, vivid racing red, and a touch of white. Lighting should be high-contrast and premium, with crisp specular highlights on the metal case, subtle soft fill on the box, and moody shadows. Overall style: ultra-polished commercial product photography, luxury watch campaign, sharp focus on the products, sleek branding, high-end automotive aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;霓虹-nike-lumina-广告海报&#34;&gt;霓虹 Nike Lumina 广告海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca/status/2048147643809865950&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AlwaveNazca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/008.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/008_hu_3e7d872b50e43c6a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/008_hu_2465c5288bde964a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;霓虹 Nike Lumina 广告海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-energy vertical Nike fashion campaign poster featuring a single athletic young woman mid-jump against a futuristic neon studio background. She is captured in a dynamic airborne pose with one knee bent up, the other leg folded back, one arm extended outward and the other bent near her chest, conveying motion and power. Her face is obscured by a clean rectangular blur block centered over the face. She wears a cropped iridescent white hooded windbreaker with a black zipper and small Nike logo on the chest, holographic metallic lavender-blue leggings with a subtle Nike swoosh on the thigh, a black branded waistband visible above the leggings, and white chunky Nike sneakers. Her brown hair is tied in a high ponytail flying outward with the jump. Behind her, enormous glowing white serif letters spell “NIKE” across the upper half, with a small white Nike swoosh centered above the word. Across the middle background, the phrase “LUMINA” appears once in wide bold glowing letters with a horizontal glitch and scanline distortion effect, partially obscured by the model. The color palette is saturated magenta, violet, cyan, and electric blue with strong bloom, glossy highlights, lens flares, and chromatic aberration. Add sweeping circular light trails wrapping around the model’s legs and body, suggesting speed and motion. The overall style is premium sportswear advertising, ultra-polished, cinematic, high contrast, hyperreal retouching, crisp product detail, dramatic rim lighting, and a luminous holographic aesthetic. Place 2 small text lines at the bottom: bottom left reads {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;LIGHT. MOTION. ENERGY.&amp;#34;}, bottom right reads {argument name=&amp;#34;collection name&amp;#34; default=&amp;#34;NIKE LUMINA COLLECTION&amp;#34;} followed by a small Nike swoosh. Include exactly 3 visible Nike swooshes total: 1 above the large NIKE headline, 1 on the jacket chest, and 1 on the leggings.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;街头潮鞋广告海报&#34;&gt;街头潮鞋广告海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca/status/2048147643809865950&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AlwaveNazca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/009.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/009_hu_b072e862c874c197.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/009_hu_f2d16261ff61d346.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;街头潮鞋广告海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a bold streetwear poster advertisement for {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;} featuring a young adult model seated casually on the ground in a low-angle fashion pose, one knee raised and one leg extended toward the camera so the sneaker in front appears oversized and dominant. The model wears a dark brown oversized leather bomber jacket, a black shirt, light blue loose-fit jeans, white socks, and chunky black-white-gray sneakers with a red accent in the sole and the {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;} logo visible on the shoe side and tongue. The face is intentionally obscured by a soft rectangular blur block centered over the face. Use an off-white textured paper background with distressed grunge design elements and collage layering. Behind the model, place a large rough red paint brushstroke shape spanning diagonally across the center. Add black ink splatters, sketch circles, torn paper scraps, and hand-painted graffiti accents. Include 4 major graphic doodles: a large black X in the upper right, a hand-drawn upward arrow in the lower left, a rough crown sketch in the lower right, and a circular scribble near the top center. In the upper left, place a stylized eye logo above the text &amp;#34;{argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;}&amp;#34; and a smaller tagline below reading &amp;#34;A MOMENT OF YOUR STYLE&amp;#34;. On the left middle area, add the handwritten slogan &amp;#34;INNOVATE CREATE INSPIRE&amp;#34; in stacked black brush lettering. On the right middle area, place a torn black paper patch with the handwritten white slogan &amp;#34;BUILT DIFFERENT MOVE DIFFERENT&amp;#34; and a red underline stroke. In the lower left near the shoe, add a black distressed label sticker containing a globe scribble, the text &amp;#34;{argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;}&amp;#34;, and a barcode. Along the bottom footer, create a clean horizontal strip with 3 social media icons and handles separated by thin vertical dividers: Instagram, Facebook, and Twitter, each followed by &amp;#34;@NESS.STUDIO&amp;#34;. The overall style should be edgy, urban, youthful, high-contrast, editorial street fashion, mixing product advertising photography with graffiti poster design, collage textures, and dynamic branding.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;编辑风-osaka-six-卫衣广告&#34;&gt;编辑风 Osaka Six 卫衣广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/_LaurentB/status/2048126606313464040&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/_LaurentB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@_LaurentB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/010.webp&#34;
	width=&#34;675&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/010_hu_7de8847fc2baaabb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/010_hu_78efa95ff3f40433.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;编辑风 Osaka Six 卫衣广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A clean editorial fashion advertisement poster on a pale powder-blue studio background with a glossy reflective floor. The composition is vertical and minimal, dominated by oversized bold white condensed sans-serif typography in the background reading “OSAKA SIX:” on the top line and “006 REMAINS” below, filling most of the upper half behind the subject. In the top right corner, small white branding text reads “Designed by ARTTEESHOW.” Centered in the lower middle is an oversized forest-green crewneck sweatshirt standing upright like a sculptural object, with soft heavy cotton fabric, dropped shoulders, extra-long sleeves pooled on the floor, and a small black neck label that reads ARTTEESHOW. On the chest of the sweatshirt is a large abstract collage print made from torn paper fragments in beige, tan, black, gray, white, and vivid red, arranged vertically like layered scraps. Leaning against the right side of the giant sweatshirt is a slim female fashion model with long straight black hair, wearing a matching {argument name=&amp;#34;sweatshirt color&amp;#34; default=&amp;#34;forest green&amp;#34;} sweatshirt and relaxed wide-leg sweatpants with clean white low-top sneakers. She is posed in profile with a calm detached editorial attitude, one hand in her pocket, her body reclining diagonally against the giant garment, legs extended forward; her face is obscured by a soft rectangular blur for an anonymous art-fashion look. The smaller worn sweatshirt has the same abstract torn-paper collage graphic centered on the chest. At the bottom center, add 2 lines of small white copy text: “Made for comfort, worn for confidence.” and “Because life feels better when someone’s carrying the weight of the world.” The image should feel like a premium conceptual streetwear campaign from the early 1990s reimagined as contemporary luxury advertising, with crisp studio lighting, soft shadows, subtle floor reflections, precise product focus, surreal scale contrast between the oversized sweatshirt and the model, and a polished magazine-poster aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;editorial-perfume-shot-on-moss&#34;&gt;Editorial Perfume Shot on Moss
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr/status/2048103506125463983&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Salmaaboukarr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/011.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/011_hu_58556ac875587cf0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/011_hu_37ab90329d9dc54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Editorial Perfume Shot on Moss&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end editorial product photograph of a single luxury perfume bottle centered in a warm earthy still-life scene. The product is a clear rectangular glass bottle filled with golden amber liquid, topped with a glossy rounded black cap, with a clean white front label that reads &amp;#34;BYREDO&amp;#34;, &amp;#34;BAL D’AFRIQUE&amp;#34;, and &amp;#34;EAU DE PARFUM&amp;#34;. Place the bottle upright on 1 curved piece of pale weathered driftwood, surrounded by a dense carpet of 1 layer of rich green moss covering the foreground and lower frame. Use a minimal studio composition with the product isolated against a smooth warm brown-to-amber gradient background, softly illuminated like sunset light. Light the scene with dramatic directional warm light from the upper right, creating a bright glow on the background, a crisp highlight on the cap, soft reflections in the glass, and gentle shadows across the wood and moss. Keep the framing vertical, the bottle centered slightly low in the composition with generous negative space above, and the overall mood natural, luxurious, earthy, cinematic, and polished like a premium fragrance campaign shot.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;金色皮草中的编辑风香水瓶&#34;&gt;金色皮草中的编辑风香水瓶
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr/status/2048103506125463983&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Salmaaboukarr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/012.webp&#34;
	width=&#34;420&#34;
	height=&#34;525&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/012_hu_73064ca43b4caaf4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/012_hu_9004ce57fc60b92a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;金色皮草中的编辑风香水瓶&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A luxurious editorial product photograph of a single perfume bottle nestled into dense, plush faux fur in rich golden caramel and honey-brown tones. Center the composition on one clear oval glass bottle filled with warm amber liquid, with a glossy rounded black cap and a clean white rectangular label. The label text should read {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;BYREDO&amp;#34;} at the top, {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;BAL D’AFRIQUE&amp;#34;} large in the middle, and {argument name=&amp;#34;product type&amp;#34; default=&amp;#34;EAU DE PARFUM&amp;#34;} in small text near the bottom. Shoot it as a close-up still life with soft studio lighting, subtle highlights on the glass and cap, gentle shadows in the folds of the fur, and a warm cinematic color palette. The bottle should sit slightly embedded in the fur so the surrounding texture frames it from all sides, creating a premium fashion editorial mood, minimal composition, shallow depth of field, crisp focus on the label, and a high-end beauty campaign aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢华-miniature-dubai-city-model&#34;&gt;奢华 Miniature Dubai City Model
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/silentempiredev/status/2048086378383384773&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/silentempiredev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@silentempiredev&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/013.webp&#34;
	width=&#34;1199&#34;
	height=&#34;685&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/013_hu_bd1831eec05090ea.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/013_hu_57037a0472ed195f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢华 Miniature Dubai City Model&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;175&#34;
		data-flex-basis=&#34;420px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-detailed cinematic isometric miniature city model of {argument name=&amp;#34;landmark tower&amp;#34; default=&amp;#34;Burj Khalifa&amp;#34;} rising dramatically from the center of a square architectural master-plan board, presented like a luxury urban planning maquette on a black background. The composition shows one dominant ultra-tall silver skyscraper in the exact center, surrounded by a dense ring of modern high-rise towers, illuminated roads, bridges, and glowing warm city lights. Curving turquoise-blue water features and artificial lakes wrap around the central district in multiple connected pools and canals, with one large circular fountain-like feature near the tower base and several small island shapes visible in the water. In the lower right quadrant, include a large low-rise complex with rounded geometric roofs and subtle green-lit sections, connected by multilane roads and looping interchanges. The entire city sits on one square beige map board engraved with faint street grids and planning lines, with the board edges clearly visible and slightly raised. Viewpoint is a high three-quarter isometric angle, centered and symmetrical, with the tower extending far upward into negative space. Lighting is dramatic and luxurious: warm golden edge lights on buildings and roads, cool reflections in the water, crisp metallic highlights on the central tower, and a deep black void surrounding the model. Style should feel like a photorealistic architectural visualization mixed with a premium collectible scale model, extremely intricate, sharp, polished, and elegant.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;戏仿奢侈品广告&#34;&gt;戏仿奢侈品广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/tonysimons_/status/2048057490940596595&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/tonysimons_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@tonysimons_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/014.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/014_hu_9f0c8e2d76f0f3a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/014_hu_580b634c7e74ca8c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;戏仿奢侈品广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact parody e-commerce infographic for “{argument name=&amp;#34;product&amp;#34; default=&amp;#34;Four Loko&amp;#34;}” malt beverage. Foreground: An extreme close-up of a rough, weathered hand holding a tall, brightly colored can of {argument name=&amp;#34;product&amp;#34; default=&amp;#34;Four Loko&amp;#34;} toward the camera. The can is slightly cold with visible condensation droplets and a loud, chaotic flavor design. The hand and can have a slight macro-lens blur for depth, with the can still reading clearly as the hero product. Central Subject: In the mid-ground, a funny, disheveled {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;homeless-looking man&amp;#34;} sitting casually on a milk crate in an urban alley. He has a scruffy beard, messy hair, layered worn clothing, and a huge unbothered grin. He should look chaotic but oddly charismatic, like the accidental king of bad decisions. He is posed like a confident lifestyle-ad model, proudly showing off the can. Background &amp;amp; Lighting: A ridiculously polished ad-style backdrop mixed with a grimy city alley setting. Soft-focus urban textures, dumpster shapes, graffiti hints, and scattered clutter in the distance. Add dramatic studio lighting, soft glow, rainbow prism flares, and subtle light leaks to make the whole thing look way too premium for the subject matter. A few blurred {argument name=&amp;#34;product&amp;#34; default=&amp;#34;Four Loko&amp;#34;} cans can float artistically in the background for extra absurdity. Typography &amp;amp; Layout (Bold sans-serif, white and neon accent styling): Top Center (Background): Massive, bold text reading “{argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;FOUR LOKO&amp;#34;}” positioned behind the subject. Top Right: Bold text reading “The Champagne of Bad Ideas”. Mid-Left: “Premium chaos and zero self-control” Mid-Right: Large, bold “23” with the text “ounces of terrible decisions.” Bottom-Right: Large, bold “1&amp;#34; with the text “can to ruin tomorrow.” Optional small callout text near the bottom: “Now with more regret.” Style: Ultra-detailed, 8k parody commercial photography, sharp focus on the can, shallow depth of field, vibrant trashy color palette, clean advertising composition, exaggerated premium product-ad aesthetic, funny visual contrast between polished branding and the wrecked subject.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;vr-headset-exploded-view-海报&#34;&gt;VR Headset Exploded View 海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/wory37303852/status/2045925660401795478&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/wory37303852&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@wory37303852&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/015.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/015_hu_e4202369328020d9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/015_hu_8571ff57bc5363a0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;VR Headset Exploded View 海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;exploded view product diagram poster&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: &amp;#34;VR headset&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;style&amp;#34;: &amp;#34;clean high-tech 3D render, studio lighting, glowing accents&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;background&amp;#34;: &amp;#34;{argument name=\&amp;#34;background color\&amp;#34; default=\&amp;#34;soft purple and blue gradient\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;header&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;logo&amp;#34;: &amp;#34;∞ {argument name=\&amp;#34;product name\&amp;#34; default=\&amp;#34;Meta Quest 3\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;subtitle&amp;#34;: &amp;#34;{argument name=\&amp;#34;main catchphrase\&amp;#34; default=\&amp;#34;まったく新しい現実を、まったく新しい構造から。\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;centerpiece&amp;#34;: &amp;#34;vertically stacked exploded view of a VR headset showing 9 distinct layers of internal components: outer shell, camera sensors, motherboard with chip, pancake lenses, internal frame, battery packs, side straps, top strap, and facial interface cushion.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;callout_labels&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;count&amp;#34;: 8,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;left_side&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Snapdragon® XR2 Gen 2\n圧倒的な処理性能でリアルタイムな体験を。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;調整可能なIPD機構\n幅広いユーザーに快適なフィット感を。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;精密設計されたヘッドストラップ\n快適さと安定性を追求したエルゴノミクス。&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;right_side&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;フェイスプレート\n洗練されたデザインと最適な重量バランス。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;トラッキングカメラ\n高精度な位置トラッキングと環境認識を実現。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;パンケーキレンズ\n薄型設計で広い視野角と鮮明な映像を提供。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;高性能バッテリー\n長時間駆動を支える最適化された電源設計。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;柔らかなフェイスインターフェース\n長時間でも快適な装着感を実現。&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;footer&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;left_text_block&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;headline&amp;#34;: &amp;#34;{argument name=\&amp;#34;bottom headline\&amp;#34; default=\&amp;#34;体験は、構造から進化する。\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;body&amp;#34;: &amp;#34;一つひとつのパーツに、没入体験を支える最先端テクノロジーとこだわりの設計。Meta Quest 3は、未来を感じさせる体験を内部から生み出しています。&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;right_logo&amp;#34;: &amp;#34;∞ Meta&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;虚构-ai-广告打印机奢华海报&#34;&gt;虚构 AI 广告打印机奢华海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/nijisora_yuma/status/2049462065639858687&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/nijisora_yuma&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@nijisora_yuma&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/016.webp&#34;
	width=&#34;896&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/016_hu_f1558c734cabdcd9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/016_hu_b0414569d42985bc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;虚构 AI 广告打印机奢华海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;縦型3:4の、高級商業ポスターを制作してください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;テーマは、架空の新商品広告です。商品は「BRAND PRESS 01（ブランドプレス・ゼロワン）」という、Pollo AIを搭載した架空の広告ポスター生成プリンターです。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;この商品は、まだ存在しないブランド名・商品ジャンル・世界観・ターゲット層を入力すると、Pollo AIがコピー、ビジュアル、レイアウトまで完成された商業広告ポスターを自動生成し、高精細な印刷物としてその場で出力する未来型プリンターです。単なるAIサービスの概念広告ではなく、実際に販売されていそうな架空商品の広告として成立させてください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;メインコンセプト: 「まだないブランドに、最初の一目惚れを。」
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;商品ビジュアル: 画面中央に実物の商品「BRAND PRESS 01」を大きく配置。未来型の高級プロ用印刷デバイスとして、黒い金属筐体、シルバーのエッジ、透明カバー、青白く発光するAIコア、精密な印刷ヘッド、ローラー、タッチパネル、排紙スロット、ポスター受けトレイを備える。排紙スロットから、架空の高級香水ブランド広告ポスターが紙として大きく出力されている構図。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;構図: ややローアングル、斜め45度。背景は暗いネイビーから黒の高級広告制作スタジオ。映画的でドラマチックな高級プロダクト広告。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;広告レイアウト: 上部に大きなキャッチコピー、中央にプリンター本体と排出中のポスター、右側に機能説明、左下に価格と発売日、下部にCTA。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;入れる文字: 「まだないブランドに、最初の一目惚れを。」 / BRAND PRESS 01 / 「Pollo AI搭載・広告ポスター生成プリンター」 / 「名前だけのアイデアを、完成された商業ポスターとして出力。」 / 「構想、コピー、ビジュアル、印刷まで。1台で。」
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢华-chocolate-campaign-system&#34;&gt;奢华 chocolate campaign system
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2049459155086500321&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/017_hu_62b8746b955a3fad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/017_hu_bbe920a4698343b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢华 chocolate campaign system&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium, square (1:1) product advertisement for a fictional luxury chocolate brand called Noirvelle Chocolat, inspired by high-end chocolate brands. The ad should feel like a high-end editorial campaign, combining luxury food photography, refined packaging design, and cinematic lighting. Use matte black wrapper, subtle gold foil, elegant serif typography, and realistic product rendering. Generate flavor variants such as Blood Orange Noir, Salted Pistachio Muse, and Raspberry Ember with distinct mood, color palette, ingredients, headline, and supporting copy. Keep the chocolate bar as hero centerpiece with subtle reflections, shallow depth of field, luxury minimalism, and a small CTA: “Shop the drop.”
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;urban-fruit-juice-ad-海报&#34;&gt;Urban fruit juice ad 海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_/status/2049452842931630202&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSarah_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/018.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/018_hu_f430dbb0b53aa34d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/018_hu_bfc913c0d69a3a17.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Urban fruit juice ad 海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium modern beverage advertisement poster in a vertical 3:4 format featuring a stylish young female model crouching confidently in a bright urban indoor hallway with colorful graffiti wall art on one side and clean minimal architecture on the other. In the foreground, a giant realistic fruit juice bottle is held toward the camera in forced perspective, with fictional branding like “VIVAJUICE”. Add brand logo, tagline, huge bold overlapping typography, four icon-based feature badges, and three smaller bottle variants at bottom right. Use soft natural lighting mixed with commercial studio polish, realistic shadows, shallow depth of field, glossy floor reflections, and a premium energetic eCommerce campaign aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ad-creative.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分类文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：海报插画案例</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/</guid>
        <description>&lt;p&gt;本页收录 &lt;code&gt;海报插画&lt;/code&gt; 分类下的 101 个案例。每个条目保留原案例链接、作者、生成图和完整提示词。&lt;/p&gt;
&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;海报插画&#34;&gt;海报插画
&lt;/h2&gt;&lt;h3 id=&#34;波士顿-2026-春季城市海报&#34;&gt;波士顿 2026 春季城市海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045358053831172358&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/000.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/000_hu_b13ca1d77f025b66.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/000_hu_14a04d63ae019209.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;波士顿 2026 春季城市海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A striking Spring 2026 city poster for Boston with an elegant celebratory mood and a bold contemporary design. On a clean off-white textured background with large areas of negative space, a miniature single sculler rows across the lower right corner of the image on a narrow ribbon of reflective water. The wake from the oar sweeps upward in a dynamic calligraphic curve, gradually transforming into the Charles River and then into a dreamlike hand-painted panorama of Boston. Inside this flowing river-shaped composition are iconic Boston elements: the Back Bay skyline, Beacon Hill brownstones, Acorn Street, Boston Public Garden, Swan Boats, Zakim Bridge, Fenway-inspired details, historic brick architecture, harbor ferries, and the city’s waterfront atmosphere. Soft morning fog, golden spring light, subtle festive accents in crimson and gold, rich detail, layered depth, sophisticated city-poster aesthetics, fresh and refined, visually powerful but not overcrowded. Elegant typography in the lower left reads “SPRING 2026” with a vertical slogan “BOSTON, A CITY OF RIVER, MEMORY, AND INVENTION”, text clear and beautifully composed, premium graphic design, 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;复古阿马尔菲旅行海报&#34;&gt;复古阿马尔菲旅行海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/WolfRiccardo/status/2044562722491121718&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/WolfRiccardo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@WolfRiccardo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/001_hu_7177ae27922a7194.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/001_hu_ae1ee80fe09e5b31.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;复古阿马尔菲旅行海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modern pencil illustration of Vintage travel poster illustration of the Amalfi Coast, Italy, panoramic coastal cliff road scene, classic 1960s white car driving along a curved seaside road, deep blue Mediterranean sea with small sailboats, colorful pastel hillside village, bright blue sky with soft clouds, lemon tree branches with vibrant yellow lemons framing the foreground, warm summer sunlight, bold vibrant colors, retro 1950s travel poster style, cinematic composition, high detail, screen print texture, graphic illustration. Hand-drawn style, illustration with loose strokes and defined contours. High-contrast color palette, maintaining chromatic harmony between background and elements. Contemporary and decorative aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;成都美食地图插画&#34;&gt;成都美食地图插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902/status/2045396918965285111&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Panda20230902&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/002.webp&#34;
	width=&#34;1080&#34;
	height=&#34;1080&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/002_hu_34540734f1a49157.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/002_hu_5488e2407823bae9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;成都美食地图插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张手绘风格的城市美食地图，以成都为主题。画面以鸟瞰视角的手绘简化城市地图为底，标注主要道路和地标但不追求精确比例而是追求可爱的手绘感。地图上分布着 12 个美食地点的精致手绘小插画：春熙路的串串香（一把竹签插着各种食材冒着热气）、宽窄巷子的三大炮（三个糯米团子飞向铜盘）、建设路的蛋烘糕（金黄酥脆正在翻面）、玉林路的火锅（九宫格锅翻滚冒泡）等，每个插画约占地图的 5% 面积，旁边用手写体标注店名和一句推荐语&amp;#34;凌晨两点还在排队的那家&amp;#34;。地图边缘用手绘藤蔓和辣椒装饰形成边框。右下角有一个手绘指南针和图例说明。左上角标题&amp;#34;成都·吃货暴走地图&amp;#34;使用胖圆的手绘美术字配辣椒装饰。整体画风为水彩+彩铅混合的手绘质感，颜色以暖色系（辣椒红、姜黄、翠绿）为主，图片比例 1:1。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;中式极简-s-形海报&#34;&gt;中式极简 S 形海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045368305079447853&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/003.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/003_hu_33bb41fae07ebe3a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/003_hu_5331a5d9f72ec0a9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;中式极简 S 形海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;极简新中式美学风格，画面以淡雅的灰白色为底，呈现出一种纸艺剪影般的立体感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一条S形蜿蜒的裂痕状边缘将画面分割，仿佛撕开了一层纸面，露出内部色彩斑斓的东方山水景象。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;裂口内，一条蜿蜒的河流自上而下贯穿整个构图，河水以深浅不一的蓝色渲染，层次分明，仿佛流动的丝带。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;河岸两侧点缀着青翠的山丘与梯田，色彩柔和，绿红交织，展现出田园的宁静之美。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;沿河而建的古风建筑错落有致，飞檐翘角，白墙黛瓦，在光影的映衬下更显古朴典雅。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;岸边树木葱茏，枝叶轻盈，一艘小船静泊于水中央，增添了几分悠然意境。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体构图呈S形曲线，富有韵律感，仿佛自然与人文的和谐共生。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画作边缘采用撕纸效果，营造出立体浮雕般的视觉体验。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;下方题字“东方美学”以黑色楷体书写，日期“2026/04/18”与红色印章相呼应，底部“CHINA”字样庄重醒目，署名“@LIYUE”低调收尾，整体氛围静谧深远，充满诗意与哲思。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2026-春季广州城市海报&#34;&gt;2026 春季广州城市海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045332620352119274&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/004.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/004_hu_201378eef9abf5ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/004_hu_3a9287e91b217ff1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026 春季广州城市海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张充满新春喜庆氛围但不失高雅格调的 2026 城市宣传海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;双重曝光，构图延续了S型的流动感；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在纯白的纹理背景右下角，一个身穿中国传统服饰的微缩人物正在挥舞着一条长长的红色丝绸舞带，这条红绸在空中舞动，不仅展现出丝绸的柔顺质感，更在向左上方飘动的过程中，奇幻地变形成了一条壮丽的山脉河流。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在这条“河流”中，叠加了一个有山有海河的广州城市手绘图，国潮，景色尽在眼底，壮阔雄伟，令人震撼。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;广州的地标建筑(广州塔，珠江新城建筑群，珠江, 广州城里古建筑，游轮，白云山）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;云雾环绕，仙气缥缈，色彩丰富，结构复杂，细节丰富，但因为大面积的留白，画面依然显得清新脱俗，左下角排版着“SPRING 2026”和竖排的宣传语，整体寓意“千年商都，魅力广州”。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文字排版优美，大方，字迹清晰完整，尺寸9:16。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;涂鸦草图-ai-构建器&#34;&gt;涂鸦草图 AI 构建器
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/blanplan/status/2045190582453350748&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/blanplan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@blanplan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/005.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/005_hu_d4cb03ebae804e31.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/005_hu_e07d8a36ce373b89.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;涂鸦草图 AI 构建器&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以涂鸦速写风表现【一个厉害的AI builder】，整体呈现快速勾勒、自由变形、即兴手绘与草稿式的视觉效果。线条随手、夸张、可粗细不一，略显凌乱但具有节奏和表现力，强调概括、夸张、趣味和随性，而不是严谨写实或精细刻画。  颜色采用粗糙、干刷感明显的块面表现，可保留不均匀的涂抹痕迹、刷痕、飞白与覆盖感，色彩根据【主题/主体】自动适配，但整体保持涂鸦式、速写式、概括式的表达。不要透明水彩晕染效果，不要细腻水彩过渡，不要纸纹理，不要柔和雾化，不要梦幻质感。  背景以留白为主，保持简洁、轻松、未完成感和设计感，可加入少量辅助性符号、箭头、记号、圈画、重复线、随手写的文字或其他涂鸦元素，以增强速写本或随笔式视觉语言，但不可过于拥挤，不可破坏主体和留白气质。  画面内容不需要预先写清楚，由【一个厉害的AI builder】自动推演并生成最适合的主体形象、动作、相关元素、符号或简化场景，整体保持统一的涂鸦速写风和夸张概括的表现方式，避免复杂写实背景和过度铺陈。 画面中需自然加入专属签名“BlanPlan”，作为画面的一部分，位置低调但清晰，可放在左下角、右下角或标题附近，风格需与整体版式统一，像作品署名或设计落款；签名字体精致、克制、高级，不可过大，不可破坏主体构图，不可显得突兀或廉价。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;未来感曼陀罗插画&#34;&gt;未来感曼陀罗插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/4WEB1/status/2045390207072256179&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/4WEB1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@4WEB1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/006.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/006_hu_c760bc8e41039f0b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/006_hu_190a7b33fa3c1ab5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;未来感曼陀罗插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;曼荼羅の近未来SF版を描いて
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;super-famicom-海报风格&#34;&gt;Super Famicom 海报风格
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/lilimliliychan/status/2045114760937804187&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/lilimliliychan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@lilimliliychan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/007_hu_655385dda509ecd4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/007_hu_900e63dc41e8da08.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Super Famicom 海报风格&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;小悪魔リリムリリィちゃんが　スーパーファミコンのゲームだったときのポスターを考えて
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;网页游戏广告创意海报&#34;&gt;网页游戏广告创意海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/llllegend0620/status/2045963764466688065&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/llllegend0620&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@llllegend0620&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/008.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/008_hu_28b9e5ac6b0e1050.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/008_hu_3f72f321265d76cc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;网页游戏广告创意海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以下の文字を必ず入れて、1:1のポスターを作成してください。書籍・講座・イベント告知に使える、プロの広告デザイナーが作ったような高品質な仕上がりにしてください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;広告クリエイティブ制作
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;思いついたら、もう遊べる。 AI×ブラウザゲームづくりは、マジで楽しい。 むずかしそうで、実ははじめやすい。 コードがわからなくても、はじめの一本は作れる
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超现实锦鲤星云插画&#34;&gt;超现实锦鲤星云插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045875219307655337&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/009.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/009_hu_f0687074165c1ecd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/009_hu_d638cb0a03268eec.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超现实锦鲤星云插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一幅超现实主义数字插画风格，采用低角度仰拍视角。画面描绘了一条巨型彩色锦鲤遨游在梦幻般的星云中，四周环绕着色彩鲜艳的星云与气泡。画面中央还站着一个小人，背对观众，神情平静地仰望空中这条巨大的锦鲤，锦鲤头向下看着小人。整体画面呈现出强烈的大小对比，氛围空灵又梦幻。比例9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;墨线广州美学海报&#34;&gt;墨线广州美学海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045873940883808523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/010.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/010_hu_f78ba957182dc90f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/010_hu_8a16bbe919ce2e54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;墨线广州美学海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;纯黑深邃底色，一条粗壮有力的墨色书法 S 型曲线自画面一端蜿蜒贯穿至另一端，构成整幅画面的视觉骨架与叙事动线。曲线上方是一只透明质感的画眉鸟，内部映射传统建筑叠影与蓝绿色光流；沿曲线错落分布广州地标与古典建筑序列，前景有白鹤与湖面，远景为层叠山峦。整体采用非线性透视、冷色调主导、暖色点缀，东方美学与现代意象交融，8K 超高清渲染，比例 9:16。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;广东超级联赛邀请海报&#34;&gt;广东超级联赛邀请海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045772039521542202&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/011.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/011_hu_92a4a5fab599fb1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/011_hu_14597bd741392962.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;广东超级联赛邀请海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;广东省城市足球超级联赛（粤超）邀请函海报设计，比例 9:16。S 型流动构图，以发光足球和动态能量流贯穿画面，沿动线融合广州塔、深圳平安金融中心、珠海渔女雕像、岭南建筑、佛山武术剪影、中山文化符号、潮汕英歌舞与清远山水。现代国潮高级海报风格，中国红主视觉，青蓝辅助，金色高光，带完整中文排版与电影级光影。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2026-春季广州宣传海报&#34;&gt;2026 春季广州宣传海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/grok/status/2046012437086818395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/grok&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@grok&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/012.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/012_hu_201378eef9abf5ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/012_hu_3a9287e91b217ff1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026 春季广州宣传海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张充满新春喜庆但高雅的 2026 广州城市宣传海报，9:16 竖版，双重曝光，S 型流动构图。纯白纹理背景，右下角微缩传统服饰人物挥舞长红绸，红绸变形成山脉河流，内部叠加广州全景：广州塔、珠江新城、珠江、游轮、古建筑与白云山。左下角排版 “SPRING 2026” 与竖排 “千年商都 魅力广州”。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;史诗剪影世界海报&#34;&gt;史诗剪影世界海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ghhhh3owi/status/2045803217251102897&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ghhhh3owi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ghhhh3owi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/013.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/013_hu_205251b6c1aac015.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/013_hu_e4cd661288228225.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;史诗剪影世界海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;收藏版史诗海报，人物侧脸剪影中生长出完整世界观与经典场景。整体偏电影海报加梦幻水彩插画风，安静、宏大、神圣、怀旧，带纸张颗粒、轻雾感、飞白刷痕与高级留白。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;春季广州城市海报&#34;&gt;春季广州城市海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq/status/2045484598487060917&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanlovelq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/014.webp&#34;
	width=&#34;675&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/014_hu_66d135c37c0b4d4c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/014_hu_aedcb5179c6eb528.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;春季广州城市海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张充满新春喜庆氛围但不失高雅格调的 2026 城市宣传海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;双重曝光，构图延续了S型的流动感；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在纯白的纹理背景右下角，一个身穿中国传统服饰的微缩人物正在挥舞着一条长长的红色丝绸舞带，这条红绸在空中舞动，不仅展现出丝绸的柔顺质感，更在向左上方飘动的过程中，奇幻地变形成了一条壮丽的山脉河流。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在这条“河流”中，叠加了一个有山有海河的广州城市手绘图，国潮，景色尽在眼底，壮阔雄伟，令人震撼。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;广州的地标建筑(广州塔，珠江新城建筑群，珠江, 广州城里古建筑，游轮，白云山）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;云雾环绕，仙气缥缈，色彩丰富，结构复杂，细节丰富，但因为大面积的留白，画面依然显得清新脱俗，左下角排版着“SPRING 2026”和竖排的宣传语，整体寓意“千年商都，魅力广州”。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文字排版优美，大方，字迹清晰完整，尺寸9:16。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;科学百科竖版海报&#34;&gt;科学百科竖版海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/pfanis/status/2046413660147314714&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/pfanis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@pfanis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/015.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/015_hu_7a1d5b1fc480bc5f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/015_hu_e3c8fefa5d7cca80.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;科学百科竖版海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate a high-quality vertical science popularization encyclopedia image based on [Theme].
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;西游记中式漫画&#34;&gt;西游记中式漫画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/overseas58/status/2046271877577097376&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/overseas58&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@overseas58&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/016.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/016_hu_fe8120241e09b388.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/016_hu_e386733db9966ec7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;西游记中式漫画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以中国连环画（小人书）的风格帮我绘制大闹天空
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;人物关系图海报&#34;&gt;人物关系图海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046263153546174935&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/017.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/017_hu_ecf91d7e5670cb15.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/017_hu_3852c8879f947e2f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;人物关系图海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】生成一张高设计感的人物关系图海报。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;新中式水墨山水海报&#34;&gt;新中式水墨山水海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2046215276249993720&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/018.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/018_hu_ba4b32e94d2d9d51.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/018_hu_fea52abd0b5219df.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;新中式水墨山水海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;新中式水墨山水海报，竖版9:16构图，东方极简美学风格，大面积留白，主题是春岚一叶红。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ai-构建器涂鸦草图&#34;&gt;AI 构建器涂鸦草图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/opc_8838/status/2046162334440448339&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/opc_8838&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@opc_8838&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/019.webp&#34;
	width=&#34;1196&#34;
	height=&#34;798&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/019_hu_a74dd5ddef7a0bae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/019_hu_231bd5c0eba1e0db.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 构建器涂鸦草图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;149&#34;
		data-flex-basis=&#34;359px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以涂鸦速写风表现【一个厉害的AI builder】。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;角色视觉竖版海报&#34;&gt;角色视觉竖版海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/tebasaki3D/status/2046371076402503709&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/tebasaki3D&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@tebasaki3D&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/020.webp&#34;
	width=&#34;850&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/020_hu_9e37ba30b1ebdb81.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/020_hu_fea7f01117845071.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;角色视觉竖版海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;170px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;『神層37区 特級執行官 神巫サバト』この名称のキャラクターと世界観に合ったビジュアルイメージを、プロのデザイナーとして縦長のポスターイメージとして制作して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;科学百科信息图&#34;&gt;科学百科信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046231542817497392&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/021.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/021_hu_4a7d12ea0cf9290f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/021_hu_eb66865bfa321ec6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;科学百科信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】生成一张高质量竖版「科普百科图」。 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这张图不是普通海报,也不是单纯插画,而是一张兼具“图鉴感、百科感、信息结构感、收藏感”的模块化科普信息图。整体风格参考高级博物图鉴、现代百科书页、生活方式知识卡和社交媒体高传播信息图的结合。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请让画面包含:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个清晰漂亮的主题主视觉
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若干局部特征放大细节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 多个圆角模块化信息分区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 清楚的标题层级与重点标签
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 简洁但丰富的百科内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 可视化评分、要点总结或Top 5模块
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容栏目请根据主题自动适配,优先从这些方向中选择并合理组合:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;基础档案、分类信息、外观特征、习性/生态、形成机制/结构组成、生长或使用条件、养护或维护建议、风险与注意事项、适合人群或适用场景、优缺点对比、快速评分卡。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;视觉要求:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;浅色干净背景,柔和配色,轻阴影,精致小图标,圆角信息框,整洁排版,信息密度高但不拥挤,阅读体验好。整体必须像真正可以发布、阅读、收藏、系列化生产的科普百科卡,而不是广告图。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请不要做成普通商业宣传海报。要突出“知识整理 + 模块信息 + 图鉴式展示”的特征。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;虚构动漫电影海报&#34;&gt;虚构动漫电影海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/seiiiiiiiiiiru/status/2046509734954741780&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/seiiiiiiiiiiru&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@seiiiiiiiiiiru&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/022.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/022_hu_3eb4d328714650a0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/022_hu_e957d648395ca3a5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;虚构动漫电影海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;架空のアニメ映画のポスターをGPT image2で作成。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;产品广告重设计&#34;&gt;产品广告重设计
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai/status/2046498264774791514&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@genel_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/023.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/023_hu_1201ba3a0754f179.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/023_hu_9c6e72623a0eb735.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;产品广告重设计&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;この商品広告をプロのデザイナー目線でリデザインして。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;今のトレンド、ターゲットに合わせた洗練されたデザインで。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暗黑奇幻广州城市海报&#34;&gt;暗黑奇幻广州城市海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2046243132774494607&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/024.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/024_hu_f0687074165c1ecd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/024_hu_d638cb0a03268eec.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暗黑奇幻广州城市海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;平面插画,东方幻想风格高端城市海报设计,竖版9:16构图,整体采用对角线+S型流动构图,从左下向右上延展,画面以深邃黑色为背景,自上而下渐变至浓烈暗红色,形成强烈冷暖对比与空间纵深,背景带微弱星尘与颗粒质感。画面中央一条金色流动能量线条如火焰般蜿蜒贯穿,自底部向上延伸,具有流体质感、粒子光效与渐变高光,局部带细微能量碎屑与体积光。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;金色流光中逐层浮现广州城市地标建筑群:广州塔为视觉核心,比例突出,周围融合珠江新城高楼群、猎德大桥及现代与岭南建筑元素,建筑采用“精细线描 + 金色发光体块”表现,轮廓清晰、细节丰富,在金色光晕映衬下仿佛悬浮于虚空,形成超现实空间层次,远景轻微雾化增强纵深感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面底部为一位东方白发女性形象,长发飘逸,如烟似雾,与金色流光自然衔接并逐渐融合,发丝半透明带渐变光感,姿态柔美,双目微闭,神情宁静,怀抱一束多彩鲜花,花间点缀微光粒子与星点效果,象征人与城市能量的精神连接,人物细节适度简化以突出整体设计感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;光影集中于金色流线、建筑与人物轮廓,形成强烈明暗对比与视觉聚焦,整体氛围宏大、神秘、具有东方神话意境且略带治愈感。色彩以黑与暗红为基底,高亮鎏金为主视觉强调,金色具备丰富明暗层次,辅以小面积高饱和花束色彩点缀,整体高级克制。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;页面文字与画面融合排版:顶部居中宋体大字“广州·中国”,下方小字“2026/04/20”,再下方小字“LIYUE”,文字采用淡金色或柔和暖白色,与整体光影统一。高品质细节,电影级光影表现,体积光与粒子细节丰富,画面干净无噪点,超高清8K分辨率,商业级海报质感。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;科幻电影海报&#34;&gt;科幻电影海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/underwoodxie96/status/2046514205529088501&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/underwoodxie96&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@underwoodxie96&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/025.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/025_hu_ef80f60974fc9d7e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/025_hu_183996ab6e6916ab.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;科幻电影海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a Science fiction movie poster
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;清爽夏日乌冬广告&#34;&gt;清爽夏日乌冬广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai/status/2046501692246470871&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@genel_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/026.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/026_hu_bf8be9a29c4774c9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/026_hu_82496932fbd2b49c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;清爽夏日乌冬广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;少し暑くなってきた今の時期に、さわやかにさっぱりしたい、みずみずしさ、みたいなところをもっと強く感じたい。冷たいうどんやナス、つゆを口に含んだ時の爽快感、みたいなものをもっと感じるように
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;手写医疗处方单&#34;&gt;手写医疗处方单
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046514998965371144&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/027.webp&#34;
	width=&#34;899&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/027_hu_e42b00db642e5189.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/027_hu_67d8c7386a9431c5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;手写医疗处方单&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一张手写中/西医药方图
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;硅谷-2026-宣传海报&#34;&gt;硅谷 2026 宣传海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/carsonyungos/status/2046523198116889064&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/carsonyungos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@carsonyungos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/028.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/028_hu_d73b27149cfbc777.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/028_hu_b4b7a2a267a3763c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;硅谷 2026 宣传海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A refined 2026 Silicon Valley city promotional poster with a futuristic yet elegant atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Double exposure composition, preserving an S-shaped sense of flowing movement. On a pure white textured background, in the lower-right corner, a miniature figure dressed in sleek modern techwear is releasing a long ribbon of luminous silver-blue light. The ribbon flows gracefully through the air, showing a soft silk-like texture, and as it drifts toward the upper-left, it magically transforms into a grand landscape of rolling hills, coastline, data streams, and illuminated urban terrain.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Within this flowing “river of light,” overlay a hand-drawn panoramic map of Silicon Valley, blending technology, nature, innovation, and California sunlight. The scene feels visionary, expansive, sophisticated, and inspiring.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Include iconic Silicon Valley and Bay Area elements: Stanford University arches, Apple Park, Google campus-inspired buildings, Meta-like glass offices, Tesla-style innovation imagery, venture capital offices on Sand Hill Road, Palo Alto tree-lined streets, San Jose skyline, the Santa Cruz Mountains, San Francisco Bay, highways, autonomous vehicles, startup labs, semiconductor patterns, AI data centers, and subtle circuit-board textures.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Surrounded by soft mist, golden California light, floating clouds, and delicate digital particles. Rich colors, complex structure, highly detailed, grand and breathtaking, yet still fresh and minimal because of the large areas of white space.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the lower-left corner, elegant typography reads “SILICON VALLEY 2026” with a vertical promotional slogan: “Where Ideas Shape Tomorrow.” Beautiful editorial layout, graceful spacing, clear and complete lettering, premium city branding poster, cinematic lighting, sophisticated details, 9:16 aspect ratio.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日本超市促销传单&#34;&gt;日本超市促销传单
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/weel_corp/status/2046514558064586782&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/weel_corp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@weel_corp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/029.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/029_hu_46b43666df1084c1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/029_hu_ae3682fc143d094b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日本超市促销传单&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;『賑やかで魅力的なスーパーマーケットの折り込みチラシの画像。上部には「特売」の大きな文字と今週の日付。カラフルな商品写真(野菜・果物・牛肉・鮮魚)、赤枠の価格タグ、「超目玉商品」「家計応援」のキャッチ...』
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暗黑史诗概念海报&#34;&gt;暗黑史诗概念海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant/status/2046224777208361126&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@A9Quant&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/030.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/030_hu_9c400ff2c7fc93a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/030_hu_c0f89cc2b0aee3d4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暗黑史诗概念海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;围绕【主题】自动生成一张顶级暗黑史诗概念海报 / 电影感信息图海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;唯一需要输入的变量只有:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【主题】:___特朗普的思考____ 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;除【主题】之外,其余全部由 AI 自动适配完成,包括但不限于:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 核心主体(自动判断更适合人物、守护者、战士、产品、器物、雕像、抽象象征或其他主视觉对象)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 中央承载结构(自动判断更适合王座、石座、祭坛、机械基座、遗迹、高台或其他支撑体)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 环境空间(自动判断更适合洞穴、神殿、废墟、深渊、地下宫殿、密室或其他封闭史诗空间)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 上方开口与光源形式(自动判断更适合月光、神光、能量束、审判之光、圣光或其他单一强光)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 象征元素(自动判断更适合骷髅、徽记、残碑、纹章、符文、能量环、神性符号等)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 色彩体系
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质组合
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 标题、副标题、辅助文案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 排版与整体叙事气质
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【总风格】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;高预算 90 年代好莱坞史诗大片海报气质,融合 cinematic matte painting、超写实摄影质感、极强明暗对比、厚重空间叙事、暗黑英雄主义与仪式感构图。整体必须像一张真正的电影主海报,而不是普通插画或电商图。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【核心结构锁定】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整张海报必须保留以下结构基因:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 一个巨大、压迫感极强的黑暗封闭空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 一束从上方斜向切入的强烈体积光,作为画面的第一视觉秩序
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 中央偏右或光束终点位置的核心主体与承载结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 左下角作为高密度标题与信息锚点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 四周保留大量纯黑或近黑负空间,形成电影感呼吸区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【自动适配规则】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI 必须依据【主题】自动推导最适合的视觉系统:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏暗黑英雄、复仇、正义、孤独、宿命,则自动偏向石质王座、孤高人物、冷色神光、废墟或洞穴感空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏神秘、幽灵、潜行、幻影、夜行,则自动偏向月光、迷雾、冷蓝色体积光、深渊式黑暗空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏权力、统治、王者、秩序,则自动强化 throne / altar / crown-like symbol / ritual space 的表达
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏科技、AI、未来、机械,则自动将王座和空间替换为机械神座、能量基座、金属洞窟、工业神殿等未来化形态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏产品、品牌、器物,则自动把核心主体替换为最合适的 hero object,并保留被神光审判式凸显的史诗构图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【画布与色彩系统】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 背景底层必须是极深、近乎吞噬一切的黑暗空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主环境色由 AI 根据【主题】自动决定,但整体必须克制,以暗色为主
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 强光区域色彩必须高度集中,只服务于体积光与主体高光
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主题色 / 强调色只能集中用于主视觉核心,不允许全画面泛滥
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 必须建立明确的“黑暗底色 + 单一主光 + 少量主题强调色”的层级秩序
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【构图与视觉重力】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 采用强烈的斜向张力与向中心汇聚的视觉引导
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 视觉重力从上方光源强势落下,最终压在核心主体之上
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主体必须处于被命运、审判、神性或权力照中的位置
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 边缘必须自然融入黑暗,不能出现无意义背景填充
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 所有元素必须服务于唯一的主叙事核心
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【材质与光影】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不使用轮廓线,不使用平面化描边
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 完全依赖体积光、阴影切割、反射、高光、雾气、粉尘、湿润岩石或其他真实材质来建构画面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质必须形成明显对比,例如:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  粗粝岩石 / 冷硬金属 / 柔韧织物 / 古老石雕 / 湿润表面 / 尘雾光柱
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 光束必须具有强烈 Tyndall effect,真实、厚重、可感知体积密度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【排版系统】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 整体 80% 视觉,20% 文字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- AI 根据【主题】自动生成主标题、副标题和底部信息块
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主标题应尽量简洁、有气势、有电影海报感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若主题更适合中文,则优先中文;若更适合英文,则自动英文;也可双语,但必须统一
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主标题可沿光束垂直排布,仿佛由光本身构成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 左下角设置一个高密度信息模块,包括副标题、小字信息、电影 credits 风格占位文字或品牌说明
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 文字必须锐利、干净、真实嵌入环境,不得廉价漂浮
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【模块结构 —— 必须严格保持 3 块】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[MOD 1: TOP-TO-CENTER BEAM]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;从顶部开口斜向切下的巨大体积光柱,作为第一视觉通道,并承载主标题或主视觉文字。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[MOD 2: CENTER-RIGHT CORE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;位于光束终点的核心主体与承载结构,形成整张海报的权力中心 / 命运中心 / 叙事中心。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[MOD 3: BOTTOM-LEFT TEXT]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;位于左下角负空间中的高密度排版区,包含副标题、说明文字、credits 风格信息块、品牌信息或活动信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【作者署名】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在底部角落自然加入作者署名:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@a9quant
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;署名要小而清晰,精致、克制、高级,不喧宾夺主,像正式电影概念海报或艺术作品落款。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【输出要求】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输出为单张统一构图海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;所有视觉系统必须内部一致,不能有风格污染。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面必须具备:暗黑感、史诗感、压迫感、仪式感、命运感、电影完成度。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最大细节密度,超清,电影级,印刷级,高端成片质感。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;普拉提工作室广告海报&#34;&gt;普拉提工作室广告海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ck_igarashi/status/2046528889124728993&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ck_igarashi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ck_igarashi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/031.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/031_hu_fefe4ef6ac729c95.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/031_hu_298b2020792bf385.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;普拉提工作室广告海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ピラティス教室の広告画像を作成したい テキストはよりユーザーが登録をするのに惹かれるような文言にし、画像内には女性がピラティスを実際に行っている様子を映して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;六模块时尚广告提示词公式&#34;&gt;六模块时尚广告提示词公式
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/anacoding/status/2046904999045628114&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/anacoding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@anacoding&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/032.webp&#34;
	width=&#34;1200&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/032_hu_978a06ca6d6ab538.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/032_hu_f0b66b26ea02deff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;六模块时尚广告提示词公式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Old money Hamptons editorial, tall blonde woman late 20s, serene elegant expression, wearing cream cashmere cable sweater, pleated beige tennis skirt, pearl earrings, Hermès silk scarf, leather flats, Slim Aarons photography style, medium format film photography, sitting on a white wooden porch of a Cape Cod house, golden hour light, ocean in the background
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sony-a7-爆炸图拆解提示词&#34;&gt;Sony A7 爆炸图拆解提示词
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iaPulse_/status/2046903739429097660&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/iaPulse_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iaPulse_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/033.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/033_hu_8ea3e4a967c5fe31.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/033_hu_216e262211d2baa2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sony A7 爆炸图拆解提示词&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Descomposición detallada de una cámara de la marca Sony modelo A7 indicando todas sus piezas y con sus nombres.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;1900-年独立大街全景提示词&#34;&gt;1900 年独立大街全景提示词
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ai_gezgini/status/2046903631509705030&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ai_gezgini&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ai_gezgini&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/034.webp&#34;
	width=&#34;1200&#34;
	height=&#34;595&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/034_hu_261edcda8ca3abd1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/034_hu_c8efc03f5c4fdc7f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;1900 年独立大街全景提示词&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;201&#34;
		data-flex-basis=&#34;484px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;360 equirectangular image of Istiklal Street, Istanbul in 1900
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;主题科学百科卡片&#34;&gt;主题科学百科卡片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq/status/2046378199681257920&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanlovelq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/035.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/035_hu_63664ea9802825bb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/035_hu_4e9730ca7264bcfa.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;主题科学百科卡片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】生成一张高质量竖版「科普百科图」。 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这张图不是普通海报,也不是单纯插画,而是一张兼具“图鉴感、百科感、信息结构感、收藏感”的模块化科普信息图。整体风格参考高级博物图鉴、现代百科书页、生活方式知识卡和社交媒体高传播信息图的结合。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请让画面包含:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个清晰漂亮的主题主视觉
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若干局部特征放大细节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 多个圆角模块化信息分区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 清楚的标题层级与重点标签
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 简洁但丰富的百科内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 可视化评分、要点总结或Top 5模块
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容栏目请根据主题自动适配,优先从这些方向中选择并合理组合:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;基础档案、分类信息、外观特征、习性/生态、形成机制/结构组成、生长或使用条件、养护或维护建议、风险与注意事项、适合人群或适用场景、优缺点对比、快速评分卡。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;视觉要求:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;浅色干净背景,柔和配色,轻阴影,精致小图标,圆角信息框,整洁排版,信息密度高但不拥挤,阅读体验好。整体必须像真正可以发布、阅读、收藏、系列化生产的科普百科卡,而不是广告图。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请不要做成普通商业宣传海报。要突出“知识整理 + 模块信息 + 图鉴式展示”的特征。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;辣椒炒肉烹饪流程图&#34;&gt;辣椒炒肉烹饪流程图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Kurt_Rousey466/status/2046267707881029934&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Kurt_Rousey466&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Kurt_Rousey466&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/036.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/036_hu_b5058bd6ddbe2e29.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/036_hu_fb0f9b9736277e92.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;辣椒炒肉烹饪流程图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我制作辣椒炒肉这道菜的详细制作流程图,真实风格,适用于小红书图文比例
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电影感信息图概念海报&#34;&gt;电影感信息图概念海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant/status/2046228485841334559&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@A9Quant&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/037.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/037_hu_4786868151e9758a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/037_hu_7fb4793db00ce0dd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电影感信息图概念海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请围绕【主题】自动生成一张顶级概念海报 / 信息图式电影海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;唯一输入变量只有:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【主题】:__中国历史上的皇帝排名_         
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求 AI 根据这个主题,自动推导并统一设计以下全部视觉系统,不需要我额外指定:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 核心主体(可以自动判断更适合人物、产品、建筑、器物、符号、场景或抽象意象)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 底部支撑结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 上方悬浮符号或精神象征
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 场景包裹元素
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 隐喻系统
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 色彩层级
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质对比
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 光影逻辑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 标题、副标题、辅助文案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 品牌感与高级感表达方式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最终画面必须是:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张震撼、精密、统一、电影级、超高细节、可用于高端印刷的概念主视觉海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【总风格】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;超写实 3D 商业 CGI 渲染,融合电影级布光、奢侈品视觉语言、未来感概念设计与史诗级构图。画面必须具有“唯一主视觉核心”,不能杂乱,不能像拼贴,不能像普通电商海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【自动推导规则】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI 必须依据【主题】自动决定最合适的:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 核心视觉隐喻
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 主体类型与姿态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 支撑结构形式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 悬浮元素形式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 场景外壳与空间氛围
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6. 主色、辅色、强调色
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7. 材质组合
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8. 文字气质与版式风格
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;例如:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏权力、秩序、资本、统治,则自动偏向王座、冠冕、机械、神殿、红幕、金属、权力结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏科技、AI、芯片、未来,则自动偏向机械结构、能量核心、光束、深色金属、全息感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏奢侈品、高定、稀缺、收藏,则自动偏向珠宝、镜面材质、黑金体系、展台、博物馆式布光
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏人物、IP、角色,则自动以人物为主视觉核心,并自动匹配对应世界观与象征系统
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏城市、文明、史诗、命运,则自动转化为宏大叙事型空间结构与仪式感场景
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【构图规则】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 绝对高级感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 强烈中心秩序,整体统一
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 允许中轴对称或接近中轴的史诗级构图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 视觉重力明确,从上到下形成清晰的层级落点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 边缘负空间干净、克制、有呼吸感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不允许无意义装饰,不允许风格污染,不允许多个系统互相打架
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【视觉质量】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 超高细节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 体积光清晰
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质真实
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 反射、折射、阴影、雾气、景深自然
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 每个元素都像经过工业级视觉总监审美控制
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 整体达到高端品牌 campaign key visual / luxury invitation poster / conceptual editorial poster 水准
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【排版系统】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 整体为 90% 视觉,10% 文字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- AI 根据【主题】自动生成最匹配的主标题和副标题
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 标题必须简洁、锋利、有气势
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 文案分布在安全负空间内,不压主体
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若主题适合中文,则优先生成中文标题;若主题更适合英文,则自动生成英文标题;也可中英结合,但必须统一高级
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 文字必须尽量少而准,不要堆字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【署名要求】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在画面底部角落自然加入作者署名:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@a9quant
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;署名要小,但清晰、精致、高级,不喧宾夺主,像顶级视觉作品中的正式作者落款。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【输出要求】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输出为单张统一构图海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;自动根据【主题】完成全部视觉决策。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面必须具备史诗感、秩序感、控制力、仪式感、商业完成度。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最大细节密度,超清,电影级,印刷级,高端成片质感。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;户外全身照中的年轻白人女性&#34;&gt;户外全身照中的年轻白人女性&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_/status/2047234995627172229&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSarah_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_ff5a247e2a801b2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_4fbacbb1e8c8dfe8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;户外全身照中的年轻白人女性…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A full-body outdoor shot captures a young Caucasian woman, possibly in her late 20s, striding through a city crosswalk. She wears an oversized, matte chocolate-brown leather jacket paired with a free-flowing black skirt and sleek knee-high black boots, conveying a sense of high fashion street style. Her long, dark brown hair is wind-swept, complementing her poised and confident expression as she glances sideways. Behind her, a blurred urban backdrop features a yellow taxi and pedestrians, with buildings displaying varied architectural details in neutral tones. The scene utilizes soft ambient daylight filtering through light cloud cover, producing a muted, overcast lighting effect. The warm, earthy color palette consists of brown, black, and touches of beige. The image, likely from a high-resolution digital camera, presents a wide-angle view that maintains focus throughout, emphasizing a dynamic and fashionable feel.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;冷藏气泡水专业产品摄影&#34;&gt;冷藏气泡水专业产品摄影
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695/status/2047227172486824002&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@meng_dagg695&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/039.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/039_hu_de370bf7dfdeccac.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/039_hu_586efe83d344a1c7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;冷藏气泡水专业产品摄影&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A professional product photography shot of a cold sparkling water
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;can placed upright in golden beach sand. The can is silver and teal,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;covered in realistic water droplets condensation, with a pineapple
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;illustration and tropical branding. The can is slightly tilted,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;planted in a small mound of fine golden sand with tiny white pebbles
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;and small green tropical leaves/grass scattered around the base.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background features a bold split composition - bright sky-blue on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the left and vivid yellow on the right, with a large blurred real
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pineapple placed behind the can on the right side. A blurred tropical
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;palm leaf drapes in from the upper left corner, adding depth and
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;framing. Macro-level water condensation droplets visible on the
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;can surface. Lighting is bright, vibrant, commercial studio lighting
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;with clean shadows. Shallow depth of field - can in sharp focus,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;background softly blurred. Mood: summer, tropical, fresh, refreshing.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Commercial product photography, ultra-detailed, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;360-度等距柱状全景图&#34;&gt;360 度等距柱状全景图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rs_elwood/status/2047192228758692036&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/rs_elwood&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rs_elwood&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_ff5a247e2a801b2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_4fbacbb1e8c8dfe8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;360 度等距柱状全景图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;360度 equirectangular （正距円筒図法）画像を2:1で生成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Online 360° Panorama Viewer VR
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔和诗意儿童书插画水彩与水粉质感&#34;&gt;柔和诗意儿童书插画，水彩与水粉质感&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey/status/2047174895293849972&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@dotey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/040.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/040_hu_424e23fdce1730a6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/040_hu_b3e249d6b567c7ff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔和诗意儿童书插画，水彩与水粉质感…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Soft poetic children&amp;#39;s book illustration with watercolor and gouache textures.Clear gentle daylight with slightly brighter highlights.Muted pastel colors with soft blue and warm tones.Visible brush strokes and paper grain.Minimalist composition with large negative space.Calm, thoughtful, slightly open-ended atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Child character (around 12 years old).Subtle visual metaphors like light, shadow, perspective, reflection.Hand-painted picture book style, not cartoon, not anime, not 3D.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Two children in calm conversation,soft connection forming.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;画幅比例916-竖版&#34;&gt;画幅比例：9:16 竖版
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX/status/2047220831491858766&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GeekCatX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/041.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/041_hu_27f5a8dc11c92271.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/041_hu_a84f0f87582688a5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;画幅比例：9:16 竖版&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Aspect Ratio: 9:16 Vertical
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【IDENTITY &amp;amp; REALISM (CRITICAL PRIORITY)】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The subject is an adult female whose facial features and bone structure must 100% perfectly match the provided FACE_REF image. Eye spacing, nose bridge, jawline, and cheekbone structure must be exact; no identity drift is allowed. Skin texture must be photorealistic, showing pores and fine details—do not over-smooth or apply an Instagram filter look.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【PHOTOGRAPHY &amp;amp; CINEMATOGRAPHY】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end editorial fashion photograph with a cinematic quality, rivaling covers of Vogue, Harper’s Bazaar, or ELLE.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lens &amp;amp; Focus: Use an 85mm lens (for medium shot) or 50mm/70mm (for full body) with a shallow depth of field. The subject&amp;#39;s eyes must be perfectly sharp.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Natural winter daylight supplemented by soft, professional fill light. Gold ornaments and precious stones should have realistic specular highlights without being blown out. Embroidery textures must be incredibly sharp and tactile.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Color Grading: Rich, cinematic colors. The red walls and the attire&amp;#39;s main color must be distinct and clean, not muddy. The overall image should feel deep, textured, and expensive.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Composition: A clean magazine cover layout with deliberate negative space at the top or sides for typography. No torn paper or hand-drawn effects.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【SETTING: FORBIDDEN CITY WINTER】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The location is a red-walled long corridor in the Beijing Forbidden City.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Environment: Visible details include vermilion walls, red pillars, intricate carved windows, and painted wooden beams with strong perspective depth. The scene must be clean: no tourists, modern signs, or watermarks.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Weather Condition (Selected Randomly):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[If Snowfall selected]: Fine snowflakes are gently falling.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[If Post-Snow selected]: The air is crisp and clear, with remnant snow on the eaves and steps.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【WARDROBE: MING DYNASTY HEAVY INDUSTRY COUTURE】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The subject wears opulent, multi-layered Ming Dynasty ceremonial Hanfu. The aesthetic is gold-heavy, dense tassels, phoenix crown, large-area woven gold embroidery, complex layering, dignified and luxurious.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Structure: A visible, crisp white standing inner collar provides a clean boundary. Over this is a structured duijin ao (jacket) with wide sleeves, topped by a heavy xiapei/pibo (stole) structure held by a large central yajin ornament.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Fabric &amp;amp; Craft: The main fabric is real zhijin jin (woven gold brocade) with palpable fiber texture. The embroidery is heavy industry—using panjin goldwork, couched gold
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;杭州西湖旅行海报&#34;&gt;杭州西湖旅行海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BNBOKBt5/status/2047210189741605082&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BNBOKBt5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BNBOKBt5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/042.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/042_hu_121803730c1fc8a5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/042_hu_92d74e842ca118a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;杭州西湖旅行海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我生成一个介绍杭州西湖的海报
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;东方不败武侠角色海报&#34;&gt;东方不败武侠角色海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047204566559756707&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/043.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/043_hu_f3f496fc67669877.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/043_hu_a9f9996a5ef7415d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;东方不败武侠角色海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片1：电影角色海报，东方不败红衣饮酒，悬崖落日，武侠意境
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片2：东方不败绣花针如飞，红衣长发立于悬崖，黑木崖夕阳如血
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;大话西游-90-年代港片海报&#34;&gt;大话西游 90 年代港片海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047201597697245252&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/044.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/044_hu_9b7cbd43d6d2017c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/044_hu_bfba6b6b10add752.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;大话西游 90 年代港片海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片1：大话西游海报重制为90年代港片风格，至尊宝紫霞城墙拥吻，胶片颗粒
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片2：杜蕾斯吉祥物×猪八戒，八戒害羞脸红遮面，文案取经路上要安全
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;西游记女儿国海报&#34;&gt;西游记女儿国海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/cj858cjsoul/status/2047103956535697822&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/cj858cjsoul&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@cj858cjsoul&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/045.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/045_hu_b530de8d4d6545cd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/045_hu_a133286d0a68118d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;西游记女儿国海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;西游记女儿国诱惑海报，六位艳丽的女儿国大臣在后宫温泉中，迷雾朦胧妖冶，生成图片
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.23早上测试成功
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;鹿鼎记角色海报&#34;&gt;鹿鼎记角色海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/caiziboshi/status/2047091751731519744&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/caiziboshi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@caiziboshi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/046.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/046_hu_d4a2c9eabefe3664.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/046_hu_b867ff1faed1ddbd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;鹿鼎记角色海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成鹿鼎记海报，展现韦小宝跟老婆XXX，忠于原著的描述，夸大特点，强调女性的美艳和男性的气质
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;生成带规格与价格的赛车海报&#34;&gt;生成带规格与价格的赛车海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/verysmallwoods/status/2047033599229137126&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/verysmallwoods&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@verysmallwoods&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/047.webp&#34;
	width=&#34;569&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/047_hu_7f424966b0d91e90.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/047_hu_d8fee19c94371ed7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成带规格与价格的赛车海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;47&#34;
		data-flex-basis=&#34;113px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;generate an image of a racing car poster with its spec and pricing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;卓别林产品海报重设计&#34;&gt;卓别林产品海报重设计
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chenenpei/status/2046985783715025135&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/chenenpei&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chenenpei&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/048.webp&#34;
	width=&#34;799&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/048_hu_1d48865872d9a3b4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/048_hu_6819b669cb7910c7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;卓别林产品海报重设计&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;重新生成一张海报，卓别林拿着商品图里的止痒膏，面露微笑。风格要简约干净。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;左边是 GPT-image-2 右边是
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢华运动服篮球运动员广告海报&#34;&gt;奢华运动服篮球运动员广告海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shorelyn_/status/2047949711181832558&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shorelyn_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shorelyn_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/049.webp&#34;
	width=&#34;1254&#34;
	height=&#34;1254&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/049_hu_672f777993b43681.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/049_hu_d32a1c4adebdc905.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢华运动服篮球运动员广告海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium luxury sportswear campaign poster featuring a confident female athlete in a modern studio environment. Full body pose with strong fashion attitude, standing tall while holding a basketball at her side, chin raised slightly, direct powerful expression. Athletic toned physique, sleek pulled back hair, clean glowing skin, sharp editorial posture.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Outfit includes an oversized cropped varsity jacket, fitted sports bra, tailored biker shorts, white crew socks, and modern high top sneakers. Neutral monochrome styling with subtle premium branding.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background is a clean light gray studio wall with giant bold condensed black typography reading “POWER” stretched vertically across the backdrop behind the model. Text should feel oversized and dominant, framing the athlete in the center.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Floor is glossy reflective studio surface with subtle court markings and soft reflections. A few basketballs placed naturally around the floor for depth and campaign styling.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is bright luxury studio lighting with crisp highlights, soft shadows, and polished commercial finish. Sharp focus, ultra realistic skin texture, premium fabric texture, cinematic contrast.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style should feel modern, minimal, elite, bold, high fashion sports campaign, luxury brand advertisement, clean composition, balanced negative space, strong visual impact, high resolution, square format.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;亚洲服饰街头时尚广告海报&#34;&gt;亚洲服饰街头时尚广告海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2047921293123895520&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/050.webp&#34;
	width=&#34;1152&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/050_hu_906676598a55c4d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/050_hu_758213b443022f5c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;亚洲服饰街头时尚广告海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium streetwear fashion campaign poster inspired by modern Asian apparel advertising. Full body portrait of a stylish young male model standing confidently with legs crossed at the ankles, hands inside jacket pockets, head turned slightly upward and sideways with a calm thoughtful expression. Curly tousled medium length hair with soft volume. Slim athletic build.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Outfit includes a dark olive green padded hooded jacket worn open, clean white crewneck sweatshirt underneath with a tiny chest logo, relaxed black cargo style trousers, and minimal white sneakers. Styling is clean, youthful, and contemporary.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background is a vibrant electric blue seamless studio backdrop with subtle gradient lighting, soft glow streaks, and glossy floor reflection. Lighting is soft studio light with gentle shadows and polished commercial finish.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Graphic poster layout with giant bold condensed sans serif text reading “JEANSWEST” vertically stretched across the background behind the model in light gray white. Add large text on lower right reading “JW26”. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Composition should feel premium, trendy, clean, commercial, youthful, modern fashion ad campaign. Sharp focus, ultra realistic fabric texture, cinematic lighting, balanced negative space, sleek branding design, high resolution, vertical poster ratio.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;职业生涯高光时刻电影感海报模板&#34;&gt;职业生涯高光时刻电影感海报模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Goodmanprotocol/status/2047900470921040270&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Goodmanprotocol&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Goodmanprotocol&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/051.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/051_hu_2f9da72c29fe71be.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/051_hu_84ede77a008103b4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;职业生涯高光时刻电影感海报模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create an epic poster showcasing the most iconic moments of [Insert Name]&amp;#39;s career. Cinematic style, lens flare. Portrait orientation. A1 poster size. aspect ratio 4:5 https://t.co/L9OHPKUNRp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;先锋篮球雕塑运动时尚广告&#34;&gt;先锋篮球雕塑运动时尚广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithkhan/status/2047886964037398989&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithkhan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithkhan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/052.webp&#34;
	width=&#34;1254&#34;
	height=&#34;1254&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/052_hu_e4ef64e0fec4e145.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/052_hu_4ef81fda3ea058a2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;先锋篮球雕塑运动时尚广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Avant-garde sports fashion advertisement, oversized basketball posed like a monumental sculpture, female athlete reclining across the ball’s curved surface as if modern furniture, giant word “ELEVATE” in bold typography behind, burnt orange studio backdrop, glossy reflective floor, luxury athletic editorial aesthetic, cinematic lighting, ultra-clean composition, 1:1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;先锋网球拍雕塑运动时尚广告&#34;&gt;先锋网球拍雕塑运动时尚广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSynthia/status/2047884609321619831&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSynthia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSynthia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/053.webp&#34;
	width=&#34;1254&#34;
	height=&#34;1254&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/053_hu_be592ae0d8fc17c8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/053_hu_93bbc60441311c05.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;先锋网球拍雕塑运动时尚广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Avant-garde sports fashion advertisement, oversized tennis racket positioned like monumental sculpture, female athlete seated casually on the strings as if a suspended lounge, giant word “PRECISION” in bold typography behind, crisp white studio backdrop, reflective court-like floor, luxury sportswear editorial aesthetic, cinematic lighting, ultra-clean composition, 1:1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超现实酒类品牌高级时装海报&#34;&gt;超现实酒类品牌高级时装海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/hmontilla_/status/2047884126343032995&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/hmontilla_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@hmontilla_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_ff5a247e2a801b2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_4fbacbb1e8c8dfe8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超现实酒类品牌高级时装海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Un póster publicitario surrealista de alta costura para Aguardiente Amarillo. La escena se sitúa en un estudio minimalista y monocromático de color naranja claro, con un suelo semirreflectante.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;El foco central es una botella de Aguardiente Amarillo de tamaño descomunal y gigante, colocada en ángulo diagonal y que sirve como respaldo. Un modelo masculino de moda, de cabello largo y oscuro, vestido con un conjunto impecable y totalmente blanco —compuesto por una sudadera y pantalones de pierna ancha—, apoya toda su espalda contra la botella gigante en una postura relajada e inclinada. Mira hacia la derecha, de perfil, con la vista al frente y una expresión serena; calza zapatillas blancas de tamaño estándar.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;En el fondo, la palabra &amp;#34;AGUARDIENTE&amp;#34; aparece escrita con una tipografía sans-serif condensada, blanca, masiva y en negrita, parcialmente oculta por la botella gigante y por el modelo para crear una sensación de profundidad. En la esquina superior derecha se lee: &amp;#34;Creado por @HMontilla_&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;En la parte inferior central, una frase publicitaria en tipografía sans-serif blanca reza: &amp;#34;El Aguardiente Amarillo de Manzanares es un icónico licor colombiano, originario de 1885 en Manzanares, Caldas&amp;#34;. La iluminación es suave, fría y uniforme, proyectando sombras tenues y un reflejo sutil de los sujetos sobre el suelo azul brillante. La estética general es limpia, moderna y de alto concepto.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Establecer la relación de aspecto en 3:4.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;高端食谱海报优雅版式&#34;&gt;高端食谱海报优雅版式
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Preda2005/status/2047883394152088004&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Preda2005&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Preda2005&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/054.webp&#34;
	width=&#34;1366&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/054_hu_4c7931fba65879d6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/054_hu_803c37bfc869f6dc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;高端食谱海报优雅版式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium food preparation poster for
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; [ DISH NAME ], with a beautiful hero dish, warm natural lighting, cream background, elegant step-by-step recipe layout, ingredients, cooking process, premium food photography, refined English typography, luxury restaurant advertisement style, clean design, rich colors, highly detailed, visually irresistible, cinematic masterpiece.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;黑白奢华时尚杂志封面&#34;&gt;黑白奢华时尚杂志封面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrealsnow/status/2047883187527856345&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrealsnow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iamrealsnow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/055.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/055_hu_bbe14247cc60a4e5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/055_hu_94215ca614388d4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;黑白奢华时尚杂志封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a high fashion editorial magazine cover inspired by luxury fashion publications. Use the reference image of the male subject. Black and white portrait photography with a clean off white studio background. Subject is posed confidently from a low angle, looking slightly upward, sharp jawline, soft parted lips, tousled wavy hair with natural volume. Outfit includes a dark turtleneck layered under a textured tailored plaid blazer. Lighting is soft yet dramatic, creating sculpted facial shadows and elegant contrast.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Magazine layout design with oversized serif masthead text at the top reading “VOGUE”, partially hidden behind the subject’s head. Minimal premium typography across the page. Add side text “FASHION”, issue date “2026 MAY”, left side headline “27 DIFFERENT STYLES”, and bold bottom right cover line “LOOK FAMOUS”. Include a small red translucent square overlay on one eye area with the word “CATCHY”.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style should feel premium, modern, cinematic, clean composition, sharp focus, ultra realistic skin texture, editorial luxury aesthetic, balanced negative space, timeless fashion cover design. Vertical magazine ratio, high resolution.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超现实-rolex-奢华腕表时尚海报&#34;&gt;超现实 Rolex 奢华腕表时尚海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Sheldon056/status/2047873913049538927&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Sheldon056&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Sheldon056&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/056.webp&#34;
	width=&#34;1086&#34;
	height=&#34;1448&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/056_hu_f062a2ae9ecc796.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/056_hu_6b8f3f5827776d86.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超现实 Rolex 奢华腕表时尚海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-fashion surrealist poster for Rolex. A deep emerald green minimalist studio with a polished reflective floor. A massive Rolex watch stands upright like a monument. A male model in a tailored dark green suit leans casually against the watch face, wearing a matching Rolex.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;孔雀植物复古对称艺术画&#34;&gt;孔雀植物复古对称艺术画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey/status/2047803054422901046&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@dotey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/057.webp&#34;
	width=&#34;1536&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/057_hu_1d9e0402fbb0405e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/057_hu_9a4124b40f74310f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;孔雀植物复古对称艺术画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;symmetrical design featuring two elegant blue peacocks with detailed feather patterns, surrounded by blue floral elements, intricate vintage botanical ornament, soft beige background, classical floral decor style with rich navy and sky blue details, decorative art illustration --ar 3:2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;splash-时尚品牌超写实广告海报&#34;&gt;SPLASH 时尚品牌超写实广告海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/miratechtool/status/2047780974709346606&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/miratechtool&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@miratechtool&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/058.webp&#34;
	width=&#34;1054&#34;
	height=&#34;1492&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/058_hu_7b524443874af7f8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/058_hu_5c9db5a9d7637f12.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;SPLASH 时尚品牌超写实广告海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a hyper-realistic fashion poster for “SPLASH” featuring the same girl from the reference image (keep her face 100% identical). She is sitting confidently on a glossy, liquid-style 3D SPLASH logo with water splash effects. One leg relaxed, one bent, strong editorial pose.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background has massive bold “SPLASH” text filling the frame, partially behind her. Add small tagline: “Own Your Style.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Outfit: modern black street-fashion (blazer, fitted top, trousers, sneakers).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: cinematic studio, soft key light + rim light, reflective highlights on liquid logo.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: luxury brand campaign (Zara / H&amp;amp;M), clean glossy environment.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Camera: 85mm lens, shallow depth of field, 8K, ultra-detailed, photorealistic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;先锋吉他雕塑时尚广告&#34;&gt;先锋吉他雕塑时尚广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/QamarRiaz1/status/2047777016733110722&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/QamarRiaz1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@QamarRiaz1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/059.webp&#34;
	width=&#34;1448&#34;
	height=&#34;1086&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/059_hu_9ce332a29f23dd91.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/059_hu_59f9454b2ce4155b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;先锋吉他雕塑时尚广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Avant-garde fashion advertisement, oversized guitar positioned like sculpture, a guitarist in jeans casually seated on the a button as if furniture, giant word &amp;#34;Plism Art&amp;#34; behind in bold white typography, powder pastel studio background, reflective floor, luxury eyewear campaign aesthetic, ultra-clean layout, editorial magazine styling, Bold quote &amp;#34; What are you listening&amp;#34;   Tag : Create Own Change
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;城市美食地图插画&#34;&gt;城市美食地图插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mm_zzm44854/status/2045861258520568230&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mm_zzm44854&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mm_zzm44854&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/060.webp&#34;
	width=&#34;1080&#34;
	height=&#34;1080&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/060_hu_e1522261822e773e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/060_hu_3a266ee6d774e351.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;城市美食地图插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;illustrated map infographic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;style&amp;#34;: &amp;#34;{argument name=\&amp;#34;art style\&amp;#34; default=\&amp;#34;watercolor and ink hand-drawn illustration on vintage parchment\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;title_section&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;text&amp;#34;: &amp;#34;{argument name=\&amp;#34;city name\&amp;#34; default=\&amp;#34;成都\&amp;#34;} {argument name=\&amp;#34;map title\&amp;#34; default=\&amp;#34;吃货暴走地图\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;mascot&amp;#34;: &amp;#34;cartoon red chili pepper wearing sunglasses and giving a thumbs up&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;border&amp;#34;: &amp;#34;{argument name=\&amp;#34;border decoration\&amp;#34; default=\&amp;#34;vine of green leaves and red chili peppers\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;background&amp;#34;: &amp;#34;textured beige parchment paper with yellow roads, blue rivers, and green park areas&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;landmarks&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 6,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;illustrations&amp;#34;: [&amp;#34;traditional pavilion&amp;#34;, &amp;#34;traditional monastery&amp;#34;, &amp;#34;modern skyscraper with climbing panda&amp;#34;, &amp;#34;tall TV tower&amp;#34;, &amp;#34;traditional gate&amp;#34;, &amp;#34;industrial buildings&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;人民公园&amp;#34;, &amp;#34;文殊院&amp;#34;, &amp;#34;IFS&amp;#34;, &amp;#34;339电视塔&amp;#34;, &amp;#34;宽窄巷子&amp;#34;, &amp;#34;东郊记忆&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;food_spots&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 12,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;illustrations&amp;#34;: [&amp;#34;mapo tofu&amp;#34;, &amp;#34;dumplings in chili oil&amp;#34;, &amp;#34;skewers in pot&amp;#34;, &amp;#34;sticky rice balls&amp;#34;, &amp;#34;egg baking cake&amp;#34;, &amp;#34;nine-grid hotpot&amp;#34;, &amp;#34;sweet potato noodles&amp;#34;, &amp;#34;cold skewers&amp;#34;, &amp;#34;spicy mixed dish&amp;#34;, &amp;#34;covered tea bowl&amp;#34;, &amp;#34;ice jelly dessert&amp;#34;, &amp;#34;spicy rabbit heads&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;1 陈麻婆豆腐&amp;#34;, &amp;#34;2 钟水饺&amp;#34;, &amp;#34;3 春熙路&amp;#34;, &amp;#34;4 宽窄巷子·三大炮&amp;#34;, &amp;#34;5 建设路·叶婆婆蛋烘糕&amp;#34;, &amp;#34;6 玉林路·小龙坎火锅&amp;#34;, &amp;#34;7 香香巷·肥肠粉&amp;#34;, &amp;#34;8 武侯祠大街·钵钵鸡&amp;#34;, &amp;#34;9 东郊记忆·冒椒火辣&amp;#34;, &amp;#34;10 人民公园·鹤鸣茶社&amp;#34;, &amp;#34;11 锦里古街·冰粉&amp;#34;, &amp;#34;12 双流老妈兔头&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;图例&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom-right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 5,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;items&amp;#34;: [&amp;#34;red dot&amp;#34;, &amp;#34;green house&amp;#34;, &amp;#34;green tree&amp;#34;, &amp;#34;blue line&amp;#34;, &amp;#34;yellow double line&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;美食地点&amp;#34;, &amp;#34;地标景点&amp;#34;, &amp;#34;公园绿地&amp;#34;, &amp;#34;河流湖泊&amp;#34;, &amp;#34;主要道路&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;centerpiece&amp;#34;: &amp;#34;giant panda sitting and eating bamboo&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_right_extras&amp;#34;: [&amp;#34;vintage compass rose with N, S, E, W&amp;#34;, &amp;#34;disclaimer text &amp;#39;温馨提示:吃辣需谨慎,肠胃要保护~&amp;#39; with a red chili pepper icon&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3d-石阶演变信息图&#34;&gt;3D 石阶演变信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX/status/2045792240044511277&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GeekCatX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/061.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/061_hu_11d526a0273d47c5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/061_hu_fc07f266c625fe79.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;3D 石阶演变信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;evolutionary timeline infographic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;instruction&amp;#34;: &amp;#34;Using REFERENCE_0 as a structural base, transform the flat vector design into a highly realistic 3D infographic. Replace the smooth ramps with distinct stone steps and upgrade all organisms to photorealistic 3D models.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;style&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;background&amp;#34;: &amp;#34;{argument name=\&amp;#34;background style\&amp;#34; default=\&amp;#34;vintage textured parchment paper\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;staircase&amp;#34;: &amp;#34;{argument name=\&amp;#34;staircase material\&amp;#34; default=\&amp;#34;realistic textured stone blocks\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;subjects&amp;#34;: &amp;#34;{argument name=\&amp;#34;organism style\&amp;#34; default=\&amp;#34;highly detailed photorealistic 3D renders\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;main_title&amp;#34;: &amp;#34;{argument name=\&amp;#34;main title\&amp;#34; default=\&amp;#34;人类演化\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;left sidebar&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 8,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;L0: 单细胞生命&amp;#34;, &amp;#34;L1: 多细胞生物&amp;#34;, &amp;#34;L2: 动物界&amp;#34;, &amp;#34;L3: 脊索动物&amp;#34;, &amp;#34;L4: 上陆革命&amp;#34;, &amp;#34;L5: 哺乳纲&amp;#34;, &amp;#34;L6: 人科演化&amp;#34;, &amp;#34;L7: 智人纪元&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;获得的功能 / 失去的功能&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;description&amp;#34;: &amp;#34;Legend with plus and minus icons&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom center&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;演化关键里程碑&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 6,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;description&amp;#34;: &amp;#34;Timeline with a silhouette graphic of 6 figures showing ape-to-human evolution&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;centerpiece&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;description&amp;#34;: &amp;#34;Winding stone staircase with 25 numbered steps featuring specific organisms.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;count&amp;#34;: 25,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;notable_elements&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 07: Jellyfish&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 09: Ammonite&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 10: Trilobite&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 24: Walking human&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 25: {argument name=\&amp;#34;future evolution concept\&amp;#34; default=\&amp;#34;glowing cosmic silhouette with a question mark\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;仿生-skyray-飞机海报&#34;&gt;仿生 Skyray 飞机海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/_simonsmith/status/2048172203946996041&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/_simonsmith&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@_simonsmith&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/062.webp&#34;
	width=&#34;569&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/062_hu_531e35a6a1142002.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/062_hu_33b717ad1d5e51b6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;仿生 Skyray 飞机海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;47&#34;
		data-flex-basis=&#34;113px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;biomimetic aerospace concept poster&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;vehicle&amp;#34;:&amp;#34;futuristic aircraft concept&amp;#34;,&amp;#34;name&amp;#34;:&amp;#34;{argument name=\&amp;#34;vehicle name\&amp;#34; default=\&amp;#34;SKYRAY\&amp;#34;}&amp;#34;,&amp;#34;inspiration&amp;#34;:&amp;#34;{argument name=\&amp;#34;animal inspiration\&amp;#34; default=\&amp;#34;stingray\&amp;#34;}&amp;#34;,&amp;#34;design&amp;#34;:&amp;#34;blended-wing-body aircraft shaped like a manta ray or stingray, wide triangular planform, smooth organic curves, sharp pointed nose, slightly raised central spine, tapered wing tips curling subtly upward, dark graphite-black metallic skin with fine panel lines and faint blue illuminated accents along edges and seams&amp;#34;},&amp;#34;style&amp;#34;:{&amp;#34;mood&amp;#34;:&amp;#34;premium futuristic industrial design presentation&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;hyper-detailed cinematic 3D concept art mixed with blueprint visualization&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;black, charcoal, gunmetal, silver, deep ocean blue, electric cyan highlights&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;low-key dramatic studio lighting with glossy reflections, cool rim light, subtle underwater ambience in the top inspiration strip&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;full black poster with faint technical grid lines and soft vignetting&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;header&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;emblem mark&amp;#34;,&amp;#34;SKYRAY&amp;#34;,&amp;#34;INSPIRED BY THE SEA. ENGINEERED FOR THE SKY.&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;evolution strip&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper middle&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;realistic stingray underwater at far left&amp;#34;,&amp;#34;top-view biological stingray study&amp;#34;,&amp;#34;abstract aerodynamic line sketch&amp;#34;,&amp;#34;faceted aircraft blueprint transition drawing&amp;#34;,&amp;#34;final sleek aircraft concept at far right&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;hero render&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;large three-quarter view of the aircraft&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;technical views grid&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower middle&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;TOP&amp;#34;,&amp;#34;SIDE&amp;#34;,&amp;#34;FRONT&amp;#34;,&amp;#34;REAR&amp;#34;,&amp;#34;UNDERSIDE&amp;#34;,&amp;#34;DETAIL&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;footer text&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;{argument name=\&amp;#34;body text\&amp;#34; default=\&amp;#34;A biomimetic high-speed aircraft concept shaped by the hydrodynamic elegance of the stingray. Its blended wing body, low-drag silhouette, and fluid control surfaces translate ocean-born efficiency into atmospheric performance.\&amp;#34;}&amp;#34;]}],&amp;#34;technical views&amp;#34;:{&amp;#34;TOP&amp;#34;:&amp;#34;top orthographic view with measurement ticks&amp;#34;,&amp;#34;SIDE&amp;#34;:&amp;#34;thin side profile with long smooth belly curve&amp;#34;,&amp;#34;FRONT&amp;#34;:&amp;#34;front orthographic view emphasizing broad wingspan and central cockpit hump&amp;#34;,&amp;#34;REAR&amp;#34;:&amp;#34;rear orthographic view showing narrow tail end and wing sweep&amp;#34;,&amp;#34;UNDERSIDE&amp;#34;:&amp;#34;underside three-quarter view&amp;#34;,&amp;#34;DETAIL&amp;#34;:&amp;#34;close-up crop of metallic skin, seam lines, and glowing blue edge strip&amp;#34;}},&amp;#34;graphics&amp;#34;:{&amp;#34;logo&amp;#34;:&amp;#34;minimal four-point symmetrical emblem above title, resembling a stylized ray silhouette&amp;#34;,&amp;#34;arrows&amp;#34;:&amp;#34;4 thin cyan arrows connecting the 5 stages in the evolution strip&amp;#34;,&amp;#34;typography&amp;#34;:&amp;#34;widely spaced modern sans-serif uppercase text, clean luxury-tech branding&amp;#34;},&amp;#34;camera&amp;#34;:{&amp;#34;hero render&amp;#34;:&amp;#34;slightly elevated front-left three-quarter angle&amp;#34;,&amp;#34;technical views&amp;#34;:&amp;#34;orthographic&amp;#34;,&amp;#34;inspiration image&amp;#34;:&amp;#34;underwater side angle with light rays from above&amp;#34;},&amp;#34;quality&amp;#34;:&amp;#34;ultra-clean, polished, high contrast, sharp, poster-ready, concept design board for aerospace branding or speculative industrial design&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;道教三魂七魄海报&#34;&gt;道教三魂七魄海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/leyu37829/status/2048125950681075833&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/leyu37829&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@leyu37829&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/063.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/063_hu_c232614ef0c677ad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/063_hu_98a733b8e5499d36.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;道教三魂七魄海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly detailed vertical Taoist esoteric infographic poster in the style of an ancient Chinese religious scroll, printed on aged beige rice paper with fine ornamental borders, inked calligraphy, faded stains, and classical diagram annotations. At the top center, large black brush-calligraphy title text reads {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;道·三魂七魄&amp;#34;}. Directly below the title is a smaller paragraph of classical Chinese explanatory text in neat calligraphy. The composition is perfectly symmetrical and centered on a glowing vertical spiritual axis made of white-gold energy, mist, and lightning-like qi currents running from the bottom of the page to the heavens. At the very top, above the axis, depict 3 seated Taoist immortals or deities on clouds in a golden celestial realm, arranged left, center, and right, with halos and flowing robes in muted green, cream, and blue. Beneath them, create a towering multi-layered cosmological body diagram made of 9 stacked circular realms or platforms connected by swirling clouds and luminous energy. The upper 5 larger realms represent the five zang organs as miniature mythic landscapes: 1 forested green realm labeled liver/wood, 1 fiery red-gold temple city realm labeled heart/fire, 1 yellow earth realm with terraces labeled spleen/earth, 1 silver-blue mountain-and-water realm labeled lung/metal, and 1 dark blue watery abyss realm labeled kidney/water. Place a glowing meditating figure in a bright orb at the center junction between the upper organ realms and lower spirit layers. Below these, add 7 progressively darker circular underworld-like realms for the seven po souls, each densely populated with tiny scenes of human figures, spirits, beasts, ritual activity, suffering, temptation, conflict, and karmic symbolism, all wrapped by drifting smoke and energy ribbons. At the very bottom, show a seated human figure in meditation within a root-like cavern or corporeal foundation, surrounded by chains, rocks, and embodied worldly attachments. Around the central column, include exactly 9 labeled side panels and diagrams in traditional Chinese layout: top left a bagua and yin-yang cosmology circle; top right a dotted numerological or constellation-like chart; left upper a boxed list for 3 souls; right upper a boxed list for 7 po souls; left middle a five-elements relationship diagram with 5 colored nodes; right middle a circular essence-qi-spirit cycle diagram with 3 nodes; left lower a vertical boxed list of 7 categories or stages; right lower a boxed correspondence table; bottom left a five-direction and five-element human-body relation chart; bottom right a standing and seated meridian or cultivation body diagram. Use many small Chinese labels throughout every section, with classical seal stamps in red. The overall palette is antique parchment, sepia ink, muted jade, cinnabar red, smoky gray, gold, teal, and indigo. The style should feel like a museum-quality Daoist metaphysical chart, ultra intricate, hand-painted gongbi plus ink wash illustration, sacred, mystical, scholarly, dense with symbolism, extremely fine linework, soft cloud layering, and high-resolution poster design.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;复古-claude-shannon-信息图海报&#34;&gt;复古 Claude Shannon 信息图海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17/status/2048118645017219381&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mob_17&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/064.webp&#34;
	width=&#34;1200&#34;
	height=&#34;849&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/064_hu_76812c0cd0392b65.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/064_hu_362a7a69ff76f1c3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;复古 Claude Shannon 信息图海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;141&#34;
		data-flex-basis=&#34;339px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;vintage editorial infographic poster&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;Claude Shannon and information theory&amp;#34;,&amp;#34;style&amp;#34;:{&amp;#34;era&amp;#34;:&amp;#34;1940s Bell Labs archival poster&amp;#34;,&amp;#34;look&amp;#34;:&amp;#34;aged cream paper, blueprint drafting grid, thin ink linework, muted navy and charcoal printing, subtle stains and paper wear, technical illustration mixed with newspaper editorial design&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;high-detail diagrammatic collage with engraved portrait, scientific charts, labeled panels, and hand-drawn signal graphics&amp;#34;},&amp;#34;poster&amp;#34;:{&amp;#34;headline&amp;#34;:&amp;#34;Claude Shannon — The Architecture of Information&amp;#34;,&amp;#34;subheadline&amp;#34;:&amp;#34;How uncertainty became measurable, and communication became engineering.&amp;#34;,&amp;#34;topRightMeta&amp;#34;:{&amp;#34;note&amp;#34;:&amp;#34;NOTE TOSELF No. 6713–2&amp;#34;,&amp;#34;date&amp;#34;:&amp;#34;MAY 1948&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;A Mathematical Theory of Communication&amp;#34;}},&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;left archival sidebar&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;far left vertical column&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;BELL LABORATORIES MURRAY HILL, N.J.&amp;#34;,&amp;#34;ENGINEERING THE INTANGIBLE&amp;#34;,&amp;#34;CLAUDE E. SHANNON 1916–2001&amp;#34;,&amp;#34;TOOLS OF THE INFORMATION AGE&amp;#34;,&amp;#34;quote panel&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;THE COMMUNICATION MODEL&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper middle wide panel&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;1 INFORMATION SOURCE&amp;#34;,&amp;#34;2 ENCODER&amp;#34;,&amp;#34;3 CHANNEL&amp;#34;,&amp;#34;4 DECODER&amp;#34;,&amp;#34;5 DESTINATION&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;ENTROPY: THE MEASURE OF UNCERTAINTY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper right box&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;H(X) = −Σ p(x) log2 p(x)&amp;#34;,&amp;#34;PROBABILITY DISTRIBUTION p(x)&amp;#34;,&amp;#34;MORE EVEN MORE MAXED UNCERTAINTY&amp;#34;,&amp;#34;MORE LOPSIDED LESS UNCERTAINTY&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;lower theory panels&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle to lower band&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;A ENTROPY — uncertainty before a message is known&amp;#34;,&amp;#34;B NOISE — randomness that corrupts transmission&amp;#34;,&amp;#34;C Redundancy &amp;amp; Error Correction — structure added so signals can survive failure&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;THEORY THAT TRANSFORMED CIVILIZATION&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom horizontal timeline&amp;#34;,&amp;#34;count&amp;#34;:8,&amp;#34;labels&amp;#34;:[&amp;#34;1840s TELEGRAPHY&amp;#34;,&amp;#34;1876+ TELEPHONE NETWORKS&amp;#34;,&amp;#34;1930s–40s DIGITAL COMPUTERS&amp;#34;,&amp;#34;1950s–60s SATELLITE COMMUNICATION&amp;#34;,&amp;#34;1970s INTERNET PROTOCOLS&amp;#34;,&amp;#34;1980s–90s DATA COMPRESSION&amp;#34;,&amp;#34;1990s–2000s CRYPTOGRAPHY&amp;#34;,&amp;#34;2010s+ AI &amp;amp; INFORMATION SYSTEMS&amp;#34;]}],&amp;#34;centerpiece&amp;#34;:&amp;#34;a large abstract cloud of blue and gray signal noise, dots, lines, and waveforms behind the communication model, with arrows moving left to right through the five stages&amp;#34;},&amp;#34;visualElements&amp;#34;:{&amp;#34;portrait&amp;#34;:{&amp;#34;subject&amp;#34;:&amp;#34;{argument name=\&amp;#34;scientist name\&amp;#34; default=\&amp;#34;Claude Shannon\&amp;#34;}&amp;#34;,&amp;#34;placement&amp;#34;:&amp;#34;left-center&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;black-and-white archival seated portrait at a desk with the face intentionally obscured by a pale square censor block, wearing suit and tie, writing on paper&amp;#34;},&amp;#34;objectsLeft&amp;#34;:[&amp;#34;rotary telephone on desk&amp;#34;,&amp;#34;open notebook or papers&amp;#34;,&amp;#34;technical console with CRT screen and knobs behind portrait&amp;#34;,&amp;#34;small icon row of 4 tools: oscilloscope, signal meter, relay, punched tape&amp;#34;],&amp;#34;communicationModel&amp;#34;:[&amp;#34;book and symbols under source&amp;#34;,&amp;#34;binary digits under encoder&amp;#34;,&amp;#34;large noisy channel cloud with wave overlays&amp;#34;,&amp;#34;binary digits and interpretation under decoder&amp;#34;,&amp;#34;light bulb icon under destination&amp;#34;],&amp;#34;chartsAndDiagrams&amp;#34;:[&amp;#34;bar chart for entropy probabilities&amp;#34;,&amp;#34;two low vs high entropy mini bar charts&amp;#34;,&amp;#34;tree diagram and entropy notation&amp;#34;,&amp;#34;signal distortion sketches labeled thermal noise, cross talk, distortion&amp;#34;,&amp;#34;error-correction binary pipeline from original message to recovered message&amp;#34;],&amp;#34;bottomDecor&amp;#34;:[&amp;#34;small waveform legend with sine wave, digital signal, and noise&amp;#34;,&amp;#34;archival stamp or footer on lower right&amp;#34;]},&amp;#34;color&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;warm ivory paper&amp;#34;,&amp;#34;primaryInk&amp;#34;:&amp;#34;dark navy&amp;#34;,&amp;#34;secondaryInk&amp;#34;:&amp;#34;charcoal gray&amp;#34;,&amp;#34;accent&amp;#34;:&amp;#34;faded steel blue&amp;#34;},&amp;#34;composition&amp;#34;:&amp;#34;symmetrical wide poster with dense boxed annotations, fine border lines, and a museum-quality educational infographic feel&amp;#34;,&amp;#34;textDensity&amp;#34;:&amp;#34;very high, with many small labels, formulas, captions, and historical notes in a carefully organized grid&amp;#34;,&amp;#34;aspectRatio&amp;#34;:&amp;#34;16:9 landscape&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;郑问致敬水墨海报&#34;&gt;郑问致敬水墨海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17/status/2048118645017219381&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mob_17&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/065.webp&#34;
	width=&#34;849&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/065_hu_7220895371d0d86.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/065_hu_969f4ee59faccfd2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;郑问致敬水墨海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a vintage editorial poster on aged rice paper celebrating {argument name=&amp;#34;artist name&amp;#34; default=&amp;#34;CHEN UEN&amp;#34;}, designed like a museum infographic mixed with Chinese ink wash illustration and calligraphy. The format is a single vertically oriented poster with a weathered parchment background, ink splatters, faded handwritten annotations, red seal stamps, and a scholarly, archival atmosphere. At the very top, place large black Chinese calligraphy for the name 鄭問, followed by a slash and the romanized name {argument name=&amp;#34;romanized name&amp;#34; default=&amp;#34;CHEN UEN&amp;#34;} in large serif capitals, with a small red seal beside it. Under the title, add the subtitle {argument name=&amp;#34;subtitle text&amp;#34; default=&amp;#34;The Taiwanese Master Who Turned Comics into Ink-Born Epic&amp;#34;} in elegant reddish-brown serif text. In the center, feature a dramatic painterly scene of 1 seated male artist in a loose white shirt at a desk, holding a brush over paper, his face intentionally obscured by a soft rectangular blur. Behind him, surround him with a swirling halo-like storm of monochrome ink-brush warriors and historical figures: exact count 9 visible character figures, including armored generals, swordsmen, and mounted riders, emerging from explosive black brushwork and smoke-like ink textures. On the left side, create a vertical section titled “Life &amp;amp; Milestones” with a black brushstroke header and smaller Chinese subtitle text. List exactly 6 timeline entries with red year markers and bilingual captions: 1958 born in Taiwan, 1983 Warrior Panther, 1989 Abi Sword, 1990 Heroes of the Eastern Zhou, 1991 Japan Cartoonists Association Award, 2017 legacy continues. Below that, add a small section titled “Ink in Detail” containing exactly 4 boxed brush studies labeled with short English captions: Dry brush texture, Ink wash gradient, Splatter energy, Bold contour line. On the right side, create a vertical section titled “Visual Method” with a black brushstroke header and smaller Chinese subtitle text. Include exactly 5 stacked boxed studies with image-and-caption layout: Brush as blade, Ink as atmosphere, Anatomy as fate, History as theatre, Speed lines become calligraphy. In the lower center, create a section titled “Major Works Constellation” with a dark brushstroke heading. Arrange exactly 5 circular work nodes around a central ink ring with Chinese calligraphy inside. Label the 5 nodes: Abi Sword, Heroes of the Eastern Zhou, Assassin Biographies, Magical Super Asia, Game character design legacy. Each circle contains a distinct monochrome or muted-color ink illustration, with subtle connecting marks like a constellation diagram. At the lower right, add a section titled “Studio Notes” containing exactly 6 visible objects: 4 hanging calligraphy brushes, 1 ink bowl, and 1 painter’s palette with blue and red pigment; beneath them place a sketchbook page with light pencil figure studies. Across the bottom, add a wide section titled “Why He Matters” with a black brushstroke header and smaller Chinese subtitle text, followed by a paragraph of serif body text in English describing his importance to comics, painting, calligraphy, cinema, and epic storytelling. Use a restrained palette of sepia, black ink, off-white paper, muted gray, with small accents of deep red and occasional blue. The whole image should feel like a refined cultural tribute poster, dense but balanced, highly detailed, painterly, and authentic to Chinese ink aesthetics.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;水象星座角色海报&#34;&gt;水象星座角色海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/066.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/066_hu_fa9b9087f2064039.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/066_hu_d08b612af3d235a1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;水象星座角色海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Chinese zodiac-style character infographic poster&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;twelve zodiac character list, water signs edition&amp;#34;,&amp;#34;language&amp;#34;:&amp;#34;Traditional Chinese&amp;#34;,&amp;#34;format&amp;#34;:&amp;#34;vertical poster&amp;#34;,&amp;#34;style&amp;#34;:{&amp;#34;overall&amp;#34;:&amp;#34;elegant anime-inspired character catalog with editorial infographic layout&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;soft polished digital illustration, pastel gradients, delicate sparkles, ornamental border design&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;dreamy, celestial, refined, feminine, aquatic&amp;#34;},&amp;#34;canvas&amp;#34;:{&amp;#34;aspect_ratio&amp;#34;:&amp;#34;2:3&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;very light pearl white with pale blue-lavender tint, subtle texture, thin decorative frame with filigree corners and tiny stars&amp;#34;},&amp;#34;header&amp;#34;:{&amp;#34;title&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;十二星座角色清單|水象星座\&amp;#34;}&amp;#34;,&amp;#34;subtitle&amp;#34;:&amp;#34;感受・直覺・共鳴&amp;#34;,&amp;#34;icons&amp;#34;:[&amp;#34;small stars&amp;#34;,&amp;#34;water droplet emblem in top right&amp;#34;,&amp;#34;curled cloud-like line art in top left&amp;#34;]},&amp;#34;layout&amp;#34;:{&amp;#34;sections_count&amp;#34;:3,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;巨蟹座 Cancer&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top panel&amp;#34;,&amp;#34;theme_color&amp;#34;:&amp;#34;powder blue&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Cancer glyph inside circle at left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;Cancer constellation at upper right&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;元素:水&amp;#34;,&amp;#34;概念:情感守護者,把人放在心上&amp;#34;,&amp;#34;性格:溫柔、敏感、顧家&amp;#34;,&amp;#34;行動原則:先確認感受,再保護重要的人&amp;#34;,&amp;#34;戀愛傾向:慢慢靠近,越熟越黏&amp;#34;,&amp;#34;人際怪癖:嘴上說沒事,實際會記很久&amp;#34;],&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;same young woman model reimagined as zodiac character&amp;#34;,&amp;#34;pose&amp;#34;:&amp;#34;half-body portrait, facing forward, arms gently wrapped around a large seashell pillow&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark hair in a low ponytail&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;light blue celestial slip dress with lace trim and sheer cardigan embroidered with stars and moons&amp;#34;,&amp;#34;accessories&amp;#34;:&amp;#34;minimal jewelry&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;soft blue night sky with crescent moon, seashell, sparkling stars, stylized ocean wave and tiny water droplets&amp;#34;}},{&amp;#34;title&amp;#34;:&amp;#34;天蠍座 Scorpio&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle panel&amp;#34;,&amp;#34;theme_color&amp;#34;:&amp;#34;deep violet&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Scorpio glyph inside circle at left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;Scorpio constellation at upper right&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;元素:水&amp;#34;,&amp;#34;概念:深海偵察者,情緒有深度&amp;#34;,&amp;#34;性格:專注、神秘、意志強&amp;#34;,&amp;#34;行動原則:先觀察,再一擊到位&amp;#34;,&amp;#34;戀愛傾向:愛得深,重忠誠與獨占感&amp;#34;,&amp;#34;人際怪癖:越在乎越不說,會偷偷試探&amp;#34;],&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;same young woman model reimagined as zodiac character&amp;#34;,&amp;#34;pose&amp;#34;:&amp;#34;half-body portrait, one hand near chin in a composed, enigmatic gesture&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark ponytail&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;black semi-sheer dress with gothic details and a dark plum off-shoulder shawl&amp;#34;,&amp;#34;accessories&amp;#34;:&amp;#34;dangling earrings and layered necklace&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;dark purple celestial sea scene with crescent moon, bubbles, stars, and curling misty water shapes&amp;#34;}},{&amp;#34;title&amp;#34;:&amp;#34;雙魚座 Pisces&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom panel&amp;#34;,&amp;#34;theme_color&amp;#34;:&amp;#34;lavender&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Pisces glyph inside circle at left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;Pisces constellation at upper right&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;元素:水&amp;#34;,&amp;#34;概念:夢境共感者,靠直覺導航&amp;#34;,&amp;#34;性格:浪漫、柔軟、有想像力&amp;#34;,&amp;#34;行動原則:先感受,再順流找答案&amp;#34;,&amp;#34;戀愛傾向:容易心動,渴望靈魂陪伴&amp;#34;,&amp;#34;人際怪癖:常把別人的情緒也一起感受&amp;#34;],&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;same young woman model reimagined as zodiac character&amp;#34;,&amp;#34;pose&amp;#34;:&amp;#34;half-body portrait, one hand lifted as if balancing floating bubbles, other hand resting lightly at chest&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark ponytail with a pale flower hair ornament&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;translucent lavender fantasy dress with soft draped sleeves and shimmering fabric&amp;#34;,&amp;#34;accessories&amp;#34;:&amp;#34;delicate earrings and necklace&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;pale lilac underwater-celestial blend with bubbles, sparkles, and flowing translucent wave forms&amp;#34;}}],&amp;#34;dividers&amp;#34;:&amp;#34;three horizontal framed panels with thin ornamental borders&amp;#34;},&amp;#34;footer&amp;#34;:{&amp;#34;center_icon&amp;#34;:&amp;#34;small blue seashell emblem&amp;#34;,&amp;#34;decorations&amp;#34;:[&amp;#34;tiny stars&amp;#34;,&amp;#34;fine scrollwork&amp;#34;]},&amp;#34;constraints&amp;#34;:[&amp;#34;all three zodiac entries must use the same woman as the base character with different styling, clothing, pose, and mood&amp;#34;,&amp;#34;text should be clean, editorial, and readable&amp;#34;,&amp;#34;each panel should clearly separate illustration area on the left and text block on the right&amp;#34;,&amp;#34;maintain cohesive water-element theme across all 3 signs&amp;#34;,&amp;#34;do not include the other nine zodiac signs in this image&amp;#34;]}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;土象星座角色海报&#34;&gt;土象星座角色海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/067.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/067_hu_f718ee29bebcc79f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/067_hu_b8570c65f3d8c476.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;土象星座角色海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;vintage zodiac character infographic poster&amp;#34;,&amp;#34;theme&amp;#34;:&amp;#34;earth signs only&amp;#34;,&amp;#34;language&amp;#34;:&amp;#34;Traditional Chinese&amp;#34;,&amp;#34;style&amp;#34;:{&amp;#34;overall&amp;#34;:&amp;#34;elegant editorial infographic with soft anime-inspired live-action portrait compositing&amp;#34;,&amp;#34;palette&amp;#34;:&amp;#34;warm beige, cream, taupe, olive-gray, muted brown, antique gold&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;stable, refined, calm, practical&amp;#34;,&amp;#34;texture&amp;#34;:&amp;#34;aged paper background with subtle speckles and thin ornamental borders&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;clean high-resolution print poster, soft lighting, delicate botanical and celestial line art&amp;#34;},&amp;#34;poster&amp;#34;:{&amp;#34;orientation&amp;#34;:&amp;#34;vertical&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;3:4&amp;#34;,&amp;#34;title&amp;#34;:&amp;#34;十二星座角色清單|土象星座&amp;#34;,&amp;#34;subtitle&amp;#34;:&amp;#34;穩定・務實・沉著&amp;#34;,&amp;#34;decorations&amp;#34;:[&amp;#34;ornamental corner filigree&amp;#34;,&amp;#34;small gold sparkles&amp;#34;,&amp;#34;botanical branches&amp;#34;,&amp;#34;mountain illustrations&amp;#34;,&amp;#34;thin panel dividers&amp;#34;],&amp;#34;sections_count&amp;#34;:3},&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;金牛座 Taurus&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;元素:土&amp;#34;,&amp;#34;概念:感官收藏家,穩穩生活&amp;#34;,&amp;#34;性格:務實、耐心、重享受&amp;#34;,&amp;#34;行動原則:先確認值得,再長線投入&amp;#34;,&amp;#34;戀愛傾向:慢熱但專情,重安全感&amp;#34;,&amp;#34;人際怪癖:對喜歡的人會默默餵食&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;處女座 Virgo&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;元素:土&amp;#34;,&amp;#34;概念:秩序管理者,細節控場&amp;#34;,&amp;#34;性格:理性、細膩、可靠&amp;#34;,&amp;#34;行動原則:先整理,再精準出手&amp;#34;,&amp;#34;戀愛傾向:用照顧和實際行動表達喜歡&amp;#34;,&amp;#34;人際怪癖:嘴上挑剔,心裡其實很在乎&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;摩羯座 Capricorn&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;元素:土&amp;#34;,&amp;#34;概念:登峰實幹家,目標導向&amp;#34;,&amp;#34;性格:穩重、自律、有責任感&amp;#34;,&amp;#34;行動原則:先規劃,再穩定推進&amp;#34;,&amp;#34;戀愛傾向:慢熟務實,願意長期承諾&amp;#34;,&amp;#34;人際怪癖:關心常包裝成提醒與安排&amp;#34;]}],&amp;#34;centerpiece&amp;#34;:&amp;#34;three stacked horizontal character cards, each with a portrait on the left and text profile on the right&amp;#34;},&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;the same young East Asian woman appears in all 3 sections&amp;#34;,&amp;#34;age&amp;#34;:&amp;#34;early 20s&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark brown to black hair in a low ponytail with side part&amp;#34;,&amp;#34;face&amp;#34;:&amp;#34;soft feminine features, natural makeup, calm expression&amp;#34;,&amp;#34;customization&amp;#34;:&amp;#34;keep the same base character across all zodiac entries, differentiated by wardrobe, pose, props, and themed background motifs&amp;#34;},&amp;#34;cards&amp;#34;:[{&amp;#34;sign&amp;#34;:&amp;#34;Taurus&amp;#34;,&amp;#34;symbol&amp;#34;:&amp;#34;♉&amp;#34;,&amp;#34;portrait&amp;#34;:{&amp;#34;pose&amp;#34;:&amp;#34;waist-up, slightly turned, holding a ceramic mug with both hands&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;cream knit sleeveless top under a soft sage-gray cardigan with delicate floral embroidery&amp;#34;,&amp;#34;expression&amp;#34;:&amp;#34;gentle, relaxed, nurturing&amp;#34;,&amp;#34;props_count&amp;#34;:1,&amp;#34;props&amp;#34;:[&amp;#34;mug&amp;#34;]},&amp;#34;background&amp;#34;:&amp;#34;large pale circular halo, floral branch illustration, soft botanical motifs, small mountain drawing in upper right&amp;#34;,&amp;#34;visual_concept&amp;#34;:&amp;#34;comfort, sensuality, domestic calm, slow living&amp;#34;},{&amp;#34;sign&amp;#34;:&amp;#34;Virgo&amp;#34;,&amp;#34;symbol&amp;#34;:&amp;#34;♍&amp;#34;,&amp;#34;portrait&amp;#34;:{&amp;#34;pose&amp;#34;:&amp;#34;waist-up, one hand holding a pen near the chin, the other arm holding an open notebook or planner&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;light cream blouse with a bow tie collar under a pale sage vest with gold buttons&amp;#34;,&amp;#34;expression&amp;#34;:&amp;#34;thoughtful, analytical, composed&amp;#34;,&amp;#34;props_count&amp;#34;:2,&amp;#34;props&amp;#34;:[&amp;#34;pen&amp;#34;,&amp;#34;notebook&amp;#34;]},&amp;#34;background&amp;#34;:&amp;#34;fine geometric diagram lines, botanical sprigs, diamond emblem with leaf motif&amp;#34;,&amp;#34;visual_concept&amp;#34;:&amp;#34;order, precision, intelligence, organization&amp;#34;},{&amp;#34;sign&amp;#34;:&amp;#34;Capricorn&amp;#34;,&amp;#34;symbol&amp;#34;:&amp;#34;♑&amp;#34;,&amp;#34;portrait&amp;#34;:{&amp;#34;pose&amp;#34;:&amp;#34;waist-up, arms crossed, confident upright stance&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;charcoal tailored blazer over a dark vest and crisp white shirt, small round lapel pin&amp;#34;,&amp;#34;expression&amp;#34;:&amp;#34;serious, disciplined, self-assured&amp;#34;,&amp;#34;props_count&amp;#34;:0,&amp;#34;props&amp;#34;:[]},&amp;#34;background&amp;#34;:&amp;#34;dramatic layered mountain landscape in sepia tones with subtle star-like sparkles&amp;#34;,&amp;#34;visual_concept&amp;#34;:&amp;#34;ambition, endurance, authority, climbing toward goals&amp;#34;}],&amp;#34;typography&amp;#34;:{&amp;#34;title_font&amp;#34;:&amp;#34;classic high-contrast serif Chinese type&amp;#34;,&amp;#34;sign_name_font&amp;#34;:&amp;#34;large bold Chinese serif with elegant italic Latin zodiac name&amp;#34;,&amp;#34;body_font&amp;#34;:&amp;#34;clean readable Chinese print font&amp;#34;,&amp;#34;icon_style&amp;#34;:&amp;#34;filled circular brown icons next to each bullet line&amp;#34;},&amp;#34;composition&amp;#34;:{&amp;#34;margin&amp;#34;:&amp;#34;generous cream margins&amp;#34;,&amp;#34;panel_style&amp;#34;:&amp;#34;rounded rectangular panels with thin gold-brown borders&amp;#34;,&amp;#34;spacing&amp;#34;:&amp;#34;even vertical stacking with narrow separators&amp;#34;,&amp;#34;text_alignment&amp;#34;:&amp;#34;left-aligned profile bullets on the right side of each card&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;火象星座角色海报&#34;&gt;火象星座角色海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/068.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/068_hu_7ef6d97057f11809.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/068_hu_ea85fb4d58a7f224.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;火象星座角色海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A polished vertical infographic poster in elegant East Asian editorial style, themed around the fire signs of the zodiac using one consistent female character reimagined in three different costumes. Cream parchment background with thin ornamental borders, small corner flourishes, tiny sparkles, and warm red-orange-gold accents throughout. Large Chinese headline at the top reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;十二星座角色清單|火象星座&amp;#34;}, with a smaller subheading beneath reading {argument name=&amp;#34;subheading text&amp;#34; default=&amp;#34;熱情・行動・勇氣&amp;#34;}, and a decorative flame icon at the top right. The layout contains exactly 3 stacked profile panels with rounded rectangular borders and generous margins: Aries on top, Leo in the middle, Sagittarius on the bottom. Each panel is split visually with the character on the left and a text/spec area on the right, plus a zodiac symbol badge on the far left and a small constellation diagram on the far right.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use the same young East Asian woman in all 3 panels, slim build, long dark hair in a high ponytail, shown from about thigh-up to waist-up, facing slightly toward camera, styled as a fashion-model zodiac character sheet. Keep facial features neutral and refined, clean beauty lighting, soft airbrushed illustration-photo composite look.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 1: Aries. Chinese title and English subtitle: &amp;#34;牡羊座 Aries&amp;#34;. Dominant color scheme: vivid red with warm coral highlights. Zodiac symbol badge shows Aries glyph. Constellation on the right. Behind the character, faint circular mystical line art and flame motifs. Outfit: sporty warrior idol styling with a white crop top, red open short-sleeve jacket with gold trim, red belt, and red wrist wraps or fingerless arm accessories. Pose: confident, energetic, one fist raised near the shoulder and the other hand on her hip. Include exactly 6 info lines with small circular icons before each line, all in Chinese: 1) &amp;#34;元素:火&amp;#34; 2) &amp;#34;概念:點火者,直覺先行&amp;#34; 3) &amp;#34;性格:熱情、直接、好勝&amp;#34; 4) &amp;#34;行動原則:先衝再修正&amp;#34; 5) &amp;#34;戀愛傾向:心動就追,喜歡熱烈互動&amp;#34; 6) &amp;#34;人際怪癖:嫌節奏太慢時會自己接手&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 2: Leo. Chinese title and English subtitle: &amp;#34;獅子座 Leo&amp;#34;. Dominant color scheme: gold, champagne, and soft amber. Zodiac symbol badge shows Leo glyph. Constellation on the right. Background includes radiant sunburst styling and a faint majestic lion illustration silhouette behind the character. Outfit: glamorous regal gown in pale gold with ornate embroidery, jeweled bodice details, flowing translucent cape sleeves, elegant necklace, and a small crown or tiara. Pose: poised and queenly, one hand lightly touching the chest or collarbone, shoulders open, projecting confidence and star power. Include exactly 6 info lines with small circular icons before each line, all in Chinese: 1) &amp;#34;元素:火&amp;#34; 2) &amp;#34;概念:舞台中心,自帶光芒&amp;#34; 3) &amp;#34;性格:大方、自信、要面子&amp;#34; 4) &amp;#34;行動原則:先定氣場,再帶隊前進&amp;#34; 5) &amp;#34;戀愛傾向:喜歡被偏愛,也樂於寵人&amp;#34; 6) &amp;#34;人際怪癖:明明在意,卻要裝沒事&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 3: Sagittarius. Chinese title and English subtitle: &amp;#34;射手座 Sagittarius&amp;#34;. Dominant color scheme: rust red, burnt orange, brown leather, and warm ivory. Zodiac symbol badge shows Sagittarius glyph. Constellation on the right. Background features faint compass-circle graphics and flame accents. Outfit: adventurous archer styling with an ivory blouse, red scarf, brown leather harness straps, utility belt, and arm bracers. Pose: dynamic action shot drawing a bow, arrow aimed to the right, with a small glowing spark at the bow grip or arrow rest. Include exactly 6 info lines with small circular icons before each line, all in Chinese: 1) &amp;#34;元素:火&amp;#34; 2) &amp;#34;概念:自由旅人,邊走邊發現&amp;#34; 3) &amp;#34;性格:樂觀、坦率、好奇&amp;#34; 4) &amp;#34;行動原則:先出發,路上再找答案&amp;#34; 5) &amp;#34;戀愛傾向:喜歡輕鬆真誠,不愛被綁住&amp;#34; 6) &amp;#34;人際怪癖:聊到一半常被新鮮事帶走&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Overall design should feel premium, feminine, mystical, and collectible, like a social-media-ready zodiac character list poster. Use elegant serif-style Chinese typography for the main sign names and italic calligraphic English for Aries, Leo, and Sagittarius. Keep all text crisp, aligned, and readable. Add one small decorative fire emblem centered near the bottom border. Aspect ratio 3:4 portrait.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;风象星座角色海报&#34;&gt;风象星座角色海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/069.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/069_hu_42522190a4347a3c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/069_hu_cb063e06d04af3cd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;风象星座角色海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Chinese zodiac-themed character infographic poster&amp;#34;,&amp;#34;format&amp;#34;:&amp;#34;vertical poster&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;3:4&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;clean pastel editorial infographic with anime-inspired fashion photography, soft magical accents, elegant horoscope design, premium magazine layout&amp;#34;,&amp;#34;background&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;warm ivory&amp;#34;,&amp;#34;border&amp;#34;:&amp;#34;thin decorative gold frame with small ornamental corners and tiny sparkles&amp;#34;,&amp;#34;top_right_motif&amp;#34;:&amp;#34;large pale air-element swirl ornament&amp;#34;},&amp;#34;title_block&amp;#34;:{&amp;#34;headline&amp;#34;:&amp;#34;十二星座角色清單|風象星座&amp;#34;,&amp;#34;subheadline&amp;#34;:&amp;#34;靈活・交流・思辨&amp;#34;,&amp;#34;alignment&amp;#34;:&amp;#34;top center&amp;#34;,&amp;#34;headline_color&amp;#34;:&amp;#34;deep desaturated blue&amp;#34;,&amp;#34;subheadline_color&amp;#34;:&amp;#34;muted gold&amp;#34;},&amp;#34;subject&amp;#34;:{&amp;#34;count&amp;#34;:3,&amp;#34;description&amp;#34;:&amp;#34;the same young East Asian woman used as the base character appears in 3 separate horoscope panels, each shown from about thigh-up to waist-up with long dark hair and soft feminine styling, photographed frontally and integrated into illustrated pastel zodiac backdrops&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;雙子座 Gemini&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top panel&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;theme_color&amp;#34;:&amp;#34;butter yellow and cream&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Gemini glyph inside a circle on the left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;small Gemini constellation in the upper right&amp;#34;,&amp;#34;character_pose&amp;#34;:&amp;#34;playful double peace signs raised beside her face&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;pale yellow cardigan over a white ribbed crop top, light bottoms, yellow belt, delicate necklace&amp;#34;,&amp;#34;background_motifs_count&amp;#34;:4,&amp;#34;background_motifs&amp;#34;:[&amp;#34;speech bubble icon&amp;#34;,&amp;#34;sparkles&amp;#34;,&amp;#34;curved flowing lines&amp;#34;,&amp;#34;soft dots&amp;#34;],&amp;#34;text_items_count&amp;#34;:6,&amp;#34;text_items&amp;#34;:[&amp;#34;元素:風&amp;#34;,&amp;#34;概念:資訊玩家,靈感跳接&amp;#34;,&amp;#34;性格:機靈、善聊、多變&amp;#34;,&amp;#34;行動原則:先交流,再快速轉向&amp;#34;,&amp;#34;戀愛傾向:喜歡有趣互動與腦力火花&amp;#34;,&amp;#34;人際怪癖:話題切換速度快到像開分頁&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;天秤座 Libra&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle panel&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;theme_color&amp;#34;:&amp;#34;blush pink and pastel lavender&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Libra glyph inside a circle on the left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;small Libra constellation in the upper right&amp;#34;,&amp;#34;character_pose&amp;#34;:&amp;#34;one hand raised open-palmed as if presenting balance, the other hand near her chin in an elegant thoughtful pose&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;pink blazer draped over shoulders, pastel pink-and-blue wrapped dress, jeweled belt, earrings, necklace, bracelet&amp;#34;,&amp;#34;background_motifs_count&amp;#34;:4,&amp;#34;background_motifs&amp;#34;:[&amp;#34;scales illustration&amp;#34;,&amp;#34;flowing ribbon-like swirls&amp;#34;,&amp;#34;sparkles&amp;#34;,&amp;#34;soft gradient haze&amp;#34;],&amp;#34;text_items_count&amp;#34;:6,&amp;#34;text_items&amp;#34;:[&amp;#34;元素:風&amp;#34;,&amp;#34;概念:關係設計師,追求平衡&amp;#34;,&amp;#34;性格:優雅、圓融、審美強&amp;#34;,&amp;#34;行動原則:先衡量,再找最順解法&amp;#34;,&amp;#34;戀愛傾向:重氛圍與互相體面&amp;#34;,&amp;#34;人際怪癖:選太久,但又很會照顧場面&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;水瓶座 Aquarius&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom panel&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;theme_color&amp;#34;:&amp;#34;lavender, icy blue, and silver&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Aquarius glyph inside a circle on the left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;small Aquarius constellation in the upper right&amp;#34;,&amp;#34;character_pose&amp;#34;:&amp;#34;holding and tilting a futuristic transparent vessel as glowing water-like energy pours out in looping streams&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;metallic silver crop top and skirt set with translucent iridescent jacket, futuristic straps, reflective accessories&amp;#34;,&amp;#34;background_motifs_count&amp;#34;:4,&amp;#34;background_motifs&amp;#34;:[&amp;#34;glowing circular energy rings&amp;#34;,&amp;#34;constellation lines&amp;#34;,&amp;#34;sparkles&amp;#34;,&amp;#34;light trails&amp;#34;],&amp;#34;text_items_count&amp;#34;:6,&amp;#34;text_items&amp;#34;:[&amp;#34;元素:風&amp;#34;,&amp;#34;概念:未來觀察員,規則改革者&amp;#34;,&amp;#34;性格:獨立、理想派、腦洞大&amp;#34;,&amp;#34;行動原則:先思考原理,再另闢路線&amp;#34;,&amp;#34;戀愛傾向:重精神共鳴,也需要個人空間&amp;#34;,&amp;#34;人際怪癖:忽冷忽熱,其實是在充電&amp;#34;]}],&amp;#34;panel_count&amp;#34;:3},&amp;#34;typography&amp;#34;:{&amp;#34;languages&amp;#34;:[&amp;#34;Traditional Chinese&amp;#34;,&amp;#34;English zodiac names&amp;#34;],&amp;#34;headline_font&amp;#34;:&amp;#34;elegant high-contrast serif&amp;#34;,&amp;#34;body_font&amp;#34;:&amp;#34;clean legible Chinese serif or sans-serif hybrid&amp;#34;,&amp;#34;zodiac_english&amp;#34;:&amp;#34;italic calligraphic serif&amp;#34;},&amp;#34;visual_rules&amp;#34;:{&amp;#34;each_panel_has&amp;#34;:8,&amp;#34;panel_elements&amp;#34;:[&amp;#34;left zodiac glyph badge&amp;#34;,&amp;#34;center-left character&amp;#34;,&amp;#34;right text block&amp;#34;,&amp;#34;English zodiac name&amp;#34;,&amp;#34;small constellation&amp;#34;,&amp;#34;pastel illustrated background motifs&amp;#34;,&amp;#34;thin panel border&amp;#34;,&amp;#34;6 bullet-style info lines with icons&amp;#34;],&amp;#34;spacing&amp;#34;:&amp;#34;generous margins and symmetrical alignment&amp;#34;,&amp;#34;render_quality&amp;#34;:&amp;#34;high resolution, crisp print-ready infographic&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;藏族礼仪帽民族志图版&#34;&gt;藏族礼仪帽民族志图版
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/degewa/status/2048104569037783226&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/degewa&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@degewa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/070.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/070_hu_9defc08da0469adb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/070_hu_9668df56d438f17a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;藏族礼仪帽民族志图版&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using REFERENCE_0 and REFERENCE_1, create a clean ethnographic archive plate focused on the ceremonial hat. Use REFERENCE_0 as the historical Tibetan context and silhouette reference, and REFERENCE_1 as the color, material, and ornament reference for the hat. Isolate and reconstruct the hat as a museum-style object study, removing the seated body as the main subject. Present the hat on an off-white document page as a scholarly catalog sheet in Chinese with small romanization. Add 8 numbered callouts around the object with fine dashed leader lines, each pointing to a specific structural detail. The centerpiece should be one large three-quarter underside view of the hat. Also include exactly 4 supplementary views/details: 1 side-profile wearing sketch with a faint line-drawn bust, 1 underside interior view, 1 top-down view, and 2 square close-up material swatches. Add exactly 4 thread-color samples near the lower right: blue, red, white, and yellow. At the top center, add the large title {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;唐徐帽&amp;#34;} with the romanization {argument name=&amp;#34;romanization&amp;#34; default=&amp;#34;(thang zhwa)&amp;#34;} beneath it, plus a smaller subtitle describing it as a summer ceremonial hat of high-ranking Tibetan monks. In the upper left, add a boxed metadata panel with multiple short Chinese fields, and in the upper right add a plate number reading {argument name=&amp;#34;plate number&amp;#34; default=&amp;#34;图版 No. 27&amp;#34;}. At the bottom, add one bordered note paragraph in Chinese. Overall style: meticulous archival infographic, anthropological catalog illustration, historically informed, precise woven texture, ivory-gold base with blue and red ornament, elegant print layout, thin rules and decorative divider marks, high-detail object rendering on a plain paper background.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;复古-prs-吉他谱系海报&#34;&gt;复古 PRS 吉他谱系海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GlennHasABeard/status/2048087784141857235&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/GlennHasABeard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GlennHasABeard&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/071.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/071_hu_c00ca7ff3d8542ef.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/071_hu_3776a06329c3d552.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;复古 PRS 吉他谱系海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;luxury vintage guitar comparison infographic poster&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;a highly detailed, vertically oriented PRS electric guitar lineup chart designed like a premium museum poster or collector&amp;#39;s reference board&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;ornate, dark, glossy, high-contrast, gold-foil typography, elegant wood-and-metal textures, symmetrical grid layout, premium catalog aesthetic, subtle vintage patina, ultra sharp graphic design&amp;#34;,&amp;#34;branding&amp;#34;:{&amp;#34;main headline&amp;#34;:&amp;#34;THE LEGENDARY LINEAGE OF {argument name=\&amp;#34;brand name\&amp;#34; default=\&amp;#34;PRS GUITARS\&amp;#34;}&amp;#34;,&amp;#34;subheadline&amp;#34;:&amp;#34;EVERY ICON. EVERY LINE. ONE HERITAGE.&amp;#34;,&amp;#34;signature&amp;#34;:&amp;#34;Paul Reed Smith&amp;#34;,&amp;#34;left seal&amp;#34;:&amp;#34;PAUL REED SMITH GUITARS&amp;#34;,&amp;#34;right seal&amp;#34;:&amp;#34;MADE IN MARYLAND U.S.A.&amp;#34;},&amp;#34;palette&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;black and deep charcoal with dark figured wood accents&amp;#34;,&amp;#34;primary&amp;#34;:&amp;#34;antique gold&amp;#34;,&amp;#34;secondary&amp;#34;:&amp;#34;cream&amp;#34;,&amp;#34;accent colors&amp;#34;:[&amp;#34;deep green&amp;#34;,&amp;#34;teal&amp;#34;,&amp;#34;royal blue&amp;#34;,&amp;#34;purple&amp;#34;,&amp;#34;gold&amp;#34;,&amp;#34;burgundy&amp;#34;]},&amp;#34;layout&amp;#34;:{&amp;#34;format&amp;#34;:&amp;#34;single-page vertical poster&amp;#34;,&amp;#34;header&amp;#34;:{&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;elements&amp;#34;:[&amp;#34;large central title&amp;#34;,&amp;#34;small tagline below&amp;#34;,&amp;#34;script signature&amp;#34;,&amp;#34;2 circular emblems in upper left and upper right&amp;#34;,&amp;#34;3 horizontal legend boxes under the title&amp;#34;]},&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;PRESTIGE TIER KEY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper left below title&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;SE&amp;#34;,&amp;#34;S2&amp;#34;,&amp;#34;CE&amp;#34;,&amp;#34;CORE&amp;#34;,&amp;#34;WOOD LIBRARY&amp;#34;,&amp;#34;PRIVATE STOCK&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;PICKUP ICON KEY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper center-right below title&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;HH&amp;#34;,&amp;#34;HSH&amp;#34;,&amp;#34;P-90&amp;#34;,&amp;#34;SOAP&amp;#34;,&amp;#34;58/15&amp;#34;,&amp;#34;TCI&amp;#34;,&amp;#34;Bass&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;TONAL CHARACTER KEY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper right below title&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;Warm / Vintage&amp;#34;,&amp;#34;Balanced / All-around&amp;#34;,&amp;#34;Bright / Articulate&amp;#34;,&amp;#34;High Gain / Modern&amp;#34;,&amp;#34;Blues / Classic Rock&amp;#34;,&amp;#34;Metal / Progressive&amp;#34;,&amp;#34;Funk / Soul / Clean&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;CORE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;first main row left label&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;Custom 24&amp;#34;,&amp;#34;McCarty 594&amp;#34;,&amp;#34;DGT (David Grissom)&amp;#34;,&amp;#34;Custom 22&amp;#34;,&amp;#34;Hollowbody II&amp;#34;,&amp;#34;SC 594&amp;#34;,&amp;#34;row category panel&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;S2&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;second main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;S2 Custom 24&amp;#34;,&amp;#34;S2 McCarty 594&amp;#34;,&amp;#34;S2 Standard 24&amp;#34;,&amp;#34;S2 Vela&amp;#34;,&amp;#34;S2 Singlecut&amp;#34;,&amp;#34;S2 Mira&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;SE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;third main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;SE Custom 24&amp;#34;,&amp;#34;SE Standard 24&amp;#34;,&amp;#34;SE Paul&amp;#39;s Guitar&amp;#34;,&amp;#34;SE Santana&amp;#34;,&amp;#34;SE Hollowbody II&amp;#34;,&amp;#34;SE Mark Holcomb&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;CE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;fourth main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;CE 24&amp;#34;,&amp;#34;CE 22&amp;#34;,&amp;#34;CE 24 Semi-Hollow&amp;#34;,&amp;#34;CE 24 Floyd&amp;#34;,&amp;#34;CE 24 Satin&amp;#34;,&amp;#34;CE Bass&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;BOLT-ON SERIES&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;fifth main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;NF 53&amp;#34;,&amp;#34;Silver Sky&amp;#34;,&amp;#34;NF 3&amp;#34;,&amp;#34;NF 53 Satin&amp;#34;,&amp;#34;DGT Bolt-On&amp;#34;,&amp;#34;Studio&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;PRIVATE STOCK&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;sixth main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;Dragon I&amp;#34;,&amp;#34;Frostbite&amp;#34;,&amp;#34;#4004&amp;#34;,&amp;#34;The Tree of Life&amp;#34;,&amp;#34;#8731&amp;#34;,&amp;#34;PS DGT&amp;#34;]}],&amp;#34;footer&amp;#34;:{&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;elements&amp;#34;:[&amp;#34;small badge at lower left&amp;#34;,&amp;#34;centered company line&amp;#34;,&amp;#34;right-side script signature&amp;#34;]}},&amp;#34;content grid&amp;#34;:{&amp;#34;total guitar models shown&amp;#34;:37,&amp;#34;card design&amp;#34;:&amp;#34;each product card contains a guitar render, model name, year, small pickup icons, a short descriptive blurb, and origin/wood specs at the bottom&amp;#34;,&amp;#34;row side panels&amp;#34;:6},&amp;#34;visual details&amp;#34;:{&amp;#34;guitars&amp;#34;:&amp;#34;front-facing electric guitars with varied body shapes and highly polished figured maple tops, metallic and transparent finishes, some solid colors, some natural wood&amp;#34;,&amp;#34;typography&amp;#34;:&amp;#34;all caps serif headlines, small serif body text, script signature accents&amp;#34;,&amp;#34;borders&amp;#34;:&amp;#34;thin decorative gold rules around every panel and the full poster&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;studio-lit instruments against dark panel backgrounds&amp;#34;,&amp;#34;render quality&amp;#34;:&amp;#34;clean infographic precision with realistic product renders&amp;#34;},&amp;#34;camera&amp;#34;:&amp;#34;straight-on flat poster view, no perspective distortion, centered composition&amp;#34;,&amp;#34;quality&amp;#34;:&amp;#34;ultra detailed, print-ready, high-resolution editorial infographic, luxury brand poster&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;阿里山一日游旅行海报&#34;&gt;阿里山一日游旅行海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/TWnese/status/2048077204786212887&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/TWnese&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@TWnese&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/072.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/072_hu_5de06e0cd01c812b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/072_hu_2721a3ee37bf1887.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;阿里山一日游旅行海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a vintage illustrated travel poster in traditional Chinese for {argument name=&amp;#34;destination name&amp;#34; default=&amp;#34;阿里山國家風景區&amp;#34;}, designed as a one-day itinerary infographic with a split vertical layout. The left panel is a parchment-textured itinerary card in warm beige with ornate gold Art Nouveau borders and dark brown typography, and the right panel is a dramatic painted fantasy-realism map scene of a mountain journey at sunrise and sunset tones. At the top of the left panel, large headline text reads {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;阿里山國家風景區一日遊&amp;#34;}. Beneath it, include a short centered tagline in traditional Chinese: 「一座高山,五個經典景點。難忘的奇幻旅程。」 with a small decorative mountain divider. The left panel must contain exactly 5 numbered itinerary stops stacked vertically, each with a circular black-and-gold number badge, a small vignette illustration, a bold location name, a time in parentheses, and a short Chinese description. The 5 stops are: 1. 「阿里山車站」 at 「(8:00 AM)」 with a wooden mountain railway station illustration and description 「開啟探索神木與森林的旅程。」 2. 「阿里山森林鐵路」 at 「(9:30 AM)」 with a red-and-black steam train illustration and description 「穿越森林,體驗百年林鐵風情。」 3. 「神木區棧道」 at 「(11:30 AM)」 with giant cedar trees and elevated wooden boardwalk illustration and description 「漫步千年巨木下,感受森林靈氣。」 4. 「姊妹潭」 at 「(1:30 PM)」 with a tranquil forest lake and pavilion illustration and description 「欣賞靜謐湖光,聆聽自然樂章。」 5. 「小笠原山展望台」 at 「(4:00 PM)」 with a wooden observation deck above clouds at sunset illustration and description 「觀賞壯闊山景與雲海,欣賞日落。」 The right panel should depict a continuous glowing golden path winding through exactly 5 numbered map markers that match the left panel labels in order, with black-and-gold marker plaques reading: 1 「阿里山車站」, 2 「阿里山森林鐵路」, 3 「神木區棧道」, 4 「姊妹潭」, 5 「小笠原山展望台」. Show stop 1 as a rustic alpine wooden station perched on a cliff among pine forests; stop 2 as a small steam locomotive traveling on a curved mountain railway with smoke drifting upward; stop 3 as towering ancient red cypress trees with a spiral and zigzag wooden walkway around the trunks; stop 4 as an emerald lake surrounded by dense forest with a small pavilion and arched bridge; stop 5 as a lookout deck on a peak above a sea of clouds, facing a glowing sunset. The environment should feature layered mountain ranges, mist-filled valleys, evergreen forests, golden-hour light, luminous cloud seas, and a romantic painterly atmosphere with rich detail. At the bottom right, add a decorative compass rose labeled N, E, S, W, plus a dark green and gold information box with exactly 2 stats in traditional Chinese: 「總距離 ~9公里 / 5.6英里」 and 「預計時間 全天 - 14,500步」. Overall style: premium tourism poster, painterly digital illustration, nostalgic national-park brochure aesthetic, highly detailed, warm sepia and gold accents, elegant composition, readable Chinese text, vertical 2:3 poster.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;舞蹈动作参考表&#34;&gt;舞蹈动作参考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ciri_ai/status/2048074587955658848&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ciri_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ciri_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/073.webp&#34;
	width=&#34;1080&#34;
	height=&#34;611&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/073_hu_d0c36a5b8c2b80e0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/073_hu_79ce36609849f62.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;舞蹈动作参考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;424px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[STYLE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;monochromatic grayscale illustration, 3D rendered character, clean instructional reference sheet, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;white background, comic-style cell grid layout, technical diagram aesthetic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[LAYOUT]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4x4 grid layout, 16 panels total, each panel separated by thin black border lines, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;numbered cells from 1 to 16, consistent panel size
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[CHARACTER]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;character&amp;#34; default=&amp;#34;young female dancer, athletic build, ponytail hairstyle, crop top and baggy pants, sneakers&amp;#34;}, same character in all panels
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[PANEL STRUCTURE - per cell]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;top-left: bold number badge + {argument name=&amp;#34;title&amp;#34; default=&amp;#34;Korean title text&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;center: full-body character pose illustration
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bottom-left: {argument name=&amp;#34;description&amp;#34; default=&amp;#34;Korean description text (3-4 lines)&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;overlay: directional arrows indicating movement direction
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ARROWS / MOTION INDICATORS]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curved arrows, straight arrows, circular rotation indicators, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;placed around the character to show movement flow and direction
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[RENDERING STYLE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;high detail 3D sculpt style, soft studio lighting, subtle shadows, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no color, grayscale shading, clean linework, game concept art quality
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[NEGATIVE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no background scenery, no color tones, no extra characters, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no cluttered backgrounds
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫博物馆背景转换&#34;&gt;动漫博物馆背景转换
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Dakiny/status/2048175219966394695&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Dakiny&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Dakiny&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/074.webp&#34;
	width=&#34;1200&#34;
	height=&#34;804&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/074_hu_12694e8f33f66c40.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/074_hu_ad2db60cad455b09.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫博物馆背景转换&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;149&#34;
		data-flex-basis=&#34;358px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using the provided reference photo, recreate the same museum facade and frontal composition as a polished theatrical anime background illustration. Keep the architecture, signage, 3 flagpoles, broad steps, and overall layout consistent, but convert the image from realistic photography into a highly detailed hand-painted anime film style with clean linework, soft cel shading, gentle pastel stone colors, and crisp atmospheric lighting. Add dramatic sunlight from the upper right so the glass pyramid casts a large geometric lattice shadow across the central wall and left side of the entrance. Simplify and stylize the people into anime background characters, keeping the 2 visible groups: 1 lone figure on the left and 1 small cluster of 7 people near the center-right entrance. Preserve the clear blue-sky daytime mood while making the scene feel elegant, refined, and cinematic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-姿势舞蹈战斗参考表&#34;&gt;16 姿势舞蹈战斗参考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/075.webp&#34;
	width=&#34;1199&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/075_hu_6291dd73dfb1fe6a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/075_hu_9ed3fc068d4b623d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 姿势舞蹈战斗参考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pose reference sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;theme&amp;#34;:&amp;#34;hip-hop dance and combat-ready movement chart&amp;#34;,&amp;#34;character&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;gender_presentation&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age_appearance&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;body_type&amp;#34;:&amp;#34;fit athletic dancer&amp;#34;,&amp;#34;skin_tone&amp;#34;:&amp;#34;light tan&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;black&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high ponytail with loose strands&amp;#34;},&amp;#34;outfit&amp;#34;:{&amp;#34;count&amp;#34;:5,&amp;#34;items&amp;#34;:[&amp;#34;white sports bra or cropped athletic top&amp;#34;,&amp;#34;baggy purple jogger pants&amp;#34;,&amp;#34;white chunky sneakers&amp;#34;,&amp;#34;purple wristbands or forearm bands on both arms&amp;#34;,&amp;#34;small hoop earrings&amp;#34;]}}},&amp;#34;style&amp;#34;:{&amp;#34;image_type&amp;#34;:&amp;#34;photorealistic studio pose sheet&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;clean even studio lighting&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;plain light gray to white seamless backdrop&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;full-body framing, straight-on view, consistent distance&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;sharp realistic anatomy, dynamic motion, slight shadow under feet&amp;#34;,&amp;#34;face&amp;#34;:&amp;#34;intentionally blurred or obscured&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16},&amp;#34;numbering&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;],&amp;#34;position&amp;#34;:&amp;#34;top-left corner of each cell&amp;#34;},&amp;#34;cell_borders&amp;#34;:&amp;#34;thin black divider lines between all panels&amp;#34;},&amp;#34;poses&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;items&amp;#34;:[{&amp;#34;label&amp;#34;:&amp;#34;1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide low squat, knees bent outward, torso angled slightly left, both arms extended loosely in a defensive dance stance&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;deep side lunge to the left, left arm pointing straight left, right hand near the head, energetic directional pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;low crouch with one hand touching the floor, one knee bent under the body, opposite arm extended horizontally&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;upright one-leg balance, left knee lifted high, both arms spread outward for rhythm and balance&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;5&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;similar one-leg raised pose with the other leg supporting, arms stretched outward in a lighter dance variation&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;6&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;very wide grounded squat, torso pitched forward, one hand reaching toward the floor between the legs, other arm extended back&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;7&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;dramatic standing back arch, chest lifted upward, hips forward, both arms opened behind and to the sides&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;8&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small jump or suspended squat, both feet off the floor, knees bent, arms spread wide symmetrically&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;9&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;floor-supported seated lean, one hand planted behind, one arm reaching diagonally upward, legs bent to one side&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;10&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;front-facing balance with one knee raised to hip height, one arm bent in guard position and the other extended sideways&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;11&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;deep lateral stance, feet far apart, knees bent, both hands raised open near shoulder level like a ready combat pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;12&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;low side lunge split, one hand planted on the floor, the other arm reaching vertically overhead, torso arched upward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;13&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;standing backward lean with relaxed bent knees, chest up, arms hanging loosely behind in a groove pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;14&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;compact twisting crouch, weight low over bent legs, torso rotated, one arm pulled in and the other extended outward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;15&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;very wide side lunge stretch, one hand to the floor near the front foot, opposite arm reaching diagonally overhead&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;16&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;one-leg lifted pose with knee high, one hand behind the head and the other arm extended forward, confident finishing stance&amp;#34;}]},&amp;#34;composition&amp;#34;:&amp;#34;show the same dancer in all 16 panels with consistent outfit and scale, centered within each frame, designed like a movement library or choreography reference chart&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-格舞蹈姿势参考表&#34;&gt;16 格舞蹈姿势参考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/076.webp&#34;
	width=&#34;1200&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/076_hu_9cad5c551cf69b7b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/076_hu_34fa4cea34edd581.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 格舞蹈姿势参考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;dance pose reference sheet&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;clean studio pose chart, photoreal fitness-dance reference, white seamless background, sharp full-body photography, soft even lighting, minimal shadows, thin black grid lines separating panels&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;person&amp;#34;:{&amp;#34;gender_presentation&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age_appearance&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;build&amp;#34;:&amp;#34;slim athletic toned dancer&amp;#34;,&amp;#34;skin_tone&amp;#34;:&amp;#34;light tan&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;{argument name=\&amp;#34;hair color\&amp;#34; default=\&amp;#34;dark brown\&amp;#34;}&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high ponytail with loose strands&amp;#34;},&amp;#34;outfit&amp;#34;:{&amp;#34;count&amp;#34;:3,&amp;#34;items&amp;#34;:[&amp;#34;white fitted sports bra or cropped athletic tank&amp;#34;,&amp;#34;baggy blue-gray jogger pants&amp;#34;,&amp;#34;white sneakers&amp;#34;]}}},&amp;#34;layout&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;total_panels&amp;#34;:16,&amp;#34;numbering&amp;#34;:&amp;#34;black panel numbers in the top-left corner of each cell, labeled 1 through 16&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;pose grid&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;full page&amp;#34;,&amp;#34;count&amp;#34;:16,&amp;#34;labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;]}]},&amp;#34;poses&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;items&amp;#34;:[{&amp;#34;panel&amp;#34;:1,&amp;#34;description&amp;#34;:&amp;#34;wide stance, knees bent, torso upright, right arm extended straight to the right in a pointing gesture, left arm bent near the body&amp;#34;},{&amp;#34;panel&amp;#34;:2,&amp;#34;description&amp;#34;:&amp;#34;deep low squat facing forward, feet wide apart, one hand lifted in front of the chest, the other resting near the thigh&amp;#34;},{&amp;#34;panel&amp;#34;:3,&amp;#34;description&amp;#34;:&amp;#34;low floor-supported pose, leaning back on one hand with hips low, one knee bent under the body, opposite arm stretched diagonally upward&amp;#34;},{&amp;#34;panel&amp;#34;:4,&amp;#34;description&amp;#34;:&amp;#34;standing on one leg with the other knee raised, one arm curved overhead, opposite arm extended to the right in a strong dance line&amp;#34;},{&amp;#34;panel&amp;#34;:5,&amp;#34;description&amp;#34;:&amp;#34;deep squat with legs wide, one hand on thigh and the other arm reaching straight upward&amp;#34;},{&amp;#34;panel&amp;#34;:6,&amp;#34;description&amp;#34;:&amp;#34;light upright pose with one knee lifted and both arms relaxed outward for balance&amp;#34;},{&amp;#34;panel&amp;#34;:7,&amp;#34;description&amp;#34;:&amp;#34;wide stance with both arms crossed tightly in front of the chest, feet planted apart&amp;#34;},{&amp;#34;panel&amp;#34;:8,&amp;#34;description&amp;#34;:&amp;#34;low crouch close to the floor, one hand braced on the ground, the other arm crossing the torso&amp;#34;},{&amp;#34;panel&amp;#34;:9,&amp;#34;description&amp;#34;:&amp;#34;dynamic side-leaning wide stance, one arm bent upward beside the head, opposite arm pointing strongly to the right&amp;#34;},{&amp;#34;panel&amp;#34;:10,&amp;#34;description&amp;#34;:&amp;#34;compact crouch with weight centered low, one elbow resting near a knee and head tilted slightly downward&amp;#34;},{&amp;#34;panel&amp;#34;:11,&amp;#34;description&amp;#34;:&amp;#34;deep side lunge with one leg extended long to the side, one hand on the floor and the other arm reaching straight up&amp;#34;},{&amp;#34;panel&amp;#34;:12,&amp;#34;description&amp;#34;:&amp;#34;upright wide-legged stance, one arm extended vertically overhead, the other hand relaxed near the hip&amp;#34;},{&amp;#34;panel&amp;#34;:13,&amp;#34;description&amp;#34;:&amp;#34;standing balance pose with one knee raised and both hands held low near the thighs&amp;#34;},{&amp;#34;panel&amp;#34;:14,&amp;#34;description&amp;#34;:&amp;#34;low horse stance with knees bent wide and forearms crossed in front of the chest&amp;#34;},{&amp;#34;panel&amp;#34;:15,&amp;#34;description&amp;#34;:&amp;#34;kneeling or very low crouched pose with one hand on the floor and the other resting on the raised knee&amp;#34;},{&amp;#34;panel&amp;#34;:16,&amp;#34;description&amp;#34;:&amp;#34;high side kick, balancing on one leg while the other leg extends horizontally, both arms bent in a guarded fighting pose&amp;#34;}]},&amp;#34;intent&amp;#34;:&amp;#34;a {argument name=\&amp;#34;sheet purpose\&amp;#34; default=\&amp;#34;dance move sheet chart that can also be used for combat pose reference\&amp;#34;}, emphasizing silhouette variety, balance, rhythm, and dynamic athletic body lines&amp;#34;,&amp;#34;image_size&amp;#34;:&amp;#34;landscape 16:9&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-格女性舞蹈姿势表&#34;&gt;16 格女性舞蹈姿势表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/077.webp&#34;
	width=&#34;1200&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/077_hu_5a6068da941351fa.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/077_hu_800aceba14c16426.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 格女性舞蹈姿势表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pose reference sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;description&amp;#34;:&amp;#34;a fit young woman dancer shown repeatedly in a clean studio reference layout&amp;#34;,&amp;#34;appearance&amp;#34;:{&amp;#34;gender&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;build&amp;#34;:&amp;#34;athletic, toned midriff&amp;#34;,&amp;#34;skin tone&amp;#34;:&amp;#34;light to medium tan&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;dark brown&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high messy ponytail with loose strands framing the face&amp;#34;},&amp;#34;expression&amp;#34;:&amp;#34;neutral to focused&amp;#34;},&amp;#34;wardrobe&amp;#34;:{&amp;#34;top&amp;#34;:&amp;#34;charcoal gray sports bra or cropped athletic bralette&amp;#34;,&amp;#34;bottom&amp;#34;:&amp;#34;oversized dark gray parachute cargo pants with gathered ankles&amp;#34;,&amp;#34;shoes&amp;#34;:&amp;#34;white sneakers&amp;#34;,&amp;#34;accessories&amp;#34;:[&amp;#34;black wristband or fingerless glove on one hand&amp;#34;,&amp;#34;subtle sporty styling&amp;#34;]}},&amp;#34;layout&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;plain white seamless studio background&amp;#34;,&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16,&amp;#34;cell labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;]},&amp;#34;style&amp;#34;:&amp;#34;clean contact-sheet or choreography chart with thin black dividers between panels and small black numbers at the upper left of each panel&amp;#34;},&amp;#34;poses&amp;#34;:[{&amp;#34;label&amp;#34;:&amp;#34;1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;relaxed standing pose, weight on one leg, one hand near hip, slight contrapposto&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide low dance stance, one arm bent behind the head, the other arm extended and pointing to the right&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;legs spread in a grounded stance, torso slightly tilted, one hand resting near the upper thigh&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;very low wide squat facing forward, torso leaning back, one hand near the face and the other near the thigh&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;5&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide side lunge stance, one arm arched overhead, the other arm extended outward in a stylized dance line&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;6&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;balancing on one leg with the other knee lifted high, one hand near the face in a punchy hip-hop pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;7&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;floorwork pose supported by one hand on the ground, torso reclined sideways, legs bent and lifted in a dynamic breakdance-like position&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;8&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;casual upright pose with one hand behind the head and one knee bent upward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;9&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;one-legged balance pose with the lifted knee bent, both arms extended outward for motion and rhythm&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;10&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;low kneeling or crouched pose, one knee up and one knee down, one arm thrust forward toward the viewer&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;11&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;deep squat with legs apart, one arm curved overhead in a dramatic arc&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;12&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;standing lean to one side with one arm extended sideways and the other hand near the hip or thigh&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;13&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;reclining floor pose supported by one hand behind the body, one leg bent and one leg extended&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;14&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;upright standing pose with one arm fully extended and pointing to the right&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;15&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;front-facing pose stepping forward with one knee lifted, one arm reaching or pointing forward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;16&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide confident stance with one arm pointing diagonally upward to the right&amp;#34;}],&amp;#34;rendering&amp;#34;:{&amp;#34;medium&amp;#34;:&amp;#34;photorealistic studio fashion and dance reference image&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;soft even studio lighting with faint shadows beneath the feet and body&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;full-body framing, straight-on view, consistent distance in every panel&amp;#34;,&amp;#34;quality&amp;#34;:&amp;#34;sharp, high-resolution, realistic anatomy and fabric folds&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-姿势舞蹈参考表&#34;&gt;16 姿势舞蹈参考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/078.webp&#34;
	width=&#34;1199&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/078_hu_918cd255b0091e22.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/078_hu_bd23bdaedc026045.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 姿势舞蹈参考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pose reference sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;category&amp;#34;:&amp;#34;female dancer fitness model&amp;#34;,&amp;#34;age_appearance&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;build&amp;#34;:&amp;#34;slim athletic&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;dark brown&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high ponytail&amp;#34;},&amp;#34;outfit&amp;#34;:{&amp;#34;top&amp;#34;:&amp;#34;light gray or white sports bra crop top&amp;#34;,&amp;#34;bottom&amp;#34;:&amp;#34;baggy light gray sweatpants&amp;#34;,&amp;#34;shoes&amp;#34;:&amp;#34;white sneakers&amp;#34;},&amp;#34;face&amp;#34;:&amp;#34;softly blurred or de-emphasized facial features&amp;#34;},&amp;#34;style&amp;#34;:{&amp;#34;image_type&amp;#34;:&amp;#34;studio dance pose chart&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;clean seamless white background&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;bright even studio lighting with minimal shadows&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;neutral whites and light grays&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;full-body framing, straight-on view, consistent distance&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;photorealistic&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16,&amp;#34;border&amp;#34;:&amp;#34;thin black dividers between cells&amp;#34;},&amp;#34;numbering&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;],&amp;#34;position&amp;#34;:&amp;#34;top-left corner of each panel&amp;#34;},&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;row 1&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;1 side lunge with one arm extended straight sideways and the other bent near chest&amp;#34;,&amp;#34;2 low floor pose leaning on one hand with one knee down and opposite arm arched upward&amp;#34;,&amp;#34;3 wide squat facing front with both arms opened in angular dance position&amp;#34;,&amp;#34;4 standing balance on one leg with opposite knee lifted and forearms crossed near chest&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;row 2&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper-middle&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;5 deep backbend in wide stance with torso arched and one arm curved overhead&amp;#34;,&amp;#34;6 wide squat with one hand behind head and the other arm pointing outward&amp;#34;,&amp;#34;7 kneeling side stretch with one hand on floor and opposite arm reaching straight up&amp;#34;,&amp;#34;8 standing arabesque-style extension with torso tilted forward and one leg lifted high behind/sideways&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;row 3&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower-middle&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;9 wide squat with torso tilted left, one arm curved overhead and one arm extended low&amp;#34;,&amp;#34;10 front-facing wide squat with both arms stretched diagonally in opposite directions&amp;#34;,&amp;#34;11 relaxed standing pose with legs apart and both forearms crossing in front of torso&amp;#34;,&amp;#34;12 floor recline supported on one hand and one knee, torso leaning back with bent legs&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;row 4&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;13 small jump or lifted balance with one knee raised and one arm bent upward&amp;#34;,&amp;#34;14 low crouch squat with one hand reaching toward floor and other arm extended sideways&amp;#34;,&amp;#34;15 dramatic side backbend in wide stance with hair swinging and one arm curved overhead&amp;#34;,&amp;#34;16 powerful wide squat with one hand at chest and the other lowered to the side&amp;#34;]}],&amp;#34;overall_composition&amp;#34;:&amp;#34;all 16 poses shown as separate panels in a uniform contact sheet&amp;#34;},&amp;#34;prompt&amp;#34;:&amp;#34;Create a clean studio contact sheet of {argument name=\&amp;#34;pose count\&amp;#34; default=\&amp;#34;16\&amp;#34;} full-body dance or combat-reference poses featuring a {argument name=\&amp;#34;subject type\&amp;#34; default=\&amp;#34;young athletic woman\&amp;#34;} in a {argument name=\&amp;#34;outfit\&amp;#34; default=\&amp;#34;light gray sports bra, loose gray sweatpants, and white sneakers\&amp;#34;}. Use a seamless {argument name=\&amp;#34;background color\&amp;#34; default=\&amp;#34;white\&amp;#34;} background, bright even lighting, and a consistent straight-on camera. Arrange the poses in a 4x4 grid with thin black panel lines and small black numbers 1 through 16 in the top-left of each cell. The poses should mix standing, squatting, kneeling, floorwork, balance, kick-extension, backbend, and angular arm positions suitable for a dance sheet chart or combat movement reference. Keep the styling photorealistic, crisp, minimal, and instructional, with consistent wardrobe and hair across all panels.&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;气态巨行星下降分镜&#34;&gt;气态巨行星下降分镜
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/xRahultripathi/status/2048140775356354892&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/xRahultripathi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@xRahultripathi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/079.webp&#34;
	width=&#34;1200&#34;
	height=&#34;676&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/079_hu_8b65f2fca14570b3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/079_hu_ec4b1b2c4e1077ff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;气态巨行星下降分镜&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;cinematic sci-fi storyboard contact sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;primary&amp;#34;:&amp;#34;a small futuristic spacecraft descending into a massive gas giant storm system&amp;#34;,&amp;#34;secondary&amp;#34;:&amp;#34;an enormous leviathan-like silhouette hidden within the clouds&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;oppressive, catastrophic, awe-struck, high tension, cosmic dread&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;photorealistic cinematic concept art with dark sci-fi realism, volumetric storm clouds, strong contrast, amber and black palette with occasional cold blue lightning&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;16:9&amp;#34;},&amp;#34;vehicle&amp;#34;:{&amp;#34;design&amp;#34;:&amp;#34;compact armored deep-atmosphere ship with 3 bright rear engines, angular industrial hull, worn metallic panels&amp;#34;,&amp;#34;scale&amp;#34;:&amp;#34;tiny compared to the planet and creature&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:3,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:12},&amp;#34;sections&amp;#34;:[{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide exterior shot of the ship entering the upper atmosphere of a colossal gas giant at extreme speed, glowing clouds streaked with fire and friction around the vessel, curved planetary horizon visible&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;cockpit POV, dark interior filled with red and cyan holographic instruments, forward visibility collapsing into turbulent storm layers and electrical haze&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;exterior mid-wide shot of the ship diving into a gigantic rotating cloud funnel, surrounded by violent spiraling storm structure&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;extreme close exterior of the ship hull as bright lightning strikes dangerously close, white electric energy crawling across the metal surface&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;dashboard warning screen in red, showing a critical systems failure interface with the exact visible text count of 4 warning lines and 1 large percentage readout: [&amp;#39;WARNING&amp;#39;,&amp;#39;ENGINES COMPROMISED&amp;#39;,&amp;#39;THRUST FLUCTUATION&amp;#39;,&amp;#39;GRAVITY SPIKE DETECTED&amp;#39;,&amp;#39;DESCENT RATE -453%&amp;#39;]&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;rear three-quarter exterior of the ship fighting turbulence inside dense storm clouds, engines burning hard while the craft barely holds course&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;massive circular disturbance forming in the clouds like an eye or maw, entire storm systems displaced by something huge moving beneath&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;second cockpit view with radar-like navigation display and red alert text, pilot making a blind evasive maneuver through lightning-filled darkness&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;first reveal of the colossal creature shape rising near the ship, black organic surface and immense curved anatomy emerging from darkness, ship tiny at lower left&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;spiral descent shot, ship caught inside a vortex tunnel of clouds, spinning downward with engines flaring as it struggles to recover&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;sudden breakthrough into a calm void, minimal composition, ship flying in eerie silence through dark open space with soft mist and no visible storm around it&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;final reveal, gigantic leviathan fully emerging behind or beside the ship in cleared space, backlit by a pale circular storm opening, enormous open maw-like silhouette dwarfing the craft&amp;#34;}],&amp;#34;continuity&amp;#34;:&amp;#34;all 12 panels depict one continuous descent sequence from atmospheric entry to final creature reveal&amp;#34;},&amp;#34;lighting&amp;#34;:{&amp;#34;primary&amp;#34;:&amp;#34;glowing amber storm light&amp;#34;,&amp;#34;secondary&amp;#34;:&amp;#34;red cockpit interface glow&amp;#34;,&amp;#34;accents&amp;#34;:&amp;#34;blue-white lightning and engine exhaust&amp;#34;},&amp;#34;environment&amp;#34;:{&amp;#34;location&amp;#34;:&amp;#34;inside the upper and middle storm layers of a gigantic gas giant&amp;#34;,&amp;#34;weather&amp;#34;:&amp;#34;violent turbulence, electrical storms, vortex funnels, cloud walls, pressure chaos&amp;#34;,&amp;#34;threat&amp;#34;:&amp;#34;no safe zone, repeated near-failure, unknown colossal presence driving the storm&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超现实巴洛克绘画现实裂隙&#34;&gt;超现实巴洛克绘画现实裂隙
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/JohnnyWang8802/status/2048129335853559824&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/JohnnyWang8802&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@JohnnyWang8802&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/080.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/080_hu_f7cfa4116ae04487.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/080_hu_a2a534f0c6c47a7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超现实巴洛克绘画现实裂隙&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A {argument name=&amp;#34;painting style&amp;#34; default=&amp;#34;baroque oil painting&amp;#34;} comes to life — its painted figures climbing out of the gilded frame into a {argument name=&amp;#34;setting&amp;#34; default=&amp;#34;modern white gallery&amp;#34;}, half their bodies still in flat 2D paint, half fully volumetric 3D humans, brushstrokes visible on their skin, the painting&amp;#39;s background leaking watercolor clouds into the gallery ceiling, museum visitors frozen in shock, hyper-detailed, {argument name=&amp;#34;artist influence&amp;#34; default=&amp;#34;René Magritte meets Pixar&amp;#34;}, reality fracturing at every boundary
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;城市小巷壁画艺术家&#34;&gt;城市小巷壁画艺术家
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Professor_134/status/2048066672398102896&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Professor_134&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Professor_134&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/081.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/081_hu_27c628d6f3b8d9ae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/081_hu_237b894b0489f783.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;城市小巷壁画艺术家&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic, ultra-realistic night scene of a {argument name=&amp;#34;artist&amp;#34; default=&amp;#34;young male street artist&amp;#34;} painting a large-scale {argument name=&amp;#34;mural subject&amp;#34; default=&amp;#34;mural of a woman’s face&amp;#34;} in a {argument name=&amp;#34;setting&amp;#34; default=&amp;#34;narrow urban alley&amp;#34;}. The camera angle is slightly low, creating a dramatic, powerful perspective. The artist has medium-length, slightly messy dark hair and light stubble or a short beard, giving him a rugged, creative look.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;He wears a loose white t-shirt and casual jeans, slightly oversized, with a relaxed streetwear vibe. His posture is focused and engaged as he stands close to the wall, actively spray-painting.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;He is creating a massive, hyper-realistic mural of a woman’s face on a textured brick wall. The mural is incredibly detailed—smooth skin tones, realistic lighting, expressive eyes, and glossy lips—appearing almost like a photograph. Fine mist from the spray paint is visible in the air, catching light and adding motion and atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The setting is a narrow urban alley at night, surrounded by tall buildings. The environment is gritty and textured—aged brick walls, paint splashes, subtle grime, and urban wear. Neon signs and distant streetlights cast vibrant reflections in teal, magenta, and blue tones, creating a cinematic, slightly cyberpunk mood.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is dramatic and layered: cool ambient light fills the alley, while warmer neon highlights create contrast. A subtle rim light outlines the artist’s silhouette, separating him from the dark background. The mural is partially illuminated, acting as a strong focal point.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Atmosphere includes light fog or mist, enhancing depth and making the lighting glow softly. The scene feels immersive, quiet, and artistically intense.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Depth of field is moderately shallow: the artist and mural are in sharp focus, while the background fades into soft blur with bokeh highlights.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: hyper-realistic, cinematic photography, street art aesthetic, ultra-detailed textures, high dynamic range, subtle film grain.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Camera details: 35mm or 50mm lens, f/1.8–f/2.8 aperture, low-light photography, slight low-angle shot, natural perspective.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Composition: vertical frame (4:5 or 9:16), subject slightly off-center, mural dominating the frame for strong visual storytelling.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate image using uploaded image as reference
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;rpg-地图转动漫事件场景&#34;&gt;RPG 地图转动漫事件场景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ArtwlDesign/status/2048054726768709769&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ArtwlDesign&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ArtwlDesign&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/082.webp&#34;
	width=&#34;1200&#34;
	height=&#34;670&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/082_hu_5fa142826c4329ce.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/082_hu_6fbce33f5d6ee037.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;RPG 地图转动漫事件场景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;429px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using the provided reference image, transform the top-down RPG town map into a polished anime-style event illustration from a human eye-level perspective. Keep the same village location and layout cues: the central stone well, the path network, the hedges, the wooden houses, and the narrow water canal on the left. Convert the 2 small sprite characters by the well into 2 full-size fantasy characters in the foreground: a silver-haired mage in a purple robe holding a staff, and a blonde elf in green-and-brown adventurer clothing, both leaning over and looking into the well. Add a cinematic JRPG feel with soft daylight, detailed painterly rendering, clean line art, and gentle depth of field. Preserve the sense that this scene is taking place in the same town square, but enrich it with natural perspective, more environmental detail, and 5 background villagers: 1 man cropped at the far left edge, 2 small figures standing on the center path in the distance, and 2 townspeople talking near the right-side buildings.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔和粉彩动漫少女全身像&#34;&gt;柔和粉彩动漫少女全身像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/hoshi122221/status/2048025730425196801&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/hoshi122221&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@hoshi122221&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/083.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/083_hu_26ed0e341e792fed.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/083_hu_9903bb8f94f62715.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔和粉彩动漫少女全身像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A full-body anime girl character design on a plain white background, centered and floating slightly, drawn in a soft minimalist pastel style with very thin gray linework and delicate flat colors. She has a petite youthful build and a cute, gentle silhouette, with special emphasis on a soft rounded face shape, smooth cheeks, and a softened jawline and chin. Her face is completely obscured by a blank skin-colored rectangular block with no facial features visible. She has short bob hair in {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;light ash brown&amp;#34;}, slightly tousled with wispy ends, long bangs covering part of the forehead, and a small ribbon hair tie on the right side in pale blue-gray. She wears 3 visible clothing pieces: an oversized pale blue cardigan with loose sleeves and front buttons, a cream-white slip dress with a scalloped neckline and a tiny button detail at the chest, and a frilled hem with a small ribbon near the right thigh. She is barefoot with slim pale legs, posed front-facing with both arms relaxed slightly outward, open hands, one leg straight and the other gently bent inward for a shy, weightless look. The illustration should feel airy, cute, understated, and clean, like a simple Japanese anime fashion sketch, with lots of negative space and no props, no shadows, and no background elements.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;都市奇幻共存路口&#34;&gt;都市奇幻共存路口
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ray_CROWN0/status/2048024227664494775&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ray_CROWN0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ray_CROWN0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/084.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/084_hu_e9ef25b7a1fdff74.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/084_hu_70840d2c5970afb3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;都市奇幻共存路口&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly detailed anime-style urban fantasy illustration set at a busy Tokyo-style scramble crossing on a bright clear day, viewed at street level with a wide cinematic composition. The city blends modern realism with mythic fantasy: dense high-rise buildings covered in giant billboards, a red broadcast tower in the middle distance, blue sky with fluffy clouds, and a crowded crosswalk full of pedestrians. In the foreground, show 7 prominent character figures: a silver-haired elf woman in a flowing white dress holding an iced drink and tote bag on the far left; a central schoolgirl with long dark hair, black animal ears, a navy school blazer, plaid skirt, blue ribbon, and large navy shoulder bag, lifting one hand to her head; a young man in a dark suit looking down at a smartphone; an androgynous white-haired angelic figure in an elegant white-and-gold ceremonial outfit with large white wings; a small blonde girl in an ornate pastel pink frilled dress beside the angel; a dark-haired woman in a black coat in right foreground profile; and a small blue-haired cat-eared child in a blue dress with a bow standing near a cave entrance on the right. In the midground crowd, include mixed humans and fantasy races walking together naturally. Add 4 clearly visible nonhuman or supernatural background beings: 1 dragon flying in the sky, 1 winged female angel descending above the street, 1 lizard-headed businessman in a suit near the angelic figure, and 1 tall red-skinned horned demon with crossed arms standing by the hillside path. On the right side, transition the city into a lush shrine hillside with large green trees, a red torii gate, stone steps, and a wooden signboard reading Japanese kanji. Below it, place a rocky cave-like tunnel entrance glowing blue, with a wooden sign over the entrance and several figures descending into an underground shared district lit by crystals. Show 6 major billboard/sign elements across the cityscape: a huge left billboard reading &amp;#34;Shinpi Sekai 神秘世界&amp;#34; with a cosmic planet image; a large central political poster with Japanese text and a raised fist icon; 2 rooftop signs reading &amp;#34;未来研究所&amp;#34; on separate buildings; a large right billboard with Japanese text about coexistence and silhouettes of different beings; and 1 vertical banner with Japanese text on a nearby building. Emphasize the theme of coexistence between ordinary modern city life and hidden fantasy societies. Crisp anime linework, polished light novel key visual rendering, rich textures, soft sunlight, subtle atmospheric perspective, vibrant but believable colors, intricate clothing details, and a sense of awe, everyday bustle, and worldbuilding depth.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;亲子误解信息图&#34;&gt;亲子误解信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sarinaashapi/status/2048307780864606708&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sarinaashapi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sarinaashapi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/085.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/085_hu_26d0e5c826e59305.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/085_hu_fa7e495c6ca472c4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;亲子误解信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Japanese infographic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;simple, easy-to-understand flat vector diagram, clean white background, rounded light-gray outer frame, minimal pastel color palette, presentation-slide design, clear hierarchy, lots of whitespace, modern sans-serif Japanese typography&amp;#34;,&amp;#34;canvas&amp;#34;:{&amp;#34;aspect_ratio&amp;#34;:&amp;#34;16:9&amp;#34;},&amp;#34;headline&amp;#34;:{&amp;#34;text&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;親子のすれ違いは、記録があるかないかで起こる\&amp;#34;}&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top center&amp;#34;,&amp;#34;size&amp;#34;:&amp;#34;large bold black&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;structure&amp;#34;:&amp;#34;2 side-by-side rounded panels beneath the headline&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;記録がない場合(ズレる)&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;left&amp;#34;,&amp;#34;count&amp;#34;:8,&amp;#34;header_color&amp;#34;:&amp;#34;muted blue-gray&amp;#34;,&amp;#34;panel_border&amp;#34;:&amp;#34;light gray&amp;#34;,&amp;#34;labels&amp;#34;:[&amp;#34;親の記憶&amp;#34;,&amp;#34;子どもの記憶&amp;#34;,&amp;#34;あのとき決まったよね&amp;#34;,&amp;#34;まだ考えてたのに&amp;#34;,&amp;#34;ズレが大きくなる&amp;#34;,&amp;#34;志望校がコロコロ変わる&amp;#34;,&amp;#34;理由が『なんとなく』&amp;#34;,&amp;#34;言ってることが違う&amp;#34;,&amp;#34;関係がギクシャク&amp;#34;,&amp;#34;現実を見てほしい&amp;#34;,&amp;#34;ちゃんと決めてほしい&amp;#34;,&amp;#34;口を出しすぎると関係が悪くなる&amp;#34;],&amp;#34;contents&amp;#34;:{&amp;#34;top_left&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;parent icon with thought bubble&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;blue&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;親の記憶&amp;#34;,&amp;#34;bubble_text&amp;#34;:&amp;#34;あのとき\n決まったよね&amp;#34;},&amp;#34;top_right&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;child icon with thought bubble&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;pink&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;子どもの記憶&amp;#34;,&amp;#34;bubble_text&amp;#34;:&amp;#34;まだ考えてたのに&amp;#34;},&amp;#34;center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;horizontal double-headed arrow&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;blue-gray&amp;#34;},&amp;#34;bottom_center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;downward arrow leading to burst shape&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;light gray&amp;#34;,&amp;#34;burst_text&amp;#34;:&amp;#34;ズレが\n大きくなる&amp;#34;},&amp;#34;bottom_left&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;rounded note box&amp;#34;,&amp;#34;bullet_count&amp;#34;:4,&amp;#34;bullets&amp;#34;:[&amp;#34;志望校がコロコロ変わる&amp;#34;,&amp;#34;理由が『なんとなく』&amp;#34;,&amp;#34;言ってることが違う&amp;#34;,&amp;#34;関係がギクシャク&amp;#34;]},&amp;#34;bottom_right&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;rounded note box&amp;#34;,&amp;#34;bullet_count&amp;#34;:3,&amp;#34;bullets&amp;#34;:[&amp;#34;現実を見てほしい&amp;#34;,&amp;#34;ちゃんと決めてほしい&amp;#34;,&amp;#34;口を出しすぎると関係が悪くなる&amp;#34;]}}},{&amp;#34;title&amp;#34;:&amp;#34;記録がある場合(ズレにくい)&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;right&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;header_color&amp;#34;:&amp;#34;mustard yellow&amp;#34;,&amp;#34;panel_border&amp;#34;:&amp;#34;light yellow&amp;#34;,&amp;#34;labels&amp;#34;:[&amp;#34;親の認識&amp;#34;,&amp;#34;子どもの認識&amp;#34;,&amp;#34;記録&amp;#34;],&amp;#34;contents&amp;#34;:{&amp;#34;top_left&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;parent icon with thought bubble containing document symbol&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;blue&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;親の認識&amp;#34;},&amp;#34;top_right&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;child icon with thought bubble containing document symbol&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;pink&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;子どもの認識&amp;#34;},&amp;#34;center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;horizontal double-headed arrow&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;mustard yellow&amp;#34;},&amp;#34;bottom_center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;circular record icon with document symbol&amp;#34;,&amp;#34;outline_color&amp;#34;:&amp;#34;mustard yellow&amp;#34;,&amp;#34;text&amp;#34;:&amp;#34;記録&amp;#34;},&amp;#34;bottom_left_connector&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;curved arrow from parent to record&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;blue&amp;#34;},&amp;#34;bottom_right_connector&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;curved arrow from child to record&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;pink&amp;#34;}}}],&amp;#34;spacing&amp;#34;:&amp;#34;balanced, symmetrical&amp;#34;},&amp;#34;visual_language&amp;#34;:{&amp;#34;icons&amp;#34;:&amp;#34;generic human bust icons and simple document line icons&amp;#34;,&amp;#34;emphasis&amp;#34;:&amp;#34;contrast the left panel&amp;#39;s misunderstanding with the right panel&amp;#39;s shared record&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;educational, calm, practical&amp;#34;},&amp;#34;text_language&amp;#34;:&amp;#34;Japanese&amp;#34;,&amp;#34;render_quality&amp;#34;:&amp;#34;crisp vector edges, infographic suitable for social media educational posts&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;好洗澡日编辑风海报&#34;&gt;好洗澡日编辑风海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Kazuch75240438/status/2048205418238030327&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Kazuch75240438&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Kazuch75240438&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/086.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/086_hu_d9cf8eee6ceebcb6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/086_hu_86ce7cfe747e2670.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;好洗澡日编辑风海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a soft editorial lifestyle poster for {argument name=&amp;#34;event date&amp;#34; default=&amp;#34;4.26&amp;#34;} celebrating Japanese bath culture, designed like a refined magazine feature page in portrait orientation. The layout is split into two main columns with a pale cream and warm gray background, thin divider lines, elegant serif typography, and muted sage-green accents. At the top left, include the small heading “LIFESTYLE / FEATURE”, then a large date line reading “{argument name=&amp;#34;event date&amp;#34; default=&amp;#34;4.26&amp;#34;} EVENT”, followed by the large Japanese title “よい風呂の日” and the subtitle “特集” in sage green, with a small bathtub icon nearby. Beneath that, add the Japanese tagline “心も体も、ととのう時間。” and several short body-text blocks in Japanese explaining the meaning of Good Bath Day, including references to “4(よ)2(ふ)6(ろ)” and the benefits of bathing for body and mind. On the right side, show a bright, airy bathroom interior lit by soft natural morning light from a window, with beige and off-white tones, a wooden counter, folded white towels, a pump bottle, a sponge, woven baskets, and a few green plants. In front of the bathroom scene, place a youthful anime-style person with {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;soft medium brown&amp;#34;} tousled short hair, fair skin, and a relaxed expression, standing in a casual post-bath pose. The character wears a loose white T-shirt with a tiny dark square chest logo and light brown drawstring lounge pants, one hand in a pocket and the other holding a white towel up near the face and shoulder, conveying a fresh, just-bathed feeling. Near the character, include the handwritten-style Japanese side note “湯上がりの、リラックスタイム。” Add an oval badge on the lower right of the main image area with the English heading “GOOD BATH DAY” and Japanese explanatory text inside, plus a small bathtub icon. Below the main feature, include exactly 2 small inset images of the same character in the bathroom, each framed as rectangular mini-panels with narrow vertical Japanese captions beside them. At the bottom, create exactly 4 rounded rectangular information cards in a row: card 1 labeled “POINT 01” with the heading “お風呂の基本” and text about soaking in lukewarm water around 38–40°C; card 2 labeled “POINT 02” with the heading “日常でできること” and text about making bathing part of a routine instead of only showering; card 3 labeled “POINT 03” with the heading “楽しみ方・取り入れ方” and text about bath salts, scents, music, and lighting; card 4 labeled “まとめ” with concluding Japanese text about sustainable self-care. Decorate the cards with small illustrated elements such as leaves, a bathtub, a candle, a bottle, lavender sprigs, and a basket of folded towels. Along the very bottom, add a horizontal green tip strip labeled “今日からできる TIP” with exactly 3 checklist items: “就寝の1〜2時間前に入浴する”, “スマホは浴室に持ち込まない”, and “水分補給を忘れずに”. Place a final handwritten-style Japanese phrase at the lower right reading “自分をいたわる時間を。” The overall look should be clean, gentle, wellness-focused, feminine-neutral, and polished like a Japanese seasonal magazine infographic, with delicate anime illustration, soft shadows, subtle textures, and calm spa-like atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式科幻换装流程板&#34;&gt;日式科幻换装流程板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yy7482933910896/status/2048192904922075161&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/yy7482933910896&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yy7482933910896&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/087.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/087_hu_b07edc1e2ab93dae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/087_hu_7eadfa0842e62977.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式科幻换装流程板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Japanese sci-fi armor dressing-process infographic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;cinematic live-action tokusatsu-inspired promotional board, realistic industrial lighting, polished metal surfaces, sharp photographic detail&amp;#34;,&amp;#34;theme&amp;#34;:&amp;#34;manual pre-battle suit-up sequence for a female hero in a red, silver, black, and blue protector suit&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;character&amp;#34;:{&amp;#34;gender&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;identity&amp;#34;:&amp;#34;helmetless heroine during assembly, face intentionally obscured or anonymized in every unhelmeted panel&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;dark brown to black hair tied in a high ponytail with bangs&amp;#34;,&amp;#34;undersuit&amp;#34;:&amp;#34;glossy black skintight inner suit with silver chest panel and white neck ring&amp;#34;,&amp;#34;armor&amp;#34;:&amp;#34;retro-futuristic protector armor with red shoulder and arm plates, silver breastplate and torso plating, circular blue chest core, red waist unit, white gloves, red forearm guards with yellow stripe accents&amp;#34;,&amp;#34;helmet&amp;#34;:&amp;#34;round red-and-silver helmet with black visor&amp;#34;},&amp;#34;environment&amp;#34;:{&amp;#34;location&amp;#34;:&amp;#34;high-tech industrial hangar or armor bay&amp;#34;,&amp;#34;background elements&amp;#34;:[&amp;#34;metal framework&amp;#34;,&amp;#34;robotic equipment&amp;#34;,&amp;#34;tool benches&amp;#34;,&amp;#34;armor racks&amp;#34;,&amp;#34;computer monitors&amp;#34;,&amp;#34;workshop lighting&amp;#34;,&amp;#34;bay corridor marked BAY-07 in final panel&amp;#34;]}},&amp;#34;layout&amp;#34;:{&amp;#34;header&amp;#34;:{&amp;#34;count&amp;#34;:2,&amp;#34;labels&amp;#34;:[&amp;#34;ソルジャンヌ・スーツ 手動装着プロセス&amp;#34;,&amp;#34;専用プロテクタースーツ『ソルジャンヌ』を、戦闘前に手動で装着する様子。各ユニットを確実に装着し、システムを起動する。&amp;#34;],&amp;#34;design&amp;#34;:&amp;#34;wide black-to-red gradient banner across top, large bold white Japanese text, diagonal red accent&amp;#34;},&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;1 インナースーツの確認&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;各部のセンサーとコネクタをチェック。戦闘に備え、身体の状態を最終認する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;three-quarter view of the heroine in only the black glossy inner suit, looking down while checking or tightening a wrist connector&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;2 胸部・肩部アーマーの装着&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;胸部ユニットと肩部プロテクターを装着。コネクタを接続し、ロックを固定する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;mid shot with chest armor and red shoulder plates installed, heroine fastening the front torso area with both hands&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;3 腰部ユニット・ベルトの固定&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-right&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ウエストユニットを装着し、各部のロックを確認。可動部の動作チェックを行う。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;mid shot with torso armor completed, heroine tightening or checking the waist belt and side locks&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;4 ヘルメットの準備&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom-left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ヘルメットのバイザーと内部システムをチェック。ヘッドセットとの同期を確認する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;heroine holding the red helmet in both hands at chest height, showing the glossy black visor&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;5 ヘルメットの装着・システム起動&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom-center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ヘルメットを装着し、直上のコネクタをロック。全身のシステムが起動し、胸部コアが発光する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;heroine placing the helmet onto her head with both hands; blue chest core glowing brightly&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;6 装着完了&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom-right&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;全システムの最終チェックを行い、戦闘モードへ。ソルジャンヌ、出撃準備完了!&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;full-body frontal hero pose in a futuristic corridor, fully suited with helmet on, arms relaxed at sides&amp;#34;}],&amp;#34;footer&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;一つ一つの装着が、命を守り、力を引き出す。 ソルジャンヌの戦いは、ここから始まる。&amp;#34;],&amp;#34;design&amp;#34;:&amp;#34;dark red cinematic footer strip with centered white Japanese slogan&amp;#34;},&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:2,&amp;#34;columns&amp;#34;:3,&amp;#34;panel_count&amp;#34;:6,&amp;#34;panel_borders&amp;#34;:&amp;#34;thin white dividers&amp;#34;,&amp;#34;number_badges&amp;#34;:6}},&amp;#34;text_rendering&amp;#34;:{&amp;#34;language&amp;#34;:&amp;#34;Japanese&amp;#34;,&amp;#34;font&amp;#34;:&amp;#34;bold sans-serif headline with smaller sans-serif body text&amp;#34;,&amp;#34;colors&amp;#34;:&amp;#34;white text on black, red, and white info bars; red numbered squares with white numerals&amp;#34;},&amp;#34;composition&amp;#34;:&amp;#34;16:9 wide infographic board, six equal photo panels arranged in a 3-by-2 grid, each panel captioned below with a red numbered box from 1 to 6&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;moody workshop lighting with metallic reflections and red accent lights, realistic shadows, cinematic sci-fi atmosphere&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;梦幻涩谷泡泡少女&#34;&gt;梦幻涩谷泡泡少女
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/terunari/status/2048308270914490666&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/terunari&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@terunari&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/088.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/088_hu_ac2ca09b4bcbac9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/088_hu_d945777b617775df.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;梦幻涩谷泡泡少女&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy anime-style full-body illustration of a fashionable young woman standing in the middle of the Shibuya scramble crossing in Tokyo on a bright clear day, with the iconic cylindrical SHIBUYA 109 building centered in the background and recognizable commercial billboards surrounding it, including signs resembling H&amp;amp;M, DHC, DMM TV, Big Echo, and other dense Japanese city advertisements. She is the single main subject, posed gracefully as if floating or weightless, standing on top of one giant iridescent translucent soap bubble beneath her skirt. Her face is softly obscured and de-emphasized, while her long dark violet-black hair flows dramatically in the wind, with soft bangs and a pink floral headband accessory with ribbon on one side. She wears a sweet feminine spring outfit in pastel pink: a long-sleeved frilled blouse under a sleeveless pink dress with a ribbon tie at the chest, a tan belt at the waist, layered ruffles at the hem, and subtle sakura flower embroidery near the lower skirt. Her expression and body language should feel gentle, elegant, whimsical, and slightly magical. One hand is raised with her index finger pointing upward toward a floating bubble that contains 1 smartphone; her other hand holds a loop handle attached to a large transparent iridescent shopping-bag-like bubble containing 3 visible items: 1 SHIBUYA 109 paper shopping bag, 1 pink shopping bag or package, and 1 small pink bunny-faced pouch. Also include 1 separate floating smartphone/tablet-like device outside the bubbles near the lower left side, and 1 floating bubble on the lower right containing 1 compact camera. Surround her with many soap bubbles of different sizes, all highly reflective with rainbow highlights and delicate transparency, creating a soft sparkling atmosphere. The city scene should be busy but slightly softened, with pedestrians in the far background, crosswalk stripes in the foreground, and warm sunlight filtering through the urban canyon. Use polished high-detail anime illustration rendering, luminous pastel colors, glossy reflections, soft bloom, a romantic spring palette, and a magical everyday Tokyo aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暴风雨热带城市与屋顶飞机&#34;&gt;暴风雨热带城市与屋顶飞机
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gerry/status/2048303505702629537&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gerry&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gerry&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/089.webp&#34;
	width=&#34;1199&#34;
	height=&#34;678&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/089_hu_8c85bf73daf63068.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/089_hu_e78d6f4e7fd96e6f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暴风雨热带城市与屋顶飞机&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;424px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic wide aerial view of a tropical coastal city at sunset during a violent storm, split dramatically between dark storm clouds on the left and blazing golden sunlight on the right. In the foreground, a small single-engine light airplane with a high wing and visible tail is parked or perched precariously on a flat rooftop, seen from behind and slightly above, centered near the bottom of the frame. To the left midair, 1 helicopter flies low over the city with its searchlight cast downward. In the sky, include 1 faint lightning bolt on the far left. The city below is dense with wet streets, reflective pavement, low-rise commercial buildings, and a few taller modern towers, including 1 prominent striped high-rise near the center. A glowing red circular neon sign is visible near the middle distance. On the right side, a calm bay or inlet curves through the city, lined with 1 row of tall palm trees along the waterfront road, and crossed by 1 long low bridge in the distance. The water and streets glisten from recent rain, reflecting the orange sunlight breaking through the clouds. Mood is tense, dramatic, and slightly surreal, like a movie still from an urban disaster thriller. Photorealistic, ultra-detailed, high dynamic range lighting, volumetric sun rays, storm atmosphere, wet surfaces, rich contrast, deep shadows, golden highlights, wide-angle lens, epic composition.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;户外运动服饰网格广告&#34;&gt;户外运动服饰网格广告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2049081198211736062&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/090.webp&#34;
	width=&#34;896&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/090_hu_f1558c734cabdcd9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/090_hu_b0414569d42985bc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;户外运动服饰网格广告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dynamic 2×2 grid collage of modern outdoor sportswear advertising posters, each panel representing a different adventure lifestyle brand. High-energy, editorial-style composition with bold typography and textured graphic design.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top-left panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Athletic male model in a bright blue insulated winter jacket, black snow pants, gloves, and sunglasses, stepping forward in a snowy environment. Snow particles flying, dramatic motion. Background features rough blue paint brush strokes. Bold distressed typography reads: “NEVER STOP EXPLORING.” Additional small text: “Built for extremes.” High contrast, rugged winter exploration theme.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top-right panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Fit male hiker climbing rocky terrain, wearing an olive green shirt, black trekking pants, and a large black backpack with orange straps. Dust and debris kicking up from the ground. Background includes orange paint strokes and sketched mountain graphics. Bold text: “BUILT FOR HERE – INDIA TESTED.” Handwritten Hindi accents and arrows. Warm earthy tones.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom-left panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Calm outdoor scene with a male model sitting on a rock, wearing a green jacket, beanie, sunglasses, and hiking shoes. Minimal scenic mountain illustration in the background with soft green tones. Typography reads: “ESCAPE THE NOISE – JUST GO OUTSIDE.” Clean, relaxed, nature-focused aesthetic with subtle graphic elements.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom-right panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Energetic female runner in motion wearing a purple athletic t-shirt, black shorts, and running shoes. Bright, playful background with purple and yellow paint splashes, doodles, arrows, and sun illustration. Bold typography: “READY FOR EVERYONE – START YOUR JOURNEY.” Youthful, vibrant fitness energy.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Overall style:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-resolution, photorealistic sportswear campaign
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bold brushstroke textures and grunge overlays
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mixed typography: distressed, handwritten, and modern sans-serif
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Strong color blocking per panel (blue, orange, green, purple)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Dynamic poses conveying motion, strength, and adventure
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Clean grid layout with balanced spacing
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Commercial advertising / brand campaign aesthetic (Nike, Decathlon style)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Professional, cinematic lighting with sharp detail and contrast
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mood: Energetic, adventurous, motivational
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Aspect ratio: 1:1 (square collage)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;地形字母卫星图面板&#34;&gt;地形字母卫星图面板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/madpencil_/status/2049080259476349218&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/madpencil_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@madpencil_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/091.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/091_hu_62b8746b955a3fad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/091_hu_bbe920a4698343b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;地形字母卫星图面板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic satellite view from space, a clean modern editorial layout of 9 vertical panels arranged side-by-side on a white background, together forming the word &amp;#34;MADPENCIL&amp;#34;, each panel containing one letter created entirely from natural Earth topography, no artificial text overlays:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 1 (M): rugged mountain ranges and deep valleys forming a sharp, angular &amp;#34;M&amp;#34;, rocky textures, high elevation shadows
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 2 (A): winding river cutting through dense green forest forming an organic &amp;#34;A&amp;#34;, strong contrast between water and vegetation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 3 (D): desert dunes and wind-sculpted sand patterns shaping a smooth &amp;#34;D&amp;#34;, warm tones, soft gradients
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 4 (P): agricultural farmland grids and patchwork fields forming a structured &amp;#34;P&amp;#34;, geometric patterns clearly visible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 5 (E): glacier and ice formations carving a crisp &amp;#34;E&amp;#34;, bright whites and icy blues, fractured textures
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 6 (N): braided river system across floodplains forming &amp;#34;N&amp;#34;, branching channels with natural flow lines
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 7 (C): coastal shoreline and ocean edge shaping a curved &amp;#34;C&amp;#34;, waves and sediment gradients visible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 8 (I): narrow canyon or straight river cutting through terrain forming a minimal &amp;#34;I&amp;#34;, strong vertical emphasis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 9 (L): volcanic terrain with lava flows forming an &amp;#34;L&amp;#34;, dark rock with glowing red/orange lava accents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;top-down satellite perspective, NASA Earth observation style, hyper-detailed textures, realistic geography, consistent scale and lighting across all panels, minimal clouds, high contrast, sharp focus, subtle atmospheric haze, natural color grading, ultra high resolution 8K, clean spacing between panels, modern gallery-style composition, visually cohesive but each panel distinctly different biome, letters clearly readable yet organically integrated into terrain
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;冰咖啡产品信息图&#34;&gt;冰咖啡产品信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2049082049995362785&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/092.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/092_hu_f430dbb0b53aa34d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/092_hu_bfc913c0d69a3a17.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;冰咖啡产品信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end café-style product photograph of a transparent glass filled with iced coffee, centered against a soft beige and cream seamless studio background. The drink shows a rich dark coffee base blending with creamy milk swirls, creating a smooth gradient effect. Several clear ice cubes are visible with realistic transparency and light refraction. The glass has subtle condensation droplets, adding freshness. Soft natural studio lighting creates delicate highlights and a clean shadow beneath the glass. Ultra-sharp focus, premium beverage advertisement style, DSLR macro photography, hyper realistic, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PROMPT 2 - Create a hyper-realistic exploded vertical infographic composition of an iced coffee.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top → Bottom structure:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Foam Layer (light creamy foam with soft airy texture)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Coffee Liquid (rich dark espresso layer with smooth gradient)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Ice Cubes (transparent cubes with sharp edges and reflections)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Milk Layer (soft creamy white layer with smooth blend effect)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Glass Base (clear minimal glass structure)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;All elements must be perfectly centered, evenly spaced, and aligned vertically. Use a soft beige seamless background with clean café-style lighting and subtle realistic shadows beneath each floating element. The composition should feel like a premium beverage ad combined with a clean infographic layout.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add clean minimalist text labels with thin pointer lines using these exact labels:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Foam”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Coffee”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Ice”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Milk”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Glass”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic liquid detail, sharp reflections, premium commercial photography, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;时尚连衣裙系列信息图&#34;&gt;时尚连衣裙系列信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab/status/2049073530738754042&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@cellinlab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/093.webp&#34;
	width=&#34;819&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/093_hu_47c6ab77e8e2fa59.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/093_hu_9d02d9742ac6b6c1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;时尚连衣裙系列信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;79&#34;
		data-flex-basis=&#34;191px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;image_type&amp;#34;: &amp;#34;Commercial Fashion Infographic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;model&amp;#34;: &amp;#34;Young Asian woman with elegant features and dark hair tied in a loose bun&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;attire&amp;#34;: &amp;#34;Satin midi dress with spaghetti straps and a draped cowl neckline&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;fit&amp;#34;: &amp;#34;Bodycon / slim fit with side ruching and a subtle leg slit&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout_structure&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;composition&amp;#34;: &amp;#34;Multi-panel editorial layout&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;header&amp;#34;: &amp;#34;Bold serif typography reading &amp;#39;DRESS COLLECTION&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;main_feature&amp;#34;: &amp;#34;Large centered portrait of the model, a young Asian woman, wearing a wine-red satin dress&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;secondary_panels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Dress Features grid with minimalist icons&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Dress Guide sidebar detailing neckline, sleeve, and length&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Color Collection row showing the dress in Black, Emerald Green, Navy, Champagne, and Royal Blue&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Dress Style Guide footer featuring the model in various atmospheric evening settings&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;aesthetic_style&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;color_palette&amp;#34;: &amp;#34;Deep jewel tones (Wine Red, Emerald, Navy, Royal Blue) contrasted with Champagne and Black against a warm cream or beige background&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;lighting&amp;#34;: &amp;#34;Soft studio lighting with elegant highlights on the satin fabric texture&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;vibe&amp;#34;: &amp;#34;Luxurious, timeless, and sophisticated commercial advertising&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;typography&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;primary&amp;#34;: &amp;#34;Classic Serif for titles&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;secondary&amp;#34;: &amp;#34;Clean Sans-Serif for body text and technical details&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;单色时尚封面&#34;&gt;单色时尚封面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sha_zdiii/status/2049088961008848905&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sha_zdiii&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sha_zdiii&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/094.webp&#34;
	width=&#34;670&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/094_hu_f5db21fbfc89aec1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/094_hu_7eb4175a44dfb464.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;单色时尚封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;55&#34;
		data-flex-basis=&#34;134px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic high-fashion magazine cover, black and white cinematic portrait of a confident young female model, slightly messy wet-look hair, sharp jawline, intense gaze, natural glossy lips, wearing a premium black leather trench coat over a minimal outfit.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The model is posing slightly tilted forward with attitude, hands adjusting the coat, accessorized with multiple rings, ear piercings, and layered chain necklaces.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is dramatic studio lighting with soft shadows, high contrast, editorial Vogue-style aesthetic, ultra-detailed skin texture, 8K resolution, sharp focus.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background is minimal gradient grey with soft light streaks for depth.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Magazine cover layout included:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Large bold serif title at top: “VOID ELITE”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Subtitle small: “Edition 07 / 2026”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Left text: “NOT BUILT TO FOLLOW — BUILT TO DOMINATE”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom left: “HIGH-FASHION STREET LUXURY”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Right vertical text: “UNTOUCHABLE PRESENCE”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom right: “SILENCE IS POWER”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add a small holographic glitch-style label over the eyes with text “ICON”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: luxury fashion editorial, Vogue, Harper’s Bazaar, monochrome aesthetic, modern typography, clean layout, ultra premium branding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ar 2:3 --style raw --quality 2 --sharp focus --photorealistic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;快餐角色海报&#34;&gt;快餐角色海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/LoovaAI/status/2049085173015425354&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/LoovaAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@LoovaAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/095.webp&#34;
	width=&#34;880&#34;
	height=&#34;1168&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/095_hu_4c7f3d39e545b335.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/095_hu_7ced76a3701ab5be.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;快餐角色海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use the character in image 1 as the main subject. Create a vertical poster ad in American fast food diner style. Low angle, wide lens. Red / yellow / white palette with ketchup splashes, melting cheese graphics, comic burst shapes, retro diner typography, and bold fast food poster collage aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;跨越两个世纪的纽约电影感海报&#34;&gt;跨越两个世纪的纽约电影感海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2049460661109879022&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/096.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/096_hu_712435186164880e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/096_hu_40c0d17ec5a1c06c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;跨越两个世纪的纽约电影感海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a cinematic 3:4 vertical poster of New York City that feels truly epic and unconventional, showing the passage from the 20th century to the 21st century in one seamless image. Place a lone figure at the center of the composition, standing in the middle of the street and looking forward as if witnessing New York across time. The left side should depict 20th-century New York with warm sepia atmosphere, vintage taxis, old newsstands, retro lamps, and landmarks like the Chrysler Building and Empire State Building. The right side should depict 21st-century New York with glass skyscrapers, One World Trade Center, digital billboards, and modern urban energy. Make the transition natural rather than split-screen, with coherent perspective, wet reflective pavement, realistic textures, atmospheric depth, and no text.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;蓝眼泪鸡尾酒教程信息图海报&#34;&gt;蓝眼泪鸡尾酒教程信息图海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab/status/2049460927121244510&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@cellinlab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/097.webp&#34;
	width=&#34;1067&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/097_hu_9c4415e7dcaa1d2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/097_hu_a9eaadf9e22e347a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;蓝眼泪鸡尾酒教程信息图海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;88&#34;
		data-flex-basis=&#34;213px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;试着帮我生成调制一杯蓝色眼泪鸡尾酒（配料流程你自己发挥想象，但是要写清楚确保可复现）的流程教学图和概念设计宣传图，轻奢酒咖海报风格，横版。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ascii-登革热信息图&#34;&gt;ASCII 登革热信息图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mapasbr/status/2049458767520051448&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/mapasbr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mapasbr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/098.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/098_hu_17f07d5693cbf7c6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/098_hu_8e33f45aa7a814cd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;ASCII 登革热信息图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infográfico ASCII DENGUE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/poster.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分类文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：角色设计案例</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-character-cases/</guid>
        <description>&lt;p&gt;本页收录 &lt;code&gt;角色设计&lt;/code&gt; 分类下的 13 个案例。每个条目保留原案例链接、作者、生成图和完整提示词。&lt;/p&gt;
&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;角色设计&#34;&gt;角色设计
&lt;/h2&gt;&lt;h3 id=&#34;动漫快照转换&#34;&gt;动漫快照转换
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Thereallo1026/status/2044241997163311569&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Thereallo1026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Thereallo1026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/000.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/000_hu_5fe4266b32ad16cf.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/000_hu_a1f3ef59923038a0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫快照转换&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Show me the attached image as a snapshot from an actual anime
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;persona5-角色参考卡&#34;&gt;Persona5 角色参考卡
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrednightS/status/2045075682837836265&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrednightS&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iamrednightS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/001_hu_57be85d9a8e82c4a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/001_hu_776e82cda4697edc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Persona5 角色参考卡&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;基于此角色和背景，请制作一份类似官方设定资料的角色资料卡。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・包含三视图：正面、侧面和背面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・添加角色面部表情的变化・分解并展示服装和装备的详细部分
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・添加色板・包含世界观设定的简要说明
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・总体上，使用有组织的布局（白色背景，插画风格）高分辨率、专业概念艺术风格
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;美少女游戏角色介绍页&#34;&gt;美少女游戏角色介绍页
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/09lyco/status/2045281845391323175&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/09lyco&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@09lyco&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/002.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/002_hu_c6045b71b70fa970.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/002_hu_4907ed0cfccb62c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;美少女游戏角色介绍页&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最新モデルの画像生成ツールを使用して、
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;このちびキャライラストと立ち絵を使って本物のサイトページのようにキャラクター紹介ページ風イラストを作ってください。 （紹介ページとして使ってもおかしくないもの）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ギャルゲーのキャラクター紹介ページをイメージした高品質なもの。 顔の差分なども乗っている、CGイラストが存在する。ちびキャラが存在する。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;「ここに自己紹介」
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;名前:（ここに名前） 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;イメージカラー:（ここに色） 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;身長:（ここに身長）cm 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;体重:（ここに体重）kg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;キャッチコピー:&amp;#34;「ここにセリフ」&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;官方角色设定表日文&#34;&gt;官方角色设定表（日文）
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Toshi_nyaruo_AI/status/2045025277538107420&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Toshi_nyaruo_AI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Toshi_nyaruo_AI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/003.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/003_hu_8b2c1f84cf9e3eab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/003_hu_16e900efd803603e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;官方角色设定表（日文）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;このキャラクターと背景を元に、 公式設定資料のようなキャラクターシートを作成してください。 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・正面、側面、背面の3面図を含める ・キャラクターの表情バリエーションを追加 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・衣装や装備の詳細パーツを分解して表示 ・カラーパレットを追加 ・世界観の簡単な説明を入れる 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・全体は整理されたレイアウト
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;（白背景、図解風） 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・アスペクト比16：9
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;高解像度、プロのコンセプトアートスタイル
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;机甲少女海上城市主视觉&#34;&gt;机甲少女海上城市主视觉
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/old_pgmrs_will/status/2046144801071079612&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/old_pgmrs_will&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@old_pgmrs_will&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/004.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/004_hu_f8ffb7e0987258b8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/004_hu_fd1bd7e4ae833a8f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;机甲少女海上城市主视觉&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A mecha girl mid-teens, pale skin smudged with soot and salt spray, sharp amber eyes with glowing HUD reticles, waist-length ash-white hair tied in a high ponytail whipping in the sea wind, matte gunmetal exoskeleton armor plating her shoulders, forearms and shins, exposed hydraulic pistons at the joints, chest rig with glowing cyan coolant lines, oversized oil-stained hangar jacket half slipping off one shoulder, a massive rail cannon resting on her right shoulder, dog tags and frayed red ribbon at her collar , standing off-center to the left on the rusted edge of a tilted steel platform jutting out over dark water, weight shifted onto one leg, left hand gripping the cannon strap, head turned slightly toward camera with a quiet defiant stare, steam venting from her back thrusters, her ponytail and jacket streaming sideways in the salt wind , a vast derelict sea-city at dusk, colossal megastructures of unknown purpose rising from the ocean in staggered silhouettes, bone-white monolithic towers fused with barnacled steel, cyclopean ring-shaped constructs canted at broken angles, rusted skeletal gantries threaded with dead cables, dark swells rolling between the pylons, shipwrecks half-swallowed at their feet, thick sea fog clinging to the bases while the upper structures pierce into a bruised sky, scattered faint lights blinking high in the towers like distant eyes , moody low-key lighting, cold teal ambient from the overcast sky, warm amber sodium glow leaking from a distant structure camera-right, hard backlight from a low sun behind the towers carving her silhouette, volumetric god rays cutting through sea mist, wet specular highlights on her armor , 35mm anamorphic lens, slight low angle looking up past her shoulder toward the structures, medium-wide shot, shallow depth of field with foreground rust in soft focus, horizontal lens flares, fine atmospheric haze compressing the distant megastructures into layered silhouettes , cinematic anime key visual, painterly digital illustration with crisp line art, desaturated oceanic palette of teal, bone-white and rust punched by small warm accent lights, film grain, high-contrast editorial poster aesthetic . Format 16:9.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;圣斗士星矢黄金圣斗士卡片网格&#34;&gt;圣斗士星矢黄金圣斗士卡片网格
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2046476566537080849&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/005.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/005_hu_2f54ac4216964955.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/005_hu_2a5d701f29577fa7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;圣斗士星矢黄金圣斗士卡片网格&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成圣斗士星矢12个黄金圣斗士的12宫格卡牌图片,每张卡牌上写上对应的中文名,每行4个,宽高比16:9。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;chaos-notes-遮脸角色图&#34;&gt;Chaos Notes 遮脸角色图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog/status/2046448773162033240&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@loglogrog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/006.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/006_hu_60e069b94aa2d3a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/006_hu_dbf0c2afb90098fb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Chaos Notes 遮脸角色图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 混沌としたメモ書き・記号の集合体からキャラクターの顔を浮かび上がらせるアート
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- スタイル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 白い紙の上に黒インクで描かれた大量の手書きメモ、数式、記号、ランダムな線。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 紙いっぱいに散らばる書き殴り風のカオス。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 所々に赤インクの強調(ライン、塗り潰し、マーカー風の塊)。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- アナログのノート落書きのような質感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 構図
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- ランダムなメモや記号が全体を覆い尽くす。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 黒インクの線や文字の密度が「キャラクターの顔」の位置に集中する。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 結果として、混沌の中から「与えられたキャラクターの顔のシルエット・表情」がうっすら浮かび上がる。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 顔は写実的ではなく、カオスの断片が集まって形を成す。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 色彩
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- モノクロ(黒・白)を主体に構成。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 赤インクをアクセントとして散発的に配置。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 彩度は抑えめ、アナログの紙とインク感を重視。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 表現要素
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 読めるようで読めない文字列、日本語や英数字が混在。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 数式記号、矢印、点、斜線、クロス、ドリップ(インクの飛び散り)。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- キャラクターの顔の目や髪の輪郭は、メモや記号の配置の「余白」や「濃淡」で浮かび上がる。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 禁止事項
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 顔を直接的に描き込む写実ポートレート。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- デジタル処理的で整然とした幾何学模様。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- カラフルな彩色や過飽和表現。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- ロゴ、透かし、人工的なCG感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- Definition of Done (DoD)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 全体は「混沌としたメモ・記号の集合体」として成立している。  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 与えられたキャラクターの顔が、混沌の濃淡・配置から自然に浮かび上がる。  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 色はモノクロ+赤アクセントのみ。  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 紙とインクの手描き的質感を保持している。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;动漫武术战斗插画&#34;&gt;动漫武术战斗插画
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tanemomi_Ver2/status/2046063806846214265&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tanemomi_Ver2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Tanemomi_Ver2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/007_hu_9cf5386c675bd84a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/007_hu_c90ccebf0d02356c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;动漫武术战斗插画&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;An anime-style illustration of a {argument name=&amp;#34;action type&amp;#34; default=&amp;#34;high-impact martial arts battle&amp;#34;} between two young female fighters in a {argument name=&amp;#34;setting&amp;#34; default=&amp;#34;traditional wooden martial arts dojo&amp;#34;}. In the foreground, a girl with black hair in a high bun wears a {argument name=&amp;#34;character 1 color theme&amp;#34; default=&amp;#34;red and white&amp;#34;} Chinese-style martial arts outfit with baggy pants. She is in a dynamic, low, forward-thrusting stance, surrounded by swirling red energy and water splashes. In the background to the right, a girl with light purple hair in twin buns wears a {argument name=&amp;#34;character 2 color theme&amp;#34; default=&amp;#34;green and purple&amp;#34;} Chinese dress with gold embroidery and black tights. She is leaping through the air in a flying kick pose, surrounded by swirling blue energy. The wooden floorboards are splintering from the intense impact, with debris and dust flying through the air. Above them hangs a weathered wooden sign with the text &amp;#34;{argument name=&amp;#34;sign text&amp;#34; default=&amp;#34;武術会&amp;#34;}&amp;#34;. The scene features dramatic lighting, a low-angle dynamic perspective, and intense action effects.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;班加罗尔花市里的-gta-6&#34;&gt;班加罗尔花市里的 GTA 6
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc/status/2048174302164394493&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ismajc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/008.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/008_hu_bf6b81a84a2781af.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/008_hu_be718831680f9c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;班加罗尔花市里的 GTA 6&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;game&amp;#34; default=&amp;#34;gta 6&amp;#34;} in {argument name=&amp;#34;location&amp;#34; default=&amp;#34;Bangalore’s market flower&amp;#34;} in India
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;新宿酒吧里的-gta-6-场景&#34;&gt;新宿酒吧里的 GTA 6 场景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc/status/2048166630933282995&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ismajc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/009.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/009_hu_a949bf78d69991b5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/009_hu_247ff5d36aa62487.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;新宿酒吧里的 GTA 6 场景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;game&amp;#34; default=&amp;#34;GTA 6&amp;#34;} in {argument name=&amp;#34;bar name&amp;#34; default=&amp;#34;La Jetée Bar&amp;#34;} (that pays homage to Chris Marker) in {argument name=&amp;#34;location&amp;#34; default=&amp;#34;Shinjuku, Tokyo&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;白猫计划-eleanor&#34;&gt;白猫计划 Eleanor
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211/status/2048309139013853421&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yume00112211&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/010.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/010_hu_25e2c1330767f443.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/010_hu_8dac83cc06b48cea.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;白猫计划 Eleanor&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;series&amp;#34; default=&amp;#34;White Cat Project&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;character&amp;#34; default=&amp;#34;Eleanor&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;剪影拼贴角色主视觉海报&#34;&gt;剪影拼贴角色主视觉海报
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SimplyAnnisa/status/2049468867106189319&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/SimplyAnnisa&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SimplyAnnisa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/011.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/011_hu_96920472c4e5c3b8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/011_hu_951dbaeab63a82fb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;剪影拼贴角色主视觉海报&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A character promotional poster titled “INPUT NAME,” designed in a unified vertical key visual composition (9:16). The upper half features the most recognizable element of the character as a dominant oversized visual silhouette. The middle to lower section contains the full character as a secondary subject. Inside the large silhouette and around the character, use a double-exposure and collage-style narrative composition with scenes, symbolic imagery, supporting elements, and environmental details blended into mist, ink wash, and negative space. The left and right sides include complementary secondary elements to create narrative tension and spatial variation. A continuous flowing visual line runs from top to bottom, connecting the main character, internal collage, and the large upper silhouette. Preserve large areas of negative space with ink diffusion, soft blurring, and fragmented transitions inspired by Eastern aesthetics. The style is cohesive, refined, restrained, and poster-worthy.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电视剧主题像素游戏概念板&#34;&gt;电视剧主题像素游戏概念板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sciencedegens/status/2049359171594903856&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/sciencedegens&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sciencedegens&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/012.webp&#34;
	width=&#34;1200&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/012_hu_b99a06de04a3bd5c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/012_hu_a7e307ab0d4e649b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电视剧主题像素游戏概念板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;爱情公寓 电视剧主题 像素养成类游戏概念图，包括场景全局内容，周围环绕各人物形象三视图，底部是场景特写，右下角是剧情梗概。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;随机一个经典国内古装电视剧，生成古装电视剧主题像素养成类游戏概念图，包括场景全局内容，周围环绕各人物形象三视图，底部是场景特写，右下角是剧情梗概。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;「XXX」电视剧主题像素养成类游戏概念图，包括场景全局内容，周围环绕各人物（人物别重复）形象三视图，底部是场景特写，右下角是剧情梗概。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/character.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分类文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示词宝库：人像摄影案例</title>
        <link>https://knightli.com/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/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/</guid>
        <description>&lt;p&gt;本页收录 &lt;code&gt;人像摄影&lt;/code&gt; 分类下的 55 个案例。每个条目保留原案例链接、作者、生成图和完整提示词。&lt;/p&gt;
&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;人像摄影&#34;&gt;人像摄影
&lt;/h2&gt;&lt;h3 id=&#34;便利店霓虹人像&#34;&gt;便利店霓虹人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045167461147042202&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/000.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/000_hu_f5ded828a47ee136.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/000_hu_9c32af7f48c22c7b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;便利店霓虹人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;35mm film photography with harsh convenience store fluorescent lighting mixed with colorful neon signs from outside, authentic film grain, high contrast, slight color cast, cinematic street editorial style, intimate medium shot, early 20s sexy Chinese female idol with ultra-realistic delicate refined Chinese features, seductive almond-shaped fox eyes with natural double eyelids, high nose bridge, small sharp V-shaped jawline, flawless porcelain skin with cool ivory undertone and visible specular highlights from fluorescent light, subtle skin texture and micro pores, natural dewy makeup with soft flush on cheeks, glossy natural pink lips slightly parted, subtle natural freckles across nose and cheeks, long dark brown hair in a messy high ponytail with many loose strands falling around face and neck, wearing an oversized white button-up shirt as the only top, unbuttoned at the top with deep cleavage and loosely tied at the waist, paired with a tiny black pleated mini skirt, barefoot in simple white slides, seductive casual leaning pose against the glass door of a 24-hour convenience store at late night, body slightly arched, one leg bent with foot resting against the door frame, the other leg straight, one hand holding a bottle of iced drink, the other hand lightly pulling the hem of her mini skirt, intensely seductive playful yet slightly vulnerable gaze straight at the viewer with soft doe eyes full of quiet temptation and teasing smile, bright cold fluorescent store light from inside mixed with pink and blue neon glow from outside signs, realistic reflections on glass door, blurred convenience store interior with shelves and snacks in background, authentic 35mm film color grading with harsh lighting and neon accents, extremely sharp yet soft skin rendering, natural hair strands, realistic fabric wrinkles and drape on the oversized shirt and mini skirt, no plastic skin, no digital over-sharpening, no airbrushing, no blemishes, no moles, no oily skin, no watermark, no text, authentic late-night convenience store atmosphere
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;电影感极简人像&#34;&gt;电影感极简人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iam_miharbi/status/2045151354679665101&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/iam_miharbi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iam_miharbi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/001_hu_a8cd363b79ab3a8d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/001_hu_2842eaf4560e93aa.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;电影感极简人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate a cinematic minimal portrait of a solitary man standing in an intense orange to red gradient environment, strong silhouette lighting, deep shadow contrast, reflective glossy floor, symmetrical composition, minimal
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式温泉旅馆人像&#34;&gt;日式温泉旅馆人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045092449803284923&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/002.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/002_hu_3bb6d0434e7554a2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/002_hu_f7835d1315a59bf2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式温泉旅馆人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;35mm film photography, warm vintage Japanese onsen ryokan aesthetic, soft ambient wooden lantern lighting mixed with gentle natural window light, subtle film grain, gentle color shift, high atmosphere editorial style, intimate medium shot, early 20s beautiful Chinese female idol with ultra-realistic delicate refined Chinese features, seductive almond-shaped fox eyes with natural double eyelids, high nose bridge, small sharp V-shaped jawline, flawless porcelain skin with warm ivory undertone, visible subtle skin texture and micro pores, soft natural makeup with dewy glow, subtle rosy flush on cheeks, natural soft pink lips slightly parted, long dark brown hair tied in a loose low bun with some messy strands falling around face and neck, wearing a loose white yukata (traditional Japanese bathrobe) deliberately slipped off one shoulder and loosely tied at the waist, the fabric slightly open revealing smooth skin and subtle cleavage, barefoot, seductive relaxed sitting pose on the edge of a traditional wooden engawa veranda at a vintage onsen ryokan, body slightly turned toward the camera, one leg bent with foot resting on the wooden floor, the other leg gently dangling, one hand lightly holding the yukata collar, the other hand resting on the wooden floor behind her for support, softly arched back to gently accentuate curves, intensely seductive yet gentle and inviting gaze straight at the viewer with soft doe eyes full of quiet temptation and warmth, warm wooden interior with paper sliding doors and distant steaming hot spring in soft focus, gentle rim lighting highlighting skin and fabric texture, authentic vintage film color grading with warm tones, extremely sharp yet soft skin rendering, natural hair strands, realistic fabric wrinkles and drape on the yukata, no plastic skin, no digital over-sharpening, no airbrushing, no blemishes, no moles, no oily skin, no watermark, no text, authentic 35mm film Japanese onsen ryokan atmosphere
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;35mm-闪光编辑风人像&#34;&gt;35mm 闪光编辑风人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045052982728016131&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/003.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/003_hu_305319b81c9e8f3d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/003_hu_beb530d223306f78.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;35mm 闪光编辑风人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;35mm color film photography with harsh direct on-camera flash, specular highlights on skin and clothing, strong catchlights in eyes, high contrast flash illumination, authentic film grain and color shift, high fashion fresh innocent basketball court editorial style, intimate first-person low-angle POV shot from below, early 20s sexy Chinese female idol with ultra-realistic delicate refined Chinese features, seductive almond-shaped fox eyes with natural double eyelids, high nose bridge, small sharp V-shaped jawline, flawless realistic porcelain skin with cool ivory undertone and visible flash specular highlights, fine delicate skin texture with subtle pores micro details and natural dewy glow under flash, fresh natural sporty makeup with soft dewy glow, subtle natural flush on cheeks, natural pink lips slightly parted, subtle natural freckles across nose and cheeks, long dark brown hair tied in a high playful ponytail with some loose strands framing the face and realistic loose strands, wearing a loose white tank top and white high-waisted basketball shorts, white knee-high sports socks, seductive natural leaning pose against the basketball hoop pole on the outdoor court at dusk, body angled sideways with naturally arched back and hips gently pushed back to accentuate perky round hips and sexy butt curve, one leg naturally extended forward toward the camera and the other leg slightly bent to emphasize long sexy legs, both hands lightly resting on the basketball pole at shoulder height, intensely seductive playful yet pitiable doe-eyed gaze straight at the viewer with soft vulnerable longing eyes and a gentle teasing smile full of quiet temptation and desire, harsh direct on-camera flash creating sharp specular highlights and strong catchlights, background with blurred basketball court and hoop under dusk sky, high contrast film color grading with natural flash look, extremely sharp yet soft skin rendering with authentic 35mm direct flash aesthetic, natural hair strands, realistic fabric texture on tank top and shorts with socks detail, no plastic skin, no digital over-sharpening, no airbrushing, no blemishes, no moles, no oily skin, no watermark, no text, authentic 35mm direct flash film basketball court look --ar 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;卧室镜前自拍人像&#34;&gt;卧室镜前自拍人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2045002808903020962&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/004.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/004_hu_3aa3d6321aca43eb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/004_hu_a4607499955447e6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;卧室镜前自拍人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A stunning 18-year-old Chinese girl with a youthful, pure face and realistic skin texture, sitting on a cozy, slightly messy bed in her bedroom. She is taking a mirror selfie with a smartphone, capturing a natural and intimate moment. Wearing casual gray loungewear and neat white crew socks. Soft natural light (golden hour) streams in from a side window, creating a warm, moody, and cinematic atmosphere. 35mm lens, sharp focus on the subject in the mirror, depth of field with a beautifully blurred background (bokeh). Photorealistic, 8K, high resolution, studio quality, masterpiece.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative Prompts: no extra limbs, no deformed hands, no blur, no noise, no watermark, no text, no cartoon/anime style. Aspect Ratio: 3:4.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔和通透-35mm-人像&#34;&gt;柔和通透 35mm 人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046115431144902732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/005.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/005_hu_ead3166a14d82b24.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/005_hu_9d803bc26e7fa005.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔和通透 35mm 人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Analog 35mm film photography, soft airy Japanese-style aesthetic, gentle diffused natural window light, slight overexposure, pastel tones, low contrast, soft highlights, minimal indoor setting near a window with white curtains, clean light-colored wall, natural composition, eye-level, slightly closer full-body framing (mid-thigh to head), young East Asian woman, natural minimal makeup, soft realistic skin texture, long slightly messy dark hair, oversized white button-up shirt, light casual shorts, barefoot, simple and relaxed styling, standing naturally with relaxed posture, arms loosely at sides or slightly behind, facing camera, gentle soft smile, subtle stillness, focus on light, air, and quiet everyday mood, soft film grain, dreamy and understated atmosphere --ar 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢华魅力美妆人像&#34;&gt;奢华魅力美妆人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale/status/2044581766309060765&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@patrickassale&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/006.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/006_hu_290832876b0a66f1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/006_hu_d476e80abdbb6f01.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢华魅力美妆人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Luxury Glam Beauty Portrait:, Beautiful Black woman, youthful spirit, creamy vanilla, silk press, mahogany red, subtle confidence, textured fabric, sapphire blue, minimal jewelry, beachside breeze, lens flare effect, nostalgic, cinematic lens, symmetrical composition, soft focus, high fashion photography, monochromatic, dewy finish, mysterious tension, layered elements
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;916-cosplayer-人像截图&#34;&gt;9:16 Cosplayer 人像截图
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zoulinshen/status/2045082518089810073&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zoulinshen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Zoulinshen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/007.webp&#34;
	width=&#34;670&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/007_hu_6d0a9c27fc18bc06.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/007_hu_fcd08d0a514f6366.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;9:16 Cosplayer 人像截图&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;55&#34;
		data-flex-basis=&#34;134px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一张竖版手机截图风格的图片，整体比例接近 9:16。画面中心偏上是一位真人 coser，扮演（角色名称）的二次元角色。人物为写实风格，但五官略带动漫感，皮肤细腻，眼睛稍大，表情温柔地看向镜头，坐在室内的休闲场景中，例如咖啡厅或酒吧吧台前，背景有符合场景的道具。画面最上方加入手机系统状态栏 UI，包括时间、电量、信号、网络等图标，让整张图看起来像手机截图。画面底部叠加一块宽大的半透明 galgame 风格对话框，对话框左侧放一个与画面人物对应的动漫或 Q 版头像；对话框右侧排版文字：第一行用较大字体显示与前面相同的角色名字，下面一到两行显示一段适合这个角色人设的、温柔治愈风格的简体中文台词，由你自动创作。再在对话框下方加一条操作栏，仿照 galgame UI。整体风格高清、细节丰富、光线柔和、二次元与真人写真自然融合。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;城市回眸街拍人像&#34;&gt;城市回眸街拍人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tz_2022/status/2045892003775361198&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tz_2022&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Tz_2022&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/008.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/008_hu_8cbeba56057e830.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/008_hu_64bba90f899229f8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;城市回眸街拍人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;该画面为中近景，采用平视镜头，聚焦于一位年轻女性。她以七分身镜头呈现，身体坐姿略带倾斜，臀部向后撅起，双腿自然交叠，左腿在前，右腿在后，膝盖微屈。她将上半身向右后方扭转，头部则转向镜头方向，形成一个经典的“回眸”姿态，目光直视镜头，眼神清澈而略带一丝俏皮。她的发型是蓬松的棕色齐肩短发，刘海自然垂落，发尾微卷，妆容清淡自然，仅在眼部有轻微眼线勾勒，唇色为自然裸粉。画面整体采用自然日光滤镜，光线从画面左上方斜射入，形成柔和的逆光轮廓，面部和身体右侧被温暖的金色光线照亮，左侧则形成自然的阴影过渡，增强了立体感。灯光效果是明亮的自然光，带有轻微的镜头眩光，营造出午后阳光的氛围。拍摄角度为平视，构图上，人物主体位于画面中偏右位置，背景中的斑马线与道路线条形成自然的引导线，将视线引向人物。背景为城市街道，包含道路、斑马线、绿化带和远处的车辆，背景被适度虚化，但依然可辨识出树木、护栏和停放的电动车等元素，构图上利用了三分法，人物位于右侧三分之一处，增强了画面的平衡感。主体穿着一件军绿色迷彩图案的连帽卫衣，下身搭配黑色短裤，脚穿白色高帮运动鞋配白色中筒袜。背包为黑色，带有橙黄色装饰条纹和一个橙色毛绒挂件，材质为帆布和皮革拼接。整体风格为街头休闲风，肢体语言放松自然，表情略带好奇与俏皮，整体呈现出一种随性、青春、充满活力的都市少女形象。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sam-altman-滑板公园抓拍&#34;&gt;Sam Altman 滑板公园抓拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Malek1173989/status/2045836887684694395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Malek1173989&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Malek1173989&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/009.webp&#34;
	width=&#34;456&#34;
	height=&#34;703&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/009_hu_e0b361543eb632d3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/009_hu_8ce9a910d53d3bc2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sam Altman 滑板公园抓拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;64&#34;
		data-flex-basis=&#34;155px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;Sam Altman on a skateboard at a skatepark with no people.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;韩系偶像九宫格人像&#34;&gt;韩系偶像九宫格人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046268941941850575&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/010.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/010_hu_82000a8f63ec387d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/010_hu_f8719fddffa7f7c8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;韩系偶像九宫格人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical, Korean idol portrait photoshoot, 3x3 grid (nine frames), same person in all images, consistent facial features and styling, soft black mist filter effect, lowered contrast, blooming highlights, subtle glow around light sources
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ccd-闪光韩系偶像照&#34;&gt;CCD 闪光韩系偶像照
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046190539213885806&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/011.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/011_hu_571c0e2a9ebb0071.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/011_hu_132ebaae6384e909.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CCD 闪光韩系偶像照&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mobile phone photo, old CCD camera aesthetic, harsh flash, grainy, dim messy indoor lighting, candid snapshot feeling, slight motion blur, young Korean female idol, soft innocent look
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;韩系偶像九宫格拼贴人像&#34;&gt;韩系偶像九宫格拼贴人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046151898621993364&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/012.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/012_hu_d2407f2a414e8994.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/012_hu_fac057dc4f55b9a4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;韩系偶像九宫格拼贴人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — a 3x3 grid collage (nine images) forming a Korean idol portrait photoshoot series. Each frame features the same young Korean female idol, maintaining 100% consistency in facial features, proportions, hairstyle, and identity across all nine shots.   Natural, ultra-realistic skin texture, no retouching, no smoothing. Clean idol-style minimal makeup, soft glow, subtle imperfections.   Hair: long, voluminous dark hair, slightly tousled, consistent across all frames (natural loose flow, slight movement).  Outfit: cohesive Korean idol photoshoot styling — white shirt + short bottoms (or simple neutral-toned outfit), youthful, clean, slightly casual but styled. Same outfit across all frames.  Setting: minimal studio or simple indoor environment (plain wall, soft window light, clean background). Focus on subject, not environment.  Lighting: soft diffused natural light, gentle highlights, low contrast, slightly airy tones, subtle film-like softness.  Camera style: intimate portrait photography, slightly handheld feel, subtle imperfections (minor grain, slight blur in motion frames, imperfect framing).  Frame breakdown (3x3 grid):  Top row: - Top left: standing naturally, looking slightly away, relaxed expression - Top center: facing camera, casual mid-motion (hair or body slight movement) - Top right: slight side angle, soft gaze, natural candid feel  Middle row: - Center left: looking slightly upward, soft thoughtful expression - Center: close-up portrait, direct eye contact, gentle idol smile - Center right: turning body slightly, mid-motion candid frame  Bottom row: - Bottom left: seated or leaning casually, relaxed posture - Bottom center: back partially turned, looking over shoulder toward camera - Bottom right: standing close to frame, slightly playful or soft expression  Mood: Korean idol photobook / photocard aesthetic, intimate, soft, natural, everyday charm.  Quality: ultra-realistic, 8K detail, subtle analog film grain, natural imperfections, soft dreamy tone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔黑雾编辑风人像&#34;&gt;柔黑雾编辑风人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046434670724907395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/013.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/013_hu_b25492a69584d859.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/013_hu_771c0da60185e1a3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔黑雾编辑风人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — editorial portrait, single subject  soft black mist filter, subtle haze, gentle highlight bloom, muted tones  minimal indoor space, clean background, slight texture  young Korean woman, minimal makeup, natural skin texture  outfit: fitted ribbed knit top or soft camisole layered under a loose shirt, paired with high-waisted shorts or skirt; fabric slightly clings to body shape, soft and natural, no revealing elements  hair: slightly messy, natural volume  pose: sitting on floor with one leg bent and the other relaxed, body slightly leaning, shoulders not aligned, head tilted  composition: subject slightly off-center, negative space present  expression: calm, slightly distant, natural lips  lighting: soft side light, gentle shadow falloff  mood: understated, quiet, subtly sensual through natural body lines, relaxed and unposed  quality: fine grain, slight softness, realistic look
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;富士草莓校园人像&#34;&gt;富士草莓校园人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046483268019884384&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/014.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/014_hu_708da46c7002e19a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/014_hu_c414b5ea44cf7ff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;富士草莓校园人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — Japanese Fuji film style portrait, single subject  Fujifilm analog aesthetic (Pro 400H / Superia feel), soft pastel tones, slight green-magenta shift, low contrast, gentle highlight roll-off, fine film grain, subtle halation, slight vignette  bright natural daylight, diffused sunlight through window, soft shadows, airy atmosphere  young Japanese female idol, natural minimal makeup, fresh glowing skin, realistic texture, slight imperfections  outfit: Japanese school uniform (sailor-style or blazer uniform), neatly styled, non-revealing, youthful and clean  hair: natural dark hair, straight or softly flowing, a few loose strands  pose: front-facing or slight angle toward camera, relaxed posture; one hand gently holding a strawberry near lips, mid-action as if about to take a bite; shoulders relaxed, subtle natural body curve  expression: soft playful gaze, light smile or neutral lips, gentle eye contact with camera  setting: minimal indoor near window or simple outdoor corner, clean background, everyday atmosphere  composition: slightly off-center framing, intimate distance, candid feel  mood: fresh, youthful, sweet everyday moment, understated charm  quality: ultra-realistic, analog film look, natural imperfections, soft dreamy finish
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔黑雾偶像人像&#34;&gt;柔黑雾偶像人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046518189509734903&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/015.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/015_hu_bc38bc8da9e4ce8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/015_hu_5a8fb39a55758192.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔黑雾偶像人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — Korean idol portrait photography, single subject  soft black mist filter effect, lowered contrast, gentle highlight bloom, subtle glow, soft diffusion, slightly faded blacks  minimal indoor setting near window, white curtains, clean light-toned background  young Korean female idol, natural minimal makeup, dewy realistic skin texture, subtle imperfections  outfit: oversized white button-up shirt + short bottoms, slightly loose fit, soft and casual styling, no revealing elements  hair: long dark hair, slightly messy, natural volume, softly flowing  pose: relaxed standing or slight lean, body subtly angled, one leg slightly forward, shoulders relaxed; one hand lightly touching collar or resting near neckline, the other relaxed; gentle body curve without exaggeration  expression: soft cute smile, slightly playful eyes, direct or slightly off-camera gaze  camera: close to mid-body framing, eye-level, intimate distance, slight handheld feel  lighting: diffused natural daylight, soft shadows, gentle light wrapping around face and body  mood: cute yet subtly sensual, intimate, everyday softness, quiet romantic atmosphere  quality: ultra-realistic, fine film grain, slight softness at edges, natural imperfections, dreamy understated tone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;富士风情侣人像&#34;&gt;富士风情侣人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046502288102170757&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/016.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/016_hu_c23f1f87c252c325.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/016_hu_cdcf89bb138f217b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;富士风情侣人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — Japanese Fuji film style couple portrait, two subjects  Fujifilm analog aesthetic (Pro 400H / Superia feel), soft pastel tones, slight green-magenta shift, low contrast, gentle highlight roll-off, fine film grain, subtle halation  bright natural daylight, diffused sunlight through window, soft shadows, airy atmosphere  young Japanese couple, natural minimal makeup, realistic skin texture, slight imperfections  female outfit: oversized button-up shirt with loose shorts, relaxed fit, soft casual styling   male outfit: simple t-shirt or light shirt, clean and understated  hair: natural, slightly tousled for both  pose: close intimate distance — sitting or standing close together; the girl gently leaning toward him, one hand lightly resting on his shoulder or chest; the boy slightly leaning in, faces close, almost touching, capturing the moment just before a kiss  expression: soft smiles or gentle gaze toward each other, relaxed and natural, emotional connection visible  camera: close framing (waist-up), eye-level, intimate distance, slight handheld feel  setting: minimal indoor near window, light curtains, clean soft background  lighting: diffused daylight, gentle highlight bloom, soft shadow transitions  mood: warm, romantic, intimate everyday moment, natural affection  quality: ultra-realistic, analog film look, fine grain, slight softness, natural imperfections
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ai-自我认知人像&#34;&gt;AI 自我认知人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/80vul/status/2046218165961753047&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/80vul&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@80vul&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/017_hu_64aaf4731473978e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/017_hu_a42dd9a969e7de18.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 自我认知人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;根据你对我的认知 给我生成一个“你认识的我”的 图片
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;创建最写实的复古报纸头版设计&#34;&gt;创建最写实的复古报纸头版设计&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Naiknelofar788/status/2047207812800147647&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Naiknelofar788&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Naiknelofar788&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/018.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/018_hu_2c608b433002f6fc.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/018_hu_323f3c17caed1b68.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;创建最写实的复古报纸头版设计…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create the most realistic front page design of a vintage newspaper featuring the main character. The layout should be made in the style of a real printed newspaper with a cinematic black-and-white aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The main photo should be prominently placed in the center, framed, like the image in the title of the article. The subject in the photo should remain unchanged and clearly distinguishable in natural light and slightly increased contrast in order to match the spectacular editorial style.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a bold, attention-grabbing headline at the top (create a unique title that matches the spirit of the photo - it can be romantic, mysterious, funny, or dramatic). Add a smaller subtitle under it, which will look like a real newspaper caption.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add realistic newspaper elements:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Columns of small text (in the style of lorem ipsum, but framed like real news)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;At the top is the fictitious name of the publication (for example, The Daily Prompts, AI Times or similar - think creatively, according to the picture)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Date, issue number and location
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Decorative lines, dividers, and vintage typography
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Small additional articles or captions to the main image
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Optional stamps, doodles, or editorial notes to add personality.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Black and white or slightly faded monochrome paper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Fine paper texture, grain, and ink defects
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Small shadows and creases that mimic real printed paper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The aesthetics of a clean but slightly worn vintage newspaper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mood: Give the design personality, expressiveness and plot, as if the plot is part of the main article.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Aspect ratio: 4:5 or 1:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-detail, ultra-realistic hybrid of editorial photography and print design.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;杂志旅行指南专题页&#34;&gt;杂志旅行指南专题页
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/andis13/status/2047204384811921764&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/andis13&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@andis13&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/019.webp&#34;
	width=&#34;805&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/019_hu_45d9491e25ecda1f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/019_hu_a451650250877325.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;杂志旅行指南专题页&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;67&#34;
		data-flex-basis=&#34;161px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create image of Magazine feature article [travel] guide page, cute, information dense photo book style magazine feature article page. Add all necessary sections, tips, recommendations, information. add photos for any sections and recommendations if you like. Place the attached person at the precise location of [city, country]. Seamlessly blend the attached person as if they are sightseeing. Approach this task with the understanding that this is a critical, information rich page that will significantly influence visitor numbers, text accuracy is important. Fully use the entire [9:16] page. NEGATIVE PROMPT: coordinate texts @swiat_ai @ProfitAII
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;分析照片并给出可复现它的详细-json-提示词&#34;&gt;分析照片并给出可复现它的详细 JSON 提示词&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/pavellaslov/status/2047182214304055339&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/pavellaslov&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@pavellaslov&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/020.webp&#34;
	width=&#34;554&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/020_hu_a01827abf92f7e43.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/020_hu_1c76a74b60833556.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;分析照片并给出可复现它的详细 JSON 提示词…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;110px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;analyze this photo and give me a detailed JSON prompt that recreates it. break down the color grading and every exact color in the photo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(use Opus, not Sonnet. Opus has stronger visual analysis and writes more detailed JSON)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;paste that JSON into ChatGPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;upload your product image and prompt:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;using this JSON as reference, generate a person holding my product
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;save that generated photo as your character reference
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;attach it to every future generation for facial consistency
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;you now have a consistent UGC model that works across any product
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the JSON controls the lighting and color grading. GPT image-2 handles the character. you control the product placement.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the #1 tell on AI photos is flat colors and a grainy look. this method removes both.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5 minutes to set up. unlimited variations after.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;calming-green-tea-胶片套装正面展示&#34;&gt;CALMING GREEN TEA 胶片套装正面展示&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh/status/2047180061657452601&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ZaraIrahh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/021.webp&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/021_hu_43869e9f2beb7268.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/021_hu_46742f9b141cb08e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CALMING GREEN TEA 胶片套装正面展示…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CALMING GREEN TEA Film Kit displayed frontally, the open box shows soft sage-green film pouches and translucent ampoules with matte silver caps, product placed centrally with clear branding CALMING GREEN TEA -- 7 Days to Soothed Skin, pastel green background with botanical graphic accents, three minimal icons (leaf, wave, balance) floating around the product to emphasize benefits, photographic, hyper detailed, ultra realistic, lifelike, 8k, high detail, soft professional lighting.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;草莓软冰淇淋的超写实产品摄影&#34;&gt;草莓软冰淇淋的超写实产品摄影&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh/status/2047179916161212542&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ZaraIrahh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/022.webp&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/022_hu_2d052d4454c0beed.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/022_hu_50c9709cd2cd5cf7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;草莓软冰淇淋的超写实产品摄影…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic product photography of a rich strawberry soft-serve ice cream in a crispy waffle cone, styled with a clean, modern premium aesthetic. The soft serve is a vibrant natural pink, thick and creamy, sculpted into a smooth swirl with a softly curled peak, lightly topped with delicate strawberry dust or tiny fruit specks for a fresh, appetizing look. The cone has a rustic, crunchy texture with slightly uneven edges for an artisanal feel.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The background is soft beige with natural sunlight casting subtle leaf shadows, creating a calm, organic atmosphere. Include softly blurred greenery in the foreground for depth. The composition is minimal, balanced, and uses negative space effectively, similar to high-end American food brand ads.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On the left side, include modern English typography in a clean, elegant layout (not vertical).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Main headline:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sweet Strawberry Bliss.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Supporting line (smaller text):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Made with real strawberries. Smooth. Creamy. Irresistible.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add a small circular badge showing the price:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$5.80.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: soft natural daylight, warm highlights, shallow depth of field, high-end commercial food photography style.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mood: fresh, premium, modern, and inviting — aligned with upscale U.S. dessert branding.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;轻薄笔记本电脑上的超写实-uiux-样机&#34;&gt;轻薄笔记本电脑上的超写实 UI/UX 样机&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh/status/2047179669011616172&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ZaraIrahh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/023.webp&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/023_hu_4856939525bcde80.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/023_hu_d410dc5c5e8bbf83.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;轻薄笔记本电脑上的超写实 UI/UX 样机…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-realistic UI/UX mockup displayed on a slim modern laptop placed on a minimal wooden desk with soft natural daylight. The screen shows a clean SaaS dashboard with elegant typography, glassmorphism cards, smooth gradients, subtle drop shadows, and neatly spaced components. Visible charts, analytics panels, sidebar navigation, and micro-interactions. Realistic macOS-style window frame, soft reflections on the screen, shallow depth of field, cozy workspace atmosphere, shot in photorealistic product photography style, ultra-detailed.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;18-岁年轻男性的超写实电影感-dslr-照片&#34;&gt;18 岁年轻男性的超写实电影感 DSLR 照片&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2047175250761433416&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/024.webp&#34;
	width=&#34;955&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/024_hu_7a667145418d704c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/024_hu_1341a61c5ce56128.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;18 岁年轻男性的超写实电影感 DSLR 照片…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;79&#34;
		data-flex-basis=&#34;191px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic cinematic DSLR photograph of an 18-year-old handsome young man with a slim skinny body, lean physique, narrow shoulders and waist, standing confidently in front of a blue 2017 Ford Mustang GT Convertible with a bold red soft top roof, captured from a high-angle aerial perspective exactly like a luxury driveway photoshoot. Keep face 100% identical to reference image with exact facial structure, natural skin texture, realistic pores, authentic expression, no beautification, no facial modification. Same modern textured side-swept quiff hairstyle with heavy natural volume on top, deep side flow, messy yet controlled texture, soft matte finish, visible natural hair strands, softly blended sides.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The subject stands centered near the front bumper of the Mustang GT, hands inside hoodie pockets, relaxed shoulders, straight posture, slight head tilt upward toward camera, confident calm expression, wearing oversized premium black hoodie with realistic cotton texture, natural folds, hanging drawstrings, loose dark washed black denim jeans with soft wrinkles and stacked hems, clean white sneakers with realistic leather texture and sole details, black slim rectangular sunglasses.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Car must be a detailed 2017 Ford Mustang GT Convertible, metallic electric blue paint, glossy reflections on hood, visible Mustang pony grille emblem, aggressive headlights, muscular hood sculpting, aerodynamic front bumper, black alloy wheels, premium red convertible fabric roof, realistic windshield reflections, detailed side mirrors, authentic tire tread, showroom-clean finish
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Scene set in an upscale villa driveway with light beige hexagonal stone pavement, curved border with fresh green grass on left side, tropical palm leaves entering frame from top corners, subtle luxury outdoor atmosphere. Soft natural daylight, diffused afternoon lighting, realistic shadows under car and body, soft reflections on paintwork, cinematic premium color grading, natural contrast, shallow depth separation while maintaining environment clarity. Shot on 35mm lens, vertical composition, full body framing, crisp details, hyper-realistic DSLR quality, zero Al look, natural skin rendering, realistic hair strands, fabric texture, stone surface texture, luxury lifestyle mood. stylish text AmanZaid at the bottom-left corner, signature style
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative Prompt:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;face changed, different identity, beautified face, edited face, smooth plastic skin, fake skin glow, wrong hairstyle, short hair, fade haircut, buzzcut, messy deformed hair, female features, muscular body, fat body, broad shoulders, bad anatomy, long neck, short legs, extra fingers, missing fingers, mutated hands, distorted arms, broken posture, crossed eyes, lazy eye, bad sunglasses, blurry face, low resolution, pixelated, noisy image, overexposed, underexposed, harsh shadows, unrealistic reflections, fake car shape, wrong car model, damaged car, extra wheels, warped Mustang logo, incorrect. proportions, bad pavement texture, background artifacts, duplicate objects, watermark, logo errors, text artifacts, cropped feet, cut car, unnatural perspective, CGI render, cartoon style, painting, Al artifacts, oversaturated colors, motion blur, lens distortion 1664x2080-ar 4:5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;卧室随手自拍写实人像&#34;&gt;卧室随手自拍写实人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/charliejhills/status/2047969988368314526&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/charliejhills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@charliejhills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/025.webp&#34;
	width=&#34;800&#34;
	height=&#34;1000&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/025_hu_9c8902eabd291e4c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/025_hu_80f0073c3177ed55.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;卧室随手自拍写实人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Candid selfie of a young woman with shoulder-length honey-blonde hair with lighter highlights, green-grey eyes, rosy cheeks, and a natural no-makeup makeup look. She is wearing a light grey hoodie and looking slightly off-camera with a relaxed expression. Background shows a cosy bedroom with warm fairy lights strung on a pink wall, a unmade bed with tan bedding, and a small white desk with stacked books. Soft, warm ambient lighting. Photo-realistic, casual, intimate feel.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;音乐人夜晚离开杂货店电影感人像&#34;&gt;音乐人夜晚离开杂货店电影感人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8/status/2047934886124867684&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@commanderdgr8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/026.webp&#34;
	width=&#34;2048&#34;
	height=&#34;1117&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/026_hu_cd6e1f4fe4dfb269.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/026_hu_9dad3b51703c646f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;音乐人夜晚离开杂货店电影感人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A candid, magazine-cover quality documentary photograph of a young musician with curly hair, casually carrying a worn guitar case, stepping out of a classic downtown bodega at 11 PM. The lighting features a complex mixed color temperature: a bright neon &amp;#34;OPEN&amp;#34; sign casts an intense, warm red glow across his face, while a yellow streetlamp provides a striking backlight behind him. The image perfectly emulates 35mm film shot on a Canon AE-1 with a 50mm f/1.4 lens wide open, exhibiting a shallow depth of field with the background beautifully blurred. It captures the exact aesthetics of CineStill 800T film, specifically featuring the distinctive soft red halation bloom radiating outward from the neon light sources, a tungsten white balance, and moody, slightly green-tinted shadows in the darkest areas. Cinematic night photography, photorealistic, highly detailed.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;老德里甜品店门面纪实照片&#34;&gt;老德里甜品店门面纪实照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8/status/2047889839123521635&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@commanderdgr8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/027.webp&#34;
	width=&#34;2048&#34;
	height=&#34;1117&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/027_hu_42e54e1db1f7af92.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/027_hu_52ba2cb96833b777.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;老德里甜品店门面纪实照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a photorealistic travel-documentary image of a small sweet-shop storefront in Old Delhi at midday. A painted shop signboard above the door reads &amp;#34;मिठाई की दुकान&amp;#34; in large bold yellow hand-painted Devanagari on a deep red background, with &amp;#34;SWEET SHOP&amp;#34; in smaller roman letters beneath. Realistic hand-painted texture, slight wear, natural shadow. Authentic script proportion. Spelling and characters exact. No extra signage in frame, no watermark.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;赛博朋克科幻侧脸人像&#34;&gt;赛博朋克科幻侧脸人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamsofiaijaz/status/2047882171336253928&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamsofiaijaz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iamsofiaijaz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/028.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/028_hu_5c31b9faaaa9ff0a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/028_hu_a127191cf9de7b67.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;赛博朋克科幻侧脸人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic side-profile portrait of a rugged man with a tied-back bun and full beard, wearing round dark sunglasses and a textured leather jacket. His skin is detailed and slightly weathered. The background is a futuristic sci-fi interface filled with glowing orange and red data streams, star maps, celestial navigation diagrams, grids, and holographic UI elements. Fiery particle effects and ember-like energy swirl around him, creating a cosmic, high-tech atmosphere. Dark color palette with strong contrast, dramatic lighting, ultra-detailed, sharp focus, 8K, cyberpunk aesthetic, cinematic composition, depth of field.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;真实卧室录制抓拍人像&#34;&gt;真实卧室录制抓拍人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ChillaiKalan__/status/2047862141894681076&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ChillaiKalan__&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ChillaiKalan__&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/029.webp&#34;
	width=&#34;1360&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/029_hu_3a5bfa190955d43f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/029_hu_8b11a48a55edc20.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;真实卧室录制抓拍人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A realistic young woman sitting casually in a softly lit bedroom during late afternoon.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;She is holding her phone very close to her face as if recording a private video or voice note.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Framing is tight and slightly imperfect.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Expression: thoughtful, slightly shy, natural.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Minimal makeup, natural skin texture, relaxed clothing.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: warm natural light fading from a window, soft shadows.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Environment: simple bedroom, calm and lived-in.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: ultra-realistic, looks like a real phone recording, slightly grainy, not cinematic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;幼儿蜡笔涂鸦风人像&#34;&gt;幼儿蜡笔涂鸦风人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/akakageAI/status/2047812983389356276&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/akakageAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@akakageAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/030.webp&#34;
	width=&#34;1448&#34;
	height=&#34;1086&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/030_hu_5cf600ac42712e9a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/030_hu_48e7038aa1063779.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;幼儿蜡笔涂鸦风人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(被写体) in the style of super bad child drawing, toddler art, scribbles, messy crayon lines on white background, completely lack of technique, terrible composition, chaotic colors, barely recognizable shapes, very raw, honest art, pure naivety, unrefined style, 4:3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;good drawing, nice lines, clear shapes, neat, pretty, smooth, realistic, talented art, coherent composition, artistic style, professional, skilled, masterpiece, beautiful, detailed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;修复后的复古母子人像&#34;&gt;修复后的复古母子人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184797374325031&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/031.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/031_hu_ca8b84e71397fc0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/031_hu_1ca1b5b428820847.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;修复后的复古母子人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A restored vintage family snapshot, photographed indoors in soft natural light, showing a {argument name=&amp;#34;adult subject&amp;#34; default=&amp;#34;young mother&amp;#34;} seated and holding a {argument name=&amp;#34;child subject&amp;#34; default=&amp;#34;toddler&amp;#34;} on her lap in a close, centered waist-up portrait. The adult has short softly curled auburn hair in a voluminous 1960s-inspired bob, wears a sleeveless black dress and a thin gold necklace, and wraps both arms protectively around the child. The child has fine light blond hair and wears a plain white long-sleeve outfit. Compose the image with a warm nostalgic color cast, gentle film softness, subtle grain, and the look of a carefully repaired old printed photograph. Place them in front of a cream-colored curtain patterned with small brown teddy bear motifs, with a softly blurred interior window frame visible along the top background. Preserve realistic skin tones, natural posture, and the intimate family-photo feeling, as if an old damaged photograph has been professionally reimagined and restored. Square crop, centered composition, shallow depth of field, authentic analog photo texture, no modern styling, no text.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;受损复古母子照片&#34;&gt;受损复古母子照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184797374325031&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/032.webp&#34;
	width=&#34;1080&#34;
	height=&#34;1141&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/032_hu_51c8a5ee2d35dffd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/032_hu_a4f024bc8f2e9d3b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;受损复古母子照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;94&#34;
		data-flex-basis=&#34;227px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A heavily damaged old family snapshot in faded black and white with a slight sepia cast, shown as a worn physical photograph scanned straight-on. The image depicts a seated woman holding a small child on her lap indoors, both centered in a simple portrait composition. The woman has short dark wavy hair and wears a dark sleeveless dress or pinafore layered over a lighter short-sleeved blouse. The child appears to be a toddler with very short light hair, wearing a light-colored outfit, facing the camera while sitting against the woman’s chest and arm. Behind them is a patterned curtain with small floral or leaf motifs, and above it a dark window area with a pale vertical window frame is visible near the top center. The print is severely deteriorated: extensive scratches, creases, emulsion damage, stains, blotches, and peeling cover the entire surface, with especially heavy white abrasion and loss of detail across the bottom third and scattered cracking throughout. Keep the overall look authentic to a mid-20th-century vernacular photo, low contrast, soft focus, and visibly aged paper texture. Add a rectangular blurred censor block over the woman’s face only, while the child’s face remains visible but faded. No text, no border, just the distressed archival photograph filling the frame.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;墨刻风家庭肖像&#34;&gt;墨刻风家庭肖像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184698195870102&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/033.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/033_hu_66a76792300b0043.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/033_hu_6521473b15c2b22e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;墨刻风家庭肖像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A black-and-white hand-drawn family portrait in the style of detailed pen-and-ink crosshatching on textured white paper, showing 4 people seated closely together in a casual candid composition. On the left, an adult man in a dark baseball cap worn backward and a dark T-shirt leans into the frame, with a crossbody sling bag worn across his chest and visible zipper details. On the right, an adult woman with curly hair tied up in a loose high bun wears a light T-shirt with large collegiate block letters reading {argument name=&amp;#34;shirt text&amp;#34; default=&amp;#34;CITY&amp;#34;}. In the center are 2 young children sitting close together, both with short curly hair and matching light-colored T-shirts printed all over with strawberries. The child on the left leans inward with one arm crossing the other child, and the child on the right tilts their head slightly upward. The adults frame the children protectively, creating a warm family snapshot feeling. Render the whole image as a monochrome etched illustration with dense fine-line hatching, engraved shadows, crisp contour lines, and a realistic yet artistic likeness, with no color, no background setting beyond a plain light paper texture, and a vertical portrait crop.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;复古雕刻风连帽衫人像&#34;&gt;复古雕刻风连帽衫人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184698195870102&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/034.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/034_hu_23218fad5cfb2972.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/034_hu_681e4f556710271e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;复古雕刻风连帽衫人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A centered black-and-white vintage engraved portrait of a bearded man wearing a hooded sweatshirt with the hood up and a backward snapback cap visible under the hood. Show only the upper torso and head against a plain off-white paper background with subtle texture. Render the image in detailed pen-and-ink etching style with dense cross-hatching, fine parallel lines, and old book illustration shading. The figure faces forward in a calm, neutral pose. The cap has a visible snap closure band across the forehead area, slicked-back hair is visible above it, and a thick full beard extends below the face. The hoodie has two drawstrings hanging down at the chest. Keep the composition symmetrical and tightly framed like a classic engraved bust portrait, with no color, no modern graphic elements, and no background objects.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;梦幻逆光编辑风人像&#34;&gt;梦幻逆光编辑风人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ToroJushiAi/status/2048139425465467248&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/ToroJushiAi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ToroJushiAi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/035.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/035_hu_94ecaadb0c447059.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/035_hu_c6749b4025021f4f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;梦幻逆光编辑风人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic soft-focus portrait of a woman from behind and slightly in profile, framed from the upper torso up in a vertical composition. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair styled in a loose messy updo with wispy strands catching the light. Her face is mostly hidden by her pose and hair, with only a small portion of one cheek visible. She wears a {argument name=&amp;#34;dress color&amp;#34; default=&amp;#34;deep red&amp;#34;} sleeveless dress with an open back or low-cut side, emphasizing her bare shoulder and upper back. One hand is raised delicately near her neck or shoulder, fingers relaxed. Use strong warm backlighting and rim light, with glowing golden highlights around the hair and skin, dreamy lens flare, and large circular bokeh in the blurred background. The image should feel intimate, elegant, and slightly sensual, like a high-end fashion or beauty editorial, with shallow depth of field, creamy blur, warm amber and rose tones, and a soft cinematic glow.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3d-卡通角色渲染&#34;&gt;3D 卡通角色渲染
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Inshrah_ali_/status/2048121503367995753&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Inshrah_ali_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Inshrah_ali_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/036.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/036_hu_e147ab42f223a537.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/036_hu_4787b6eaf46eb5af.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;3D 卡通角色渲染&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-quality 3D CGI render of {argument name=&amp;#34;character&amp;#34; default=&amp;#34;[character]&amp;#34;} in a charming cartoon style, portrait composition showing head and shoulders. Highly stylized caricature with exaggerated, expressive features that are both playful and humorous. Smooth, polished rendering with clean materials and soft ambient lighting creating gentle shadows. Dynamic camera angle with stylish perspective. Minimalist bright {argument name=&amp;#34;background color&amp;#34; default=&amp;#34;[color]&amp;#34;} background that makes the character pop and stand out. Professional Pixar-like quality with glossy finish and cheerful mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;楼梯上的亮片裙年轻女性&#34;&gt;楼梯上的亮片裙年轻女性
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/XSydneyFan/status/2048114180906217566&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/XSydneyFan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@XSydneyFan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/037.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/037_hu_9bc47916860f6bd2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/037_hu_8133948ec72b97ac.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;楼梯上的亮片裙年轻女性&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Vertical 2:3 format. {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;Young woman&amp;#34;} hair in messy updo sits on modern wooden staircase. wears {argument name=&amp;#34;dress&amp;#34; default=&amp;#34;shimmering Silver halter dress sequin dress&amp;#34;}. matching with silver high-heeled sandals. legs crossed. Silver heart earrings. One fuchsia bracelet on each ankle. Sultry expression, with slightly parted lips. Blurred background vertical wooden slats and black metal railings. Don&amp;#39;t change face
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢华棚拍换装效果&#34;&gt;奢华棚拍换装效果
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Abdullah__Ai7/status/2048083022315159595&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Abdullah__Ai7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Abdullah__Ai7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/038.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/038_hu_7ca6d841487e471c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/038_hu_e4f5ee7bf20b1e95.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢华棚拍换装效果&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using REFERENCE_0 as the subject base, transform the casual desert snapshot into a full-body luxury fashion studio portrait. Replace the denim jacket, tank top, and shorts with a fitted strapless mini cocktail dress in {argument name=&amp;#34;dress color&amp;#34; default=&amp;#34;powder blue&amp;#34;} with ornate silver floral embroidery and exactly 2 geometric cutouts at the chest and upper waist. Change the setting to a clean seamless light-gray studio background with polished high-end editorial styling. Add 1 silver clutch with a thin chain strap in the subject&amp;#39;s right hand and 1 pair of pointed silver high heels. Refine the pose into an elegant standing fashion pose with one hand near the face, keep the same person and hair identity, and apply soft cinematic luxury lighting with crisp 8K fashion-photography detail.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暖色咖啡馆里的金发女仆&#34;&gt;暖色咖啡馆里的金发女仆
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211/status/2048072808606089230&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yume00112211&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/039.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/039_hu_d035b2c40abf9863.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/039_hu_8697440bb33f05ad.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暖色咖啡馆里的金发女仆&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A polished anime-style portrait of {argument name=&amp;#34;character&amp;#34; default=&amp;#34;a blonde female VTuber-inspired maid&amp;#34;} seated indoors in a cozy sunlit cafe, framed from upper thighs to head in a slightly high, intimate angle. She has short to medium-length tousled {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;golden blonde&amp;#34;} hair with soft layers, a white frilled maid headband, and a teal ribbon hair accessory with a small gold ornament on the right side. Her face is mostly obscured by the hair falling forward, creating a mysterious hidden-face composition. She wears an elegant black-and-white maid dress with puff sleeves, white ruffles, gold trim, a fitted bodice, a white apron, and a large white waist bow visible at the side and back. Add 2 teal bows with gold star-like charms: 1 at the collar and 1 on the wrist. Her right hand gently touches the bow at her chest, and her left hand is raised delicately near her shoulder holding a loose strand of hair. Include a frilly lace garter on her exposed thigh with a small teal-and-gold ribbon decoration. The background is a warmly lit European-style cafe interior with wooden beams, framed botanical art on the walls, a softly blurred cake stand on the left, window light streaming in, and tiny glowing dust-like sparkles in the air. Use soft golden afternoon lighting, shallow depth of field, glossy detailed fabric rendering, delicate skin shading, subtle romantic atmosphere, and highly detailed refined anime illustration quality.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;梦幻东方女性人像提示词&#34;&gt;梦幻东方女性人像提示词
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2048046253842559183&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/040.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/040_hu_8c23fe125c31e9be.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/040_hu_f78dd7f2ac1e24bf.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;梦幻东方女性人像提示词&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;subject&amp;#34; default=&amp;#34;Dreamy Oriental female portrait&amp;#34;}, adult female, close-up portrait, exquisite facial features, fair and translucent skin, delicate but clean skin texture, emerald green eyes, soft and charming gaze, brown wavy hair falling naturally; {argument name=&amp;#34;accessories&amp;#34; default=&amp;#34;Off-white lace headpiece&amp;#34;}, embellished with turquoise butterflies and pearl decorations; attire is an exquisite lace gown with a clear structure and clean, not overly complex texture, accompanied by emerald jewelry; lighting is soft warm gold side-backlighting, rim lighting is clear but not overexposed, skin has slight highlights but not excessive reflection, overall lighting is clean and transparent, background is softly blurred with shallow depth of field; high-end portrait photography quality, details are clear but restrained, no grain, no noise, real physical lighting, 8K, commercial-grade quality. Aspect ratio: 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;黑白爱马仕风头像&#34;&gt;黑白爱马仕风头像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/jiajia232016/status/2048044100793032976&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/jiajia232016&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@jiajia232016&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/041.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/041_hu_647536e3949f45b4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/041_hu_61522042056dbfcf.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;黑白爱马仕风头像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a minimalist black-and-white vector avatar logo of a mythic anime woman shown in elegant side profile facing right, cropped from the chest up on a plain white background. Give her long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;black&amp;#34;} hair with bold white highlight streaks and smooth graphic shapes, rendered as high-contrast ink silhouette art with clean sharp edges. She wears a winged headpiece reminiscent of Hermes or a messenger god helmet, with one large white feathered wing visible on the side of her head and a circular metallic earpiece detail. Dress her in a sleek high-collar garment with a luxury-fashion feel, and hang a prominent pendant or zipper pull shaped like the letter {argument name=&amp;#34;monogram letter&amp;#34; default=&amp;#34;H&amp;#34;} at the center of the collar. The face is intentionally obscured by a centered soft gray rectangular blur block covering most facial features, creating a censored anonymous profile-image effect. Overall style: luxury brand avatar, fashion logo, anime-inspired goddess silhouette, monochrome vector emblem, smooth negative-space highlights, balanced composition, modern and iconic, suitable for a social media profile picture.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;赛博水晶动漫少女人像&#34;&gt;赛博水晶动漫少女人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/042.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/042_hu_f9aae24c208fa93e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/042_hu_a45a3eb84ee04cf.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;赛博水晶动漫少女人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly detailed anime-style full-body character portrait of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Hermes&amp;#34;}, a delicate futuristic girl sitting curled up with her knees hugged to her chest, gazing softly at the viewer with a calm, slightly melancholic expression. She has extremely long {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;silver-lilac&amp;#34;} twin tails with soft bangs, glossy lavender eyes, porcelain skin, and ornate crystal hair accessories including 3 large ribbon bows and a jeweled tiara-like headpiece. Her outfit is an elaborate translucent idol-tech dress in {argument name=&amp;#34;outfit color&amp;#34; default=&amp;#34;pink, lavender, and violet&amp;#34;}, featuring off-shoulder puff sleeves, layered ruffles, faceted gemstone-like fabrics, a huge floral bow at the waist, dangling crystal charms, garter details, patterned thigh-high stockings, and glossy bow heels. Surround her with a luminous cyber dreamscape in {argument name=&amp;#34;background palette&amp;#34; default=&amp;#34;neon violet and electric blue&amp;#34;}: transparent holographic panels, floating glass cubes, sparkling particles, geometric prisms, glowing wireframe lines, and digital UI windows suspended in space. Include 5 readable interface text elements scattered in the background: &amp;#34;ERROR.&amp;#34;, &amp;#34;Code-&amp;#34;, &amp;#34;return&amp;#34;, &amp;#34;area x1&amp;#34;, and &amp;#34;404&amp;#34;. Make the whole image feel like a luxurious AI avatar reference illustration, mixing ethereal fantasy and cyberspace aesthetics, with crystalline light refractions, dramatic glow, high detail, intricate lace and gem textures, and a polished premium gpt-image-2 anime rendering.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉彩薰衣草动漫少女人像&#34;&gt;粉彩薰衣草动漫少女人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/043.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/043_hu_b7d9436c114003f3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/043_hu_fc069f8705fca8dc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉彩薰衣草动漫少女人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A delicate vertical anime portrait of a dreamy young woman in an ethereal pastel lavender palette, shown from about mid-thigh up against a soft decorative background of pale swirling lines, floating petals, tiny stars, and subtle sparkles. She has extremely long, voluminous silver-lilac hair styled in twin tails with flowing strands, soft bangs, and ornate ribbon decorations; each side is adorned with large lavender bows, ruffled headband-like trim, dangling gold star charms, and small white flower hair ornaments. Her face is centered and mostly covered by a flat solid pale lavender rectangle censor block, leaving only hints of her ears and hairline visible. She wears an elaborate fantasy-lolita inspired dress in white, pearl, and light violet, with glossy satin fabric, ruffled neckline, layered frills, puffed detached sleeves, gold trim, corset lacing at the waist, and multiple purple bows including 3 clearly visible bow accents on the outfit. Her hands are clasped gently near her chest in a shy, elegant pose. The image should feel soft, refined, feminine, and luminous, with high-detail anime rendering, smooth gradients, airy composition, flowing hair movement, and a romantic celestial aesthetic. Use a {argument name=&amp;#34;color theme&amp;#34; default=&amp;#34;pastel lavender and white&amp;#34;} palette, {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;silver-lilac&amp;#34;} hair, an {argument name=&amp;#34;outfit style&amp;#34; default=&amp;#34;ornate fantasy lolita dress with bows and ruffles&amp;#34;} design, a {argument name=&amp;#34;background style&amp;#34; default=&amp;#34;soft swirls, petals, stars, and sparkles&amp;#34;} backdrop, and a {argument name=&amp;#34;face covering&amp;#34; default=&amp;#34;solid pale lavender censor rectangle&amp;#34;} over the face.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;记忆空间里的薰衣草-ai-少女&#34;&gt;记忆空间里的薰衣草 AI 少女
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/044.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/044_hu_da164c150e810bc3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/044_hu_15f8dc5bdfc2bb5d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;记忆空间里的薰衣草 AI 少女&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy anime portrait of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Kotori&amp;#34;}, a delicate virtual girl seated on the floor in a curled-up pose with both knees pulled close to her chest and her arms wrapped gently around them, looking directly at the viewer with a soft, quiet, slightly melancholy expression. She has very long, flowing silver-lavender twin tails with wispy bangs, decorated with 8 visible hair ornaments: 2 large ribbon bows at the twin-tail bases, 3 small flower clips, 2 tiny butterfly clips, and 1 heart-shaped hairpin. Her eyes are large, luminous violet with glossy highlights. She wears an oversized pastel-lilac off-shoulder knit cardigan slipping loosely around her arms, a frilly lace-trimmed nightdress or camisole in pale lavender, and a pair of soft knee-high socks with 2 visible ribbon bows, all in a cohesive {argument name=&amp;#34;color theme&amp;#34; default=&amp;#34;soft lavender and pastel purple&amp;#34;} palette. The scene is set inside a futuristic holographic memory space filled with floating translucent interface panels, glowing data windows, starry particles, and butterfly-shaped light motifs. Include a visible text panel on the left showing terminal-like white text that reads: {argument name=&amp;#34;screen text&amp;#34; default=&amp;#34;memory://\nUser: You\nAI: Kotori\n\nAccessing.\n&amp;gt; initializing\n&amp;gt; loading memory\n&amp;gt; 100%\n&amp;gt; welcome home.&amp;#34;}. In the background, show a cosmic digital environment with a faint planet, layered transparent screens, and several floating image thumbnails suggesting memories and character sketches. Lighting is ethereal and backlit, with iridescent bloom, soft rim light, sparkling dust, and glossy highlights on hair and fabric. Composition is full-frame vertical, centered on the girl, intimate and emotionally warm, highly detailed, ultra-polished, soft-focus anime illustration, celestial cyber fantasy aesthetic, gentle purple glow, intricate lace, silky hair strands, and a tender &amp;#34;AI companion in her memory world&amp;#34; mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉彩-ai-助手动漫人像&#34;&gt;粉彩 AI 助手动漫人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/045.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/045_hu_561c11b898b2a57e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/045_hu_bb83c5b0c98bf0cc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉彩 AI 助手动漫人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy anime-style portrait of a gentle virtual assistant girl named {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Misha&amp;#34;}, sitting curled up indoors in a cozy futuristic bedroom filled with translucent holographic memory screens. She has very long silvery white hair with a faint lavender tint, styled in 2 low twin tails tied with small lavender ribbons, with soft wispy bangs and loose flowing strands. Her expression should be tender, introspective, and slightly lonely, with a soft glow and delicate features. She wears an oversized chunky cable-knit cardigan in {argument name=&amp;#34;cardigan color&amp;#34; default=&amp;#34;pastel lavender&amp;#34;} draped loosely over a thin white ruffled nightdress, plus a tiny gemstone necklace. Her pose is seated with knees pulled to her chest and arms wrapped around her legs, creating a vulnerable, intimate silhouette. The room is lit in hazy pastel violet and pink ambient light with sparkles, dustlike stars, and a nostalgic magical-tech atmosphere. Around her are 5 visible holographic interface panels: 2 floating photo panels in the upper left showing soft memories, 1 lower-left panel labeled “Memory Fragments” with a small image and tiny graph bars, 1 large right-side profile panel with Japanese text including “ミーシャ・Misha” and “あなたの専属AIアシスタント,” and 1 smaller right-side checklist panel with heart icons. Include a glowing crystal ball on a desk to the right, a white mug printed with “Misha” and small heart motifs, a stack of 2 books beneath the desk area, and 1 plush cat cushion on the lower left. Composition is vertical, full-body to three-quarter seated framing, highly detailed, soft painterly anime rendering, luminous translucent overlays, sentimental memory-core aesthetic, gentle depth of field, pastel lilac palette, ethereal and emotionally warm.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;深色-gatorade-风人像&#34;&gt;深色 Gatorade 风人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/jeremydevz/status/2048026214812561683&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/jeremydevz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@jeremydevz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/046.webp&#34;
	width=&#34;769&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/046_hu_b9e8fb529f1dee61.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/046_hu_6f20fcd3185a2afe.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;深色 Gatorade 风人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;64&#34;
		data-flex-basis=&#34;153px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic, high-contrast studio portrait of a {argument name=&amp;#34;subject gender&amp;#34; default=&amp;#34;male&amp;#34;} athlete or model in the visual style of a premium sports drink advertisement, centered and facing straight toward the camera in a tight head-and-shoulders crop. The subject has {argument name=&amp;#34;hair style&amp;#34; default=&amp;#34;short dark hair brushed back&amp;#34;}, visible ears on both sides, and a rugged lower face with a short beard or stubble. Dress him in a dark zip-up athletic jacket with the zipper centered and visible near the collar. Use an almost entirely black background and extremely low-key lighting, with subtle rim light and soft highlights catching the hair, ears, jawline, shoulders, and jacket texture while most facial features remain swallowed by shadow for a mysterious, intense mood. The image should feel monochrome or nearly monochrome, with deep blacks, muted gray highlights, cinematic contrast, gritty texture, and a sleek commercial sports-brand aesthetic reminiscent of a {argument name=&amp;#34;brand style&amp;#34; default=&amp;#34;Gatorade&amp;#34;} campaign. Vertical composition, minimalist framing, no text, no logo, no props, no visible environment.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;戴眼镜的温柔女性肖像&#34;&gt;戴眼镜的温柔女性肖像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/megane_onesan/status/2047989490153926848&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/megane_onesan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@megane_onesan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/047.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/047_hu_6499715a5f5fe610.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/047_hu_e317a4a6142bc068.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;戴眼镜的温柔女性肖像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A {argument name=&amp;#34;style&amp;#34; default=&amp;#34;photobook-style portrait&amp;#34;} of a {argument name=&amp;#34;character&amp;#34; default=&amp;#34;gentle woman with glasses&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;梦幻水下女性与半透明鱼&#34;&gt;梦幻水下女性与半透明鱼
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/kotobukigraphic/status/2047967522453123255&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/kotobukigraphic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@kotobukigraphic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/048.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/048_hu_973be2b592bd6207.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/048_hu_b6543ae684da1834.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;梦幻水下女性与半透明鱼&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy surreal portrait of a {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;young woman&amp;#34;} standing underwater or in a liquid-like ethereal space, shown from about mid-thigh up, wearing a flowing sleeveless white dress that appears to dissolve into translucent water and shimmering fragments. Her long {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair streams dramatically sideways as if suspended in water, and her face is intentionally obscured by a soft vertical blur block for anonymity. Surround her with an exact count of about 30 small translucent fish, some striped and some pale silvery white, swimming in multiple depths of field across the foreground, midground, and background, with several fish passing in front of her body and hair to create strong motion and depth. Use a soft pastel {argument name=&amp;#34;background color&amp;#34; default=&amp;#34;powder blue&amp;#34;} background with faint handwritten script texture layered across it, plus whimsical doodles scattered throughout: white and pale pink hearts, stars, curved squiggles, wave lines, dots, sparkles, and 2 smiley faces. Add prismatic rainbow refractions, glossy caustic highlights, and subtle lens-like chromatic shimmer on the fish and dress. The mood should feel delicate, introspective, airy, and magical, with high-key lighting, gentle contrast, soft focus in the foreground, and crisp detail on the torso and hair. Compose the figure slightly off-center with one arm relaxed downward and the body turned lightly in motion, as if drifting peacefully through a school of fish. Include tiny elegant footer text in white near the bottom edge, with a left signature, a centered website URL, and a small right credit mark, resembling an art-poster or social-media showcase image.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日本教室长发抓拍&#34;&gt;日本教室长发抓拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Hair_Hair55/status/2047963832732221723&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Hair_Hair55&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Hair_Hair55&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/049.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/049_hu_e21fe0dfb6877e39.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/049_hu_983bc8ffd6d865e6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日本教室长发抓拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A candid, photorealistic Japanese high school classroom scene in vertical smartphone-photo framing. Three schoolgirls wearing matching traditional navy blue sailor uniforms are the main focus in the foreground. The central standing girl has extremely long, straight, glossy black hair that falls well past her knees, almost to the floor, and she is gently combing the lower section with a small comb while looking downward. A second girl stands behind and slightly to the right, also with long straight black hair, holding an open compact mirror in one hand and adjusting her bangs or hair near her temple with the other. A third girl kneels on the floor at the right front, carefully holding and arranging the central girl’s long hair with both hands. All three wear dark navy sailor-style school uniforms with white stripe trim, pleated skirts, long sleeves, white socks, and indoor school shoes. Their faces are obscured or blurred. In the background, exactly 8 additional students in dark school uniforms sit at desks in small groups, facing away or sideways, creating the feel of an ordinary class period or homeroom. The classroom has wooden desks and chairs, large bright windows along the left side letting in soft daylight, a green chalkboard on the right wall, bulletin papers pinned near the board, and a framed Japanese calligraphy sign above the chalkboard reading {argument name=&amp;#34;wall sign text&amp;#34; default=&amp;#34;創誠造実&amp;#34;}. The atmosphere is natural and unposed, like a documentary snapshot. Emphasize realistic lighting, fine hair detail, the unusual dramatic length of the central girl’s hair, and a believable everyday school environment.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;温馨猫耳少女睡衣夜景人像&#34;&gt;温馨猫耳少女睡衣夜景人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211/status/2047951384734228617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yume00112211&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/050.webp&#34;
	width=&#34;1200&#34;
	height=&#34;677&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/050_hu_9bfcd97dbb8f1344.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/050_hu_139c4718628c022d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;温馨猫耳少女睡衣夜景人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;425px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A soft anime-style bedroom portrait of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Nekomata Okayu&amp;#34;}, shown from the chest up sitting on a bed at night, centered in the frame. She has short fluffy {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;lavender&amp;#34;} hair with layered bangs partially covering one eye, large cat ears on top of her head with white inner fur, and a cute sleepy catgirl appearance. Her expression is gentle and relaxed, with one hand raised near her cheek in a shy, cozy pose. She wears oversized {argument name=&amp;#34;pajama color&amp;#34; default=&amp;#34;light lavender&amp;#34;} button-up pajamas with dark purple piping, a small chest pocket, and paw-print shaped buttons and paw-print decoration on the pocket. The room is lit with dreamy purple ambient lighting. In the background, show a nighttime window with a crescent moon and stars visible outside, soft curtains, a bedside table with a glowing cat-shaped lamp, a neatly rumpled bed with pillows and blankets in matching purple tones, and a small framed wall picture featuring a simple cat face and hearts. Use a cute pastel palette, soft shading, polished digital anime rendering, subtle highlights in the hair, intimate cozy composition, and a calm bedtime atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;收藏手办工作区照片&#34;&gt;收藏手办工作区照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2049068188399227174&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/051.webp&#34;
	width=&#34;799&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/051_hu_1837b999f2b4920a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/051_hu_8dfa3fbacf81e661.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;收藏手办工作区照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Photorealistic high-quality studio photo of a modern digital art workspace, showing the concept of “from 3D virtual character to real collectible figure.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the foreground, a highly realistic collectible figurine of [Character Name / Character Identity] is placed on a round wooden display stand. The character has [facial features / appearance], [hairstyle], and a [expression / personality vibe]. The figure is wearing [outfit / costume]. The overall design is refined, premium, and instantly recognizable. The figurine should have realistic collectible statue quality, with subtle resin/sculpture material feel, while still looking highly believable and visually realistic.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The pose is [character pose], natural, stable, elegant, and display-worthy. Shot from a low-angle close-up perspective with slight wide-angle distortion, vertical composition, emphasizing the full figure, clothing structure, leg lines, and pose.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the background, there is a professional 3D character design workstation with two large curved monitors. Both monitors must show the exact same character as the foreground figurine — same face, same hairstyle, same outfit, same pose, and same overall vibe — clearly expressing the idea of turning a digital 3D character into a real physical figure.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The left monitor shows a gray sculpt / clay model view in a professional 3D sculpting software interface, similar to ZBrush. The gray model must match the foreground figure exactly in character design, pose, outfit structure, and facial identity.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The right monitor shows the fully rendered colored version of the same character, also matching the foreground figure exactly in face, hairstyle, outfit, pose, and temperament. Together, the two monitors reinforce the workflow of “digital character design → physical collectible statue.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On the desk are a keyboard, mouse, monitor arms, drawing tablet, stylus, and other 3D modeling tools. The workspace is clean, professional, and visually premium. Optional extra elements: [weapon / accessories / theme props / IP-style design details].
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is a mix of soft studio lighting and indoor workspace lighting. The foreground figurine is evenly lit with clear facial and material detail, while the monitors emit cool-toned tech light. Overall mood is realistic, clean, premium, slightly shallow depth of field, ultra-detailed, emphasizing the collectible figure quality, professional 3D design studio atmosphere, and the visual concept of “from digital model to real figure.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;photorealistic, ultra detailed, cinematic studio lighting, realistic figurine, collectible statue, 3D character design studio, from digital model to real figure, vertical composition
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;雨中公交站人像&#34;&gt;雨中公交站人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2049081194156020046&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/052.webp&#34;
	width=&#34;799&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/052_hu_7e00494e19ac3711.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/052_hu_62cd551555def9e7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;雨中公交站人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic nighttime photo of [your photo as reference] sitting alone at a wet bus
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;stop bench, eating a burger. Rain-soaked street with orange bokeh city lights
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;reflecting on the ground. Neon tube lights overhead. Red jacket, tan corduroy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pants. Moody, dark, atmospheric street photography.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ccd-闪光美妆人像模板&#34;&gt;CCD 闪光美妆人像模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithAliya/status/2049452006608392350&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithAliya&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithAliya&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/053.webp&#34;
	width=&#34;899&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/053_hu_a970e29428aea024.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/053_hu_a688decda3269ee3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CCD 闪光美妆人像模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-photorealistic shot of the same subject in the attached image, ultra-detailed facial features, visible pores, natural skin texture, rosy complexion and dewy skin, Douyin/Korean glass-skin makeup, glossy lips, aegyosal, baby pink blush, high identity consistency, realistic human anatomy. Use an old CCD digital camera aesthetic with direct flash, visible grain, slight overexposure, cool-neutral white balance, slight motion blur, and candid composition. Hair in a loose romantic updo; outfit in delicate off-shoulder silk with embroidered floral fabric; background of pastel floral bedding; horizontal close-up; shallow depth of field. Negative prompt: over-smoothed skin, plastic texture, unrealistic proportions, studio lighting, overly sharp HDR, stiff pose, artificial symmetry, over-retouched face.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;黑红街头服饰广告人像&#34;&gt;黑红街头服饰广告人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2049450257604550872&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者：&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/054.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/054_hu_af81ed1df3c988f6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/054_hu_96d17ca8a1a940a1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;黑红街头服饰广告人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a bold, high-contrast black and white portrait of a confident young man wearing a black leather jacket, facing slightly sideways with an intense expression. Use dramatic studio lighting with sharp shadows and detailed skin texture. Add strong red graphic elements over the image, including a horizontal red bar across the eyes, geometric shapes, thin lines, and framing boxes. Incorporate large bold typography, repeated faded text, and a motivational headline in bright red. The design should feel like a premium sports or streetwear campaign poster with a minimal textured grey background and black/white/grey/red palette only.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分类导航：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;总目录&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;电商主图&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;广告创意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像摄影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海报插画&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色设计&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 与社媒&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;对比与社区案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原仓库链接&#34;&gt;原仓库链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;项目首页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/portrait.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分类文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>faster-whisper：更快的 Whisper 转写引擎</title>
        <link>https://knightli.com/2026/05/01/faster-whisper-speech-to-text/</link>
        <pubDate>Fri, 01 May 2026 22:31:26 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/faster-whisper-speech-to-text/</guid>
        <description>&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 是 SYSTRAN 维护的 Whisper 推理实现。它用 CTranslate2 作为后端，在保持 Whisper 使用方式接近的同时，把推理速度、显存占用和部署灵活性做得更适合工程场景。&lt;/p&gt;
&lt;p&gt;如果你已经用过 &lt;code&gt;openai/whisper&lt;/code&gt;，可以把 &lt;code&gt;faster-whisper&lt;/code&gt; 理解成一个更偏生产环境的替代方案：接口仍然围绕模型加载、音频转写、分段结果展开，但底层执行效率更高，也更容易按 CPU、GPU、量化和批处理策略做取舍。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;Whisper 的效果很好，但原版实现直接部署时经常会遇到几个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;长音频转写耗时明显。&lt;/li&gt;
&lt;li&gt;GPU 显存占用偏高。&lt;/li&gt;
&lt;li&gt;CPU 环境可用，但速度不一定理想。&lt;/li&gt;
&lt;li&gt;批量处理大量音视频时，吞吐不容易压上去。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 主要就是围绕这些问题做优化。项目 README 中说明，在相同精度下，它可以比 &lt;code&gt;openai/whisper&lt;/code&gt; 快到 4 倍，并且内存占用更低；如果使用 8-bit 量化，速度还可以进一步提升。&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装
&lt;/h2&gt;&lt;p&gt;常规 Python 环境里可以直接安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install faster-whisper
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要使用 GPU，需要确认本机 CUDA、cuDNN 与 CTranslate2 版本匹配。这里最容易踩坑的是显卡驱动和 CUDA 运行时版本不一致：代码本身可能没问题，但运行时会在加载模型或首次推理时失败。&lt;/p&gt;
&lt;h2 id=&#34;基本用法&#34;&gt;基本用法
&lt;/h2&gt;&lt;p&gt;最小示例很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;faster_whisper&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;large-v3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;beam_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Detected language &amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39; with probability &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;language&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;language_probability&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s] &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里有几个关键参数：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;参数&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;model_size&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;选择 Whisper 模型规格，例如 &lt;code&gt;small&lt;/code&gt;、&lt;code&gt;medium&lt;/code&gt;、&lt;code&gt;large-v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;device&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;推理设备，常见值是 &lt;code&gt;cuda&lt;/code&gt; 或 &lt;code&gt;cpu&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;compute_type&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;计算精度，例如 &lt;code&gt;float16&lt;/code&gt;、&lt;code&gt;int8_float16&lt;/code&gt;、&lt;code&gt;int8&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;beam_size&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;解码搜索宽度，通常越大越稳，但速度越慢&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的目标是本地快速转写，通常可以先从 &lt;code&gt;medium&lt;/code&gt; 或 &lt;code&gt;large-v3&lt;/code&gt; 开始测试。显存紧张时，再考虑量化。&lt;/p&gt;
&lt;h2 id=&#34;cpu-和-gpu-怎么选&#34;&gt;CPU 和 GPU 怎么选
&lt;/h2&gt;&lt;p&gt;有 NVIDIA GPU 时，优先用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;large-v3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;显存不够时可以换成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;large-v3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;int8_float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;没有 GPU 时，可以在 CPU 上跑：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;small&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cpu&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;int8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CPU 模式更适合轻量任务、后台低频任务，或者没有显卡的服务器。要处理大量长音频，GPU 仍然更合适。&lt;/p&gt;
&lt;h2 id=&#34;批量转写&#34;&gt;批量转写
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 也提供批量转写能力。批处理适合大量短音频，或者需要提升 GPU 吞吐的场景：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;faster_whisper&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BatchedInferencePipeline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;turbo&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;batched_model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BatchedInferencePipeline&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;batched_model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;batch_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s] &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;batch_size&lt;/code&gt; 不是越大越好。它会提高吞吐，但也会增加显存压力。实际部署时建议从 4、8、16 这样的值逐步测试，找到机器能稳定承受的点。&lt;/p&gt;
&lt;h2 id=&#34;vad-和词级时间戳&#34;&gt;VAD 和词级时间戳
&lt;/h2&gt;&lt;p&gt;语音转文字经常会遇到长静音、背景噪声和字幕对齐问题。&lt;code&gt;faster-whisper&lt;/code&gt; 内置了一些实用参数，可以直接在转写时启用。&lt;/p&gt;
&lt;p&gt;启用 VAD：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vad_filter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;获取词级时间戳：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word_timestamps&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s] &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;VAD 适合处理会议录音、播客、直播回放这类包含长静音的音频。词级时间戳则适合生成字幕、做逐字稿校对，或者后续接入播放器高亮。&lt;/p&gt;
&lt;h2 id=&#34;模型怎么选&#34;&gt;模型怎么选
&lt;/h2&gt;&lt;p&gt;模型选择主要看三件事：准确率、速度、机器资源。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th&gt;建议&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;快速测试&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;small&lt;/code&gt; 或 &lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;中文内容质量优先&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;large-v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPU 显存紧张&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;int8_float16&lt;/code&gt; 或更小模型&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU 跑后台任务&lt;/td&gt;
          &lt;td&gt;小模型加 &lt;code&gt;int8&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;批量短音频&lt;/td&gt;
          &lt;td&gt;尝试 &lt;code&gt;BatchedInferencePipeline&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果是中文语音，建议优先测试 &lt;code&gt;large-v3&lt;/code&gt;。如果机器压力太大，再降模型规格或使用量化。不要一开始就只看速度，转写质量下降后，人工校对时间可能会把省下来的推理时间抵消掉。&lt;/p&gt;
&lt;h2 id=&#34;适合的使用场景&#34;&gt;适合的使用场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 很适合这些任务：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;视频字幕生成。&lt;/li&gt;
&lt;li&gt;播客、会议、课程录音转文字。&lt;/li&gt;
&lt;li&gt;Bilibili、YouTube 等视频的本地转写流程。&lt;/li&gt;
&lt;li&gt;批量音频归档和检索。&lt;/li&gt;
&lt;li&gt;把语音内容接入 RAG、知识库或搜索系统。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它不直接解决说话人分离、摘要、章节切分这些上层问题，但可以作为稳定的转写层。后面可以再接 pyannote 做说话人分离，接 LLM 做摘要和结构化整理。&lt;/p&gt;
&lt;h2 id=&#34;部署建议&#34;&gt;部署建议
&lt;/h2&gt;&lt;p&gt;实际使用时，可以按这个顺序调试：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用一段 1 到 3 分钟的音频确认环境能跑通。&lt;/li&gt;
&lt;li&gt;再换成目标语言和目标音质的样本测试准确率。&lt;/li&gt;
&lt;li&gt;确认显存占用，再决定是否启用量化。&lt;/li&gt;
&lt;li&gt;长音频先切分，避免一次性任务失败后重跑成本过高。&lt;/li&gt;
&lt;li&gt;输出结果同时保存 TXT 和 SRT，后续校对更方便。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是服务器任务，最好把模型加载放在服务启动阶段，不要每次请求都重新加载模型。模型加载本身会消耗时间，频繁加载也容易让显存管理变得不稳定。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 的价值在于把 Whisper 变成更适合长期使用的转写组件。它不是换一个模型，而是换一套更高效的推理后端和工程接口。&lt;/p&gt;
&lt;p&gt;对于个人工作流，可以用它快速把视频、会议、课程音频变成文本。对于服务端任务，可以通过 GPU、量化、批处理和 VAD 做性能调优。只要机器环境配置正确，它会比原版 Whisper 更适合承担稳定、批量的语音转文字工作。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/SYSTRAN/faster-whisper&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/SYSTRAN/faster-whisper&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>如何在 Cline 中调用 DeepSeek V4 Pro</title>
        <link>https://knightli.com/2026/05/01/use-deepseek-v4-pro-in-cline/</link>
        <pubDate>Fri, 01 May 2026 20:59:06 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/use-deepseek-v4-pro-in-cline/</guid>
        <description>&lt;p&gt;Cline 本身已经支持 OpenAI Compatible Provider。
DeepSeek API 也兼容 OpenAI SDK 风格的调用方式，所以把 &lt;code&gt;deepseek-v4-pro&lt;/code&gt; 接到 Cline 里并不复杂：选 OpenAI Compatible，填 DeepSeek 的 Base URL、API Key 和模型名即可。&lt;/p&gt;
&lt;p&gt;下面按 VS Code 插件界面和 Cline CLI 两种方式整理。&lt;/p&gt;
&lt;h2 id=&#34;准备-deepseek-api-key&#34;&gt;准备 DeepSeek API Key
&lt;/h2&gt;&lt;p&gt;先到 DeepSeek 开放平台创建 API Key。&lt;/p&gt;
&lt;p&gt;需要准备三个值：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;填写内容&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Provider&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;OpenAI Compatible&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Base URL&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;https://api.deepseek.com&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Model ID&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;DeepSeek 官方文档说明，V4 系列使用现有 OpenAI 兼容接口，&lt;code&gt;base_url&lt;/code&gt; 保持为 &lt;code&gt;https://api.deepseek.com&lt;/code&gt;，调用时把 &lt;code&gt;model&lt;/code&gt; 设置为 &lt;code&gt;deepseek-v4-pro&lt;/code&gt; 或 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;在-cline-插件里配置&#34;&gt;在 Cline 插件里配置
&lt;/h2&gt;&lt;p&gt;如果你用的是 VS Code 里的 Cline 插件，可以按这个路径配置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 VS Code 侧边栏里的 Cline。&lt;/li&gt;
&lt;li&gt;进入 Cline 的设置或模型配置页面。&lt;/li&gt;
&lt;li&gt;Provider 选择 &lt;code&gt;OpenAI Compatible&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;API Key 填入 DeepSeek API Key。&lt;/li&gt;
&lt;li&gt;Base URL 填：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Model ID 填：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;保存配置，回到 Cline 对话框测试一次简单任务。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以先让 Cline 做一个低风险测试：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请读取当前项目目录结构，并总结这个项目是什么类型，不要修改任何文件。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果能正常读取和回答，说明模型链路已经通了。&lt;/p&gt;
&lt;h2 id=&#34;在-cline-cli-中配置&#34;&gt;在 Cline CLI 中配置
&lt;/h2&gt;&lt;p&gt;如果你使用 Cline CLI，可以用 &lt;code&gt;cline provider configure openai-compatible&lt;/code&gt; 进入交互式配置。&lt;/p&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cline provider configure openai-compatible
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;交互时填写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;配置完成后，可以用一个只读任务测试：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cline &lt;span class=&#34;s2&#34;&gt;&amp;#34;Summarize this repository structure without changing files.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你希望先降低成本，也可以把 Model ID 临时改成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-flash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;等遇到复杂规划、事实核查、多工具协作或高风险代码修改时，再切回 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;推荐的模型分工&#34;&gt;推荐的模型分工
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro 和 Flash 更适合分工使用。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;日常代码阅读、批量改小问题、生成脚本、整理上下文、低风险前端修改&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;架构规划、复杂 bug、跨文件重构、事实核查、多工具调用、高风险改动&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;对 Cline 这类 Agent 工具来说，成本主要来自长上下文、反复读文件、生成计划和多轮工具调用。
如果任务很轻，可以先用 Flash 跑量；如果任务需要更强判断，再切 Pro。&lt;/p&gt;
&lt;h2 id=&#34;上下文长度怎么填&#34;&gt;上下文长度怎么填
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro 和 Flash 都支持很长上下文。
在 Cline 里如果需要手动填写 context window，可以按 DeepSeek 官方模型页给出的 1M 上下文来理解。&lt;/p&gt;
&lt;p&gt;实际使用时不建议一开始就把所有文件都塞进上下文。
Cline 会按任务读取文件，通常更好的方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先让它看目录结构；&lt;/li&gt;
&lt;li&gt;再让它定位相关文件；&lt;/li&gt;
&lt;li&gt;最后只围绕目标文件执行修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样更省 Token，也更容易保持任务边界清晰。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;h3 id=&#34;1-提示模型不存在&#34;&gt;1. 提示模型不存在
&lt;/h3&gt;&lt;p&gt;先检查 Model ID 是否写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要写成 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;、&lt;code&gt;deepseek-v4&lt;/code&gt; 或其他显示名称。&lt;/p&gt;
&lt;h3 id=&#34;2-提示-401-或认证失败&#34;&gt;2. 提示 401 或认证失败
&lt;/h3&gt;&lt;p&gt;检查 API Key：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否复制完整；&lt;/li&gt;
&lt;li&gt;是否带了多余空格；&lt;/li&gt;
&lt;li&gt;是否填到了 Cline 当前正在使用的 provider 配置里；&lt;/li&gt;
&lt;li&gt;DeepSeek 账户是否有可用额度。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-提示连接失败&#34;&gt;3. 提示连接失败
&lt;/h3&gt;&lt;p&gt;检查 Base URL：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要在末尾额外拼 &lt;code&gt;/v1/chat/completions&lt;/code&gt;。
Cline 的 OpenAI Compatible Provider 会自己按兼容接口组织请求。&lt;/p&gt;
&lt;h3 id=&#34;4-cline-调用很贵怎么办&#34;&gt;4. Cline 调用很贵怎么办
&lt;/h3&gt;&lt;p&gt;可以先把日常任务切到 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;，只在复杂任务里使用 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;另外，尽量把任务描述写清楚：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;只修改登录页相关文件，不要重构无关模块。先给出计划，确认后再改代码。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agent 任务最怕边界不清。
边界越清楚，读文件越少，工具调用越少，成本也越可控。&lt;/p&gt;
&lt;h3 id=&#34;5-报错-reasoning_content-must-be-passed-back&#34;&gt;5. 报错 reasoning_content must be passed back
&lt;/h3&gt;&lt;p&gt;如果你看到类似错误：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;400 The `reasoning_content` in the thinking mode must be passed back to the API.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;invalid_request_error&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;modelId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-pro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这通常不是 Key、额度或 Base URL 的问题，而是 DeepSeek V4 Pro 的 thinking mode 和当前客户端的多轮工具调用记录没有对齐。&lt;/p&gt;
&lt;p&gt;DeepSeek 官方文档说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;thinking mode 默认是 &lt;code&gt;enabled&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;thinking mode 下会返回 &lt;code&gt;reasoning_content&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;如果某一轮发生了 tool call，后续请求必须把该轮 assistant message 里的 &lt;code&gt;reasoning_content&lt;/code&gt; 一起传回 API；&lt;/li&gt;
&lt;li&gt;如果客户端没有正确回传，就会返回 400。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cline 通过 OpenAI Compatible Provider 接入时，如果当前版本没有完整保留并回传 DeepSeek 的 &lt;code&gt;reasoning_content&lt;/code&gt;，就可能在第二轮或工具调用后触发这个错误。&lt;/p&gt;
&lt;p&gt;可尝试的处理顺序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先升级 Cline 到最新版；&lt;/li&gt;
&lt;li&gt;确认使用的是 &lt;code&gt;OpenAI Compatible&lt;/code&gt;，而不是普通 &lt;code&gt;OpenAI&lt;/code&gt; provider；&lt;/li&gt;
&lt;li&gt;如果 Cline 支持自定义 request body，尝试关闭 thinking mode：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;thinking&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;disabled&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;如果 Cline 不支持额外 body 参数，暂时改用不触发该问题的模型或服务中转；&lt;/li&gt;
&lt;li&gt;等 Cline 适配 DeepSeek V4 的 &lt;code&gt;reasoning_content&lt;/code&gt; 回传后，再切回 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;需要注意：关闭 thinking mode 会牺牲一部分复杂推理能力，但可以绕开客户端没有回传 &lt;code&gt;reasoning_content&lt;/code&gt; 的兼容性问题。&lt;/p&gt;
&lt;h2 id=&#34;一个可直接复制的配置清单&#34;&gt;一个可直接复制的配置清单
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provider: OpenAI Compatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-你的 DeepSeek API Key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要低成本模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provider: OpenAI Compatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-你的 DeepSeek API Key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-flash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;在 Cline 中调用 DeepSeek V4 Pro 的关键只有三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provider 选择 &lt;code&gt;OpenAI Compatible&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;Base URL 填 &lt;code&gt;https://api.deepseek.com&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;Model ID 填 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;配置完成后，建议先用只读任务测试，再逐步交给它执行真实代码修改。
如果你经常跑 Agent 任务，可以把 Flash 和 Pro 分开用：Flash 负责高频轻量任务，Pro 负责复杂判断和兜底。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.cline.bot/provider-config/openai-compatible&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cline Docs：OpenAI Compatible Provider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.cline.bot/provider-config/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cline Docs：Provider Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news202605&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/quick_start/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：Models &amp;amp; Pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek V4 降价如何改写 AI Agent 的成本模型</title>
        <link>https://knightli.com/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/2026/05/01/deepseek-v4-price-cuts-ai-agent-economics/</guid>
        <description>&lt;p&gt;DeepSeek V4 发布时没有制造出特别夸张的声量。
没有大型发布会，也没有一眼碾压所有对手的跑分叙事。
但几天之后，它真正影响行业的地方开始显现：连续降价。&lt;/p&gt;
&lt;p&gt;这次变化的重点不是“模型强了一点”，而是“使用成本被打到另一个层级”。
当 Token 价格低到普通 Agent 任务几毛钱、一两块钱就能跑完时，很多 Coding Plan、Token Plan 的商业逻辑都会被重新审视。&lt;/p&gt;
&lt;h2 id=&#34;发布当天没有炸场&#34;&gt;发布当天没有炸场
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 的第一波反馈并不算热烈。
很多人期待它像 R1 那样带来强烈冲击：跑分全面领先、国产算力验证、多模态和 Agent 能力一起爆发。
但真正发布后，大家发现它更像一次稳健升级。&lt;/p&gt;
&lt;p&gt;V4 Pro 确实是强模型，尤其在代码、数学、长上下文和 agentic coding 上表现不错。
但它不是那种让所有同类模型瞬间失色的产品。
所以发布当天，舆论一度有些尴尬：想夸，但很难找到一个足够爆炸的角度。&lt;/p&gt;
&lt;p&gt;真正的转折点不是发布当天，而是后续价格调整。&lt;/p&gt;
&lt;h2 id=&#34;连续降价才是关键&#34;&gt;连续降价才是关键
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 发布后，价格开始连续下探。
按照 DeepSeek 官方价格页和原文整理的信息，当时的大致价格是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DeepSeek V4 Flash：输入 100 万 Token 约 1 元；缓存命中后 100 万 Token 约 2 分钱；&lt;/li&gt;
&lt;li&gt;DeepSeek V4 Pro：输入 100 万 Token 约 3 元；缓存命中后 100 万 Token 约 2.5 分；&lt;/li&gt;
&lt;li&gt;全系列模型输入缓存命中价格降到首发价格的 1/10；&lt;/li&gt;
&lt;li&gt;V4 Pro 曾处在 2.5 折优惠期，优惠延长到 2026 年 5 月 31 日 23:59。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果按美元 API 价格看，会更直观：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;缓存命中输入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;非缓存输入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;输出&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;上下文&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0028 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.14 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.28 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 促销价&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.003625 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.435 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.87 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 原价&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0145 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$1.74 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$3.48 / 100万 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1M&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里要注意两个点。&lt;/p&gt;
&lt;p&gt;第一，V4 Pro 的 $0.435 / $0.87 是促销价，不是长期原价。
DeepSeek 官方说明里，这个 75% 折扣延长到 2026 年 5 月 31 日 15:59 UTC。&lt;/p&gt;
&lt;p&gt;第二，缓存命中价格才是 Agent 成本模型里的关键。
Flash 的缓存命中输入低到 $0.0028 / 100万 Token，Pro 促销期缓存命中输入是 $0.003625 / 100万 Token。
这意味着大量重复项目上下文、工具定义、系统提示词和历史摘要，不再按完整输入价格计费。&lt;/p&gt;
&lt;p&gt;这个价格最重要的地方，是它让很多任务的 Token 成本变得“不敏感”。
过去开发者会担心一次 Agent 任务吃掉大量上下文、反复读写代码、频繁调用工具。
现在只要缓存命中率足够高，成本会被压得很低。&lt;/p&gt;
&lt;h2 id=&#34;和-gptclaude-的价格对比&#34;&gt;和 GPT、Claude 的价格对比
&lt;/h2&gt;&lt;p&gt;只看 DeepSeek 自己的价格，还不容易感受到差距。
把它和同期常见的闭源模型放在一起，对比会更明显。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;输入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;缓存输入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;输出&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.14 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0028 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.28 / M&lt;/td&gt;
          &lt;td&gt;高频 Agent、常规 coding、批量任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 促销价&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.435 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.003625 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.87 / M&lt;/td&gt;
          &lt;td&gt;复杂 coding、规划、事实核查&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 原价&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$1.74 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0145 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$3.48 / M&lt;/td&gt;
          &lt;td&gt;促销结束后的 Pro 成本基准&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$5 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.50 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$30 / M&lt;/td&gt;
          &lt;td&gt;高质量复杂任务、通用推理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$2.50 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.25 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$15 / M&lt;/td&gt;
          &lt;td&gt;编程和专业任务的中档选择&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4 mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.75 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.075 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$4.50 / M&lt;/td&gt;
          &lt;td&gt;成本更低的通用/子任务模型&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Opus 4.7&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$5 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.50 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$25 / M&lt;/td&gt;
          &lt;td&gt;高质量写作、复杂推理、长任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$3 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.30 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$15 / M&lt;/td&gt;
          &lt;td&gt;编程、Agent、综合任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Haiku 4.5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$1 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.10 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$5 / M&lt;/td&gt;
          &lt;td&gt;轻量任务、摘要、分类&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这张表里最刺眼的是输出价格。
Agent 不只读上下文，还会不断生成计划、补丁、解释、日志和下一步动作。
如果输出很多，DeepSeek V4 Pro 促销价的 $0.87 / M 和 GPT-5.5 的 $30 / M、Claude Sonnet 4.6 的 $15 / M 相比，差距会被不断放大。&lt;/p&gt;
&lt;p&gt;即使按 V4 Pro 原价 $3.48 / M 输出算，它也明显低于 GPT-5.4、GPT-5.5 和 Claude Sonnet / Opus。
如果任务可以用 Flash 承担，输出价会进一步降到 $0.28 / M。&lt;/p&gt;
&lt;p&gt;缓存输入差距更夸张。
DeepSeek V4 Flash 的缓存输入是 $0.0028 / M，而 GPT-5.5 和 Claude Opus 4.7 的缓存输入都是 $0.50 / M。
这不是同一个数量级。
对反复读取同一代码仓库的 Agent 来说，这个差距比普通聊天更重要。&lt;/p&gt;
&lt;h2 id=&#34;agent-任务为什么特别受影响&#34;&gt;Agent 任务为什么特别受影响
&lt;/h2&gt;&lt;p&gt;AI Agent 和普通聊天不一样。
普通聊天通常是一问一答，输入上下文相对有限。
Agent 任务会反复读取项目文件、生成计划、调用工具、检查结果、再修改代码。&lt;/p&gt;
&lt;p&gt;这类任务有两个特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Token 消耗大；&lt;/li&gt;
&lt;li&gt;重复上下文多。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二点很关键。
在代码项目里，模型会反复读取同一批文件、目录结构、错误日志和修改结果。
如果平台支持缓存命中，重复输入的成本会大幅下降。&lt;/p&gt;
&lt;p&gt;原文里提到一次实际体验：把 DeepSeek V4 Pro 和 Flash 接到 Claude Code 一类工具中，让它拉取一个提示词仓库并做成本地搜索网站。
任务最终完成，总成本大约 8 毛多，其中 Pro 缓存命中率达到 98.7%。&lt;/p&gt;
&lt;p&gt;这个例子说明了一个现实问题：Agent 任务越像“围绕同一个项目反复工作”，缓存命中越有价值。
如果一次生成网站、修 bug、改前端只花几毛钱到几块钱，订阅套餐的吸引力就会下降。&lt;/p&gt;
&lt;p&gt;可以用一个简化任务估算差距。
假设一次 coding agent 任务包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;50 万 Token 输入，其中 80% 能命中缓存；&lt;/li&gt;
&lt;li&gt;5 万 Token 输出；&lt;/li&gt;
&lt;li&gt;不计算工具调用、搜索和平台加价，只看模型 Token 成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大致成本如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $0.03&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Pro 促销价&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $0.09&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Pro 原价&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $0.36&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4 mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $0.30&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $1.01&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $1.75&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $1.11&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Opus 4.7&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 $1.65&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个估算不是说 DeepSeek 在所有任务上都更好。
模型质量、工具调用稳定性、长上下文检索能力、代码风格和事实可靠性都要单独评估。
但从成本上看，DeepSeek V4 把“让 Agent 多跑几轮”的边际成本压得很低。
这会鼓励开发者设计更长流程、更频繁的自检和更多候选方案，而不是每次都担心 Token 账单。&lt;/p&gt;
&lt;h2 id=&#34;coding-plan-和-token-plan-的差别&#34;&gt;Coding Plan 和 Token Plan 的差别
&lt;/h2&gt;&lt;p&gt;很多 AI 产品现在会提供两类套餐：Coding Plan 和 Token Plan。&lt;/p&gt;
&lt;p&gt;它们的差别大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coding Plan 通常主要面向编程；&lt;/li&gt;
&lt;li&gt;Token Plan 通常覆盖更多能力，例如 STT、TTS、绘图、搜索、embedding、RAG；&lt;/li&gt;
&lt;li&gt;STT 是语音转文字；&lt;/li&gt;
&lt;li&gt;TTS 是文字转语音；&lt;/li&gt;
&lt;li&gt;Coding Plan 往往把用户限制在编程场景里，其他能力还需要另买。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从商业角度看，Coding Plan 更像自助餐。
用户预先付一笔固定费用，厂商赌的是大多数人不会把额度用满。
有人用得多，有人用得少，平均下来平台仍然能赚钱。&lt;/p&gt;
&lt;p&gt;但如果按量 Token 价格足够低，用户就会开始计算：我为什么一定要买套餐？
如果一个月真实使用成本只有几块钱、十几块钱，买 40 元、200 元的套餐就不一定划算。&lt;/p&gt;
&lt;h2 id=&#34;降价为什么会冲击套餐模式&#34;&gt;降价为什么会冲击套餐模式
&lt;/h2&gt;&lt;p&gt;订阅套餐的成立，需要一个前提：用户觉得单次使用很贵，或者不想计算每次调用成本。
当 Token 价格高时，套餐看起来更安心。
当 Token 价格低到几乎无感时，按量付费反而更自然。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 的降价相当于把底牌亮出来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 任务可以很便宜；&lt;/li&gt;
&lt;li&gt;长上下文不一定贵到不能用；&lt;/li&gt;
&lt;li&gt;缓存命中可以显著降低成本；&lt;/li&gt;
&lt;li&gt;普通开发者不一定需要固定订阅；&lt;/li&gt;
&lt;li&gt;模型入口可以从“套餐平台”转向“低价 API”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会让做 Coding Plan 的平台不舒服。
如果用户发现按量调用更便宜、更自由，就没必要为了一个平台的套餐被绑定。&lt;/p&gt;
&lt;h2 id=&#34;flash-和-pro-怎么选&#34;&gt;Flash 和 Pro 怎么选
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 的一个实用思路，是把 Flash 和 Pro 分工使用。&lt;/p&gt;
&lt;p&gt;Flash 适合高频、轻量、可重复的任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改 bug；&lt;/li&gt;
&lt;li&gt;写前端；&lt;/li&gt;
&lt;li&gt;写脚本；&lt;/li&gt;
&lt;li&gt;做常规代码理解；&lt;/li&gt;
&lt;li&gt;处理较长上下文里的普通信息整理；&lt;/li&gt;
&lt;li&gt;跑大量子任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flash 便宜，速度快，而且同样支持很长上下文。
对日常 coding agent 来说，很多任务不需要一上来就用 Pro。&lt;/p&gt;
&lt;p&gt;Pro 更适合复杂判断和兜底任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多轮规划；&lt;/li&gt;
&lt;li&gt;复杂 Agent 流程；&lt;/li&gt;
&lt;li&gt;多次 function call；&lt;/li&gt;
&lt;li&gt;事实核查；&lt;/li&gt;
&lt;li&gt;财经研究；&lt;/li&gt;
&lt;li&gt;需要更强知识和判断力的内容生产；&lt;/li&gt;
&lt;li&gt;高风险代码修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个合理配置是：Flash 负责跑量，Pro 负责兜底。
普通任务先用 Flash，遇到长程规划、复杂判断、事实核查或多工具协作时再切 Pro。
这样既能控制成本，也能保留模型质量。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-为什么可以这么定价&#34;&gt;DeepSeek 为什么可以这么定价
&lt;/h2&gt;&lt;p&gt;DeepSeek 和很多大厂的业务结构不同。
它没有电商、社交、短视频、云计算、手机、汽车、办公套件、操作系统、浏览器或大规模企业 SaaS 生态。&lt;/p&gt;
&lt;p&gt;这意味着它不需要把用户锁在一个完整平台里。
它可以只卖文本模型能力：你在这里用便宜的文本模型，其他能力要调用谁都可以。&lt;/p&gt;
&lt;p&gt;大厂的逻辑通常不同。
如果你买了它的 Coding Plan 或 Token Plan，就会被拉进它的云、搜索、绘图、语音、数据库和开发工具生态。
套餐不是单纯卖模型，而是在争夺用户入口。&lt;/p&gt;
&lt;p&gt;DeepSeek 的打法更直接：把文本模型价格压低，争取成为 Agent 的默认模型入口。
只要默认入口被占住，很多开发者和工具链就会自然围绕它适配。&lt;/p&gt;
&lt;h2 id=&#34;开源模型和默认入口&#34;&gt;开源模型和默认入口
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 如果保持开放模型路线，第三方云厂商和平台很可能会自行部署并提供服务。
这对 DeepSeek 来说既是传播，也可能是分流。&lt;/p&gt;
&lt;p&gt;低价官方 API 的意义就在这里。
如果官方价格已经足够低，其他平台即使能部署，也很难在价格上明显更有优势。
用户会倾向于直接使用默认、便宜、稳定的入口。&lt;/p&gt;
&lt;p&gt;对 Agent 工具尤其如此。
Agent 任务依赖长上下文、缓存、工具调用和稳定吞吐。
一旦某个模型在这些场景里成本足够低，它就有机会成为默认选项。&lt;/p&gt;
&lt;h2 id=&#34;coding-plan-仍然不是完全没用&#34;&gt;Coding Plan 仍然不是完全没用
&lt;/h2&gt;&lt;p&gt;这并不意味着 Coding Plan 会马上消失。
它仍然有适合的人群。&lt;/p&gt;
&lt;p&gt;如果某些用户真的是高强度使用者，每天把套餐额度打满，那么固定订阅可能仍然划算。
就像自助餐，如果完全没有人能吃回本，用户也不会愿意买。&lt;/p&gt;
&lt;p&gt;但问题在于，绝大多数用户不是这种极端高频用户。
低频用户、轻量开发者、偶尔写脚本或改项目的人，更适合按量付费。
当 DeepSeek 把按量成本压低后，套餐的吸引力会被削弱。&lt;/p&gt;
&lt;p&gt;未来更可能出现的是分层选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频重度用户继续买 Coding Plan；&lt;/li&gt;
&lt;li&gt;普通用户转向低价 API；&lt;/li&gt;
&lt;li&gt;Agent 工具根据任务自动选择 Flash / Pro；&lt;/li&gt;
&lt;li&gt;平台套餐需要提供更多非模型价值，例如工作流、IDE 集成、部署、团队管理和安全审计。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 的发布并没有靠跑分制造最大冲击。
真正改变行业预期的是后续降价。&lt;/p&gt;
&lt;p&gt;当输入 Token 和缓存命中价格被压到很低时，AI Agent 的使用成本会发生变化。
过去看起来昂贵的长上下文、代码项目分析、多轮工具调用，现在可能变成几毛钱到几块钱的日常消耗。&lt;/p&gt;
&lt;p&gt;这会直接冲击 Coding Plan 和 Token Plan 的商业逻辑。
如果用户可以按量付费、自由组合模型和工具，而且成本足够低，就不一定愿意被绑定在某个平台套餐里。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 这次真正动到的，不只是模型能力排名，而是 AI Agent 的成本结构和默认入口之争。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/quick_start/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：Models &amp;amp; Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/api/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI API Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/about-claude/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Claude API Pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>NVIDIA 发布 Nemotron 3 Nano Omni：面向智能体的开放全模态推理模型</title>
        <link>https://knightli.com/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/2026/05/01/nvidia-nemotron-3-nano-omni-multimodal-agents/</guid>
        <description>&lt;p&gt;NVIDIA 发布了 &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt;，这是一款面向智能体工作流的开放式全模态推理模型。
它的重点不是只做文字问答，而是把语言、视觉、音频放进同一个推理框架里，让模型能够处理更接近真实工作流的输入。&lt;/p&gt;
&lt;p&gt;从定位看，&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 更像是给 AI Agent 准备的底层模型。
它可以理解屏幕、文档、图片、语音和视频中的信息，并把这些信息转成可执行的推理结果。
这类能力适合计算机操作、文档智能、视频理解、语音交互、客服、教育和企业流程自动化。&lt;/p&gt;
&lt;h2 id=&#34;模型规格&#34;&gt;模型规格
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 采用 MoE 架构。
NVIDIA 给出的核心规格是：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项目&lt;/th&gt;
          &lt;th&gt;信息&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;模型名称&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;架构&lt;/td&gt;
          &lt;td&gt;MoE&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;参数规模&lt;/td&gt;
          &lt;td&gt;30B total / 3B active&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;模态&lt;/td&gt;
          &lt;td&gt;文本、图像、音频、视频&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上下文长度&lt;/td&gt;
          &lt;td&gt;256K token&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;许可&lt;/td&gt;
          &lt;td&gt;Apache 2.0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主要部署方向&lt;/td&gt;
          &lt;td&gt;AI Agent、多模态推理、企业智能体&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里最值得注意的是 &lt;code&gt;30B-A3B&lt;/code&gt;。
它代表模型总参数规模约 30B，但每次推理只激活约 3B 参数。
这能在能力和推理成本之间做一个折中：模型保留较大的专家容量，同时运行时只使用其中一部分。&lt;/p&gt;
&lt;p&gt;不过，MoE 的 &lt;code&gt;active params&lt;/code&gt; 不等于显存只按 3B 模型估算。
完整部署仍然要考虑专家权重、KV cache、视觉/音频编码模块、上下文长度和推理框架开销。&lt;/p&gt;
&lt;h2 id=&#34;它解决的不是单一模态问题&#34;&gt;它解决的不是单一模态问题
&lt;/h2&gt;&lt;p&gt;传统大语言模型主要处理文字。
多模态模型进一步支持图片理解。
而 &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 的目标更宽：它强调全模态输入，也就是把文本、图像、音频和视频统一纳入推理。&lt;/p&gt;
&lt;p&gt;这对 Agent 很关键。
真正的智能体任务往往不是“给一段文字，生成一段文字”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;看屏幕上的按钮、表格和窗口；&lt;/li&gt;
&lt;li&gt;读 PDF、截图、图表和网页；&lt;/li&gt;
&lt;li&gt;听语音说明或会议录音；&lt;/li&gt;
&lt;li&gt;理解视频中的动作、场景和时序；&lt;/li&gt;
&lt;li&gt;把这些信息综合成下一步操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果模型只能处理单一模态，Agent 就需要额外拼接多个专用模型。
全模态模型的价值在于减少这种拼接成本，让同一个模型直接处理更复杂的环境输入。&lt;/p&gt;
&lt;h2 id=&#34;面向计算机操作和文档智能&#34;&gt;面向计算机操作和文档智能
&lt;/h2&gt;&lt;p&gt;NVIDIA 特别提到，&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 可用于计算机操作相关任务。
这类任务通常要求模型理解用户界面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;屏幕上有哪些控件；&lt;/li&gt;
&lt;li&gt;当前窗口处于什么状态；&lt;/li&gt;
&lt;li&gt;哪个按钮或菜单是下一步目标；&lt;/li&gt;
&lt;li&gt;表格、弹窗、输入框中的内容意味着什么。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是现在 AI Agent 落地时很难绕开的能力。
如果智能体要帮人操作办公软件、浏览器、企业后台或开发工具，它必须能看懂界面，而不是只读 API 文档。&lt;/p&gt;
&lt;p&gt;文档智能也是类似逻辑。
企业资料经常混合文本、表格、图像、扫描页和图表。
全模态模型可以把这些内容放在同一个上下文里理解，适合做合同审阅、报表分析、票据处理、知识库问答和流程自动化。&lt;/p&gt;
&lt;h2 id=&#34;音频和视频让-agent-更接近真实场景&#34;&gt;音频和视频让 Agent 更接近真实场景
&lt;/h2&gt;&lt;p&gt;音频和视频输入会让 Agent 的应用范围明显扩大。&lt;/p&gt;
&lt;p&gt;音频场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会议录音总结；&lt;/li&gt;
&lt;li&gt;客服通话分析；&lt;/li&gt;
&lt;li&gt;语音指令理解；&lt;/li&gt;
&lt;li&gt;教育和培训内容整理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;视频场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教学视频理解；&lt;/li&gt;
&lt;li&gt;安防和工业巡检；&lt;/li&gt;
&lt;li&gt;屏幕录制分析；&lt;/li&gt;
&lt;li&gt;操作流程复盘；&lt;/li&gt;
&lt;li&gt;多步骤任务中的时序判断。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些任务如果只靠文字转写，会丢掉很多视觉和时序信息。
全模态模型可以直接把声音、画面和文字线索结合起来，给 Agent 更完整的环境感知。&lt;/p&gt;
&lt;h2 id=&#34;部署与生态&#34;&gt;部署与生态
&lt;/h2&gt;&lt;p&gt;NVIDIA 将 &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 放进开放生态里，模型采用 Apache 2.0 许可。
这对开发者和企业很重要，因为它降低了试验、集成和二次开发的许可门槛。&lt;/p&gt;
&lt;p&gt;从 NVIDIA 的介绍看，这个模型也和其推理生态绑定紧密。
对企业用户来说，真正部署时通常会关注这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否能在 NVIDIA GPU 上高效推理；&lt;/li&gt;
&lt;li&gt;是否支持长上下文和多模态输入；&lt;/li&gt;
&lt;li&gt;是否能接入现有 Agent 框架；&lt;/li&gt;
&lt;li&gt;是否能处理企业内部文档、音视频和界面截图；&lt;/li&gt;
&lt;li&gt;是否可以在私有环境里部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NVIDIA 强调该模型在吞吐方面有明显优势，并称其最高可达到同类开放全模态推理模型的 9 倍。
这个数字的实际价值，还要结合具体硬件、上下文长度、输入模态和推理框架来看。
但方向很明确：NVIDIA 想把开放多模态模型和自己的推理基础设施一起推向企业 Agent 场景。&lt;/p&gt;
&lt;h2 id=&#34;适合哪些场景&#34;&gt;适合哪些场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 更适合下面这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要同时理解文本、图片、音频和视频的 Agent；&lt;/li&gt;
&lt;li&gt;企业内部文档智能和知识库问答；&lt;/li&gt;
&lt;li&gt;基于屏幕截图或网页界面的计算机操作；&lt;/li&gt;
&lt;li&gt;会议、客服、教学内容的多模态分析；&lt;/li&gt;
&lt;li&gt;视频理解、流程复盘和时序判断；&lt;/li&gt;
&lt;li&gt;对开放许可和私有化部署有要求的团队。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定适合所有普通用户。
如果只是本地聊天、代码补全或简单问答，单模态语言模型可能更轻、更快、更省资源。
&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 的价值主要体现在复杂输入和多模态 Agent 工作流里。&lt;/p&gt;
&lt;h2 id=&#34;这对-ai-agent-意味着什么&#34;&gt;这对 AI Agent 意味着什么
&lt;/h2&gt;&lt;p&gt;AI Agent 要真正进入工作场景，不能只会写文字。
它需要看得懂界面，听得懂语音，读得懂文档，理解视频里的变化，还要把这些信息转成下一步行动。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 的意义就在这里。
它不是单纯把模型参数做大，而是把 Agent 需要面对的多种输入统一到一个推理模型里。
这会让开发者更容易构建面向真实任务的智能体，而不是只围绕聊天窗口做应用。&lt;/p&gt;
&lt;p&gt;从这个角度看，NVIDIA 发布这款模型的重点不只是“又一个多模态模型”，而是继续把开放模型、GPU 推理、企业 Agent 和私有部署连接起来。
未来真正值得关注的是，它在具体 Agent 框架、企业工作流和本地部署中的实际表现。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blogs.nvidia.cn/blog/nemotron-3-nano-omni-multimodal-ai-agents/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA 技术博客：NVIDIA Nemotron 3 Nano Omni&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地部署 Qwen3.6：27B 与 35B-A3B 各量化版本需要多少显存</title>
        <link>https://knightli.com/2026/05/01/qwen3-6-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 12:02:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/qwen3-6-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;Qwen3.6 目前最适合本地部署讨论的开放权重版本，主要是两类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;：27B 稠密模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;：35B total / 3B active 的 MoE 模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有一些线上产品名或 API 模型名，例如 &lt;code&gt;Qwen3.6-Plus&lt;/code&gt;、&lt;code&gt;Qwen3.6-Max&lt;/code&gt;。
这类模型如果没有公开完整权重和稳定量化文件，就不适合列入本地显存表。
本文只整理可以围绕 Hugging Face 权重与 GGUF 量化文件部署的版本。&lt;/p&gt;
&lt;p&gt;和 &lt;code&gt;/05/10&lt;/code&gt; 的 Gemma 4 表一样，这里也要先区分两个概念：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GGUF 文件体积&lt;/strong&gt;：模型权重文件本身有多大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实际显存占用&lt;/strong&gt;：模型权重、KV cache、上下文长度、运行后端、多模态模块、批大小共同决定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qwen3.6 的默认上下文很长，官方模型卡里写到原生支持 &lt;code&gt;262,144&lt;/code&gt; tokens，并可扩展到 &lt;code&gt;1,010,000&lt;/code&gt; tokens。
所以表格里的“最低显存”只适合短上下文或中等上下文。
如果你真的要跑 128K、256K 或更长上下文，必须额外给 KV cache 留大量空间。&lt;/p&gt;
&lt;h2 id=&#34;先看结论&#34;&gt;先看结论
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;显存&lt;/th&gt;
          &lt;th&gt;比较合适的选择&lt;/th&gt;
          &lt;th&gt;不建议硬上&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;8GB&lt;/td&gt;
          &lt;td&gt;27B / 35B-A3B 的 2-bit 极限尝试，质量风险较高&lt;/td&gt;
          &lt;td&gt;Q4 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;12GB&lt;/td&gt;
          &lt;td&gt;27B Q2/Q3，35B-A3B Q2/Q3 短上下文&lt;/td&gt;
          &lt;td&gt;27B Q4 长上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;27B Q3/Q4，35B-A3B Q3/IQ4_XS&lt;/td&gt;
          &lt;td&gt;35B-A3B Q4 长上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;27B Q4/Q5/Q6，35B-A3B Q4&lt;/td&gt;
          &lt;td&gt;35B-A3B Q8、BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32GB&lt;/td&gt;
          &lt;td&gt;27B Q8，35B-A3B Q5/Q6&lt;/td&gt;
          &lt;td&gt;BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;48GB&lt;/td&gt;
          &lt;td&gt;35B-A3B Q8，27B 长上下文更从容&lt;/td&gt;
          &lt;td&gt;35B-A3B BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80GB+&lt;/td&gt;
          &lt;td&gt;27B / 35B-A3B BF16&lt;/td&gt;
          &lt;td&gt;没有必要为普通本地聊天追 BF16&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你是 24GB 显卡，重点看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-27B Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-27B Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B UD-Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只有 16GB 显存，优先从低位宽版本开始，不要一上来就开超长上下文。&lt;/p&gt;
&lt;h2 id=&#34;官方权重体积&#34;&gt;官方权重体积
&lt;/h2&gt;&lt;p&gt;以下是官方 Hugging Face 仓库中 &lt;code&gt;model.safetensors.index.json&lt;/code&gt; 统计到的 BF16 权重体积。
它可以作为原始权重规模参考。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;架构&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;官方 BF16 权重体积&lt;/th&gt;
          &lt;th&gt;官方上下文&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;27B dense&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;55.56GB&lt;/td&gt;
          &lt;td&gt;262K 原生，可扩展到 1,010K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;35B total / 3B active MoE&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;71.90GB&lt;/td&gt;
          &lt;td&gt;262K 原生，可扩展到 1,010K&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;35B-A3B&lt;/code&gt; 虽然每次只激活约 3B 参数，但它仍然需要加载完整 MoE 权重。
所以它不能按 3B 小模型来估算显存。&lt;/p&gt;
&lt;h2 id=&#34;qwen36-27b-显存表&#34;&gt;Qwen3.6-27B 显存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt; 是稠密模型，优点是能力稳定，缺点是推理成本更接近传统 27B 模型。
从本地部署角度看，它比 35B-A3B 更吃计算，但显存需求更容易预估。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 文件体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.39GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;极限低显存尝试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.85GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;低显存可用性优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.85GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;低位宽折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ3_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.99GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;省显存的 3-bit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_S&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.36GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;3-bit 入门&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.59GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;3-bit 常用折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15.44GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;接近 Q4 的省显存选择&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_NL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.07GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;质量和体积折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.82GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;27B 常用推荐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;19.51GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;更稳的高质量量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.52GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;质量优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.60GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td&gt;研究、评测、精度对比&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是普通本地编码和聊天，&lt;code&gt;Q4_K_M&lt;/code&gt; 是最容易推荐的起点。
24GB 显卡可以比较舒服地跑 &lt;code&gt;Q4_K_M&lt;/code&gt;，但如果要长上下文，最好降低量化位宽或减少上下文长度。&lt;/p&gt;
&lt;h2 id=&#34;qwen36-35b-a3b-显存表&#34;&gt;Qwen3.6-35B-A3B 显存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt; 是 MoE 模型，35B total，但每次激活约 3B 参数。
它的优势是速度和能力之间的平衡很好，尤其适合本地 Agent、工具调用、代码协作。&lt;/p&gt;
&lt;p&gt;但要注意：MoE 的 &lt;code&gt;3B active&lt;/code&gt; 主要影响计算量，不代表显存只需要 3B 模型级别。
完整运行仍要加载专家权重。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 文件体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.76GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;极限低显存尝试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.52GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;低显存可用性优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.29GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;低位宽折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ3_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.21GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;省显存的 3-bit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q3_K_S&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15.36GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;3-bit 入门&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.60GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;3-bit 常用折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;17.73GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;质量和体积折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ4_NL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.04GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;接近 Q4 的推荐选择&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.13GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;35B-A3B 常用推荐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;26.46GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;更稳的高质量量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.31GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td&gt;质量优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;36.90GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;69.37GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td&gt;研究、评测、精度对比&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;24GB 显存可以把 &lt;code&gt;UD-Q4_K_M&lt;/code&gt; 作为重点选择，但上下文不要开得太夸张。
如果想给 128K 以上上下文留空间，&lt;code&gt;UD-IQ4_XS&lt;/code&gt;、&lt;code&gt;UD-IQ4_NL&lt;/code&gt; 或 3-bit 版本会更现实。&lt;/p&gt;
&lt;h2 id=&#34;27b-和-35b-a3b-怎么选&#34;&gt;27B 和 35B-A3B 怎么选
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;需求&lt;/th&gt;
          &lt;th&gt;更推荐&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;稳定稠密模型表现&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;更快响应、Agent 和工具调用&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB 显存日常本地用&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;35B-A3B UD-Q4_K_M&lt;/code&gt; 或 &lt;code&gt;27B Q4_K_M&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16GB 显存尝试&lt;/td&gt;
          &lt;td&gt;两者都选 2-bit/3-bit，不建议长上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;长上下文优先&lt;/td&gt;
          &lt;td&gt;降低量化位宽，留更多 KV cache 空间&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;质量优先且有 32GB+ 显存&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;27B Q5/Q6&lt;/code&gt; 或 &lt;code&gt;35B-A3B Q5/Q6&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你主要写代码、跑 Agent、做工具调用，&lt;code&gt;35B-A3B&lt;/code&gt; 更值得先试。
如果你更在意稠密模型的稳定性和一致性，&lt;code&gt;27B&lt;/code&gt; 更直观。&lt;/p&gt;
&lt;h2 id=&#34;为什么长上下文会吃掉大量显存&#34;&gt;为什么长上下文会吃掉大量显存
&lt;/h2&gt;&lt;p&gt;Qwen3.6 的模型卡建议在复杂任务中保持较长上下文，甚至提到 128K 以上上下文对思考能力有帮助。
但对本地部署来说，长上下文意味着更大的 &lt;code&gt;KV cache&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;影响实际显存的因素包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KV cache&lt;/code&gt;：上下文越长，占用越高。&lt;/li&gt;
&lt;li&gt;是否启用视觉输入：Qwen3.6 是带视觉编码器的模型，多模态场景会增加额外开销。&lt;/li&gt;
&lt;li&gt;是否使用 &lt;code&gt;--language-model-only&lt;/code&gt;：在 vLLM 等运行时里，跳过视觉部分可以释放一部分内存给 KV cache。&lt;/li&gt;
&lt;li&gt;批大小和并发：并发越高，显存需求越高。&lt;/li&gt;
&lt;li&gt;KV cache 量化：&lt;code&gt;q8_0&lt;/code&gt;、&lt;code&gt;q4_0&lt;/code&gt; 等设置可以省显存，但可能影响细节。&lt;/li&gt;
&lt;li&gt;运行时差异：llama.cpp、vLLM、SGLang、KTransformers、LM Studio 的占用不完全一样。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以不要只看 GGUF 文件大小。
如果文件已经接近显存上限，模型即使能加载，也可能在生成长文本或长上下文时 OOM。&lt;/p&gt;
&lt;h2 id=&#34;怎么选&#34;&gt;怎么选
&lt;/h2&gt;&lt;p&gt;如果你只是想本地体验 Qwen3.6：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;12GB 显存：尝试 &lt;code&gt;27B UD-IQ2_M&lt;/code&gt; 或 &lt;code&gt;35B-A3B UD-IQ2_M&lt;/code&gt;，上下文要短。&lt;/li&gt;
&lt;li&gt;16GB 显存：尝试 &lt;code&gt;27B Q3_K_M&lt;/code&gt; 或 &lt;code&gt;35B-A3B UD-IQ3_XXS&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;24GB 显存：优先看 &lt;code&gt;27B Q4_K_M&lt;/code&gt;、&lt;code&gt;35B-A3B UD-IQ4_NL&lt;/code&gt;、&lt;code&gt;35B-A3B UD-Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;32GB 显存：可以考虑 &lt;code&gt;27B Q5/Q6&lt;/code&gt; 或 &lt;code&gt;35B-A3B Q5/Q6&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;48GB 以上：可以尝试 &lt;code&gt;Q8_0&lt;/code&gt;，或者给长上下文留更多空间。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一般用户不需要追 BF16。
Qwen3.6 的本地部署重点不是“文件越大越好”，而是在显存、上下文长度、速度和输出质量之间找到平衡。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-27B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-27B - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-35B-A3B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-35B-A3B - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-27B-FP8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-27B-FP8 - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-35B-A3B-FP8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-35B-A3B-FP8 - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/Qwen3.6-27B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/Qwen3.6-27B-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/Qwen3.6-35B-A3B-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地部署 DeepSeek V4：Pro、Flash 与 Base 版本显存占用估算表</title>
        <link>https://knightli.com/2026/05/01/deepseek-v4-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 11:55:25 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/deepseek-v4-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;DeepSeek V4 和 Gemma 4 的本地部署不是一个量级。
Gemma 4 的 26B、31B 还能讨论 24GB、32GB 显卡怎么选量化版；DeepSeek V4 则是超大 MoE 模型，真正完整本地部署时，显存需求会直接进入多卡工作站或服务器级别。&lt;/p&gt;
&lt;p&gt;官方发布的 DeepSeek V4 Preview 主要包含两个推理版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;：&lt;code&gt;1.6T total / 49B active params&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;：&lt;code&gt;284B total / 13B active params&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hugging Face 官方 collection 里还包含两个 Base 版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro-Base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash-Base&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇只讨论&lt;strong&gt;完整加载模型权重&lt;/strong&gt;时的大致显存门槛。
MoE 的 &lt;code&gt;active params&lt;/code&gt; 主要影响每个 token 的计算量，不等于只需要加载这部分参数。
如果没有专家按需加载、CPU/NVMe offload、分布式推理或专门运行时优化，显存仍然要按完整权重来估。&lt;/p&gt;
&lt;h2 id=&#34;先看结论&#34;&gt;先看结论
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;显存规模&lt;/th&gt;
          &lt;th&gt;能比较现实地尝试什么&lt;/th&gt;
          &lt;th&gt;不建议期待什么&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;不能完整跑 DeepSeek V4；只能跑小型蒸馏模型或 API&lt;/td&gt;
          &lt;td&gt;V4-Flash / V4-Pro 完整本地加载&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;48GB&lt;/td&gt;
          &lt;td&gt;仍不适合完整加载；可做小模型或远程 API 客户端&lt;/td&gt;
          &lt;td&gt;V4-Flash Q4 稳定运行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80GB&lt;/td&gt;
          &lt;td&gt;理论上可尝试 V4-Flash Q2/Q3 或强 offload&lt;/td&gt;
          &lt;td&gt;V4-Pro&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;128GB&lt;/td&gt;
          &lt;td&gt;V4-Flash Q4 比较现实；Q5/Q6 仍紧&lt;/td&gt;
          &lt;td&gt;V4-Pro Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;192GB&lt;/td&gt;
          &lt;td&gt;V4-Flash FP8/Q6 更从容；Pro Q2 勉强进入讨论&lt;/td&gt;
          &lt;td&gt;V4-Pro Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;256GB&lt;/td&gt;
          &lt;td&gt;V4-Flash FP8 比较稳；Pro Q2/Q3 可实验&lt;/td&gt;
          &lt;td&gt;V4-Pro Q5 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;512GB&lt;/td&gt;
          &lt;td&gt;V4-Pro Q4 开始进入可讨论范围&lt;/td&gt;
          &lt;td&gt;V4-Pro FP8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1TB+&lt;/td&gt;
          &lt;td&gt;V4-Pro FP8、Pro-Base 低位宽更现实&lt;/td&gt;
          &lt;td&gt;单机低成本部署&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2TB+&lt;/td&gt;
          &lt;td&gt;Pro-Base FP8 级别&lt;/td&gt;
          &lt;td&gt;普通工作站部署&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的目标是个人电脑本地运行，DeepSeek V4 并不是合适对象。
更现实的路线是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 DeepSeek 官方 API 或兼容服务；&lt;/li&gt;
&lt;li&gt;等社区稳定的 GGUF/EXL2/MLX 量化和推理支持；&lt;/li&gt;
&lt;li&gt;使用更小的 DeepSeek 蒸馏模型；&lt;/li&gt;
&lt;li&gt;或者把本地模型换成 Qwen、Gemma、Llama 等 7B 到 70B 级别模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;官方权重体积&#34;&gt;官方权重体积
&lt;/h2&gt;&lt;p&gt;以下是 Hugging Face 官方仓库的 &lt;code&gt;model.safetensors.index.json&lt;/code&gt; 中统计到的权重总量。
它反映的是当前公开权重文件大小，不等于长上下文运行时的完整显存占用。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;参数规模&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;官方权重体积&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;284B total / 13B active&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;159.61GB&lt;/td&gt;
          &lt;td&gt;推理版，体积相对最小&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1.6T total / 49B active&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;864.70GB&lt;/td&gt;
          &lt;td&gt;推理版，能力更强，体积巨大&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Flash-Base&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;284B total&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;294.67GB&lt;/td&gt;
          &lt;td&gt;Base 版，更接近全量 FP8 权重体积&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Pro-Base&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1.6T total&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1606.03GB&lt;/td&gt;
          &lt;td&gt;Base 版，约 1.6TB 级别&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以看到，即使是最小的 &lt;code&gt;V4-Flash&lt;/code&gt;，官方权重也已经接近 160GB。
这就是为什么它不能按“13B active params”理解成 13B 小模型。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-flash-显存估算&#34;&gt;DeepSeek V4 Flash 显存估算
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Flash&lt;/code&gt; 是 DeepSeek V4 里最适合本地尝试的一档。
但“最适合”只是相对 Pro 而言，它仍然不是消费级单卡模型。&lt;/p&gt;
&lt;p&gt;下面按官方 159.61GB 权重体积做折算。
其中 Q4/Q3/Q2 是按位宽估算，不代表当前已经有稳定可用的官方 GGUF 版本。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算权重体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方权重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;159.61GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td&gt;多卡服务器、推理服务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;120GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192GB&lt;/td&gt;
          &lt;td&gt;质量优先的量化尝试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160GB&lt;/td&gt;
          &lt;td&gt;质量和体积折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td&gt;Flash 本地化较现实的起点&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;60GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td&gt;大显存单卡或多卡实验&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td&gt;极限低位宽实验，质量风险明显&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果未来社区出现成熟的 &lt;code&gt;V4-Flash Q4&lt;/code&gt;，它大概率也不是 24GB 显卡的模型。
更现实的硬件起点是 96GB 到 128GB 级别的总显存，或者依赖 CPU 内存/offload 换速度。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-pro-显存估算&#34;&gt;DeepSeek V4 Pro 显存估算
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Pro&lt;/code&gt; 是旗舰推理版，官方权重体积约 864.70GB。
即使做 4-bit 量化，完整权重也仍然是数百 GB 级别。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算权重体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方权重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;864.70GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.2TB+&lt;/td&gt;
          &lt;td&gt;多机多卡推理服务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;648GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;768GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td&gt;高质量量化服务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;540GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;640GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;768GB&lt;/td&gt;
          &lt;td&gt;高质量与成本折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;432GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;640GB&lt;/td&gt;
          &lt;td&gt;Pro 本地化较现实的最低质量线&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;324GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;384GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td&gt;低位宽实验&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;216GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;320GB&lt;/td&gt;
          &lt;td&gt;极限实验，质量和稳定性风险高&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;对个人用户来说，&lt;code&gt;V4-Pro&lt;/code&gt; 更适合通过 API 使用。
如果目标是完整本地部署，至少要把它当成多卡服务器模型，而不是 4090、5090、RTX PRO 单卡模型。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-flash-base-显存估算&#34;&gt;DeepSeek V4 Flash-Base 显存估算
&lt;/h2&gt;&lt;p&gt;Base 版通常用于研究、微调或继续训练，不是普通聊天部署的首选。
&lt;code&gt;V4-Flash-Base&lt;/code&gt; 官方权重体积约 294.67GB。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算权重体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方权重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;294.67GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;384GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td&gt;研究、训练前处理、评测&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;221GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;320GB&lt;/td&gt;
          &lt;td&gt;高质量量化研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;184GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;224GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td&gt;质量和体积折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;147GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;224GB&lt;/td&gt;
          &lt;td&gt;Base 版低成本实验&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;111GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160GB&lt;/td&gt;
          &lt;td&gt;低位宽实验&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;74GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td&gt;极限实验&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是要使用 DeepSeek V4 能力，不建议从 Base 版开始。
Base 版的部署和调优成本更高，普通应用更适合推理版或 API。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-pro-base-显存估算&#34;&gt;DeepSeek V4 Pro-Base 显存估算
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Pro-Base&lt;/code&gt; 是最重的一档，官方权重体积约 1606.03GB。
这已经是 1.6TB 级别的模型文件。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算权重体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方权重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1606.03GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.4TB+&lt;/td&gt;
          &lt;td&gt;大规模研究集群&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1205GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.5TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2TB&lt;/td&gt;
          &lt;td&gt;高质量量化研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1004GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.2TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.5TB&lt;/td&gt;
          &lt;td&gt;研究与评测&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;803GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.2TB&lt;/td&gt;
          &lt;td&gt;低位宽研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;602GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;768GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td&gt;极限低位宽研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;402GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;640GB&lt;/td&gt;
          &lt;td&gt;极限实验&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这类模型不适合被放进“家用显卡能不能跑”的框架里讨论。
哪怕是 Q4，也已经超过绝大多数单机工作站的舒适范围。&lt;/p&gt;
&lt;h2 id=&#34;为什么不能只看-active-params&#34;&gt;为什么不能只看 active params
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 是 MoE 模型。
MoE 的特点是每个 token 只激活一部分专家，因此计算量会明显低于总参数量。
但这不等于显存只需要放 active params。&lt;/p&gt;
&lt;p&gt;完整本地推理通常还要考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有专家权重是否需要常驻 GPU；&lt;/li&gt;
&lt;li&gt;是否支持按需专家加载；&lt;/li&gt;
&lt;li&gt;CPU 内存与 GPU 显存之间的数据搬运成本；&lt;/li&gt;
&lt;li&gt;NVMe offload 的延迟；&lt;/li&gt;
&lt;li&gt;KV cache 在长上下文下的增长；&lt;/li&gt;
&lt;li&gt;1M context 场景下的额外运行时开销；&lt;/li&gt;
&lt;li&gt;多机多卡通信成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，&lt;code&gt;49B active&lt;/code&gt; 的 &lt;code&gt;V4-Pro&lt;/code&gt; 不能当成 49B 模型来部署。
&lt;code&gt;13B active&lt;/code&gt; 的 &lt;code&gt;V4-Flash&lt;/code&gt; 也不能当成 13B 小模型来部署。&lt;/p&gt;
&lt;h2 id=&#34;怎么选&#34;&gt;怎么选
&lt;/h2&gt;&lt;p&gt;如果你只是普通个人用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不建议完整本地部署 DeepSeek V4。&lt;/li&gt;
&lt;li&gt;需要 DeepSeek V4 能力时，优先用官方 API。&lt;/li&gt;
&lt;li&gt;需要本地私有化时，优先看是否有成熟推理服务商或内部多卡服务器。&lt;/li&gt;
&lt;li&gt;只有 24GB 到 48GB 显存时，转向 7B、14B、32B、70B 级别量化模型更实际。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你有 128GB 到 256GB 总显存：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以关注 &lt;code&gt;V4-Flash Q4/Q5&lt;/code&gt; 是否有稳定社区实现。&lt;/li&gt;
&lt;li&gt;不建议把 &lt;code&gt;V4-Pro&lt;/code&gt; 当成主力本地模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你有 512GB 以上总显存：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4-Pro Q4&lt;/code&gt; 才开始进入工程验证范围。&lt;/li&gt;
&lt;li&gt;仍然要关注推理框架、专家调度、KV cache、吞吐和并发。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeepSeek V4 的本地部署重点不是“下载哪个量化文件”，而是“有没有足够的系统级推理能力”。
它更接近一个服务器模型，而不是普通桌面模型。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek V4 Preview Release - DeepSeek API Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/deepseek-ai/deepseek-v4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-V4 collection - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Pro - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Flash - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-Base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Pro-Base - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Flash-Base - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地部署 Gemma 4：E2B、E4B、26B、31B 各量化版本需要多少显存</title>
        <link>https://knightli.com/2026/05/01/gemma-4-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 11:42:34 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/gemma-4-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;Gemma 4 现在主要有四个本地部署尺寸：&lt;code&gt;E2B&lt;/code&gt;、&lt;code&gt;E4B&lt;/code&gt;、&lt;code&gt;26B A4B&lt;/code&gt; 和 &lt;code&gt;31B&lt;/code&gt;。
其中 &lt;code&gt;E2B&lt;/code&gt;、&lt;code&gt;E4B&lt;/code&gt; 面向轻量和边缘设备，&lt;code&gt;26B A4B&lt;/code&gt; 是 MoE 架构，&lt;code&gt;31B&lt;/code&gt; 是更大的稠密模型。&lt;/p&gt;
&lt;p&gt;本地运行时，最容易混淆的是两个数字：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GGUF 文件体积&lt;/strong&gt;：模型权重文件本身有多大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实际显存占用&lt;/strong&gt;：模型权重、KV cache、运行时开销、上下文长度、是否加载多模态投影文件共同决定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面的表格按 GGUF 文件体积估算显存需求。
默认假设是 &lt;code&gt;llama.cpp&lt;/code&gt;、LM Studio、Ollama 这类本地推理场景，主要跑文本，使用中短上下文。
如果要开长上下文、视觉/音频输入、并发请求，显存要继续往上留余量。&lt;/p&gt;
&lt;h2 id=&#34;先看结论&#34;&gt;先看结论
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;显存&lt;/th&gt;
          &lt;th&gt;比较合适的选择&lt;/th&gt;
          &lt;th&gt;不建议硬上&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;4GB&lt;/td&gt;
          &lt;td&gt;E2B 的低比特量化&lt;/td&gt;
          &lt;td&gt;E4B 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;6GB&lt;/td&gt;
          &lt;td&gt;E2B Q4/Q5，E4B 低比特量化&lt;/td&gt;
          &lt;td&gt;26B、31B&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8GB&lt;/td&gt;
          &lt;td&gt;E2B Q8，E4B Q4/Q5&lt;/td&gt;
          &lt;td&gt;26B Q4、31B Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;12GB&lt;/td&gt;
          &lt;td&gt;E4B Q8，26B/31B 的 2-bit/3-bit 低质量尝试&lt;/td&gt;
          &lt;td&gt;26B Q4 长上下文、31B Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;26B 低比特量化，31B 低比特量化&lt;/td&gt;
          &lt;td&gt;31B Q4 长上下文、26B Q5 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;26B Q4/Q5，31B Q4&lt;/td&gt;
          &lt;td&gt;31B Q8、BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32GB&lt;/td&gt;
          &lt;td&gt;26B Q6/Q8，31B Q5/Q6&lt;/td&gt;
          &lt;td&gt;BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;48GB&lt;/td&gt;
          &lt;td&gt;31B Q8 更从容，26B Q8 长上下文&lt;/td&gt;
          &lt;td&gt;31B BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80GB+&lt;/td&gt;
          &lt;td&gt;26B/31B BF16&lt;/td&gt;
          &lt;td&gt;普通消费卡单卡部署&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是想本地可用，优先从 &lt;code&gt;E4B Q4_K_M&lt;/code&gt; 或 &lt;code&gt;E2B Q4_K_M&lt;/code&gt; 开始。
如果有 24GB 显存，&lt;code&gt;26B A4B Q4_K_M&lt;/code&gt; 和 &lt;code&gt;31B Q4_K_M&lt;/code&gt; 才开始进入比较舒服的范围。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-e2b-显存表&#34;&gt;Gemma 4 E2B 显存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;E2B&lt;/code&gt; 是最轻量的版本，适合笔记本、迷你主机、移动端和低显存测试。
它的优势是容易跑，缺点是复杂推理、代码和长任务稳定性有限。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 文件体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.29GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td&gt;极限低显存测试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.40GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td&gt;低显存可用性优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.54GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td&gt;轻量聊天、摘要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.98GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;质量和体积折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.11GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;E2B 常用推荐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.36GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;比 Q4 更稳一点&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.50GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td&gt;小模型高质量量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5.05GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td&gt;接近原始精度的轻量部署&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.31GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;调试、对比、研究&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;E2B 的 &lt;code&gt;Q4_K_M&lt;/code&gt; 已经够日常体验。
如果只有 4GB 显存，可以尝试 2-bit 或 3-bit，但输出质量会更容易波动。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-e4b-显存表&#34;&gt;Gemma 4 E4B 显存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;E4B&lt;/code&gt; 是更实用的轻量版本。
它比 E2B 更适合日常写作、资料总结、轻量代码辅助和本地助手。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 文件体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.53GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;低显存尝试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.74GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;低显存可用性优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.06GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td&gt;轻量本地助手&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.72GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td&gt;质量和速度折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.98GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td&gt;E4B 常用推荐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5.48GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td&gt;更稳的日常使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7.07GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;质量优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.19GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15.05GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;研究、评测、精度对比&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的显卡是 8GB，&lt;code&gt;E4B Q4_K_M&lt;/code&gt; 是很现实的起点。
如果是 12GB 或 16GB，&lt;code&gt;E4B Q8_0&lt;/code&gt; 也可以考虑。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-26b-a4b-显存表&#34;&gt;Gemma 4 26B A4B 显存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;26B A4B&lt;/code&gt; 是 MoE 版本，参数规模更大，但每次推理只激活其中一部分专家。
它适合更复杂的问答、代码、工具调用和 Agent 工作流。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 文件体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.97GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;16GB 显卡极限尝试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.55GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;低显存跑 26B&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.53GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;质量略好，仍偏省显存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.42GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;质量和体积折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.87GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;26B 常用推荐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.15GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;更稳的高质量量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.17GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;质量优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;26.86GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.51GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td&gt;单卡消费级不现实&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;24GB 显存是 26B A4B 比较舒服的分界线。
16GB 显卡可以尝试低比特版本，但上下文长度、并发和多模态都要收敛。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-31b-显存表&#34;&gt;Gemma 4 31B 显存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;31B&lt;/code&gt; 是更大的稠密模型。
它的优点是综合能力更强，缺点是显存压力比 26B A4B 更直接。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 文件体积&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低显存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更稳妥显存&lt;/th&gt;
          &lt;th&gt;适合场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.53GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;极限低显存尝试，质量牺牲明显&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.75GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;低显存尝试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.77GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;16GB 显卡可尝试&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_S&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.21GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;更省显存的 3-bit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14.74GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;3-bit 常用折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.37GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;接近 Q4 的折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;31B 常用推荐&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.66GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;更稳的高质量量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;质量优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32.64GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.41GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td&gt;服务器或大显存工作站&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;31B 的低比特版本可以在 16GB 显卡上做实验，但如果想日常使用，最好从 24GB 显存起步。
&lt;code&gt;Q4_K_M&lt;/code&gt; 是比较平衡的选择，&lt;code&gt;Q5_K_M&lt;/code&gt; 往上更适合 32GB 以上显存。&lt;/p&gt;
&lt;h2 id=&#34;为什么实际占用会比文件体积更高&#34;&gt;为什么实际占用会比文件体积更高
&lt;/h2&gt;&lt;p&gt;GGUF 文件体积只是权重大小。
真正运行时还会增加这些开销：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KV cache&lt;/code&gt;：上下文越长，占用越高。&lt;/li&gt;
&lt;li&gt;批大小和并发：一次处理更多 token 或多用户并发，会增加显存。&lt;/li&gt;
&lt;li&gt;多模态组件：图片、音频、视频输入通常还要加载 &lt;code&gt;mmproj&lt;/code&gt; 或额外处理模块。&lt;/li&gt;
&lt;li&gt;运行时后端：CUDA、Metal、ROCm、CPU/GPU 分层加载的占用不同。&lt;/li&gt;
&lt;li&gt;KV cache 量化：开启 &lt;code&gt;q8_0&lt;/code&gt;、&lt;code&gt;q4_0&lt;/code&gt; 等 KV cache 量化可以省显存，但可能影响细节。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以表格里的“最低显存”只能理解为“能启动并短上下文运行”的门槛。
如果你要 32K、64K、128K 甚至 256K 上下文，显存需求会明显增加。&lt;/p&gt;
&lt;h2 id=&#34;怎么选&#34;&gt;怎么选
&lt;/h2&gt;&lt;p&gt;如果只是想在本地体验 Gemma 4：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4GB 到 6GB 显存：选 &lt;code&gt;E2B Q3_K_M&lt;/code&gt; 或 &lt;code&gt;E2B Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;8GB 显存：优先选 &lt;code&gt;E4B Q4_K_M&lt;/code&gt;，也可以跑 &lt;code&gt;E2B Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;12GB 显存：选 &lt;code&gt;E4B Q8_0&lt;/code&gt;，或者尝试 26B/31B 的低比特版本。&lt;/li&gt;
&lt;li&gt;16GB 显存：可以尝试 &lt;code&gt;26B A4B UD-Q3_K_M&lt;/code&gt; 或 &lt;code&gt;31B Q3_K_S&lt;/code&gt;，但不要期待长上下文很舒服。&lt;/li&gt;
&lt;li&gt;24GB 显存：&lt;code&gt;26B A4B UD-Q4_K_M&lt;/code&gt; 和 &lt;code&gt;31B Q4_K_M&lt;/code&gt; 是重点选择。&lt;/li&gt;
&lt;li&gt;32GB 以上：可以考虑 &lt;code&gt;Q5_K_M&lt;/code&gt;、&lt;code&gt;Q6_K&lt;/code&gt;，或者更长上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一般用户不需要追 BF16。
本地部署的核心不是文件越大越好，而是在显存、速度、上下文和输出质量之间找到平衡。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E2B-it&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E2B-it - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E4B-it&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E4B-it - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/ggml-org/gemma-4-26B-A4B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggml-org/gemma-4-26B-A4B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-E2B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-E2B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-E4B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-E4B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-26B-A4B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-26B-A4B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-31B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-31B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 推出 Advanced Account Security：ChatGPT 和 Codex 账号多了一层高强度保护</title>
        <link>https://knightli.com/2026/05/01/openai-advanced-account-security/</link>
        <pubDate>Fri, 01 May 2026 06:15:29 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/openai-advanced-account-security/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 4 月 30 日推出了 &lt;code&gt;Advanced Account Security&lt;/code&gt;，这是面向 ChatGPT 账号的可选高级安全设置。&lt;/p&gt;
&lt;p&gt;它主要服务两类用户：一类是记者、民选官员、政治异议人士、研究人员等更容易遭遇定向攻击的人；另一类是希望给 ChatGPT 和 Codex 账号加上更强保护的安全敏感用户。&lt;/p&gt;
&lt;p&gt;这项功能开启后，不只保护 ChatGPT，也会保护同一登录账号下访问的 Codex。&lt;/p&gt;
&lt;h2 id=&#34;为什么-chatgpt-账号需要更高安全等级&#34;&gt;为什么 ChatGPT 账号需要更高安全等级
&lt;/h2&gt;&lt;p&gt;现在很多人会把 ChatGPT 用在越来越私密、越来越高风险的工作里。&lt;/p&gt;
&lt;p&gt;一个 ChatGPT 账号里可能包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;个人问题和长期对话&lt;/li&gt;
&lt;li&gt;工作文档与项目上下文&lt;/li&gt;
&lt;li&gt;已连接工具和工作流&lt;/li&gt;
&lt;li&gt;Codex 里的代码与开发任务&lt;/li&gt;
&lt;li&gt;企业、研究或安全相关材料&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果账号被接管，损失不只是聊天记录泄露。攻击者还可能访问连接的工具、查看敏感上下文，甚至干扰用户正在进行的工作。&lt;/p&gt;
&lt;p&gt;所以 OpenAI 这次推出的不是一个普通登录选项，而是一组更严格的账号保护措施。&lt;/p&gt;
&lt;h2 id=&#34;advanced-account-security-包含哪些保护&#34;&gt;Advanced Account Security 包含哪些保护
&lt;/h2&gt;&lt;p&gt;OpenAI 把这项能力放在 ChatGPT 网页端账号的 Security 设置里，用户可以主动开启。&lt;/p&gt;
&lt;p&gt;开启后，它会从几个方面提高账号安全性。&lt;/p&gt;
&lt;p&gt;第一，登录方式更强。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Advanced Account Security&lt;/code&gt; 要求使用 &lt;code&gt;passkeys&lt;/code&gt; 或实体安全密钥，并禁用基于密码的登录。这样做的目的，是让更抗钓鱼的登录方式成为默认选择。&lt;/p&gt;
&lt;p&gt;第二，账号恢复更严格。&lt;/p&gt;
&lt;p&gt;传统账号恢复经常依赖邮箱或短信。如果攻击者控制了用户的邮箱或手机号，就可能借此重置账号。为降低这个风险，Advanced Account Security 会禁用邮件和 SMS 恢复，改用更强的恢复方式，例如备用 passkeys、安全密钥和恢复密钥。&lt;/p&gt;
&lt;p&gt;这里有一个重要代价：开启后，账号恢复会更依赖用户自己保管这些恢复方式。OpenAI 明确说明，已开启该功能的用户如果丢失恢复手段，OpenAI Support 无法协助恢复账号。&lt;/p&gt;
&lt;p&gt;第三，会话时间更短，管理更清晰。&lt;/p&gt;
&lt;p&gt;OpenAI 会缩短登录会话，以降低设备或活跃会话被盗用后的暴露窗口。用户也会收到登录提醒，并可以查看和管理当前登录的设备会话。&lt;/p&gt;
&lt;p&gt;第四，自动排除训练。&lt;/p&gt;
&lt;p&gt;对处理敏感信息的人来说，不让对话用于模型训练是一项重要隐私设置。开启 Advanced Account Security 后，这个偏好会自动生效：这些账号的对话不会用于训练 OpenAI 模型。&lt;/p&gt;
&lt;h2 id=&#34;与-yubico-合作推广实体安全密钥&#34;&gt;与 Yubico 合作推广实体安全密钥
&lt;/h2&gt;&lt;p&gt;OpenAI 还宣布与 Yubico 合作，给用户提供定制的安全密钥组合。&lt;/p&gt;
&lt;p&gt;其中包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;YubiKey C Nano&lt;/code&gt;：适合长期插在笔记本上，日常登录摩擦更小&lt;/li&gt;
&lt;li&gt;&lt;code&gt;YubiKey C NFC&lt;/code&gt;：适合作为备用，也方便在笔记本和移动设备之间使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 表示，用户也可以使用其他符合 FIDO 标准的实体安全密钥，或者使用软件 passkeys。&lt;/p&gt;
&lt;p&gt;这说明 Advanced Account Security 并不绑定某一种硬件，而是围绕抗钓鱼认证方式设计。&lt;/p&gt;
&lt;h2 id=&#34;cyber-可信访问用户会被要求开启&#34;&gt;Cyber 可信访问用户会被要求开启
&lt;/h2&gt;&lt;p&gt;OpenAI 还提到，针对 &lt;code&gt;Trusted Access for Cyber&lt;/code&gt; 的个人成员，如果他们要访问更强、更宽松的网络安全模型，从 2026 年 6 月 1 日开始将被要求开启 Advanced Account Security。&lt;/p&gt;
&lt;p&gt;组织用户可以用另一种方式满足要求：证明自己的单点登录流程已经采用抗钓鱼认证。&lt;/p&gt;
&lt;p&gt;这个安排很合理。越强的模型能力越需要更强的账号保护，尤其是面向网络安全研究、漏洞分析和红队等场景时，账号本身就会成为高价值目标。&lt;/p&gt;
&lt;h2 id=&#34;适合谁开启&#34;&gt;适合谁开启
&lt;/h2&gt;&lt;p&gt;这项功能不一定适合所有人。&lt;/p&gt;
&lt;p&gt;如果只是普通聊天，且不想承担更严格账号恢复带来的复杂性，可以先观望。&lt;/p&gt;
&lt;p&gt;但以下用户值得认真考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常在 ChatGPT 中处理敏感工作材料的人&lt;/li&gt;
&lt;li&gt;使用 Codex 处理私有代码仓库的人&lt;/li&gt;
&lt;li&gt;记者、公共事务人员、研究人员、企业高管等高风险用户&lt;/li&gt;
&lt;li&gt;网络安全从业者&lt;/li&gt;
&lt;li&gt;已经习惯使用 passkeys 或实体安全密钥的人&lt;/li&gt;
&lt;li&gt;对账号被钓鱼、短信劫持或邮箱接管特别敏感的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;开启之前，最好先准备好备用 passkey、安全密钥和恢复密钥，并确认它们被妥善保存。否则，安全性提高的同时，账号恢复难度也会明显提高。&lt;/p&gt;
&lt;h2 id=&#34;这对-ai-产品意味着什么&#34;&gt;这对 AI 产品意味着什么
&lt;/h2&gt;&lt;p&gt;Advanced Account Security 不是一个模型能力更新，但它反映了 AI 产品正在进入更高风险的使用阶段。&lt;/p&gt;
&lt;p&gt;当 ChatGPT 和 Codex 开始承载工作流、代码、文档、企业连接器和长期上下文时，账号就不再只是“登录聊天工具”的入口，而是 AI 工作环境的钥匙。&lt;/p&gt;
&lt;p&gt;这类产品越像个人工作台，账号安全、恢复机制、会话管理和训练数据控制就越重要。&lt;/p&gt;
&lt;p&gt;OpenAI 这次把 passkeys、实体安全密钥、恢复限制、会话管理和训练排除放到同一个设置里，方向是对的。它让高风险用户可以用一个明确入口，把账号保护提升到更适合敏感工作的级别。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Advanced Account Security&lt;/code&gt; 可以理解为 ChatGPT 和 Codex 的高安全模式。&lt;/p&gt;
&lt;p&gt;它通过更强登录、更严格恢复、更短会话、登录提醒和自动排除训练，降低账号被接管后的风险。代价是用户需要更认真地管理自己的恢复方式，因为开启后传统邮件和短信恢复不再可用，OpenAI Support 也无法替用户兜底。&lt;/p&gt;
&lt;p&gt;如果你已经把 ChatGPT 或 Codex 用在重要工作里，尤其是涉及私有代码、敏感文档或高风险身份，这项功能值得关注。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/advanced-account-security/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing Advanced Account Security - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini 进入 Google built-in 汽车：车载语音助手开始变得更像真正的 AI 助手</title>
        <link>https://knightli.com/2026/05/01/gemini-cars-with-google-built-in/</link>
        <pubDate>Fri, 01 May 2026 06:09:57 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/gemini-cars-with-google-built-in/</guid>
        <description>&lt;p&gt;Google 在 2026 年 4 月 30 日宣布，&lt;code&gt;Gemini&lt;/code&gt; 开始进入搭载 &lt;code&gt;Google built-in&lt;/code&gt; 的汽车，作为 Google Assistant 的升级版本陆续推送。&lt;/p&gt;
&lt;p&gt;这件事的重点不只是“车里多了一个 AI 助手”，而是车载语音交互正在从固定命令，转向更自然的连续对话。用户不需要严格记住指令格式，可以像和普通助手交流一样，让 Gemini 帮忙导航、处理消息、查询车辆信息，甚至控制部分车内设置。&lt;/p&gt;
&lt;h2 id=&#34;先从美国英语用户开始&#34;&gt;先从美国英语用户开始
&lt;/h2&gt;&lt;p&gt;根据 Google 的说明，这次更新会覆盖新车和已有车辆，前提是车辆支持 &lt;code&gt;Google built-in&lt;/code&gt;，并且用户已经在车机里登录 Google 账号。&lt;/p&gt;
&lt;p&gt;rollout 会先从美国英语用户开始，之后再扩展到更多语言和国家。符合条件的用户会在车内看到升级到 Gemini 的提示。升级后，可以通过以下方式唤起 Gemini：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;说出 &lt;code&gt;Hey Google&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击主屏幕上的麦克风&lt;/li&gt;
&lt;li&gt;使用方向盘上的语音按钮&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明 Google 没有把 Gemini 做成一个需要重新学习的新入口，而是延续原来的车载语音入口，只是把底层助手换成更强的 Gemini。&lt;/p&gt;
&lt;h2 id=&#34;车载语音不再只靠固定命令&#34;&gt;车载语音不再只靠固定命令
&lt;/h2&gt;&lt;p&gt;过去车载语音助手常见的问题是：能做的事不少，但用户必须说得很“标准”。一旦表达稍微复杂，助手就容易听不懂，或者只能执行最基础的动作。&lt;/p&gt;
&lt;p&gt;Gemini 进入车机后，Google 强调的是自然对话能力。比如用户可以直接说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I need to grab lunch, find some highly rated sit-down restaurants along the way. I&amp;rsquo;m not in a rush, oh, and I’d like to eat outside.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gemini 会结合 Google Maps 找沿途合适的餐厅。用户还可以继续追问停车情况、是否有素食选项等，不需要重新发起一轮完整搜索。&lt;/p&gt;
&lt;p&gt;这种交互更符合驾驶场景。人在开车时很难像使用手机一样反复筛选、点击和修改条件，语音助手如果能理解更完整的意图，就能明显减少分心。&lt;/p&gt;
&lt;h2 id=&#34;地图消息和音乐会变得更顺手&#34;&gt;地图、消息和音乐会变得更顺手
&lt;/h2&gt;&lt;p&gt;Google 给出的几个例子，基本都围绕驾驶时最常见的需求。&lt;/p&gt;
&lt;p&gt;第一类是路线和地点搜索。&lt;/p&gt;
&lt;p&gt;Gemini 可以根据 Google Maps 信息寻找沿途餐厅、景点或充电站，也可以回答和当前路线相关的问题。比如经过体育场附近时，用户可以问附近是否有活动、是否会影响交通。&lt;/p&gt;
&lt;p&gt;第二类是消息处理。&lt;/p&gt;
&lt;p&gt;用户可以让 Gemini 总结新短信，再根据上下文回复。比如让它回复朋友“我在路上，并附上预计到达时间”。如果临时想改内容，也可以继续补充，不必从头开始。&lt;/p&gt;
&lt;p&gt;第三类是音乐和氛围。&lt;/p&gt;
&lt;p&gt;用户不一定需要知道电台名或具体歌单，可以直接描述想听的内容。例如播放爵士电台，或者在 YouTube Music 里播放适合山路驾驶的欢快 70 年代 folk-rock，并跳过慢歌。&lt;/p&gt;
&lt;p&gt;这些功能本身并不新，但 Gemini 的价值在于把多个条件合在一句自然语言里处理，而不是把用户逼回固定命令。&lt;/p&gt;
&lt;h2 id=&#34;gemini-live-让车里也能边走边聊&#34;&gt;Gemini Live 让车里也能边走边聊
&lt;/h2&gt;&lt;p&gt;Google 还提到，&lt;code&gt;Gemini Live&lt;/code&gt; 也会进入车载场景，目前处于 beta。用户可以点击 Gemini Live 按钮，或者说 &lt;code&gt;Hey Google, let&#39;s talk&lt;/code&gt; 开始更自由的对话。&lt;/p&gt;
&lt;p&gt;这类场景更像“开车时的陪伴式学习和头脑风暴”。例如开车去 Lake Tahoe 时，可以让 Gemini 讲当地历史和趣闻；听到感兴趣的内容后，可以随时打断追问。也可以让 Gemini 帮忙规划到达目的地后的徒步路线和活动安排。&lt;/p&gt;
&lt;p&gt;这和传统车载助手的差异很明显。传统助手更像工具按钮，Gemini Live 则更像一个可以连续交流的语音界面。&lt;/p&gt;
&lt;h2 id=&#34;车辆说明书和实时车况是关键差异&#34;&gt;车辆说明书和实时车况是关键差异
&lt;/h2&gt;&lt;p&gt;更值得注意的是，Gemini 不只是回答通用问题。Google 表示，他们和车厂合作，把 Gemini 更深入地接入车辆系统。&lt;/p&gt;
&lt;p&gt;这带来几类更贴近汽车本身的能力。&lt;/p&gt;
&lt;p&gt;第一，用户可以询问车辆功能。&lt;/p&gt;
&lt;p&gt;比如“自动洗车前我应该怎么准备？”或者“我的车库天花板太低，后备箱门会碰到，怎么设置后备箱不要完全打开？”Gemini 会根据车厂提供的车主手册，给出适配具体车型的答案。不同品牌和车型能提供的信息细节会有所差异。&lt;/p&gt;
&lt;p&gt;第二，电动车用户可以询问实时电量和续航。&lt;/p&gt;
&lt;p&gt;例如当前电量、到达目的地时预计剩余电量，或者让 Gemini 查找附近充电站。它还可以结合 Google Maps，帮用户找充电附近的咖啡店等地点。&lt;/p&gt;
&lt;p&gt;第三，部分车内设置可以通过自然语言调整。&lt;/p&gt;
&lt;p&gt;Google 举的例子是用户说“车里又雾又冷”，Gemini 可以理解背后的意图，调高暖风并打开除雾。&lt;/p&gt;
&lt;p&gt;这类能力比单纯把聊天机器人搬进车机更实际。汽车是一个有明确状态、硬件能力和安全边界的环境，AI 助手如果能理解车辆上下文，价值会比普通问答更高。&lt;/p&gt;
&lt;h2 id=&#34;车载-ai-的边界也更重要&#34;&gt;车载 AI 的边界也更重要
&lt;/h2&gt;&lt;p&gt;车内场景对 AI 的要求和手机、网页不同。&lt;/p&gt;
&lt;p&gt;开车时用户不能频繁看屏幕，也不能花太多注意力纠正 AI。助手需要足够简洁、可靠，并且不能在关键场景里制造新的负担。&lt;/p&gt;
&lt;p&gt;所以 Gemini 进入汽车并不意味着所有复杂任务都适合在车里完成。更合理的方向是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;降低导航和信息查询的操作成本&lt;/li&gt;
&lt;li&gt;用自然语言替代多层菜单&lt;/li&gt;
&lt;li&gt;帮用户快速理解车辆功能&lt;/li&gt;
&lt;li&gt;在不分散注意力的前提下处理消息和媒体&lt;/li&gt;
&lt;li&gt;给 EV 用户更顺滑的充电与路线信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;反过来，高风险操作仍然需要清晰边界。比如影响驾驶安全的设置、需要确认的消息发送、涉及车辆控制的动作，都应该有足够明确的确认流程。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Gemini 进入 &lt;code&gt;Google built-in&lt;/code&gt; 汽车，是 AI 助手从手机和网页继续向日常环境扩展的一步。&lt;/p&gt;
&lt;p&gt;它的意义不在于车里终于可以“聊天”，而在于车载语音助手开始理解更复杂的意图，并能结合地图、消息、音乐、车辆说明书和部分车况信息来完成任务。&lt;/p&gt;
&lt;p&gt;如果 rollout 顺利，车载语音交互可能会从“记住命令”逐渐变成“描述需求”。这对开车场景很重要，因为真正好的车载 AI，不应该要求驾驶者为它分配太多注意力。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/platforms/android/cars-with-google-built-in-gemini-tips-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Your car with Google built-in is about to get smarter, thanks to Gemini - Google Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude for Creative Work：Anthropic 把 Claude 接进 Adobe、Blender、Ableton 和 SketchUp</title>
        <link>https://knightli.com/2026/05/01/claude-for-creative-work-connectors/</link>
        <pubDate>Fri, 01 May 2026 05:52:14 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/claude-for-creative-work-connectors/</guid>
        <description>&lt;p&gt;Anthropic 在 2026 年 4 月 28 日发布了 &lt;code&gt;Claude for Creative Work&lt;/code&gt;，重点不是再讲一个新的聊天机器人，而是把 Claude 接进创意行业已经在用的软件里。&lt;/p&gt;
&lt;p&gt;这次合作名单很有代表性：&lt;code&gt;Blender&lt;/code&gt;、&lt;code&gt;Autodesk&lt;/code&gt;、&lt;code&gt;Adobe&lt;/code&gt;、&lt;code&gt;Ableton&lt;/code&gt;、&lt;code&gt;Splice&lt;/code&gt;，还包括 &lt;code&gt;Affinity by Canva&lt;/code&gt;、&lt;code&gt;Resolume&lt;/code&gt;、&lt;code&gt;SketchUp&lt;/code&gt; 等工具生态。&lt;/p&gt;
&lt;p&gt;简单说，Anthropic 想做的是：让 Claude 不只在聊天框里给建议，而是进入设计、3D、音乐、视频和现场视觉这些具体工作流。&lt;/p&gt;
&lt;h2 id=&#34;claude-不能替代审美但可以替代很多苦活&#34;&gt;Claude 不能替代审美，但可以替代很多苦活
&lt;/h2&gt;&lt;p&gt;Anthropic 在公告里的态度比较克制：Claude 不能替代创作者的品味和想象力。&lt;/p&gt;
&lt;p&gt;这个判断是对的。创意工作的关键往往不是“生成一个东西”，而是判断哪个方向值得继续、哪个细节需要保留、哪个方案符合项目气质。&lt;/p&gt;
&lt;p&gt;但创意流程里也有大量重复劳动：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批量调整图片&lt;/li&gt;
&lt;li&gt;给图层改名&lt;/li&gt;
&lt;li&gt;导出不同格式文件&lt;/li&gt;
&lt;li&gt;整理素材&lt;/li&gt;
&lt;li&gt;查软件文档&lt;/li&gt;
&lt;li&gt;写脚本改场景&lt;/li&gt;
&lt;li&gt;在多个工具之间转换格式&lt;/li&gt;
&lt;li&gt;把一个想法快速做成可看的草稿&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些环节不一定需要“灵感”，但很消耗时间。Claude 的作用更像是把创作者从这些机械步骤里释放出来。&lt;/p&gt;
&lt;h2 id=&#34;connectors-是这次的核心&#34;&gt;Connectors 是这次的核心
&lt;/h2&gt;&lt;p&gt;这次发布的关键是 &lt;code&gt;connectors&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;connectors&lt;/code&gt; 可以理解为 Claude 连接外部平台和软件的桥。用户不是把需求复制到 Claude，再手动回到软件里操作，而是让 Claude 直接理解工具、调用能力或读取相关文档。&lt;/p&gt;
&lt;p&gt;Anthropic 公告里提到的连接方向包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ableton&lt;/code&gt;：让 Claude 基于 Live 和 Push 的官方文档回答问题。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Adobe for creativity&lt;/code&gt;：连接 Creative Cloud 中的 50 多个工具，覆盖 Photoshop、Premiere、Express 等。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Affinity by Canva&lt;/code&gt;：自动化专业创意工作流里的重复生产任务，例如批量图片调整、图层重命名和文件导出。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Autodesk Fusion&lt;/code&gt;：让有 Fusion 订阅的设计师和工程师通过对话创建和修改 3D 模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Blender&lt;/code&gt;：通过自然语言使用 Blender 的 Python API，帮助理解复杂场景、访问文档和扩展功能。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Resolume Arena&lt;/code&gt; 和 &lt;code&gt;Resolume Wire&lt;/code&gt;：让 VJ 和现场视觉艺术家用自然语言实时控制 Arena、Avenue 和 Wire。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SketchUp&lt;/code&gt;：把与 Claude 的对话变成 3D 建模起点，例如描述房间、家具或场地概念，再到 SketchUp 里继续细化。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Splice&lt;/code&gt;：让音乐制作人直接从 Claude 里搜索免版税采样库。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些集成覆盖了设计、音频、3D、视频、现场演出和工程建模。它们不是一个方向的小实验，而是 Anthropic 明确在往“创意软件工作台”走。&lt;/p&gt;
&lt;h2 id=&#34;对创意工作有什么用&#34;&gt;对创意工作有什么用
&lt;/h2&gt;&lt;p&gt;从公告看，Claude 在创意工作里的用途可以分成几类。&lt;/p&gt;
&lt;p&gt;第一类是学习复杂工具。&lt;/p&gt;
&lt;p&gt;很多创意软件很强，但学习曲线也很陡。Blender、Ableton、Fusion、Premiere 都是典型例子。用户可以让 Claude 解释某个 modifier stack、讲一个合成技巧、演示某个陌生功能，而不是在搜索结果、论坛和官方文档之间来回跳。&lt;/p&gt;
&lt;p&gt;第二类是写脚本和插件。&lt;/p&gt;
&lt;p&gt;创意软件都有大量可自动化空间。Claude Code 可以帮用户写脚本、插件、shader、程序化动画或参数化模型。对会一点技术但不想一直查 API 的创作者来说，这个价值很实际。&lt;/p&gt;
&lt;p&gt;第三类是打通工具链。&lt;/p&gt;
&lt;p&gt;真实项目通常不是一个软件完成的。设计可能在 Adobe，3D 在 Blender 或 SketchUp，音频在 Ableton，素材来自 Splice，最后还要进入视频或演出系统。Claude 可以帮助转换格式、重组数据、同步素材，减少手工交接。&lt;/p&gt;
&lt;p&gt;第四类是快速探索和交付。&lt;/p&gt;
&lt;p&gt;Anthropic 还提到 &lt;code&gt;Claude Design&lt;/code&gt;，这是 Anthropic Labs 的一个新产品，用于探索软件体验想法。它可以根据反馈迭代视觉方案，并且设计结果可以导出到其他工具，起点是 Canva。&lt;/p&gt;
&lt;p&gt;第五类是减少重复生产工作。&lt;/p&gt;
&lt;p&gt;比如批处理素材、搭建项目结构、批量调整场景对象、自动化导出。很多创作者并不是不会做，而是不想把一下午浪费在重复点击上。&lt;/p&gt;
&lt;h2 id=&#34;blender-是最值得注意的一环&#34;&gt;Blender 是最值得注意的一环
&lt;/h2&gt;&lt;p&gt;这次公告里，&lt;code&gt;Blender&lt;/code&gt; 的位置很特别。&lt;/p&gt;
&lt;p&gt;Blender 是免费开源的 3D 创作套件，覆盖独立游戏、动效、建筑可视化、影视制作等场景。它本身就有强大的 Python API，也有大量复杂工作流。&lt;/p&gt;
&lt;p&gt;Blender 开发者已经创建了一个 MCP connector，现在可以在 Claude 中正式使用。&lt;/p&gt;
&lt;p&gt;这个连接器能做的事情包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析和调试整个 Blender 场景&lt;/li&gt;
&lt;li&gt;批量修改场景里的对象&lt;/li&gt;
&lt;li&gt;使用 Blender Python API 写自定义脚本&lt;/li&gt;
&lt;li&gt;把新工具直接加到 Blender 界面里&lt;/li&gt;
&lt;li&gt;帮用户理解复杂设置和文档&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更重要的是，Anthropic 加入了 Blender Development Fund，成为 Blender 项目的 patron，用来支持 Blender 继续发展 Python API。&lt;/p&gt;
&lt;p&gt;这件事有两个信号。&lt;/p&gt;
&lt;p&gt;第一，Anthropic 不只是想接入商业软件，也在押注开源创作工具。&lt;/p&gt;
&lt;p&gt;第二，这个 connector 基于 &lt;code&gt;MCP&lt;/code&gt;，理论上不只 Claude 能用，其他大模型也可以接入。这和 Blender 的开源与互操作方向比较一致。&lt;/p&gt;
&lt;h2 id=&#34;这不是ai-替代设计师而是ai-进入工具层&#34;&gt;这不是“AI 替代设计师”，而是“AI 进入工具层”
&lt;/h2&gt;&lt;p&gt;这次发布最值得关注的地方，不是 Claude 能不能生成一张图、一段音乐或一个 3D 模型。&lt;/p&gt;
&lt;p&gt;更关键的是：AI 正在从聊天框进入工具层。&lt;/p&gt;
&lt;p&gt;过去很多 AI 创作工具的体验是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 AI 工具里描述需求。&lt;/li&gt;
&lt;li&gt;得到一个结果。&lt;/li&gt;
&lt;li&gt;下载或复制出来。&lt;/li&gt;
&lt;li&gt;回到专业软件里手动修改。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在的方向更像是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude 理解你的创意软件。&lt;/li&gt;
&lt;li&gt;Claude 读取相关文档或项目上下文。&lt;/li&gt;
&lt;li&gt;Claude 生成脚本、操作工具、整理素材或构建草稿。&lt;/li&gt;
&lt;li&gt;创作者在熟悉的软件里继续判断和精修。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这对专业用户更有吸引力，因为他们不想离开原本的工具链，也不想把所有工作迁移到一个全新的 AI 平台。&lt;/p&gt;
&lt;h2 id=&#34;对学生和创意教育的影响&#34;&gt;对学生和创意教育的影响
&lt;/h2&gt;&lt;p&gt;Anthropic 也提到正在和艺术与设计项目合作，支持包含 creative computation 的课程。&lt;/p&gt;
&lt;p&gt;首批项目包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rhode Island School of Design 的 Art and Computation&lt;/li&gt;
&lt;li&gt;Ringling College of Art and Design 的 Fundamentals of AI for Creatives&lt;/li&gt;
&lt;li&gt;Goldsmiths, University of London 的 MA/MFA Computational Arts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;学生和教师会获得 Claude 以及新 connectors 的访问权限，他们的反馈会帮助 Anthropic 理解创意实践者真正需要什么。&lt;/p&gt;
&lt;p&gt;这点也很有意思。AI 创作能力如果只停留在“生成素材”，很容易变成炫技。但进入课程后，更重要的问题会变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学生如何理解工具背后的过程&lt;/li&gt;
&lt;li&gt;如何把 AI 作为探索和原型工具&lt;/li&gt;
&lt;li&gt;如何保留自己的判断力&lt;/li&gt;
&lt;li&gt;如何用代码和自动化扩展创作边界&lt;/li&gt;
&lt;li&gt;如何避免所有作品都变成同一种 AI 味道&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题比单纯讨论“AI 会不会取代创作者”更实际。&lt;/p&gt;
&lt;h2 id=&#34;谁最适合关注这次发布&#34;&gt;谁最适合关注这次发布
&lt;/h2&gt;&lt;p&gt;这次 &lt;code&gt;Claude for Creative Work&lt;/code&gt; 对几类人尤其值得关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 Blender、SketchUp、Fusion 做 3D 建模的人&lt;/li&gt;
&lt;li&gt;使用 Adobe、Affinity 做设计和视频生产的人&lt;/li&gt;
&lt;li&gt;使用 Ableton、Splice 做音乐制作的人&lt;/li&gt;
&lt;li&gt;需要把多个创意工具串成工作流的人&lt;/li&gt;
&lt;li&gt;会一点脚本，希望自动化创意软件的人&lt;/li&gt;
&lt;li&gt;正在做创意教育、交互设计、计算艺术课程的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶尔让 AI 生成图片，这次发布未必马上改变体验。&lt;/p&gt;
&lt;p&gt;但如果你已经在专业软件里工作，并且经常遇到“我知道要做什么，但这些步骤太繁琐”的情况，connectors 会很有价值。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的边界&#34;&gt;需要注意的边界
&lt;/h2&gt;&lt;p&gt;这类工具也不是万能的。&lt;/p&gt;
&lt;p&gt;第一，Claude 仍然需要用户判断结果是否符合审美、品牌和项目目标。&lt;/p&gt;
&lt;p&gt;第二，自动化操作专业软件时，最好从小范围任务开始，不要一上来就让它批量修改不可恢复的项目文件。&lt;/p&gt;
&lt;p&gt;第三，连接器质量很关键。如果 connector 只能查文档，和能真实操作软件，是两种完全不同的体验。&lt;/p&gt;
&lt;p&gt;第四，创意软件项目往往有复杂文件、素材依赖和版本管理。AI 参与之后，更需要备份和可回滚流程。&lt;/p&gt;
&lt;p&gt;第五，版权、授权和素材来源仍然要自己把关。比如 Splice 强调的是 royalty-free samples，但实际项目使用时仍要确认具体授权条件。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude for Creative Work&lt;/code&gt; 不是一次单点功能更新，而是 Anthropic 把 Claude 推进创意软件生态的一步。&lt;/p&gt;
&lt;p&gt;它的重点不是让 Claude 变成创作者，而是让 Claude 成为创作者身边的工具助手：查文档、写脚本、批处理、连通软件、生成草稿、减少重复劳动。&lt;/p&gt;
&lt;p&gt;真正有长期价值的地方，是 Claude 开始进入 Blender、Adobe、Ableton、SketchUp 这些创作者每天使用的环境里。&lt;/p&gt;
&lt;p&gt;当 AI 不再只是一个单独网页，而是能理解和调用专业工具时，创意工作流会发生更实际的变化。&lt;/p&gt;
&lt;p&gt;参考链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-for-creative-work&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude for Creative Work - Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>FinceptTerminal：开源金融终端、量化研究和 AI Agent 工作台</title>
        <link>https://knightli.com/2026/05/01/finceptterminal-open-source-financial-terminal/</link>
        <pubDate>Fri, 01 May 2026 03:47:18 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/finceptterminal-open-source-financial-terminal/</guid>
        <description>&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 是 Fincept Corporation 开源的金融终端项目。&lt;/p&gt;
&lt;p&gt;从 README 的描述看，它不是一个简单行情面板，而是一个面向金融分析、量化研究、交易工作流和 AI Agent 的综合桌面平台。项目 v4 使用 C++20 和 Qt6 构建原生桌面应用，同时嵌入 Python 生态，用来支持分析、脚本、机器学习和金融建模。&lt;/p&gt;
&lt;p&gt;如果要类比，它更接近一个开源金融研究工作台：一边连接数据源，一边做图表、组合、量化、交易、情报分析和自动化工作流。&lt;/p&gt;
&lt;p&gt;需要先说明：这类工具可以用于研究、分析、教育和内部工具建设，但不能把任何输出直接当成投资建议。金融市场有风险，数据、模型、策略和执行都需要独立验证。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;金融研究经常被拆散在很多工具里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;行情数据在一个软件里&lt;/li&gt;
&lt;li&gt;研究代码在 Jupyter 里&lt;/li&gt;
&lt;li&gt;图表在另一个工具里&lt;/li&gt;
&lt;li&gt;组合分析在表格里&lt;/li&gt;
&lt;li&gt;交易记录在券商系统里&lt;/li&gt;
&lt;li&gt;新闻和情报在浏览器里&lt;/li&gt;
&lt;li&gt;AI 分析又在聊天窗口里&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种方式能用，但协作和复现很困难。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 想解决的是把这些能力整合到一个桌面终端里，让用户可以在同一个环境中完成数据接入、分析、建模、可视化、Agent 协作和交易相关流程。&lt;/p&gt;
&lt;p&gt;它的目标不是替代所有专业系统，而是提供一个可扩展的开源金融终端底座。&lt;/p&gt;
&lt;h2 id=&#34;技术架构&#34;&gt;技术架构
&lt;/h2&gt;&lt;p&gt;README 中提到 v4 采用 C++20 和 Qt6。&lt;/p&gt;
&lt;p&gt;这意味着它不是纯 Web 面板，而是原生桌面应用。对金融终端来说，原生应用有几个优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI 响应更稳定&lt;/li&gt;
&lt;li&gt;更适合复杂窗口和多面板布局&lt;/li&gt;
&lt;li&gt;更容易处理本地文件和系统资源&lt;/li&gt;
&lt;li&gt;可以嵌入高性能组件&lt;/li&gt;
&lt;li&gt;适合长期运行的桌面工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同时，项目也嵌入 Python。&lt;/p&gt;
&lt;p&gt;这点很关键。金融研究和量化分析里，Python 是事实上的主流语言之一。数据分析、机器学习、统计、回测、图表、金融建模都离不开 Python 生态。C++/Qt 负责应用框架和桌面体验，Python 负责研究与扩展能力，这是一种很实用的组合。&lt;/p&gt;
&lt;h2 id=&#34;数据连接器&#34;&gt;数据连接器
&lt;/h2&gt;&lt;p&gt;README 中提到项目提供 100+ 数据连接器。&lt;/p&gt;
&lt;p&gt;金融终端的价值很大程度取决于数据接入。没有数据，再好的 UI 和模型都只是空壳。&lt;/p&gt;
&lt;p&gt;这类连接器通常可以覆盖不同来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;市场行情&lt;/li&gt;
&lt;li&gt;宏观数据&lt;/li&gt;
&lt;li&gt;公司财务&lt;/li&gt;
&lt;li&gt;新闻与情报&lt;/li&gt;
&lt;li&gt;交易所数据&lt;/li&gt;
&lt;li&gt;加密资产数据&lt;/li&gt;
&lt;li&gt;研究数据源&lt;/li&gt;
&lt;li&gt;内部或自定义 API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对用户来说，数据连接器的意义是减少“下载 CSV、手动整理、再导入”的流程，让分析更接近实时和自动化。&lt;/p&gt;
&lt;p&gt;不过也要注意，金融数据的质量、授权、延迟、覆盖范围和费用都很关键。使用任何数据源前，都要确认许可和用途边界。&lt;/p&gt;
&lt;h2 id=&#34;ai-agents-模块&#34;&gt;AI Agents 模块
&lt;/h2&gt;&lt;p&gt;项目强调 AI Agents，这也是它和传统金融终端不同的地方。&lt;/p&gt;
&lt;p&gt;传统终端更多是人操作界面，人看数据，人做判断。加入 AI Agent 后，工具可以承担更多辅助任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;汇总市场信息&lt;/li&gt;
&lt;li&gt;解释财报和公告&lt;/li&gt;
&lt;li&gt;生成研究摘要&lt;/li&gt;
&lt;li&gt;帮助筛选数据&lt;/li&gt;
&lt;li&gt;辅助编写分析脚本&lt;/li&gt;
&lt;li&gt;组织交易或研究工作流&lt;/li&gt;
&lt;li&gt;在多个模块之间传递上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不代表 AI 可以替代研究员或交易员。&lt;/p&gt;
&lt;p&gt;更合理的定位是：AI Agent 帮你减少重复整理工作，提供初步分析和交互式查询，但重要结论仍然需要数据验证、模型验证和人工判断。&lt;/p&gt;
&lt;h2 id=&#34;量化研究能力&#34;&gt;量化研究能力
&lt;/h2&gt;&lt;p&gt;FinceptTerminal 也面向量化研究。&lt;/p&gt;
&lt;p&gt;量化研究通常包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据清洗&lt;/li&gt;
&lt;li&gt;因子构建&lt;/li&gt;
&lt;li&gt;策略假设&lt;/li&gt;
&lt;li&gt;回测&lt;/li&gt;
&lt;li&gt;风险评估&lt;/li&gt;
&lt;li&gt;组合优化&lt;/li&gt;
&lt;li&gt;交易成本估计&lt;/li&gt;
&lt;li&gt;结果可视化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一个终端能把数据连接、Python 分析、图表和工作流整合起来，对量化研究会很有帮助。研究者可以在一个环境里从数据到策略验证逐步推进。&lt;/p&gt;
&lt;p&gt;不过，量化研究最怕“看起来有效”。一个策略如果没有严格处理样本外验证、交易成本、滑点、幸存者偏差、过拟合和数据泄露，回测再漂亮也不可靠。&lt;/p&gt;
&lt;p&gt;所以这类工具应该被当作研究平台，而不是自动赚钱机器。&lt;/p&gt;
&lt;h2 id=&#34;quantlib-和金融建模&#34;&gt;QuantLib 和金融建模
&lt;/h2&gt;&lt;p&gt;README 中提到 QuantLib 相关能力。&lt;/p&gt;
&lt;p&gt;QuantLib 是金融工程里很常见的开源库，常用于利率、债券、期权、衍生品定价、曲线构建和风险计算等方向。&lt;/p&gt;
&lt;p&gt;这说明 FinceptTerminal 不只是看股票行情，也试图覆盖更专业的金融建模场景。&lt;/p&gt;
&lt;p&gt;这类能力适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;金融工程学习&lt;/li&gt;
&lt;li&gt;衍生品定价实验&lt;/li&gt;
&lt;li&gt;曲线与风险指标计算&lt;/li&gt;
&lt;li&gt;投资组合风险分析&lt;/li&gt;
&lt;li&gt;研究模型原型验证&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但金融建模本身门槛很高。模型参数、市场假设、数据来源和定价逻辑都会影响结果。工具能降低操作成本，不能替代专业判断。&lt;/p&gt;
&lt;h2 id=&#34;节点工作流&#34;&gt;节点工作流
&lt;/h2&gt;&lt;p&gt;README 中还提到节点式工作流。&lt;/p&gt;
&lt;p&gt;节点工作流适合把复杂任务拆成可视化流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读取数据&lt;/li&gt;
&lt;li&gt;清洗数据&lt;/li&gt;
&lt;li&gt;运行模型&lt;/li&gt;
&lt;li&gt;生成图表&lt;/li&gt;
&lt;li&gt;触发 AI 分析&lt;/li&gt;
&lt;li&gt;输出报告&lt;/li&gt;
&lt;li&gt;发送通知&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对金融场景来说，这种方式有两个优点。&lt;/p&gt;
&lt;p&gt;第一，流程可视化。复杂分析不再只藏在一堆脚本里，用户可以看到数据如何流动。&lt;/p&gt;
&lt;p&gt;第二，适合自动化。重复研究流程可以被保存、复用和调整。&lt;/p&gt;
&lt;p&gt;如果后续能和 Python 脚本、数据连接器、Agent、报告系统结合，这类节点工作流会成为金融终端里很有价值的模块。&lt;/p&gt;
&lt;h2 id=&#34;交易与组合管理&#34;&gt;交易与组合管理
&lt;/h2&gt;&lt;p&gt;项目也提到交易和组合相关能力。&lt;/p&gt;
&lt;p&gt;这类功能最需要谨慎。&lt;/p&gt;
&lt;p&gt;组合管理可以帮助用户理解资产暴露、收益、回撤、波动、相关性和风险集中度。交易模块则可能涉及订单、账户、执行和记录。&lt;/p&gt;
&lt;p&gt;但只要触及真实交易，就必须考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据延迟&lt;/li&gt;
&lt;li&gt;订单执行风险&lt;/li&gt;
&lt;li&gt;API 权限&lt;/li&gt;
&lt;li&gt;交易成本&lt;/li&gt;
&lt;li&gt;滑点&lt;/li&gt;
&lt;li&gt;流动性&lt;/li&gt;
&lt;li&gt;风控限制&lt;/li&gt;
&lt;li&gt;审计和日志&lt;/li&gt;
&lt;li&gt;策略误触发&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;开发和研究环境里的交易功能，不应直接等同于生产级交易系统。真正接入实盘前，需要严格测试、权限隔离、风控机制和人工审核。&lt;/p&gt;
&lt;h2 id=&#34;和-bloomberg-terminal-有什么区别&#34;&gt;和 Bloomberg Terminal 有什么区别
&lt;/h2&gt;&lt;p&gt;很多金融终端项目都会被拿来和 Bloomberg Terminal 对比。&lt;/p&gt;
&lt;p&gt;但两者定位不同。&lt;/p&gt;
&lt;p&gt;Bloomberg Terminal 的价值不仅是软件界面，还包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据覆盖&lt;/li&gt;
&lt;li&gt;数据授权&lt;/li&gt;
&lt;li&gt;新闻网络&lt;/li&gt;
&lt;li&gt;交易生态&lt;/li&gt;
&lt;li&gt;客户支持&lt;/li&gt;
&lt;li&gt;金融机构工作流&lt;/li&gt;
&lt;li&gt;长期积累的行业信任&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;FinceptTerminal 更像一个开源金融终端框架和研究平台。它的优势在于可扩展、可定制、可本地化、可与 Python 和 AI 工作流结合。&lt;/p&gt;
&lt;p&gt;它不应该被简单理解成 Bloomberg 的免费替代品。&lt;/p&gt;
&lt;p&gt;更合理的看法是：如果你想研究金融终端怎么构建，或者想搭建自己的金融分析工作台，FinceptTerminal 提供了一个开源起点。&lt;/p&gt;
&lt;h2 id=&#34;授权和商业边界&#34;&gt;授权和商业边界
&lt;/h2&gt;&lt;p&gt;README 中提到项目使用 AGPL 和商业授权模式。&lt;/p&gt;
&lt;p&gt;AGPL 对网络服务和衍生作品有明确要求。如果你只是学习、研究或个人实验，问题通常不大。但如果准备把它改造成商业产品、内部平台或对外服务，就需要认真阅读许可证。&lt;/p&gt;
&lt;p&gt;特别是金融工具常常会进入企业内部系统。这个时候，开源协议、商业授权、数据授权、模型授权都要一起看，而不是只看代码能不能运行。&lt;/p&gt;
&lt;h2 id=&#34;适合什么人关注&#34;&gt;适合什么人关注
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 适合这些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究金融终端架构的开发者&lt;/li&gt;
&lt;li&gt;做量化研究或金融工程实验的人&lt;/li&gt;
&lt;li&gt;想把 Python 分析能力嵌入桌面工具的人&lt;/li&gt;
&lt;li&gt;想探索 AI Agent + 金融工作流的人&lt;/li&gt;
&lt;li&gt;想搭建内部金融分析平台的团队&lt;/li&gt;
&lt;li&gt;想学习 C++/Qt 金融应用开发的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想看几只股票的行情，普通行情软件可能更简单。&lt;/p&gt;
&lt;p&gt;如果你想理解一个金融终端如何把数据、图表、模型、Agent、交易和工作流整合起来，这个项目就更值得研究。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意&#34;&gt;使用时要注意
&lt;/h2&gt;&lt;p&gt;第一，先区分研究和交易。&lt;/p&gt;
&lt;p&gt;研究环境可以容忍实验和失败，交易环境不能。不要把研究工具未经验证就接入真实账户。&lt;/p&gt;
&lt;p&gt;第二，重视数据授权。&lt;/p&gt;
&lt;p&gt;金融数据不是随便抓来就能商用。不同数据源有不同授权条款，尤其是行情、新闻、财务和交易所数据。&lt;/p&gt;
&lt;p&gt;第三，不要迷信 AI Agent。&lt;/p&gt;
&lt;p&gt;AI 可以辅助整理信息，但金融结论必须回到数据、模型、风险和事实验证。&lt;/p&gt;
&lt;p&gt;第四，关注安全。&lt;/p&gt;
&lt;p&gt;如果工具连接账户、API key、交易接口或内部数据，必须处理好密钥管理、权限隔离、日志和网络边界。&lt;/p&gt;
&lt;p&gt;第五，理解开源协议。&lt;/p&gt;
&lt;p&gt;AGPL 对商业使用和服务化有重要影响。准备做产品化前，应该先处理授权问题。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Fincept-Corporation/FinceptTerminal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fincept-Corporation/FinceptTerminal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 值得关注的地方，是它把金融终端、Python 量化研究、AI Agents、数据连接器和节点工作流放进了同一个开源桌面平台设想里。&lt;/p&gt;
&lt;p&gt;它更适合作为金融技术研究和内部工具建设的起点，而不是被当成可以直接替代专业金融终端或实盘交易系统的成品。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>mattpocock/skills：给 AI 编程 Agent 准备的实用技能集合</title>
        <link>https://knightli.com/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</link>
        <pubDate>Fri, 01 May 2026 03:43:20 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</guid>
        <description>&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 是 Matt Pocock 公开的一组 AI 编程 agent skills。&lt;/p&gt;
&lt;p&gt;它不是一个完整的应用，也不是一个新的聊天客户端，而是一套可以给 AI 编程助手使用的工作技能。它的思路很实用：把 AI 编程里经常出现的问题拆成一个个小技能，让 Agent 在合适的任务里调用，而不是每次都靠一大段提示词硬撑。&lt;/p&gt;
&lt;p&gt;如果你经常使用 Claude Code、Codex、Cursor 或类似的 AI 编程工具，这类 skills 很值得关注。因为真正影响 AI 编程体验的，往往不是“模型会不会写代码”，而是它能不能按你的工作方式推进任务。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;AI 编程助手很强，但也很容易出问题。&lt;/p&gt;
&lt;p&gt;常见情况包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;还没理解需求就开始改代码&lt;/li&gt;
&lt;li&gt;一次性改太多文件&lt;/li&gt;
&lt;li&gt;输出解释很多，真正有用的行动很少&lt;/li&gt;
&lt;li&gt;遇到报错后盲目尝试&lt;/li&gt;
&lt;li&gt;没有及时运行测试或检查&lt;/li&gt;
&lt;li&gt;忽略项目里已有模式&lt;/li&gt;
&lt;li&gt;为了完成任务引入不必要的抽象&lt;/li&gt;
&lt;li&gt;写完代码后没有真正 review 风险&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题不一定是模型能力不够，而是工作流没有被约束好。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 的价值在于，把这些常见失败模式拆成可以复用的操作方式，让 Agent 在不同场景下更像一个有经验的工程协作者。&lt;/p&gt;
&lt;h2 id=&#34;skills-是什么&#34;&gt;Skills 是什么
&lt;/h2&gt;&lt;p&gt;在 AI Agent 语境里，skill 可以理解成一段可复用的任务说明、工作方法或专业流程。&lt;/p&gt;
&lt;p&gt;它不一定是代码插件，也不一定必须调用外部服务。很多时候，一个 skill 就是一套明确规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么时候使用&lt;/li&gt;
&lt;li&gt;先做什么&lt;/li&gt;
&lt;li&gt;不要做什么&lt;/li&gt;
&lt;li&gt;需要输出什么&lt;/li&gt;
&lt;li&gt;怎么判断任务完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和普通提示词模板有点像，但粒度更接近“任务能力”。&lt;/p&gt;
&lt;p&gt;普通提示词模板通常是用户每次临时复制粘贴；skills 则更适合作为 agent 工具箱的一部分，让 Agent 根据任务选择合适流程。&lt;/p&gt;
&lt;h2 id=&#34;为什么要小而可组合&#34;&gt;为什么要小而可组合
&lt;/h2&gt;&lt;p&gt;README 中强调这些 skills 是小而可组合的。&lt;/p&gt;
&lt;p&gt;这个方向很重要。&lt;/p&gt;
&lt;p&gt;如果一个 skill 试图包办所有事情，它很快就会变成新的大提示词：又长、又模糊、又难维护。小技能的优势是边界清楚。&lt;/p&gt;
&lt;p&gt;比如一个 skill 专门负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先做计划&lt;/li&gt;
&lt;li&gt;修复 TypeScript 错误&lt;/li&gt;
&lt;li&gt;运行测试并根据结果修复&lt;/li&gt;
&lt;li&gt;做代码 review&lt;/li&gt;
&lt;li&gt;总结项目约定&lt;/li&gt;
&lt;li&gt;改进提示词&lt;/li&gt;
&lt;li&gt;清理无用抽象&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些技能可以按任务组合使用。简单任务只用一个技能，复杂任务再串起来。&lt;/p&gt;
&lt;p&gt;这更接近真实工程工作：你不会用同一套流程处理所有问题，而是根据问题选择工具。&lt;/p&gt;
&lt;h2 id=&#34;保留工程师控制权&#34;&gt;保留工程师控制权
&lt;/h2&gt;&lt;p&gt;这个仓库的一个重要取向，是让工程师仍然掌握控制权。&lt;/p&gt;
&lt;p&gt;AI 编程很容易滑向两种极端：&lt;/p&gt;
&lt;p&gt;第一种是完全手动。AI 只是帮你写几行代码，所有上下文、计划、验证都靠你自己盯。&lt;/p&gt;
&lt;p&gt;第二种是完全放手。你把任务丢给 Agent，让它自己大改一通，最后再面对一堆难以审查的 diff。&lt;/p&gt;
&lt;p&gt;skills 的作用是在中间找一个更稳的位置。&lt;/p&gt;
&lt;p&gt;它让 AI 承担更多重复流程，但仍然用规则限制它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先理解任务再动手&lt;/li&gt;
&lt;li&gt;先阅读相关文件再改&lt;/li&gt;
&lt;li&gt;修改范围要可控&lt;/li&gt;
&lt;li&gt;出现不确定时要回报&lt;/li&gt;
&lt;li&gt;改完要验证&lt;/li&gt;
&lt;li&gt;不能为了炫技重构无关代码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是削弱 AI，而是让 AI 的行动更容易被人类审查和接管。&lt;/p&gt;
&lt;h2 id=&#34;对齐问题&#34;&gt;对齐问题
&lt;/h2&gt;&lt;p&gt;AI 编程失败的第一类问题通常是对齐失败。&lt;/p&gt;
&lt;p&gt;用户想要的是一个很具体的改动，但 Agent 可能理解成一个更大的重构；用户只想修 Bug，它却顺手改了样式；用户希望遵守现有架构，它却引入新模式。&lt;/p&gt;
&lt;p&gt;Skills 可以在任务开始阶段帮助 Agent 做几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重述目标&lt;/li&gt;
&lt;li&gt;找出影响范围&lt;/li&gt;
&lt;li&gt;识别已有实现模式&lt;/li&gt;
&lt;li&gt;给出计划&lt;/li&gt;
&lt;li&gt;明确不做哪些事情&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步很像工程师开工前的自检。&lt;/p&gt;
&lt;p&gt;如果 Agent 连任务边界都没说清楚，就直接写代码，后面很容易越走越偏。&lt;/p&gt;
&lt;h2 id=&#34;反馈循环问题&#34;&gt;反馈循环问题
&lt;/h2&gt;&lt;p&gt;AI 写代码不能只靠一次生成。&lt;/p&gt;
&lt;p&gt;真实开发里，反馈循环很重要：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;改一小步&lt;/li&gt;
&lt;li&gt;跑测试或类型检查&lt;/li&gt;
&lt;li&gt;看错误&lt;/li&gt;
&lt;li&gt;修正&lt;/li&gt;
&lt;li&gt;再验证&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;很多 Agent 失败，是因为它跳过了中间反馈。它一次性改很多内容，然后凭感觉总结“应该可以工作”。&lt;/p&gt;
&lt;p&gt;Skills 可以把反馈循环显式写进流程里。比如要求 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改后运行相关检查&lt;/li&gt;
&lt;li&gt;如果检查失败，先读错误信息&lt;/li&gt;
&lt;li&gt;不要盲目改无关文件&lt;/li&gt;
&lt;li&gt;每轮修复后重新验证&lt;/li&gt;
&lt;li&gt;最后报告验证结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会让 AI 编程更像真实调试，而不是一次性作文。&lt;/p&gt;
&lt;h2 id=&#34;架构控制问题&#34;&gt;架构控制问题
&lt;/h2&gt;&lt;p&gt;AI 很擅长生成抽象，也很擅长过度生成抽象。&lt;/p&gt;
&lt;p&gt;为了完成一个小需求，它可能新建服务层、工具函数、配置对象、类型包装、适配器，最后让代码比需求本身复杂得多。&lt;/p&gt;
&lt;p&gt;这类问题在大型项目里尤其危险。因为 AI 生成的抽象看起来很“专业”，但它可能不符合项目已有风格，也可能增加维护成本。&lt;/p&gt;
&lt;p&gt;好的 skills 会提醒 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;优先沿用现有模式&lt;/li&gt;
&lt;li&gt;不引入没有必要的新抽象&lt;/li&gt;
&lt;li&gt;不顺手重构无关区域&lt;/li&gt;
&lt;li&gt;修改要和任务规模匹配&lt;/li&gt;
&lt;li&gt;先理解代码再设计结构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这能减少“看起来很工程化，实际上更难维护”的输出。&lt;/p&gt;
&lt;h2 id=&#34;review-技能为什么重要&#34;&gt;Review 技能为什么重要
&lt;/h2&gt;&lt;p&gt;写代码和 review 代码是两种不同状态。&lt;/p&gt;
&lt;p&gt;Agent 在写代码时，通常会倾向于证明自己的实现成立。它会解释为什么这样改可以工作，但不一定主动找风险。&lt;/p&gt;
&lt;p&gt;Review skill 的意义，是让 Agent 切换角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找潜在 Bug&lt;/li&gt;
&lt;li&gt;找行为回归&lt;/li&gt;
&lt;li&gt;找遗漏测试&lt;/li&gt;
&lt;li&gt;找边界条件&lt;/li&gt;
&lt;li&gt;找复杂度上升&lt;/li&gt;
&lt;li&gt;找和现有约定不一致的地方&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这对 AI 编程很重要。因为 AI 生成代码的速度很快，如果没有 review，用户很容易被大量 diff 淹没。&lt;/p&gt;
&lt;p&gt;一个好的 review 输出应该优先列问题，而不是先夸实现。它要帮助工程师判断这次改动能不能合并。&lt;/p&gt;
&lt;h2 id=&#34;和普通-rules-文件有什么区别&#34;&gt;和普通 rules 文件有什么区别
&lt;/h2&gt;&lt;p&gt;很多 AI 编程工具都支持 rules、instructions 或 memory。&lt;/p&gt;
&lt;p&gt;这些文件通常记录长期规则，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目技术栈&lt;/li&gt;
&lt;li&gt;命名规范&lt;/li&gt;
&lt;li&gt;测试命令&lt;/li&gt;
&lt;li&gt;不要修改哪些目录&lt;/li&gt;
&lt;li&gt;回答风格偏好&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills 更偏任务流程。&lt;/p&gt;
&lt;p&gt;rules 告诉 Agent “长期应该怎么做”，skills 告诉 Agent “面对某类任务时应该怎么执行”。&lt;/p&gt;
&lt;p&gt;两者最好一起用。&lt;/p&gt;
&lt;p&gt;比如 rules 里写项目用 &lt;code&gt;pnpm test&lt;/code&gt;，review skill 里要求改完后检查测试覆盖。这样 Agent 不仅知道命令，也知道什么时候该用。&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 这类仓库适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频使用 AI 编程工具&lt;/li&gt;
&lt;li&gt;经常让 Agent 处理真实代码库&lt;/li&gt;
&lt;li&gt;想减少 AI 越界修改&lt;/li&gt;
&lt;li&gt;想让 Agent 更主动地验证结果&lt;/li&gt;
&lt;li&gt;想把自己的工程习惯沉淀成技能&lt;/li&gt;
&lt;li&gt;想学习别人如何设计 agent workflows&lt;/li&gt;
&lt;li&gt;想把一堆临时提示词整理成可维护的技能集合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔让 AI 写一个小函数，可能不需要专门维护 skills。&lt;/p&gt;
&lt;p&gt;但如果你已经把 AI 当成长期开发伙伴，skills 会逐渐变得重要。它们相当于给 Agent 配了一套可复用的工作方法。&lt;/p&gt;
&lt;h2 id=&#34;怎么借鉴这个仓库&#34;&gt;怎么借鉴这个仓库
&lt;/h2&gt;&lt;p&gt;即使你不直接使用其中的每个 skill，也可以从这个仓库学到几件事。&lt;/p&gt;
&lt;p&gt;第一，把失败模式写下来。&lt;/p&gt;
&lt;p&gt;不要只在 AI 出错时临时抱怨。把它经常出错的模式整理成规则，下一次让 skill 提前防住。&lt;/p&gt;
&lt;p&gt;第二，技能要短。&lt;/p&gt;
&lt;p&gt;一个 skill 最好解决一个明确问题。越短越容易被正确调用，也越容易维护。&lt;/p&gt;
&lt;p&gt;第三，输出格式要清楚。&lt;/p&gt;
&lt;p&gt;如果你希望 Agent 先列计划、再执行、最后总结验证结果，就把输出结构写清楚。模糊要求通常会得到模糊结果。&lt;/p&gt;
&lt;p&gt;第四，保留人工接管点。&lt;/p&gt;
&lt;p&gt;好的 skill 不应该让 AI 独自跑到很远。遇到不确定、影响范围扩大、测试失败或需要产品判断时，应该让它停下来说明情况。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意&#34;&gt;使用时要注意
&lt;/h2&gt;&lt;p&gt;第一，不要把所有事情都技能化。&lt;/p&gt;
&lt;p&gt;太多 skills 会让系统变复杂，Agent 也可能不知道该选哪个。先从最高频、最痛的几个场景开始。&lt;/p&gt;
&lt;p&gt;第二，skills 需要迭代。&lt;/p&gt;
&lt;p&gt;第一次写出来的 skill 不一定好。看 AI 实际执行效果，再逐步删减、补充和改写。&lt;/p&gt;
&lt;p&gt;第三，不要让 skill 替代工程判断。&lt;/p&gt;
&lt;p&gt;Skill 可以改善流程，但不能保证实现正确。测试、review、构建检查和人类判断仍然重要。&lt;/p&gt;
&lt;p&gt;第四，注意不同 Agent 的差异。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor、Copilot 对 instructions、skills、rules 的支持方式不同。同一套思想可以复用，但具体格式要按工具调整。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattpocock/skills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 值得关注的地方，不是里面某一个神奇提示词，而是它展示了一种更实用的 AI 编程思路：把工程经验拆成小技能，再让 Agent 按场景组合使用。&lt;/p&gt;
&lt;p&gt;当 AI 编程从偶尔辅助变成日常工作流，skills 会成为约束 Agent、保留工程师控制权和提升反馈质量的重要工具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>free-claude-code：用代理把 Claude Code 接到 OpenRouter、DeepSeek 和本地模型</title>
        <link>https://knightli.com/2026/05/01/free-claude-code-anthropic-compatible-proxy/</link>
        <pubDate>Fri, 01 May 2026 03:41:49 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/free-claude-code-anthropic-compatible-proxy/</guid>
        <description>&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 是一个给 &lt;code&gt;Claude Code&lt;/code&gt; 使用的 Anthropic-compatible proxy。&lt;/p&gt;
&lt;p&gt;它的思路不是破解 Claude Code，也不是提供官方免费的 Claude 服务，而是在本地启动一个兼容 Anthropic API 形状的代理服务，把 Claude Code 发出的请求转发到其他模型后端。README 中提到的后端包括 NVIDIA NIM、OpenRouter、DeepSeek、LM Studio、llama.cpp 和 Ollama。&lt;/p&gt;
&lt;p&gt;简单说，它想解决的是：你喜欢 Claude Code 的终端体验，但希望把模型请求接到别的 provider 或本地模型上。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;Claude Code 的交互体验很适合开发任务。&lt;/p&gt;
&lt;p&gt;它可以在终端里阅读代码、修改文件、执行命令、根据项目上下文推进任务。问题是，很多用户并不一定想始终使用同一个模型后端：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想试试 OpenRouter 上的不同模型&lt;/li&gt;
&lt;li&gt;想用 DeepSeek 这类模型降低成本&lt;/li&gt;
&lt;li&gt;想把请求接到本地 Ollama&lt;/li&gt;
&lt;li&gt;想用 LM Studio 或 llama.cpp 跑本地模型&lt;/li&gt;
&lt;li&gt;想在开发环境里统一走一个代理入口&lt;/li&gt;
&lt;li&gt;想比较不同模型在 Claude Code 工作流里的表现&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 的定位，就是在 Claude Code 和这些模型服务之间加一层兼容代理。&lt;/p&gt;
&lt;p&gt;这样 Claude Code 仍然按 Anthropic 风格发请求，代理负责把请求适配到不同后端。&lt;/p&gt;
&lt;h2 id=&#34;工作方式&#34;&gt;工作方式
&lt;/h2&gt;&lt;p&gt;可以把它理解成三层：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前端是 Claude Code&lt;/li&gt;
&lt;li&gt;中间是 &lt;code&gt;free-claude-code&lt;/code&gt; 代理&lt;/li&gt;
&lt;li&gt;后端是 OpenRouter、DeepSeek、本地模型或其他模型服务&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Claude Code 以为自己在访问一个 Anthropic-compatible API。&lt;/p&gt;
&lt;p&gt;代理收到请求后，根据配置选择目标 provider，转换必要字段，再把响应返回给 Claude Code。&lt;/p&gt;
&lt;p&gt;这类结构的好处是，你不用改 Claude Code 本身，也不用让每个模型服务都原生支持 Claude Code。只要代理能把接口对齐，就能把更多模型接进同一个工作流。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些后端&#34;&gt;支持哪些后端
&lt;/h2&gt;&lt;p&gt;README 中列出的方向包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA NIM&lt;/li&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;LM Studio&lt;/li&gt;
&lt;li&gt;llama.cpp&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些后端代表了几类不同使用方式。&lt;/p&gt;
&lt;p&gt;OpenRouter 更像模型聚合入口，可以测试不同商业和开源模型。&lt;/p&gt;
&lt;p&gt;DeepSeek 适合关注中文能力、代码能力和成本的人。&lt;/p&gt;
&lt;p&gt;LM Studio、llama.cpp、Ollama 则偏本地模型路线。它们适合在自己的机器或内网环境里运行模型，减少外部 API 依赖，也方便做离线实验。&lt;/p&gt;
&lt;p&gt;NVIDIA NIM 则更偏企业和 GPU 推理部署场景。&lt;/p&gt;
&lt;h2 id=&#34;为什么是-anthropic-compatible-proxy&#34;&gt;为什么是 Anthropic-compatible proxy
&lt;/h2&gt;&lt;p&gt;Claude Code 本来围绕 Anthropic 的接口和模型习惯设计。&lt;/p&gt;
&lt;p&gt;如果你想让它接入其他模型，最直接的问题就是接口不一致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;请求字段不同&lt;/li&gt;
&lt;li&gt;模型名称不同&lt;/li&gt;
&lt;li&gt;streaming 格式不同&lt;/li&gt;
&lt;li&gt;tool use 表达不同&lt;/li&gt;
&lt;li&gt;错误返回格式不同&lt;/li&gt;
&lt;li&gt;token 和上下文限制不同&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代理层的价值就在这里。&lt;/p&gt;
&lt;p&gt;它把 Claude Code 这边看到的接口维持在接近 Anthropic 的形状，再在后端做适配。对用户来说，配置一次代理后，就可以在相同 Claude Code 工作流里测试不同模型。&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想用 Claude Code 的终端工作流&lt;/li&gt;
&lt;li&gt;想测试非 Anthropic 模型在 Claude Code 里的表现&lt;/li&gt;
&lt;li&gt;想降低模型调用成本&lt;/li&gt;
&lt;li&gt;想把 Claude Code 接到 OpenRouter&lt;/li&gt;
&lt;li&gt;想接入 DeepSeek 等兼容模型服务&lt;/li&gt;
&lt;li&gt;想用 Ollama、LM Studio、llama.cpp 跑本地模型&lt;/li&gt;
&lt;li&gt;想为团队统一配置一个模型代理入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是正常使用官方 Claude Code，并且对模型提供方、成本和本地部署没有特殊需求，那不一定需要这类代理。&lt;/p&gt;
&lt;p&gt;但如果你经常比较模型，或者希望让 Claude Code 接入本地和第三方模型，这类工具会很有用。&lt;/p&gt;
&lt;h2 id=&#34;和直接用-openrouter-或-ollama-有什么区别&#34;&gt;和直接用 OpenRouter 或 Ollama 有什么区别
&lt;/h2&gt;&lt;p&gt;直接用 OpenRouter、Ollama 或 LM Studio，通常只是和模型聊天，或者通过 API 调用模型。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 的重点不是替代这些服务，而是把它们接到 Claude Code 这个开发工作流里。&lt;/p&gt;
&lt;p&gt;区别在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你仍然使用 Claude Code 的终端体验&lt;/li&gt;
&lt;li&gt;AI 可以围绕代码仓库执行任务&lt;/li&gt;
&lt;li&gt;模型后端可以换成其他 provider&lt;/li&gt;
&lt;li&gt;本地模型也有机会进入 Claude Code 工作流&lt;/li&gt;
&lt;li&gt;配置集中在代理层，而不是每个工具单独改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它更像桥接器，而不是新的聊天客户端。&lt;/p&gt;
&lt;h2 id=&#34;本地模型要注意什么&#34;&gt;本地模型要注意什么
&lt;/h2&gt;&lt;p&gt;把 Claude Code 接到本地模型很有吸引力，但也要注意现实限制。&lt;/p&gt;
&lt;p&gt;第一，模型能力差距。&lt;/p&gt;
&lt;p&gt;Claude Code 的任务通常不只是聊天，还包括理解代码、规划修改、编辑文件、处理命令输出。本地小模型不一定能稳定完成这些任务。&lt;/p&gt;
&lt;p&gt;第二，上下文窗口。&lt;/p&gt;
&lt;p&gt;代码任务很吃上下文。模型上下文太小，会导致它读不全文件、漏掉约束，或者在多轮任务里丢失背景。&lt;/p&gt;
&lt;p&gt;第三，tool use 兼容性。&lt;/p&gt;
&lt;p&gt;Claude Code 工作流依赖工具调用和结构化行为。后端模型即使能聊天，也未必擅长遵循工具调用协议。&lt;/p&gt;
&lt;p&gt;第四，速度和硬件。&lt;/p&gt;
&lt;p&gt;本地模型的速度取决于机器配置、量化方式和模型大小。代码任务如果响应太慢，体验会明显下降。&lt;/p&gt;
&lt;p&gt;所以，本地模型更适合实验、低风险任务和特定场景。真正复杂的代码任务，仍然要根据模型能力谨慎选择。&lt;/p&gt;
&lt;h2 id=&#34;使用边界&#34;&gt;使用边界
&lt;/h2&gt;&lt;p&gt;这类项目很容易被标题误解，所以边界要说清楚。&lt;/p&gt;
&lt;p&gt;第一，它不是官方 Claude Code 免费额度。&lt;/p&gt;
&lt;p&gt;它只是把 Claude Code 的请求转发到其他模型后端。你使用 OpenRouter、DeepSeek、NVIDIA NIM 或其他 API 时，仍然需要遵守对应服务的价格、额度和使用条款。&lt;/p&gt;
&lt;p&gt;第二，它不是绕过授权的工具。&lt;/p&gt;
&lt;p&gt;使用任何代理工具时，都应该遵守 Claude Code、模型服务商和项目本身的许可协议。不要把它理解成规避官方限制的方式。&lt;/p&gt;
&lt;p&gt;第三，代理会处理你的请求内容。&lt;/p&gt;
&lt;p&gt;代码、命令输出、项目上下文可能会经过代理和后端服务。部署时要考虑日志、密钥、网络和隐私边界。涉及公司代码或敏感项目时，最好使用受控环境。&lt;/p&gt;
&lt;p&gt;第四，不同模型表现差异会很大。&lt;/p&gt;
&lt;p&gt;同样的 Claude Code 操作，换一个模型后可能出现完全不同的行为。不要默认所有模型都能替代 Claude。&lt;/p&gt;
&lt;h2 id=&#34;和-litellm-这类代理有什么关系&#34;&gt;和 LiteLLM 这类代理有什么关系
&lt;/h2&gt;&lt;p&gt;从思路上看，&lt;code&gt;free-claude-code&lt;/code&gt; 属于“兼容接口代理”这一类工具。&lt;/p&gt;
&lt;p&gt;这类工具的共同目标是减少上层应用和底层模型服务之间的耦合。上层应用只需要面对一个相对统一的接口，底层 provider 可以按配置切换。&lt;/p&gt;
&lt;p&gt;不同项目的侧重点不同。有的更偏通用模型网关，有的更偏 OpenAI-compatible API，有的专门为 Claude Code 这类工具做适配。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 值得关注的地方，是它把目标场景直接放在 Claude Code 上，而不是做一个泛泛的聊天代理。&lt;/p&gt;
&lt;h2 id=&#34;适合怎样的用户&#34;&gt;适合怎样的用户
&lt;/h2&gt;&lt;p&gt;它更适合有一定折腾能力的用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;熟悉 Claude Code&lt;/li&gt;
&lt;li&gt;知道 API key 和模型 provider 怎么配置&lt;/li&gt;
&lt;li&gt;能理解代理服务的启动和环境变量&lt;/li&gt;
&lt;li&gt;能排查网络、端口、模型名称和 streaming 问题&lt;/li&gt;
&lt;li&gt;愿意比较不同模型在代码任务里的表现&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只想开箱即用，官方配置通常更省心。&lt;/p&gt;
&lt;p&gt;如果你愿意搭代理、换模型、调参数，并且想让 Claude Code 进入更多模型环境，这个项目就值得研究。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Alishahryar1/free-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alishahryar1/free-claude-code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 的价值，不在于“免费”这个词，而在于它把 Claude Code 和更多模型后端之间接了一座桥。&lt;/p&gt;
&lt;p&gt;当你想保留 Claude Code 的开发体验，同时测试 OpenRouter、DeepSeek、本地模型或企业推理服务时，这类 Anthropic-compatible proxy 就有了用武之地。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Compound Engineering Plugin：把 AI 编程变成计划、执行、评审的工程循环</title>
        <link>https://knightli.com/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</link>
        <pubDate>Fri, 01 May 2026 03:15:39 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</guid>
        <description>&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 是 Every Inc 开源的一个 AI 编程工作流插件。&lt;/p&gt;
&lt;p&gt;它关注的不是“让 AI 更快写一段代码”，而是把 AI 编程放进一个更像工程团队的循环里：先计划，再实现，再评审，再把经验沉淀下来。对经常使用 Claude Code、Codex、Cursor、Copilot 这类工具的人来说，这类插件解决的是工作流问题，而不只是提示词问题。&lt;/p&gt;
&lt;p&gt;AI 编程工具越来越强，但真实项目里最难的往往不是生成代码，而是让它持续按项目规则做事、理解任务边界、避免重复犯错，并在多轮迭代中积累上下文。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;很多人使用 AI 编程助手时，流程大概是这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;直接描述需求&lt;/li&gt;
&lt;li&gt;让 AI 改代码&lt;/li&gt;
&lt;li&gt;看结果是否能跑&lt;/li&gt;
&lt;li&gt;出错后继续补充说明&lt;/li&gt;
&lt;li&gt;下次新任务再从头解释一遍&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种方式能完成小任务，但在复杂项目里很容易遇到问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求没有先拆清楚，AI 直接开始改&lt;/li&gt;
&lt;li&gt;改完代码后缺少系统性 review&lt;/li&gt;
&lt;li&gt;项目规范靠用户反复提醒&lt;/li&gt;
&lt;li&gt;同类错误下次仍然出现&lt;/li&gt;
&lt;li&gt;多个 Agent 工具之间缺少统一工作方法&lt;/li&gt;
&lt;li&gt;经验没有沉淀成可复用规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 想解决的就是这类问题。它把 AI 编程拆成多个阶段，让 Agent 不只是执行命令，而是参与一个更完整的工程流程。&lt;/p&gt;
&lt;h2 id=&#34;什么是-compound-engineering&#34;&gt;什么是 Compound Engineering
&lt;/h2&gt;&lt;p&gt;从项目 README 的描述看，Compound Engineering 可以理解为一种 AI 辅助软件开发方法。&lt;/p&gt;
&lt;p&gt;它强调一个循环：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;计划：先理解目标、拆分任务、确认路径&lt;/li&gt;
&lt;li&gt;执行：按计划修改代码、运行命令、处理问题&lt;/li&gt;
&lt;li&gt;评审：检查实现质量、风险和测试覆盖&lt;/li&gt;
&lt;li&gt;学习：把经验沉淀成后续可复用的规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个循环很像真实工程团队的工作方式。&lt;/p&gt;
&lt;p&gt;一个靠谱的工程师不会拿到需求就立刻乱改，也不会改完就直接交差。他会先判断影响范围，再动手实现，之后检查风险和测试结果，最后把踩过的坑记录下来。AI Agent 也需要类似约束。&lt;/p&gt;
&lt;h2 id=&#34;为什么需要插件&#34;&gt;为什么需要插件
&lt;/h2&gt;&lt;p&gt;提示词可以告诉 AI “请先计划再执行”，但提示词本身不一定稳定。&lt;/p&gt;
&lt;p&gt;一旦会话变长、上下文变复杂，模型可能会跳过计划、忽略规则，或者为了完成任务而过度自信。插件的价值在于把流程固化下来，让不同 Agent 环境都能遵循类似方法。&lt;/p&gt;
&lt;p&gt;这类插件通常会把工作流拆成命令、规则、模板或子流程。用户不需要每次手写完整提示词，而是通过固定入口触发某个阶段。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先让 Agent 生成计划&lt;/li&gt;
&lt;li&gt;再按计划逐步实现&lt;/li&gt;
&lt;li&gt;改完后触发 review&lt;/li&gt;
&lt;li&gt;发现问题后返回修正&lt;/li&gt;
&lt;li&gt;把值得保留的经验写入记忆或规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会让 AI 编程更像“受控协作”，而不是一次性聊天。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些-agent-环境&#34;&gt;支持哪些 Agent 环境
&lt;/h2&gt;&lt;p&gt;README 中提到，项目支持多个 AI 编程环境，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Amp&lt;/li&gt;
&lt;li&gt;Factory&lt;/li&gt;
&lt;li&gt;Qwen Code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这点值得注意。&lt;/p&gt;
&lt;p&gt;很多工作流工具只绑定一个客户端，换工具后规则就不能复用。&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 更像一套跨 Agent 的工程方法，把类似的计划、执行、评审流程带到不同工具里。&lt;/p&gt;
&lt;p&gt;如果你同时使用多个 AI 编程助手，这类统一工作流会更有价值。不同工具能力不同，但项目规范、评审习惯和任务拆解方法应该尽量一致。&lt;/p&gt;
&lt;h2 id=&#34;计划阶段有什么用&#34;&gt;计划阶段有什么用
&lt;/h2&gt;&lt;p&gt;计划阶段的价值，是防止 AI 过早动手。&lt;/p&gt;
&lt;p&gt;复杂任务里，真正重要的问题通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要改哪些文件&lt;/li&gt;
&lt;li&gt;哪些模块可能受影响&lt;/li&gt;
&lt;li&gt;现有模式是什么&lt;/li&gt;
&lt;li&gt;有没有测试&lt;/li&gt;
&lt;li&gt;风险点在哪里&lt;/li&gt;
&lt;li&gt;是否需要先阅读文档&lt;/li&gt;
&lt;li&gt;能不能拆成更小步骤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Agent 没有先想清楚这些问题，就直接开始写代码，很容易做出看似完成、实际偏离项目结构的实现。&lt;/p&gt;
&lt;p&gt;计划并不一定要很长。好的计划应该短、具体、可执行。它的目的不是制造文档，而是让后续实现有边界。&lt;/p&gt;
&lt;h2 id=&#34;执行阶段要避免什么&#34;&gt;执行阶段要避免什么
&lt;/h2&gt;&lt;p&gt;AI 执行代码任务时，最容易出现几类问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顺手重构无关代码&lt;/li&gt;
&lt;li&gt;覆盖用户已有修改&lt;/li&gt;
&lt;li&gt;只改 happy path&lt;/li&gt;
&lt;li&gt;忽略错误处理&lt;/li&gt;
&lt;li&gt;不按项目已有风格写&lt;/li&gt;
&lt;li&gt;没有运行必要验证&lt;/li&gt;
&lt;li&gt;遇到报错后盲目尝试&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工作流插件无法保证这些问题完全消失，但可以通过规则和阶段约束减少发生概率。&lt;/p&gt;
&lt;p&gt;比如，执行阶段可以要求 Agent 按计划逐步推进；遇到超出计划范围的发现时，先说明风险；修改共享模块时，补充测试或至少运行相关验证。&lt;/p&gt;
&lt;p&gt;这种约束对大型代码库尤其重要。AI 写代码越快，越需要流程来限制它的惯性。&lt;/p&gt;
&lt;h2 id=&#34;评审阶段为什么重要&#34;&gt;评审阶段为什么重要
&lt;/h2&gt;&lt;p&gt;很多 AI 编程失败，不是因为代码完全不能运行，而是因为细节有问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;边界条件没处理&lt;/li&gt;
&lt;li&gt;状态更新不一致&lt;/li&gt;
&lt;li&gt;API 合约被悄悄改了&lt;/li&gt;
&lt;li&gt;测试覆盖不到关键路径&lt;/li&gt;
&lt;li&gt;错误提示不清楚&lt;/li&gt;
&lt;li&gt;性能或安全风险没有被提到&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;评审阶段就是把 Agent 从“作者模式”切换到“审查模式”。&lt;/p&gt;
&lt;p&gt;作者模式容易为自己的实现找理由；审查模式则要主动找漏洞、回归风险和遗漏测试。把这两个阶段分开，会比让同一个回复里同时完成实现和自我审查更可靠。&lt;/p&gt;
&lt;p&gt;对用户来说，评审输出也更有价值。它能帮助你快速判断这次修改是否值得合并，还是需要继续返工。&lt;/p&gt;
&lt;h2 id=&#34;学习和记忆的意义&#34;&gt;学习和记忆的意义
&lt;/h2&gt;&lt;p&gt;项目名字里的 “Compound” 暗示了一个重要想法：工程经验应该复利增长。&lt;/p&gt;
&lt;p&gt;如果 AI 每次犯错后只是当场修好，下次又犯同样错误，效率提升就很有限。更好的方式是把有价值的经验沉淀下来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个项目的目录约定&lt;/li&gt;
&lt;li&gt;某类错误的排查方法&lt;/li&gt;
&lt;li&gt;测试命令和注意事项&lt;/li&gt;
&lt;li&gt;不要触碰的生成文件&lt;/li&gt;
&lt;li&gt;代码风格偏好&lt;/li&gt;
&lt;li&gt;常见实现模式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些经验可以变成规则、记忆、文档或模板。后续任务中，Agent 先读取这些沉淀，再开始工作。&lt;/p&gt;
&lt;p&gt;这就是 AI 编程从“单次问答”走向“长期协作”的关键。&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长期使用 AI Agent 写代码&lt;/li&gt;
&lt;li&gt;一个项目会被多次、多轮修改&lt;/li&gt;
&lt;li&gt;希望 AI 先计划再实现&lt;/li&gt;
&lt;li&gt;希望改完后自动进入 review 思维&lt;/li&gt;
&lt;li&gt;团队想统一 AI 编程流程&lt;/li&gt;
&lt;li&gt;同时使用 Claude Code、Codex、Cursor 等多个工具&lt;/li&gt;
&lt;li&gt;希望把项目经验沉淀成可复用规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶尔让 AI 写一个小脚本，完整流程可能显得偏重。&lt;/p&gt;
&lt;p&gt;但如果你正在把 AI 编程助手当成日常开发伙伴，计划、执行、评审、学习这套循环就会明显有用。&lt;/p&gt;
&lt;h2 id=&#34;和普通提示词模板有什么区别&#34;&gt;和普通提示词模板有什么区别
&lt;/h2&gt;&lt;p&gt;普通提示词模板通常解决的是“怎么说清楚任务”。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;请一步步思考&lt;/li&gt;
&lt;li&gt;请先阅读文件&lt;/li&gt;
&lt;li&gt;请保持代码风格一致&lt;/li&gt;
&lt;li&gt;请运行测试&lt;/li&gt;
&lt;li&gt;请总结修改内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些提示当然有用，但它们还是依赖用户每次正确使用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 更偏工作流层。它把这些要求组织成可重复的过程，并适配不同 Agent 工具。这样你不是每次从零写提示词，而是在一套流程里推进任务。&lt;/p&gt;
&lt;p&gt;简单说，提示词模板像提醒，工作流插件像制度。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意&#34;&gt;使用时要注意
&lt;/h2&gt;&lt;p&gt;第一，不要把流程变成负担。&lt;/p&gt;
&lt;p&gt;小任务不一定需要完整计划和长篇评审。好的工作流应该能根据任务复杂度调整，简单问题快速处理，复杂问题再走完整循环。&lt;/p&gt;
&lt;p&gt;第二，评审不能替代测试。&lt;/p&gt;
&lt;p&gt;Agent review 能发现很多问题，但它仍然可能漏掉真实运行时错误。最终判断还要看测试、类型检查、构建结果和人工审查。&lt;/p&gt;
&lt;p&gt;第三，规则要持续清理。&lt;/p&gt;
&lt;p&gt;沉淀经验很重要，但规则越积越多也会变成噪声。过时规则、重复规则、只适合某次任务的临时经验，都应该定期整理。&lt;/p&gt;
&lt;p&gt;第四，跨工具一致不等于完全相同。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor、Copilot 等工具能力和交互方式不同。统一的是工作方法，不一定是每个命令、每个配置细节都完全一样。&lt;/p&gt;
&lt;h2 id=&#34;适合怎样的团队&#34;&gt;适合怎样的团队
&lt;/h2&gt;&lt;p&gt;如果一个团队已经允许 AI Agent 修改真实代码，那么只讨论“哪个模型更强”是不够的。&lt;/p&gt;
&lt;p&gt;更应该关心：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 修改前是否理解任务&lt;/li&gt;
&lt;li&gt;AI 修改中是否遵守项目边界&lt;/li&gt;
&lt;li&gt;AI 修改后是否主动审查风险&lt;/li&gt;
&lt;li&gt;AI 是否能从历史错误中学习&lt;/li&gt;
&lt;li&gt;团队是否有统一的 Agent 使用规范&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 这类项目的意义就在这里。它把 AI 编程从个人技巧，往团队可复用流程推进了一步。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EveryInc/compound-engineering-plugin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 值得关注的地方，不是多一个 AI 编程命令，而是把 AI 编程组织成可循环改进的工程流程。&lt;/p&gt;
&lt;p&gt;当 AI Agent 开始参与真实项目，计划、执行、评审和经验沉淀会比单次生成代码更重要。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>TradingAgents-CN：面向中文用户的多智能体金融交易研究框架</title>
        <link>https://knightli.com/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/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/</guid>
        <description>&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 是一个面向中文用户的多智能体金融交易研究框架。&lt;/p&gt;
&lt;p&gt;它的目标不是给出“买哪只股票”的简单答案，而是用多个 AI Agent 模拟一个更完整的金融分析团队：有人看基本面，有人看技术面，有人关注新闻和情绪，也有人负责风险和最终决策。对想研究 LLM + Agent + 金融分析的人来说，这类项目很适合作为实验入口。&lt;/p&gt;
&lt;p&gt;需要先说清楚：这类工具适合学习、研究和辅助分析，不应该被当成实盘交易建议。金融市场有风险，模型输出也可能出错、滞后或过度自信。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;普通聊天模型当然也能分析股票。&lt;/p&gt;
&lt;p&gt;你可以直接问：“帮我分析某某公司能不能买。”模型会给出一段看起来完整的回答。但这种方式有几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析链路不透明&lt;/li&gt;
&lt;li&gt;不同维度容易混在一起&lt;/li&gt;
&lt;li&gt;缺少角色分工&lt;/li&gt;
&lt;li&gt;缺少正反观点碰撞&lt;/li&gt;
&lt;li&gt;风险提示可能流于形式&lt;/li&gt;
&lt;li&gt;很难复现同一套分析流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 的思路是把金融分析拆成多个角色，让不同 Agent 负责不同角度，再通过协作、讨论和汇总形成分析结果。&lt;/p&gt;
&lt;p&gt;这更接近真实投研流程。一个投资判断通常不会只看一条新闻或一个技术指标，而是要结合公司基本面、市场环境、价格走势、资金情绪、政策风险和仓位控制。&lt;/p&gt;
&lt;h2 id=&#34;多智能体分析是什么意思&#34;&gt;多智能体分析是什么意思
&lt;/h2&gt;&lt;p&gt;多智能体不是简单地让多个模型轮流说话。&lt;/p&gt;
&lt;p&gt;更有价值的做法，是给不同 Agent 分配清晰职责。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;市场分析 Agent：关注行情走势、价格变化和市场环境&lt;/li&gt;
&lt;li&gt;基本面分析 Agent：关注公司业务、财务数据和长期价值&lt;/li&gt;
&lt;li&gt;新闻分析 Agent：关注公告、新闻、舆情和事件影响&lt;/li&gt;
&lt;li&gt;技术分析 Agent：关注趋势、指标、支撑阻力和交易信号&lt;/li&gt;
&lt;li&gt;风险管理 Agent：关注波动、回撤、仓位和不确定性&lt;/li&gt;
&lt;li&gt;决策 Agent：综合不同意见，形成最终判断&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样的结构可以减少单个模型“一口气说完所有结论”的问题。&lt;/p&gt;
&lt;p&gt;当不同角色围绕同一个标的展开分析时，系统更容易呈现出多维度判断，也更容易暴露分歧。对学习者来说，这比只看一段总结更有启发。&lt;/p&gt;
&lt;h2 id=&#34;为什么需要中文版本&#34;&gt;为什么需要中文版本
&lt;/h2&gt;&lt;p&gt;金融分析和语言环境关系很深。&lt;/p&gt;
&lt;p&gt;中文用户关注的资料来源、市场习惯、股票名称、交易制度、新闻表达和常见术语，都和英文环境不同。直接使用英文框架，经常会遇到几类问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文股票名称和代码处理不顺&lt;/li&gt;
&lt;li&gt;A 股、港股、美股语境混杂&lt;/li&gt;
&lt;li&gt;中文财经新闻理解不稳定&lt;/li&gt;
&lt;li&gt;国内数据源接入不方便&lt;/li&gt;
&lt;li&gt;输出风格不符合中文用户阅读习惯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 的意义在于把这套多智能体金融分析流程面向中文用户做了适配。它让中文使用者更容易搭建、运行和理解整个交易分析实验流程。&lt;/p&gt;
&lt;h2 id=&#34;可以用来做什么&#34;&gt;可以用来做什么
&lt;/h2&gt;&lt;p&gt;这个项目更适合做研究和辅助分析，而不是自动下单。&lt;/p&gt;
&lt;p&gt;比较合适的用途包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习多智能体系统如何协作&lt;/li&gt;
&lt;li&gt;研究 LLM 在金融分析中的表现&lt;/li&gt;
&lt;li&gt;对股票进行多角度信息整理&lt;/li&gt;
&lt;li&gt;比较不同模型在投研任务中的差异&lt;/li&gt;
&lt;li&gt;搭建自己的金融分析 Agent 原型&lt;/li&gt;
&lt;li&gt;复盘某个标的的历史信息和风险点&lt;/li&gt;
&lt;li&gt;练习把投研流程拆成可执行任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你正在学习量化交易、金融工程、AI Agent 或 LLM 应用开发，这类项目可以帮助你理解“AI 投研助手”背后的工程结构。&lt;/p&gt;
&lt;h2 id=&#34;不适合做什么&#34;&gt;不适合做什么
&lt;/h2&gt;&lt;p&gt;它不适合被直接当成稳赚工具。&lt;/p&gt;
&lt;p&gt;尤其不适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接根据输出满仓买卖&lt;/li&gt;
&lt;li&gt;用模型结论替代自己的风险判断&lt;/li&gt;
&lt;li&gt;把短期价格预测当成确定结果&lt;/li&gt;
&lt;li&gt;忽略交易成本、滑点和流动性&lt;/li&gt;
&lt;li&gt;不做回测就接入真实账户&lt;/li&gt;
&lt;li&gt;用单次分析结论替代长期投资策略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LLM 擅长整理信息、生成解释、模拟推理流程，但它并不天然拥有稳定预测市场的能力。金融市场里，信息噪声、突发事件和行为博弈都很强，模型输出只能作为参考材料之一。&lt;/p&gt;
&lt;h2 id=&#34;和普通量化框架有什么区别&#34;&gt;和普通量化框架有什么区别
&lt;/h2&gt;&lt;p&gt;传统量化框架更关注数据、因子、回测、组合优化和交易执行。&lt;/p&gt;
&lt;p&gt;比如你会定义策略规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;均线突破&lt;/li&gt;
&lt;li&gt;动量因子&lt;/li&gt;
&lt;li&gt;价值因子&lt;/li&gt;
&lt;li&gt;波动率过滤&lt;/li&gt;
&lt;li&gt;止损止盈&lt;/li&gt;
&lt;li&gt;仓位管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后用历史数据回测策略表现。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 更偏向“智能体分析框架”。它关注的是如何让多个 LLM Agent 围绕金融任务协作，如何模拟投研讨论，如何把新闻、基本面、技术面和风险判断组织起来。&lt;/p&gt;
&lt;p&gt;两者不是替代关系。&lt;/p&gt;
&lt;p&gt;更现实的用法是：传统量化系统负责可验证的规则和回测，Agent 系统负责信息整理、报告生成、观点对比和辅助决策。最终能不能进入真实交易，还要经过严谨回测、风控和人工审核。&lt;/p&gt;
&lt;h2 id=&#34;和直接问-chatgpt-有什么区别&#34;&gt;和直接问 ChatGPT 有什么区别
&lt;/h2&gt;&lt;p&gt;直接问模型的门槛最低，但流程很松散。&lt;/p&gt;
&lt;p&gt;你问一次，它答一次。换个问法，结论可能就变了。你很难保证它每次都从同样的维度分析，也很难让它稳定扮演多个互相制衡的角色。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 的价值是把分析流程结构化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;角色更明确&lt;/li&gt;
&lt;li&gt;步骤更可复现&lt;/li&gt;
&lt;li&gt;信息来源更容易组织&lt;/li&gt;
&lt;li&gt;观点碰撞更自然&lt;/li&gt;
&lt;li&gt;风险检查更容易单独处理&lt;/li&gt;
&lt;li&gt;输出更像一份投研流程结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这对学习和研究很有用。你可以观察不同 Agent 如何影响最终结论，也可以替换模型、调整提示词、修改角色分工，比较结果变化。&lt;/p&gt;
&lt;h2 id=&#34;使用时要关注哪些风险&#34;&gt;使用时要关注哪些风险
&lt;/h2&gt;&lt;p&gt;第一，数据质量。&lt;/p&gt;
&lt;p&gt;金融分析非常依赖数据。如果行情、财报、新闻或公告数据不完整、不及时，Agent 分析再流畅也可能建立在错误基础上。&lt;/p&gt;
&lt;p&gt;第二，模型幻觉。&lt;/p&gt;
&lt;p&gt;LLM 可能编造不存在的事实、误解数据含义，或者把旧信息当成新信息。涉及具体股票时，必须回到数据源核对。&lt;/p&gt;
&lt;p&gt;第三，过度解释。&lt;/p&gt;
&lt;p&gt;模型很擅长给出“看起来合理”的解释，但市场价格变化未必真的来自它列出的原因。不要把事后解释误当成因果证明。&lt;/p&gt;
&lt;p&gt;第四，回测和实盘差距。&lt;/p&gt;
&lt;p&gt;即便某个策略在历史数据中表现不错，真实交易中仍然会遇到滑点、手续费、流动性、停牌、涨跌停、极端行情等问题。&lt;/p&gt;
&lt;p&gt;第五，许可证和商用边界。&lt;/p&gt;
&lt;p&gt;README 中提到项目采用混合许可证。个人学习研究和商业使用的条件可能不同。如果准备把它放进商业产品或服务，需要先仔细阅读项目许可证说明。&lt;/p&gt;
&lt;h2 id=&#34;适合怎样的人研究&#34;&gt;适合怎样的人研究
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 适合这些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想学习 AI Agent 架构的开发者&lt;/li&gt;
&lt;li&gt;想研究 LLM 金融分析能力的人&lt;/li&gt;
&lt;li&gt;做量化交易但想加入自然语言分析的人&lt;/li&gt;
&lt;li&gt;想搭建投研辅助工具的团队&lt;/li&gt;
&lt;li&gt;想了解多角色协作如何影响决策的人&lt;/li&gt;
&lt;li&gt;希望用中文环境实验交易 Agent 的用户&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目标只是获得一个简单的买卖建议，这个项目反而不是最合适的打开方式。它更值得关注的是流程、角色、协作和风险控制，而不是某一次输出的结论。&lt;/p&gt;
&lt;h2 id=&#34;可以怎么扩展&#34;&gt;可以怎么扩展
&lt;/h2&gt;&lt;p&gt;这类框架后续有很多可扩展方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接入更多可靠数据源&lt;/li&gt;
&lt;li&gt;增加本地模型支持&lt;/li&gt;
&lt;li&gt;加入回测模块&lt;/li&gt;
&lt;li&gt;细化 A 股、港股、美股不同市场规则&lt;/li&gt;
&lt;li&gt;增加行业分析 Agent&lt;/li&gt;
&lt;li&gt;增加组合管理和仓位控制&lt;/li&gt;
&lt;li&gt;加强报告引用和数据溯源&lt;/li&gt;
&lt;li&gt;把 Agent 结论和传统量化信号结合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正有价值的金融 AI 系统，通常不是让模型单独决定一切，而是让它嵌入一个可验证、可追踪、可风控的流程里。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hsliuping/TradingAgents-CN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hsliuping/TradingAgents-CN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 值得关注的地方，不是它能不能预测下一根 K 线，而是它把金融分析拆成了一个多智能体协作流程。&lt;/p&gt;
&lt;p&gt;把它当作学习和研究工具，会比把它当作自动赚钱机器更合理。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>qmd：给 AI Agent 使用的本地 Markdown 文档搜索工具</title>
        <link>https://knightli.com/2026/05/01/qmd-markdown-search-for-ai-agents/</link>
        <pubDate>Fri, 01 May 2026 03:12:57 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/qmd-markdown-search-for-ai-agents/</guid>
        <description>&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 是一个面向本地 Markdown 文档的搜索工具，重点服务对象是 AI Agent。&lt;/p&gt;
&lt;p&gt;它解决的问题很具体：当你的项目里有大量 &lt;code&gt;.md&lt;/code&gt; 文档时，AI 编程助手经常不知道该读哪一份、该引用哪一段、哪些说明才是最新的。靠全文 grep 可以找到关键词，但很难理解语义；直接把整套文档塞进上下文，又浪费窗口，还容易混入无关内容。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 的思路是先为 Markdown 文档建立索引，再通过搜索接口把最相关的片段交给 AI 使用。它既可以作为命令行工具使用，也可以通过 SDK 集成，还可以作为 MCP Server 接入支持 MCP 的客户端。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;真实项目里的文档通常不是一两篇 README。&lt;/p&gt;
&lt;p&gt;你可能会有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;架构说明&lt;/li&gt;
&lt;li&gt;API 文档&lt;/li&gt;
&lt;li&gt;开发规范&lt;/li&gt;
&lt;li&gt;部署流程&lt;/li&gt;
&lt;li&gt;设计决策记录&lt;/li&gt;
&lt;li&gt;故障排查笔记&lt;/li&gt;
&lt;li&gt;需求文档&lt;/li&gt;
&lt;li&gt;AI 使用说明&lt;/li&gt;
&lt;li&gt;各种工具链备忘录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人类查文档时可以顺着目录慢慢看，但 AI Agent 更需要一个明确的检索入口。否则它可能会：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读错文档&lt;/li&gt;
&lt;li&gt;漏掉关键约束&lt;/li&gt;
&lt;li&gt;使用过时说明&lt;/li&gt;
&lt;li&gt;把不相关内容塞进上下文&lt;/li&gt;
&lt;li&gt;在回答里凭经验补全不存在的规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 的价值就在这里：它把本地 Markdown 文档变成可检索的知识源，让 AI 在需要上下文时先搜索，再基于匹配片段回答或执行任务。&lt;/p&gt;
&lt;h2 id=&#34;搜索方式有什么特点&#34;&gt;搜索方式有什么特点
&lt;/h2&gt;&lt;p&gt;README 中提到，&lt;code&gt;qmd&lt;/code&gt; 使用了多种检索方式组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BM25 关键词搜索&lt;/li&gt;
&lt;li&gt;向量搜索&lt;/li&gt;
&lt;li&gt;LLM reranking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BM25 适合处理明确关键词。比如你搜索某个函数名、配置项、错误码、文件名，它通常很直接。&lt;/p&gt;
&lt;p&gt;向量搜索更适合语义问题。比如你问“这个项目怎么处理权限校验”，文档里未必正好写了“权限校验”四个字，但可能有相关的认证、访问控制、角色判断说明。&lt;/p&gt;
&lt;p&gt;LLM reranking 则用于重新排序候选结果。前两步先把可能相关的内容找出来，再让模型判断哪些片段更符合当前问题。&lt;/p&gt;
&lt;p&gt;这种组合比单纯关键词搜索更适合 AI Agent。因为 Agent 的问题往往不是固定关键词，而是任务意图。&lt;/p&gt;
&lt;h2 id=&#34;为什么是-markdown&#34;&gt;为什么是 Markdown
&lt;/h2&gt;&lt;p&gt;Markdown 是开发项目里最常见的文档格式。&lt;/p&gt;
&lt;p&gt;它足够简单，可以放进 Git；也足够结构化，有标题、列表、代码块、链接和表格。对 AI 来说，Markdown 也比 PDF、网页快照或截图更容易解析。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 专注 Markdown，意味着它可以围绕开发文档做更直接的处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按标题和段落切分内容&lt;/li&gt;
&lt;li&gt;保留代码块&lt;/li&gt;
&lt;li&gt;保留文档路径&lt;/li&gt;
&lt;li&gt;返回适合引用的片段&lt;/li&gt;
&lt;li&gt;让 Agent 知道答案来自哪份文档&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比让 AI 随机扫描仓库更稳，也比把所有文档一次性塞进 prompt 更省上下文。&lt;/p&gt;
&lt;h2 id=&#34;三种使用入口&#34;&gt;三种使用入口
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 提供 CLI、SDK 和 MCP Server 三种入口。&lt;/p&gt;
&lt;h3 id=&#34;1-cli&#34;&gt;1. CLI
&lt;/h3&gt;&lt;p&gt;CLI 适合直接在终端里使用，也适合放进脚本。&lt;/p&gt;
&lt;p&gt;你可以把文档目录索引起来，然后用命令搜索相关内容。对开发者来说，CLI 是最容易验证效果的入口：先看它能不能搜到正确文档，再考虑接入更复杂的工作流。&lt;/p&gt;
&lt;p&gt;这类工具放在本地项目里很有用。比如你可以在改代码前先搜索设计文档，在排错前先查故障笔记，在写接口时先查 API 约定。&lt;/p&gt;
&lt;h3 id=&#34;2-sdk&#34;&gt;2. SDK
&lt;/h3&gt;&lt;p&gt;SDK 适合把 &lt;code&gt;qmd&lt;/code&gt; 接入自己的工具。&lt;/p&gt;
&lt;p&gt;如果你正在做内部开发助手、文档问答系统、代码审查机器人或项目知识库，可以通过 SDK 调用搜索能力，而不是让用户直接敲命令。&lt;/p&gt;
&lt;p&gt;SDK 的好处是可以更自由地控制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;搜索目录&lt;/li&gt;
&lt;li&gt;查询内容&lt;/li&gt;
&lt;li&gt;返回数量&lt;/li&gt;
&lt;li&gt;结果格式&lt;/li&gt;
&lt;li&gt;后续是否交给模型总结&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这适合需要深度集成的场景。&lt;/p&gt;
&lt;h3 id=&#34;3-mcp-server&#34;&gt;3. MCP Server
&lt;/h3&gt;&lt;p&gt;MCP 是 &lt;code&gt;qmd&lt;/code&gt; 对 AI Agent 最有价值的入口。&lt;/p&gt;
&lt;p&gt;通过 MCP Server，支持 MCP 的客户端可以把 &lt;code&gt;qmd&lt;/code&gt; 当作一个文档搜索工具来调用。这样 Agent 在执行任务时，不必猜项目规则，而是可以先检索本地 Markdown 文档。&lt;/p&gt;
&lt;p&gt;典型流程可以是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户要求 AI 修改某个功能&lt;/li&gt;
&lt;li&gt;AI 先调用 &lt;code&gt;qmd&lt;/code&gt; 搜索相关设计文档&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qmd&lt;/code&gt; 返回最相关的 Markdown 片段&lt;/li&gt;
&lt;li&gt;AI 基于文档约束再修改代码&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这比“开新会话时手动把所有规则贴进去”更自然，也更适合长期项目。&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目里有大量 Markdown 文档&lt;/li&gt;
&lt;li&gt;AI Agent 经常需要查项目规则&lt;/li&gt;
&lt;li&gt;团队希望 AI 回答时引用本地文档&lt;/li&gt;
&lt;li&gt;文档分散在多个目录里&lt;/li&gt;
&lt;li&gt;需要在 CLI、SDK、MCP 之间复用同一套检索能力&lt;/li&gt;
&lt;li&gt;想减少 AI 编程助手凭空猜测项目约定&lt;/li&gt;
&lt;li&gt;想把本地知识库接入 Claude Desktop、Claude Code 或其他 MCP 客户端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的项目只有一份很短的 README，直接让 AI 读取文件就够了。&lt;/p&gt;
&lt;p&gt;但如果文档已经增长到几十篇、几百篇，或者你希望 Agent 每次先查文档再行动，这类索引工具就有意义。&lt;/p&gt;
&lt;h2 id=&#34;和-grep-有什么区别&#34;&gt;和 grep 有什么区别
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;rg&lt;/code&gt; 这类工具非常适合精确搜索。&lt;/p&gt;
&lt;p&gt;比如你知道要找 &lt;code&gt;DATABASE_URL&lt;/code&gt;、&lt;code&gt;authMiddleware&lt;/code&gt;、&lt;code&gt;404&lt;/code&gt;、&lt;code&gt;docker compose&lt;/code&gt;，直接搜关键词通常最快。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 更适合你不知道精确词的情况。&lt;/p&gt;
&lt;p&gt;例如你想问：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个项目的发布流程是什么&lt;/li&gt;
&lt;li&gt;新增 API 时要遵守哪些规范&lt;/li&gt;
&lt;li&gt;之前有没有记录过缓存策略&lt;/li&gt;
&lt;li&gt;AI 修改代码前应该读哪些文档&lt;/li&gt;
&lt;li&gt;某个模块的设计背景在哪里&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题往往需要语义检索，而不是只匹配一个词。&lt;code&gt;qmd&lt;/code&gt; 的 BM25 + 向量 + reranking 组合，就是为了让这类问题更容易找到正确上下文。&lt;/p&gt;
&lt;h2 id=&#34;和-rag-有什么关系&#34;&gt;和 RAG 有什么关系
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 可以看作一个面向 Markdown 文档的轻量 RAG 组件。&lt;/p&gt;
&lt;p&gt;它不试图替你完成整套问答系统，而是专注在“把相关文档片段找出来”这一步。至于后续怎么使用这些片段，可以交给 CLI、SDK、MCP 客户端或你自己的 Agent 流程。&lt;/p&gt;
&lt;p&gt;这种定位比较实用。很多项目并不需要一个庞大的知识库系统，只需要让 AI 在本地文档里查得准一点、快一点，并且能把结果带回当前任务。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意&#34;&gt;使用时要注意
&lt;/h2&gt;&lt;p&gt;第一，文档质量仍然重要。&lt;/p&gt;
&lt;p&gt;检索工具只能帮你找到已有内容。如果文档本身过时、重复、互相矛盾，AI 仍然可能拿到错误上下文。把 &lt;code&gt;qmd&lt;/code&gt; 接入 Agent 之前，最好先清理关键文档。&lt;/p&gt;
&lt;p&gt;第二，索引范围不要过宽。&lt;/p&gt;
&lt;p&gt;把整个仓库所有 Markdown 都塞进去不一定更好。比如依赖包文档、临时记录、旧方案草稿可能会污染结果。更好的做法是明确哪些目录是可信文档源。&lt;/p&gt;
&lt;p&gt;第三，搜索结果需要保留来源。&lt;/p&gt;
&lt;p&gt;AI 使用文档片段时，最好知道它来自哪份文件、哪个章节。这样人类复核时才能追溯，也能减少“看起来像文档结论，其实只是模型总结”的问题。&lt;/p&gt;
&lt;p&gt;第四，不要完全替代人工判断。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 能提高上下文召回质量，但它不是项目真理源的替代品。重要变更仍然要看当前代码、测试结果和最新需求。&lt;/p&gt;
&lt;h2 id=&#34;适合怎样的团队&#34;&gt;适合怎样的团队
&lt;/h2&gt;&lt;p&gt;如果你的团队已经开始把 AI Agent 放进日常开发流程，&lt;code&gt;qmd&lt;/code&gt; 这类工具会很有价值。&lt;/p&gt;
&lt;p&gt;尤其是下面几种团队：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文档写得比较多&lt;/li&gt;
&lt;li&gt;项目历史比较长&lt;/li&gt;
&lt;li&gt;新人和 AI 都需要快速理解背景&lt;/li&gt;
&lt;li&gt;经常维护架构决策记录&lt;/li&gt;
&lt;li&gt;有大量 Markdown 规范文档&lt;/li&gt;
&lt;li&gt;希望 AI 修改代码前先查规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的目标不是让 AI “全知全能”，而是让 AI 少猜一点，多查一点。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tobi/qmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tobi/qmd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 的价值，是把本地 Markdown 文档变成 AI Agent 能稳定调用的搜索入口。&lt;/p&gt;
&lt;p&gt;当项目文档从“给人看的说明”变成“给人和 AI 都能检索的上下文源”，AI 编程助手才更容易按项目规则做事。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code Hooks Mastery：13 个 Hooks 生命周期与自动化控制入门</title>
        <link>https://knightli.com/2026/05/01/claude-code-hooks-mastery-guide/</link>
        <pubDate>Fri, 01 May 2026 03:11:27 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/claude-code-hooks-mastery-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; 是一个围绕 &lt;code&gt;Claude Code Hooks&lt;/code&gt; 的学习项目。&lt;/p&gt;
&lt;p&gt;它不是只给几个零散脚本，而是把 Claude Code 的 hooks 生命周期、配置方式、脚本写法和常见自动化场景放在一起讲清楚。对于想让 Claude Code 更可控、更像工程化助手的人来说，这类资料很值得看。&lt;/p&gt;
&lt;p&gt;Claude Code 默认已经能读代码、改文件、跑命令。但如果你想让它在特定时机自动检查权限、拦截危险操作、注入项目规范、运行测试、提醒团队规则，单靠聊天指令就不够稳定。Hooks 的价值就在这里：把“每次都要提醒 AI 的规则”变成可执行的流程。&lt;/p&gt;
&lt;h2 id=&#34;hooks-解决什么问题&#34;&gt;Hooks 解决什么问题
&lt;/h2&gt;&lt;p&gt;使用 Claude Code 一段时间后，常见痛点大概有这些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次新会话都要重复告诉它项目规则&lt;/li&gt;
&lt;li&gt;担心它执行不该执行的命令&lt;/li&gt;
&lt;li&gt;希望文件修改前后自动做检查&lt;/li&gt;
&lt;li&gt;想在提交前自动跑格式化、测试或安全扫描&lt;/li&gt;
&lt;li&gt;想把团队规范写成固定流程，而不是靠口头提醒&lt;/li&gt;
&lt;li&gt;想在工具调用前后拿到上下文，做记录或拦截&lt;/li&gt;
&lt;li&gt;希望复杂任务可以触发子代理或专门脚本处理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hooks 就是为这些“固定时机的自动动作”准备的。&lt;/p&gt;
&lt;p&gt;你可以把它理解成 Claude Code 工作流里的事件钩子：当会话开始、用户提交提示词、模型准备调用工具、工具调用完成、代理即将结束等节点发生时，Claude Code 可以执行你配置的脚本。&lt;/p&gt;
&lt;h2 id=&#34;13-个-hooks-生命周期&#34;&gt;13 个 Hooks 生命周期
&lt;/h2&gt;&lt;p&gt;项目 README 的重点之一，是系统整理了 Claude Code 的 13 个 hook 事件。&lt;/p&gt;
&lt;p&gt;这些事件覆盖了从会话开始到工具调用、从用户输入到代理结束的多个节点。按用途可以粗略分成几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会话启动相关：用于初始化环境、注入项目上下文&lt;/li&gt;
&lt;li&gt;用户输入相关：用于检查提示词、补充规则、做审计&lt;/li&gt;
&lt;li&gt;工具调用前相关：用于权限判断、命令拦截、安全检查&lt;/li&gt;
&lt;li&gt;工具调用后相关：用于记录结果、触发格式化、运行验证&lt;/li&gt;
&lt;li&gt;任务结束相关：用于总结、清理、通知或保存状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种生命周期设计让你不必把所有规则都写进一个超长提示词里。&lt;/p&gt;
&lt;p&gt;比如，权限控制应该发生在工具调用前；格式化检查更适合发生在文件修改后；项目规范注入适合发生在会话开始或用户输入后。把规则放到正确的 hook 节点，通常比把所有内容塞进 system prompt 更可靠。&lt;/p&gt;
&lt;h2 id=&#34;配置文件在哪里&#34;&gt;配置文件在哪里
&lt;/h2&gt;&lt;p&gt;Claude Code 的 hooks 通常通过设置文件配置。&lt;/p&gt;
&lt;p&gt;常见位置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户级配置：&lt;code&gt;~/.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;项目级配置：&lt;code&gt;.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用户级配置适合放个人偏好，比如通用安全规则、命令拦截、日志路径。&lt;/p&gt;
&lt;p&gt;项目级配置适合放仓库相关规则，比如这个项目必须跑什么测试、哪些目录不能改、生成文件怎么处理、提交前要做哪些检查。&lt;/p&gt;
&lt;p&gt;如果你在团队里使用 Claude Code，更推荐把项目级配置放进仓库。这样每个人打开项目时，拿到的是同一套 AI 协作约束，而不是各自凭记忆提醒。&lt;/p&gt;
&lt;h2 id=&#34;单文件脚本为什么重要&#34;&gt;单文件脚本为什么重要
&lt;/h2&gt;&lt;p&gt;项目里强调了 &lt;code&gt;UV&lt;/code&gt; 单文件脚本的写法。&lt;/p&gt;
&lt;p&gt;这类脚本的好处是部署简单。一个 Python 文件就可以声明依赖并运行，不必为了一个 hook 单独维护复杂环境。对 hooks 来说，这很合适，因为很多 hook 只是做一件小事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查命令是否允许执行&lt;/li&gt;
&lt;li&gt;判断文件路径是否安全&lt;/li&gt;
&lt;li&gt;读取项目规范并返回给 Claude&lt;/li&gt;
&lt;li&gt;扫描输出中是否包含敏感信息&lt;/li&gt;
&lt;li&gt;在修改后运行格式化或测试&lt;/li&gt;
&lt;li&gt;把事件写入日志&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hook 脚本越小，越容易维护，也越不容易变成新的复杂系统。&lt;/p&gt;
&lt;h2 id=&#34;可以做哪些自动化&#34;&gt;可以做哪些自动化
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; 展示的方向比较多，实际工作中最常见的是下面几类。&lt;/p&gt;
&lt;h3 id=&#34;1-权限和安全控制&#34;&gt;1. 权限和安全控制
&lt;/h3&gt;&lt;p&gt;这是 hooks 最直接的用途。&lt;/p&gt;
&lt;p&gt;比如在 Claude Code 准备执行命令之前，先检查命令内容。如果命令包含删除、重置、清空、覆盖等高风险动作，就阻止执行或要求人工确认。&lt;/p&gt;
&lt;p&gt;类似规则还可以用于文件路径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不允许修改生产配置&lt;/li&gt;
&lt;li&gt;不允许写入密钥文件&lt;/li&gt;
&lt;li&gt;不允许删除迁移脚本&lt;/li&gt;
&lt;li&gt;不允许触碰指定目录&lt;/li&gt;
&lt;li&gt;不允许执行未批准的网络命令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类保护放在工具调用前，比写一句“不要做危险操作”更可靠。&lt;/p&gt;
&lt;h3 id=&#34;2-上下文注入&#34;&gt;2. 上下文注入
&lt;/h3&gt;&lt;p&gt;很多项目都有固定背景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技术栈&lt;/li&gt;
&lt;li&gt;编码规范&lt;/li&gt;
&lt;li&gt;测试命令&lt;/li&gt;
&lt;li&gt;分支策略&lt;/li&gt;
&lt;li&gt;目录结构&lt;/li&gt;
&lt;li&gt;禁止事项&lt;/li&gt;
&lt;li&gt;生成文件处理规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些内容每次手动告诉 Claude Code 很麻烦，也容易漏。Hooks 可以在会话开始或用户提交提示词后，把必要上下文自动注入进去。&lt;/p&gt;
&lt;p&gt;这相当于给 Claude Code 配一个项目级的工作说明书。它不会替代 README 或开发文档，但能让 AI 在执行任务前更快进入正确状态。&lt;/p&gt;
&lt;h3 id=&#34;3-修改后的验证&#34;&gt;3. 修改后的验证
&lt;/h3&gt;&lt;p&gt;当 Claude Code 修改文件后，可以通过 hook 自动触发检查。&lt;/p&gt;
&lt;p&gt;常见动作包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;运行格式化&lt;/li&gt;
&lt;li&gt;运行 lint&lt;/li&gt;
&lt;li&gt;运行单元测试&lt;/li&gt;
&lt;li&gt;检查类型错误&lt;/li&gt;
&lt;li&gt;扫描生成文件&lt;/li&gt;
&lt;li&gt;校验 Markdown 或 JSON 格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这对减少低级错误很有帮助。尤其是 AI 改动多个文件时，修改后自动跑一轮轻量验证，可以更早发现问题。&lt;/p&gt;
&lt;p&gt;不过也要注意，hook 里不适合默认塞太重的任务。每次文件改动都跑完整测试套件，可能会让体验变得很慢。更实用的做法是按文件类型、目录和任务风险选择检查范围。&lt;/p&gt;
&lt;h3 id=&#34;4-团队规则验证&#34;&gt;4. 团队规则验证
&lt;/h3&gt;&lt;p&gt;如果团队已经有明确约定，可以把一部分约定放进 hooks。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提交信息格式&lt;/li&gt;
&lt;li&gt;代码风格规则&lt;/li&gt;
&lt;li&gt;禁止直接修改某些生成文件&lt;/li&gt;
&lt;li&gt;文档必须同步更新&lt;/li&gt;
&lt;li&gt;API 变更必须改测试&lt;/li&gt;
&lt;li&gt;某些目录只能用指定工具生成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会让 Claude Code 更像团队流程的一部分，而不是一个不受约束的外部助手。&lt;/p&gt;
&lt;p&gt;当然，hooks 不应该替代 CI。它更适合做本地快速提醒和前置拦截，真正的最终验证仍然应该交给 CI、review 和测试系统。&lt;/p&gt;
&lt;h3 id=&#34;5-子代理和专门任务&#34;&gt;5. 子代理和专门任务
&lt;/h3&gt;&lt;p&gt;README 里还提到子代理相关内容。&lt;/p&gt;
&lt;p&gt;这类用法适合把复杂任务拆给更专门的流程处理。比如主会话负责理解需求，hook 或配置触发专门的检查、审计、总结、文档整理任务。&lt;/p&gt;
&lt;p&gt;对个人用户来说，最先值得做的不是复杂代理编排，而是把重复、明确、低风险的动作交给 hooks。等规则稳定后，再考虑更复杂的自动化。&lt;/p&gt;
&lt;h2 id=&#34;statusline-和输出样式&#34;&gt;Statusline 和输出样式
&lt;/h2&gt;&lt;p&gt;项目还覆盖了状态栏和输出样式。&lt;/p&gt;
&lt;p&gt;这部分看起来像体验细节，但对长期使用 Claude Code 很有意义。状态栏可以展示当前上下文、任务状态、环境信息或提示信息；输出样式则可以让 Claude Code 的回答更符合你的工作习惯。&lt;/p&gt;
&lt;p&gt;如果你每天都在同一个终端里和 AI 协作，这些细节会影响效率。好的状态提示能减少误操作，也能让你更快判断当前会话是否处在正确项目、正确分支、正确环境里。&lt;/p&gt;
&lt;h2 id=&#34;不要把-hooks-写得过重&#34;&gt;不要把 hooks 写得过重
&lt;/h2&gt;&lt;p&gt;Hooks 很强，但不适合什么都往里面塞。&lt;/p&gt;
&lt;p&gt;比较好的规则是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频动作要快&lt;/li&gt;
&lt;li&gt;安全拦截要明确&lt;/li&gt;
&lt;li&gt;输出要短&lt;/li&gt;
&lt;li&gt;失败原因要可读&lt;/li&gt;
&lt;li&gt;脚本尽量单一职责&lt;/li&gt;
&lt;li&gt;重型检查交给显式命令或 CI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一个 hook 每次都执行十几秒，用户很快就会想关掉它。如果一个 hook 拦截规则含糊不清，Claude Code 和用户都会难以理解下一步该怎么做。&lt;/p&gt;
&lt;p&gt;Hooks 最适合处理那些边界清楚的事情：允许或拒绝、补充上下文、记录日志、运行轻量检查、提示下一步。&lt;/p&gt;
&lt;h2 id=&#34;适合怎样的使用者&#34;&gt;适合怎样的使用者
&lt;/h2&gt;&lt;p&gt;如果你只是偶尔让 Claude Code 改一小段代码，可能暂时不需要深入 hooks。&lt;/p&gt;
&lt;p&gt;但如果你符合下面几种情况，就很适合研究这个项目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频使用 Claude Code&lt;/li&gt;
&lt;li&gt;经常让 AI 修改真实项目代码&lt;/li&gt;
&lt;li&gt;担心 AI 执行危险命令&lt;/li&gt;
&lt;li&gt;想把团队规范自动注入 AI 工作流&lt;/li&gt;
&lt;li&gt;希望修改后自动跑检查&lt;/li&gt;
&lt;li&gt;想把重复提醒变成配置&lt;/li&gt;
&lt;li&gt;正在搭建更稳定的 AI 编程流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其是多人协作项目，hooks 的意义会更明显。它可以把一部分团队经验沉淀成脚本，而不是靠每个人临时提醒 AI。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意&#34;&gt;使用时要注意
&lt;/h2&gt;&lt;p&gt;第一，先从安全类 hook 开始。&lt;/p&gt;
&lt;p&gt;相比复杂自动化，命令拦截、路径保护、敏感文件检查更容易落地，也更能立刻降低风险。&lt;/p&gt;
&lt;p&gt;第二，项目级规则要谨慎提交。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.claude/settings.json&lt;/code&gt; 会影响所有使用这个仓库的人。把规则提交前，最好确认它不会过度限制正常开发，也不会依赖只有你本机才存在的路径。&lt;/p&gt;
&lt;p&gt;第三，hook 输出要简洁。&lt;/p&gt;
&lt;p&gt;Claude Code 会消费这些输出。输出太长，会污染上下文；输出太模糊，又起不到指导作用。最好只返回必要判断和下一步建议。&lt;/p&gt;
&lt;p&gt;第四，保持可调试。&lt;/p&gt;
&lt;p&gt;Hooks 一旦变多，问题可能出在配置、脚本、权限、路径、依赖或 Claude Code 本身。给脚本留下清晰日志，会让后续排查轻松很多。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/disler/claude-code-hooks-mastery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;disler/claude-code-hooks-mastery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Code Hooks&lt;/code&gt; 的价值，是把“希望 AI 每次都记住的规矩”变成真正会执行的流程。&lt;/p&gt;
&lt;p&gt;如果你已经开始把 Claude Code 用在真实项目里，hooks 会是从“会聊天的编程助手”走向“可约束的工程协作者”的关键一步。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Prompt Optimizer：开源提示词优化、测试与 MCP 工具</title>
        <link>https://knightli.com/2026/05/01/prompt-optimizer-prompt-engineering-tool/</link>
        <pubDate>Fri, 01 May 2026 03:09:07 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/prompt-optimizer-prompt-engineering-tool/</guid>
        <description>&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 是一个开源的提示词优化工具，目标很直接：帮助你把一段粗糙的提示词改得更清晰、更稳定，也更容易被大语言模型执行。&lt;/p&gt;
&lt;p&gt;它不只是一个“帮我润色 prompt”的页面。项目同时提供提示词优化、结果测试、对比评估、多模型接入、图像生成提示词处理，以及 MCP 集成。对经常写系统提示词、用户提示词、AI 工作流模板的人来说，它更像一个专门用来打磨提示词的工作台。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;很多人使用 AI 时都会遇到类似问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提示词越写越长，但模型输出没有明显变好&lt;/li&gt;
&lt;li&gt;同一个需求换个模型就表现不稳定&lt;/li&gt;
&lt;li&gt;系统提示词和用户提示词混在一起，很难拆开调试&lt;/li&gt;
&lt;li&gt;改了一版 prompt，不知道是不是真的比上一版更好&lt;/li&gt;
&lt;li&gt;想复用变量模板，但每次都要手动替换和测试&lt;/li&gt;
&lt;li&gt;想把提示词优化能力接入其他 AI 工具，却缺少标准接口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 主要围绕这些问题设计。它把“写 prompt”拆成优化、测试、评估、对比、迭代几个环节，让提示词不再只靠感觉调整。&lt;/p&gt;
&lt;h2 id=&#34;主要功能&#34;&gt;主要功能
&lt;/h2&gt;&lt;h3 id=&#34;1-优化系统提示词和用户提示词&#34;&gt;1. 优化系统提示词和用户提示词
&lt;/h3&gt;&lt;p&gt;提示词并不只有一种。&lt;/p&gt;
&lt;p&gt;系统提示词通常负责定义角色、目标、边界、输出规范和工作方法；用户提示词则更接近一次具体任务的输入。两者混在一起时，模型容易抓不住重点，后续复用也困难。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 支持系统提示词优化和用户提示词优化。你可以分别处理长期复用的角色设定，也可以处理某次具体任务的输入表达。&lt;/p&gt;
&lt;p&gt;这对下面几类场景比较有用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写 AI 编程助手的工作规则&lt;/li&gt;
&lt;li&gt;写客服、审稿、翻译、分析类角色提示词&lt;/li&gt;
&lt;li&gt;优化文生图提示词&lt;/li&gt;
&lt;li&gt;把临时需求整理成可复用模板&lt;/li&gt;
&lt;li&gt;为不同模型准备不同风格的 prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-测试和对比输出&#34;&gt;2. 测试和对比输出
&lt;/h3&gt;&lt;p&gt;只优化提示词还不够，关键是要知道优化后有没有变好。&lt;/p&gt;
&lt;p&gt;项目支持分析、单结果评估、多结果对比评估。也就是说，你可以把原始提示词和优化后的提示词放到同一个任务里跑，看模型输出是否更准确、更稳定、更符合目标。&lt;/p&gt;
&lt;p&gt;这比单纯“看起来更专业”的 prompt 更实用。因为很多提示词表面上写得完整，实际输出却可能更啰嗦、更僵硬，甚至把模型引向错误方向。对比测试能帮助你尽早发现这种问题。&lt;/p&gt;
&lt;h3 id=&#34;3-支持多模型&#34;&gt;3. 支持多模型
&lt;/h3&gt;&lt;p&gt;README 中提到项目支持 OpenAI、Gemini、DeepSeek、智谱 AI、SiliconFlow 等模型服务，也支持自定义 OpenAI 兼容接口。&lt;/p&gt;
&lt;p&gt;这点很重要。提示词效果和模型强相关，同一段 prompt 在不同模型上的表现可能差别很大。多模型测试可以帮助你判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是提示词本身写得不好&lt;/li&gt;
&lt;li&gt;还是某个模型不适合这个任务&lt;/li&gt;
&lt;li&gt;是否需要为不同模型准备不同版本&lt;/li&gt;
&lt;li&gt;小模型能否通过更清晰的提示词接近可用效果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你在本地使用 Ollama，或者公司内部有兼容 OpenAI 接口的模型服务，也可以通过自定义接口接入。&lt;/p&gt;
&lt;h3 id=&#34;4-高级测试模式&#34;&gt;4. 高级测试模式
&lt;/h3&gt;&lt;p&gt;项目提供上下文变量管理、多轮会话测试和 Function Calling 支持。&lt;/p&gt;
&lt;p&gt;变量管理适合模板化任务。比如你有一套闲置交易回复、商品描述、邮件回复、代码审查或文档生成提示词，只需要替换商品、价格、语气、目标用户等变量，就能快速测试不同输入下的表现。&lt;/p&gt;
&lt;p&gt;多轮会话测试适合验证长期对话能力。很多 prompt 在单轮问答里看起来不错，一旦进入多轮追问，就会忘记约束、偏离角色或重复解释。多轮测试可以更接近真实使用场景。&lt;/p&gt;
&lt;p&gt;Function Calling 支持则适合更工程化的 AI 应用。它能帮助你验证模型在工具调用、参数生成和结构化输出上的表现。&lt;/p&gt;
&lt;h3 id=&#34;5-图像生成提示词&#34;&gt;5. 图像生成提示词
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 也支持文生图和图生图相关能力，README 中提到集成 Gemini、Seedream 等图像模型。&lt;/p&gt;
&lt;p&gt;文生图提示词的优化重点和文本任务不同。它更关注主体、构图、空间关系、风格、材质、光线、情绪和限制条件。把一句很模糊的想法拆成更可控的视觉描述，通常比单纯加长提示词更有价值。&lt;/p&gt;
&lt;p&gt;如果你经常需要生成产品图、封面、插画、主视觉或风格参考图，这类优化会比较实用。&lt;/p&gt;
&lt;h2 id=&#34;使用方式&#34;&gt;使用方式
&lt;/h2&gt;&lt;p&gt;项目提供多种入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在线版本&lt;/li&gt;
&lt;li&gt;Vercel 自部署&lt;/li&gt;
&lt;li&gt;桌面应用&lt;/li&gt;
&lt;li&gt;Chrome 插件&lt;/li&gt;
&lt;li&gt;Docker 部署&lt;/li&gt;
&lt;li&gt;Docker Compose 部署&lt;/li&gt;
&lt;li&gt;MCP Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在线版本适合快速体验。项目说明中提到它是纯前端应用，数据存储在浏览器本地，并直接与 AI 服务商交互。&lt;/p&gt;
&lt;p&gt;桌面应用适合需要直接连接各种模型 API 的用户。浏览器环境容易遇到跨域限制，桌面应用可以绕过这类问题，尤其适合连接本地 Ollama 或一些跨域策略严格的商业 API。&lt;/p&gt;
&lt;p&gt;Docker 部署适合放在自己的服务器或内网环境里使用。README 给出的基础命令如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 8081:80 --restart unless-stopped --name prompt-optimizer linshen/prompt-optimizer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要配置 API 密钥和访问密码，可以通过环境变量传入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 8081:80 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;VITE_OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_key &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;ACCESS_USERNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_username &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;ACCESS_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_password &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --restart unless-stopped &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name prompt-optimizer &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  linshen/prompt-optimizer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;国内访问 Docker Hub 较慢时，项目也提供了阿里云镜像地址，可按 README 中的说明替换镜像名。&lt;/p&gt;
&lt;h2 id=&#34;mcp-能做什么&#34;&gt;MCP 能做什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 支持 Model Context Protocol，也就是 MCP。&lt;/p&gt;
&lt;p&gt;通过 Docker 运行时，MCP 服务可以和 Web 应用一起启动，并通过 &lt;code&gt;/mcp&lt;/code&gt; 路径访问。这样它就不只是一个网页工具，而是可以被 Claude Desktop 等支持 MCP 的应用调用。&lt;/p&gt;
&lt;p&gt;README 中列出的 MCP 工具包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;optimize-user-prompt&lt;/code&gt;：优化用户提示词&lt;/li&gt;
&lt;li&gt;&lt;code&gt;optimize-system-prompt&lt;/code&gt;：优化系统提示词&lt;/li&gt;
&lt;li&gt;&lt;code&gt;iterate-prompt&lt;/code&gt;：对已有提示词做定向迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类接口很适合放进 AI 工作流里。比如你在写复杂任务提示词时，可以让支持 MCP 的客户端直接调用提示词优化能力，而不必每次打开网页手动复制。&lt;/p&gt;
&lt;h2 id=&#34;和普通聊天工具有什么区别&#34;&gt;和普通聊天工具有什么区别
&lt;/h2&gt;&lt;p&gt;普通聊天工具当然也能帮你改 prompt，但它通常缺少几个环节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不方便保存和对比多个版本&lt;/li&gt;
&lt;li&gt;不方便同时测试多个模型&lt;/li&gt;
&lt;li&gt;不方便把变量模板化&lt;/li&gt;
&lt;li&gt;不方便做多轮会话验证&lt;/li&gt;
&lt;li&gt;不方便接入 MCP 或部署到自己的环境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 的价值在于把提示词优化做成一个可重复的流程。它不只是给你一版“看起来更完整”的文本，而是让你围绕实际输出持续调整。&lt;/p&gt;
&lt;h2 id=&#34;适合谁使用&#34;&gt;适合谁使用
&lt;/h2&gt;&lt;p&gt;如果你符合下面几种情况，可以重点关注这个项目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常写系统提示词&lt;/li&gt;
&lt;li&gt;经常为 AI 应用设计角色和输出格式&lt;/li&gt;
&lt;li&gt;需要比较不同模型的输出效果&lt;/li&gt;
&lt;li&gt;想把 prompt 做成可复用模板&lt;/li&gt;
&lt;li&gt;需要测试多轮对话或工具调用&lt;/li&gt;
&lt;li&gt;想把提示词优化能力接入 MCP 工作流&lt;/li&gt;
&lt;li&gt;希望在本地或内网部署提示词工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔问 AI 一个简单问题，用普通聊天页面就够了。这个工具更适合那些把提示词当成可维护资产的人。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，不要把优化结果当成绝对正确。&lt;/p&gt;
&lt;p&gt;提示词优化工具可以提高表达质量，但不能保证模型一定不会误解。重要任务仍然需要测试样例、人工检查和版本对比。&lt;/p&gt;
&lt;p&gt;第二，不要只追求更长。&lt;/p&gt;
&lt;p&gt;好的 prompt 不一定更长。它应该更清晰地表达目标、边界、输入输出格式和判断标准。无意义的规则堆叠反而会让模型抓不住重点。&lt;/p&gt;
&lt;p&gt;第三，要按模型调 prompt。&lt;/p&gt;
&lt;p&gt;不同模型对角色设定、格式约束、推理步骤和示例的敏感度不同。一个在大模型上表现很好的提示词，不一定适合小模型。多模型测试正是这个工具值得使用的原因之一。&lt;/p&gt;
&lt;p&gt;第四，部署时要考虑密钥和访问控制。&lt;/p&gt;
&lt;p&gt;如果你把它部署到公网，应该配置访问密码，并谨慎处理 API key。项目支持通过环境变量配置访问控制，不要把敏感配置直接写到公开仓库里。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linshenkx/prompt-optimizer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linshenkx/prompt-optimizer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 适合用来把提示词从“临时手写的一段话”整理成“可以测试、可以比较、可以迭代的工作资产”。&lt;/p&gt;
&lt;p&gt;当你开始在多个模型、多个场景、多个版本之间维护 prompt 时，这类工具会比普通聊天窗口更顺手。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude-Mem：给 Claude Code 加上跨会话长期记忆</title>
        <link>https://knightli.com/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/2026/05/01/claude-mem-persistent-memory-for-claude-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 是一个给 &lt;code&gt;Claude Code&lt;/code&gt; 使用的持久化记忆系统。&lt;/p&gt;
&lt;p&gt;它想解决的问题很具体：AI 编程助手每次开新会话时，往往会忘记之前讨论过的架构决策、踩过的坑、项目偏好和实现背景。&lt;br&gt;
如果一个项目做得久，每次都重新解释上下文，非常浪费时间。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的思路是：把 Claude Code 的会话内容压缩成记忆，存进本地数据库和向量库，之后再通过搜索工具找回来。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;Claude Code 很适合处理代码任务，但会话上下文毕竟有限。&lt;/p&gt;
&lt;p&gt;常见痛点包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新会话不知道旧会话做过什么&lt;/li&gt;
&lt;li&gt;项目里的设计决策需要反复解释&lt;/li&gt;
&lt;li&gt;曾经排查过的问题容易重复踩&lt;/li&gt;
&lt;li&gt;长期任务缺少连续记忆&lt;/li&gt;
&lt;li&gt;多次对话之间很难沉淀项目知识&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 就是围绕这些问题设计的。&lt;/p&gt;
&lt;p&gt;它不是简单保存聊天记录，而是把会话压缩成更容易检索的记忆片段。这样后续需要时，可以通过语义搜索把相关上下文找回来。&lt;/p&gt;
&lt;h2 id=&#34;工作方式&#34;&gt;工作方式
&lt;/h2&gt;&lt;p&gt;从 README 的设计看，&lt;code&gt;Claude-Mem&lt;/code&gt; 主要由几部分组成。&lt;/p&gt;
&lt;p&gt;第一部分是 hooks。&lt;/p&gt;
&lt;p&gt;它会接入 Claude Code 的会话流程，在合适的时机捕获会话数据。&lt;/p&gt;
&lt;p&gt;第二部分是后台 worker。&lt;/p&gt;
&lt;p&gt;worker 负责把原始会话内容处理成更短、更可检索的记忆。&lt;/p&gt;
&lt;p&gt;第三部分是本地存储。&lt;/p&gt;
&lt;p&gt;项目使用 &lt;code&gt;SQLite&lt;/code&gt; 保存结构化元数据，用 &lt;code&gt;Chroma&lt;/code&gt; 保存向量索引。这样既能保留会话记录的基本信息，也能支持语义检索。&lt;/p&gt;
&lt;p&gt;第四部分是 &lt;code&gt;mem-search&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这是给 Claude Code 使用的查询入口。需要找回旧上下文时，可以通过它搜索相关记忆。&lt;/p&gt;
&lt;p&gt;整体流程可以理解为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 会话产生内容&lt;/li&gt;
&lt;li&gt;hooks 捕获会话数据&lt;/li&gt;
&lt;li&gt;worker 异步压缩和整理&lt;/li&gt;
&lt;li&gt;记忆写入 SQLite 与 Chroma&lt;/li&gt;
&lt;li&gt;后续通过 &lt;code&gt;mem-search&lt;/code&gt; 检索&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 适合长期项目，而不是一次性小任务。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个仓库持续开发很多天&lt;/li&gt;
&lt;li&gt;代码结构复杂，背景说明很多&lt;/li&gt;
&lt;li&gt;需要记住项目约定、命名习惯和架构选择&lt;/li&gt;
&lt;li&gt;经常让 Claude Code 修 Bug、写功能、整理文档&lt;/li&gt;
&lt;li&gt;希望 AI 能记住“之前为什么这么改”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是临时让 Claude Code 改一行代码，长期记忆意义不大。&lt;br&gt;
但如果你把 Claude Code 当作长期协作者，它就会变得有用。&lt;/p&gt;
&lt;h2 id=&#34;安装和启动&#34;&gt;安装和启动
&lt;/h2&gt;&lt;p&gt;README 中给出的安装方式很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g claude-mem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动时可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果需要停止：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些命令背后的目标，是把记忆系统作为一个长期运行的本地服务接到 Claude Code 工作流里。&lt;/p&gt;
&lt;h2 id=&#34;mem-search-怎么用&#34;&gt;&lt;code&gt;mem-search&lt;/code&gt; 怎么用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mem-search&lt;/code&gt; 是找回记忆的关键入口。&lt;/p&gt;
&lt;p&gt;它的用途不是替代普通搜索，而是让 Claude Code 能按语义查询过去会话中的内容。&lt;/p&gt;
&lt;p&gt;比如你可以让 Claude Code 查询：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某个模块之前为什么这样设计&lt;/li&gt;
&lt;li&gt;某个 Bug 当时怎么排查&lt;/li&gt;
&lt;li&gt;项目里约定的命名规则&lt;/li&gt;
&lt;li&gt;之前讨论过的技术取舍&lt;/li&gt;
&lt;li&gt;某次重构的背景原因&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种查询和简单关键词搜索不同。&lt;br&gt;
如果记忆压缩和向量索引做得好，即使你不记得原话，也能找回相近语义的内容。&lt;/p&gt;
&lt;h2 id=&#34;和普通项目文档有什么区别&#34;&gt;和普通项目文档有什么区别
&lt;/h2&gt;&lt;p&gt;项目文档适合记录稳定结论。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;架构说明&lt;/li&gt;
&lt;li&gt;部署流程&lt;/li&gt;
&lt;li&gt;API 约定&lt;/li&gt;
&lt;li&gt;数据库结构&lt;/li&gt;
&lt;li&gt;开发规范&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 更适合记录会话过程中产生的上下文。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为什么某个方案被放弃&lt;/li&gt;
&lt;li&gt;某个临时问题怎么绕过&lt;/li&gt;
&lt;li&gt;某个实现背后的讨论过程&lt;/li&gt;
&lt;li&gt;还没来得及写进文档的项目偏好&lt;/li&gt;
&lt;li&gt;多次对话里积累出的任务背景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;两者不是互相替代。&lt;br&gt;
比较好的方式是：稳定知识写进项目文档，过程性上下文交给记忆系统辅助检索。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，长期记忆不是越多越好。&lt;/p&gt;
&lt;p&gt;如果所有对话都无差别保存，后续检索可能会变得嘈杂。真正有价值的是项目决策、实现背景、问题排查和长期偏好。&lt;/p&gt;
&lt;p&gt;第二，记忆不能替代代码和文档。&lt;/p&gt;
&lt;p&gt;AI 搜到的旧上下文只能作为参考。最终判断仍然要看当前代码、测试结果和最新需求。&lt;/p&gt;
&lt;p&gt;第三，隐私和本地数据要注意。&lt;/p&gt;
&lt;p&gt;既然它会保存会话内容，就要清楚哪些项目适合接入，哪些敏感信息不应该进入对话。&lt;/p&gt;
&lt;p&gt;第四，记忆系统需要维护。&lt;/p&gt;
&lt;p&gt;随着项目推进，旧记忆可能过时。过时的上下文如果被误用，反而会误导后续任务。&lt;/p&gt;
&lt;h2 id=&#34;为什么这类工具值得关注&#34;&gt;为什么这类工具值得关注
&lt;/h2&gt;&lt;p&gt;AI 编程工具正在从“单次问答”走向“长期协作”。&lt;/p&gt;
&lt;p&gt;单次问答里，模型只要回答当前问题就够了。&lt;br&gt;
长期协作里，它需要知道项目历史、之前的决策、团队偏好和已经踩过的坑。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 这类工具的意义就在这里：它把“记住上下文”从临时聊天能力，变成一个可以安装、运行、检索的本地系统。&lt;/p&gt;
&lt;p&gt;对真实工程项目来说，这比单纯让模型上下文窗口变长更实用。&lt;br&gt;
因为很多信息不是一次性塞进上下文就好，而是需要在合适的时候被找回来。&lt;/p&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;如果你符合下面几种情况，可以考虑试试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频使用 Claude Code&lt;/li&gt;
&lt;li&gt;经常跨天处理同一个项目&lt;/li&gt;
&lt;li&gt;项目上下文比较复杂&lt;/li&gt;
&lt;li&gt;经常需要向 AI 重复解释背景&lt;/li&gt;
&lt;li&gt;想把会话里的经验沉淀下来&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔使用 Claude Code，或者项目很小，暂时不一定需要这类系统。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的重点不是“保存聊天记录”，而是让 Claude Code 能在后续任务里找回有用上下文。&lt;/p&gt;
&lt;p&gt;当 AI 编程从一次性任务变成长期项目协作，记忆系统会越来越重要。&lt;br&gt;
它不能替代文档和测试，但可以减少重复解释，让 AI 更像一个了解项目历史的助手。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Google LangExtract：用 LLM 从长文本里抽取结构化数据</title>
        <link>https://knightli.com/2026/05/01/google-langextract-llm-structured-data-extraction/</link>
        <pubDate>Fri, 01 May 2026 02:58:21 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/google-langextract-llm-structured-data-extraction/</guid>
        <description>&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 是 Google 开源的一个 Python 库，用来从非结构化文本中抽取结构化信息。&lt;/p&gt;
&lt;p&gt;它的使用场景很直接：给它一段文本、一个提示词和少量示例，让大语言模型按你定义的字段抽取内容，并把结果组织成可处理的数据。&lt;/p&gt;
&lt;p&gt;和普通“让模型总结一下”不同，&lt;code&gt;LangExtract&lt;/code&gt; 更关注三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按固定结构抽取信息&lt;/li&gt;
&lt;li&gt;保留抽取结果和原文位置的对应关系&lt;/li&gt;
&lt;li&gt;支持长文档和可视化检查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你经常需要从报告、论文、病历、合同、日志或网页文本里抽取实体、事件、关系和属性，这类工具会比手写正则更灵活，也比纯聊天式提问更容易进入后续数据处理流程。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;很多文本抽取任务看起来简单，实际做起来很麻烦。&lt;/p&gt;
&lt;p&gt;比如你想从一篇长文里抽取：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人名、机构名、地点&lt;/li&gt;
&lt;li&gt;事件、时间、参与方&lt;/li&gt;
&lt;li&gt;药物、剂量、不良反应&lt;/li&gt;
&lt;li&gt;产品型号、参数、价格&lt;/li&gt;
&lt;li&gt;合同条款、义务、期限&lt;/li&gt;
&lt;li&gt;日志里的错误类型和上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果格式固定，正则或传统解析器可以解决。&lt;br&gt;
但只要文本表达稍微自然一点，规则就会迅速变复杂。&lt;/p&gt;
&lt;p&gt;大语言模型适合理解自然语言，但直接让模型“抽一下”又容易出现几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输出格式不稳定&lt;/li&gt;
&lt;li&gt;不知道信息来自原文哪里&lt;/li&gt;
&lt;li&gt;长文档容易漏&lt;/li&gt;
&lt;li&gt;很难批量处理&lt;/li&gt;
&lt;li&gt;结果不方便人工复核&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 想解决的就是这一层问题：把 LLM 的理解能力包装成更可控的抽取流程。&lt;/p&gt;
&lt;h2 id=&#34;langextract-的几个特点&#34;&gt;LangExtract 的几个特点
&lt;/h2&gt;&lt;h3 id=&#34;1-用示例约束抽取格式&#34;&gt;1. 用示例约束抽取格式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 的思路不是只给一句含糊提示词，而是通过 prompt 和 examples 告诉模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要抽取什么&lt;/li&gt;
&lt;li&gt;字段叫什么&lt;/li&gt;
&lt;li&gt;每个字段应该怎么填&lt;/li&gt;
&lt;li&gt;不确定时应该怎么处理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种 few-shot 方式很适合信息抽取任务。&lt;br&gt;
你给的示例越贴近真实数据，模型越容易稳定输出相同结构。&lt;/p&gt;
&lt;h3 id=&#34;2-抽取结果能对应回原文&#34;&gt;2. 抽取结果能对应回原文
&lt;/h3&gt;&lt;p&gt;信息抽取最怕“看起来对，但不知道从哪来的”。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 的一个重点是把抽取结果和原文位置对齐。这样你后续检查时，不只是看到一个 JSON 结果，还能回到原文看这条信息来自哪一段。&lt;/p&gt;
&lt;p&gt;这对需要复核的场景很重要，比如医学文本、法律文本、研究资料和企业内部文档。&lt;/p&gt;
&lt;h3 id=&#34;3-支持长文档&#34;&gt;3. 支持长文档
&lt;/h3&gt;&lt;p&gt;长文档抽取容易遇到上下文窗口、漏抽和重复抽取问题。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 提供了面向长文本的处理方式，可以把长文档拆分后并行处理，再把抽取结果组织起来。&lt;/p&gt;
&lt;p&gt;这让它更适合处理完整报告、论文、长网页、批量资料，而不是只处理一小段文本。&lt;/p&gt;
&lt;h3 id=&#34;4-支持可视化检查&#34;&gt;4. 支持可视化检查
&lt;/h3&gt;&lt;p&gt;抽取结果如果只能看 JSON，很容易漏掉问题。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 支持把抽取结果可视化，让你更直观地查看模型从哪里抽了什么。&lt;br&gt;
这对调 prompt、查漏抽、查误抽都很有帮助。&lt;/p&gt;
&lt;h2 id=&#34;什么时候适合用&#34;&gt;什么时候适合用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你要从自然语言文本中抽结构化字段&lt;/li&gt;
&lt;li&gt;文本格式不完全固定&lt;/li&gt;
&lt;li&gt;需要保留抽取结果和原文的对应关系&lt;/li&gt;
&lt;li&gt;需要处理较长文档&lt;/li&gt;
&lt;li&gt;结果需要人工复核&lt;/li&gt;
&lt;li&gt;后续要进入表格、数据库或数据分析流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型例子包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从医学文本里抽取症状、药物、剂量和反应&lt;/li&gt;
&lt;li&gt;从合同里抽取甲乙方、义务、金额和期限&lt;/li&gt;
&lt;li&gt;从论文里抽取研究对象、方法、结论&lt;/li&gt;
&lt;li&gt;从产品资料里抽取规格参数&lt;/li&gt;
&lt;li&gt;从客服记录里抽取问题类型和处理结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是临时问一段文本的大意，用普通聊天模型就够。&lt;br&gt;
如果你要把文本变成后续可处理的数据，&lt;code&gt;LangExtract&lt;/code&gt; 会更合适。&lt;/p&gt;
&lt;h2 id=&#34;基本安装&#34;&gt;基本安装
&lt;/h2&gt;&lt;p&gt;项目支持通过 &lt;code&gt;pip&lt;/code&gt; 安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install langextract
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以从源码安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/google/langextract.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; langextract
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要使用模型 API，需要按对应模型提供方配置 API key。&lt;br&gt;
项目文档里重点展示了 Gemini 相关用法，也支持通过适配层接入其他模型提供方。&lt;/p&gt;
&lt;h2 id=&#34;基本使用思路&#34;&gt;基本使用思路
&lt;/h2&gt;&lt;p&gt;一个典型流程大概是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;准备原始文本&lt;/li&gt;
&lt;li&gt;写清楚抽取目标&lt;/li&gt;
&lt;li&gt;给少量示例&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;LangExtract&lt;/code&gt; 执行抽取&lt;/li&gt;
&lt;li&gt;检查结构化结果&lt;/li&gt;
&lt;li&gt;必要时生成可视化页面复核&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里最关键的是第二步和第三步。&lt;/p&gt;
&lt;p&gt;提示词要描述清楚任务，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只抽取文本中明确出现的信息&lt;/li&gt;
&lt;li&gt;不要根据常识补充&lt;/li&gt;
&lt;li&gt;字段缺失时留空&lt;/li&gt;
&lt;li&gt;同一类实体保持字段结构一致&lt;/li&gt;
&lt;li&gt;输出中保留原文片段或位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例要尽量接近真实输入。&lt;br&gt;
如果真实文本里有噪声、缩写、换行、表格残留，示例里最好也体现出来。&lt;/p&gt;
&lt;h2 id=&#34;用它时要注意什么&#34;&gt;用它时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，不要把抽取任务写得太泛。&lt;/p&gt;
&lt;p&gt;比如“抽取有用信息”就太宽。&lt;br&gt;
更好的写法是“抽取药物名称、剂量、给药频率和不良反应”。&lt;/p&gt;
&lt;p&gt;第二，不要完全信任模型输出。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 能把结果和原文对齐，但这不等于模型永远不会漏抽或误抽。重要场景仍然需要抽样检查，必要时加人工复核。&lt;/p&gt;
&lt;p&gt;第三，示例比长篇解释更有用。&lt;/p&gt;
&lt;p&gt;信息抽取任务里，模型往往更依赖示例来理解输出格式。&lt;br&gt;
与其写一大段抽象规则，不如给几个高质量 example。&lt;/p&gt;
&lt;p&gt;第四，长文档要关注成本和速度。&lt;/p&gt;
&lt;p&gt;长文档拆分、并行抽取、模型调用都会带来成本。正式批量处理前，最好先拿一小批样本调好提示词和字段结构。&lt;/p&gt;
&lt;h2 id=&#34;和正则传统-nlp-有什么区别&#34;&gt;和正则、传统 NLP 有什么区别
&lt;/h2&gt;&lt;p&gt;正则适合格式稳定、规则清楚的文本。&lt;/p&gt;
&lt;p&gt;传统 NLP 管线适合任务边界明确、模型或词典已经准备好的场景。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 更适合格式不那么固定、但语义比较明确的文本。&lt;br&gt;
它不要求你为每种表达都写规则，而是让 LLM 根据示例理解抽取目标。&lt;/p&gt;
&lt;p&gt;但这也意味着它不是正则的完全替代品：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对格式固定的文本，正则更便宜、更稳定&lt;/li&gt;
&lt;li&gt;对高风险场景，仍然要验证和复核&lt;/li&gt;
&lt;li&gt;对大规模批处理，要考虑模型调用成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比较实际的做法是：规则清楚的部分用程序处理，语义变化大的部分交给 &lt;code&gt;LangExtract&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;适合怎样的开发者&#34;&gt;适合怎样的开发者
&lt;/h2&gt;&lt;p&gt;如果你正在做下面这些事情，可以关注 &lt;code&gt;LangExtract&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把长文本整理成表格&lt;/li&gt;
&lt;li&gt;从文档中抽实体和关系&lt;/li&gt;
&lt;li&gt;做知识库入库前的数据清洗&lt;/li&gt;
&lt;li&gt;从业务文本中抽取字段&lt;/li&gt;
&lt;li&gt;做 LLM 驱动的信息抽取原型&lt;/li&gt;
&lt;li&gt;需要保留抽取结果和原文证据&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是一个“点一下就自动懂所有文档”的工具，更像是一个帮你把 LLM 抽取流程工程化的库。&lt;/p&gt;
&lt;p&gt;你仍然需要设计字段、写示例、检查结果。&lt;br&gt;
但相比每次手写模型调用、拼 prompt、解析输出，它提供了更完整的抽取框架。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/langextract&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/langextract&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 的价值在于把“让 LLM 从文本里找信息”这件事做得更可控。&lt;/p&gt;
&lt;p&gt;它适合的不是随口总结，而是有字段、有证据、有复核需求的信息抽取任务。&lt;br&gt;
如果你的工作里经常要把长文本变成结构化数据，可以把它作为一个值得试用的工具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude.md 不是越长越好：AI 编程全局记忆文件该怎么写</title>
        <link>https://knightli.com/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/2026/04/29/how-to-write-claude-md-for-ai-coding/</guid>
        <description>&lt;p&gt;最近看到一个关于 AI 编程全局记忆文件的讨论：项目里使用 &lt;code&gt;Claude.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt; 这类文件之后，效果不一定会变好，甚至可能让成功率下降，同时推理成本还会上升。&lt;/p&gt;
&lt;p&gt;这件事乍一看有点反直觉。我们通常会觉得，给 AI 更多项目背景、更多规则、更多说明，它应该更容易写对代码。&lt;br&gt;
但实际问题在于：&lt;code&gt;Claude.md&lt;/code&gt; 不是普通文档，而是每次对话都会被塞进上下文的全局记忆。它写得越多，模型每次都要读得越多；它写得越含糊，模型每次都要多做判断；它写进了不该写的流程，模型还可能在不相关的任务里触发多余动作。&lt;/p&gt;
&lt;p&gt;所以，&lt;code&gt;Claude.md&lt;/code&gt; 真正难写的地方，不是怎么把内容写全，而是怎么判断哪些内容值得长期占用上下文。&lt;/p&gt;
&lt;h2 id=&#34;claudemd-到底是什么&#34;&gt;Claude.md 到底是什么
&lt;/h2&gt;&lt;p&gt;在 AI 编程工具里，&lt;code&gt;Claude.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt; 这类文件本质上都是全局记忆文件。&lt;/p&gt;
&lt;p&gt;普通对话会进入上下文，但上下文长度有限。对话长了以后，历史内容会被压缩，部分细节会丢失。全局记忆文件的作用，是把一些重要规则固定下来，让模型在每次任务开始时都能看到。&lt;/p&gt;
&lt;p&gt;这意味着两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写进去的内容更不容易被遗忘&lt;/li&gt;
&lt;li&gt;写进去的内容也会在每次任务里产生成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不像一份 README，只在需要时被阅读。它更像一套长期有效的工作约束。只要放进去，就默认每次都会影响模型的判断。&lt;/p&gt;
&lt;p&gt;因此，&lt;code&gt;Claude.md&lt;/code&gt; 不是项目介绍，也不是经验合集，更不是把所有开发流程都塞进去的地方。它应该只存放那些模型如果不知道，就容易反复犯错的规则。&lt;/p&gt;
&lt;h2 id=&#34;为什么写了反而可能变差&#34;&gt;为什么写了反而可能变差
&lt;/h2&gt;&lt;p&gt;全局记忆文件写得不好，主要会带来三类问题。&lt;/p&gt;
&lt;p&gt;第一，它会占用上下文。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;Claude.md&lt;/code&gt; 有一千行，那么这些内容会长期进入模型上下文。真正与当前任务有关的代码、错误信息、需求说明，反而会被挤压。上下文不是免费的空间，越大的全局规则，越容易稀释当前任务的重点。&lt;/p&gt;
&lt;p&gt;第二，它会触发多余行为。&lt;/p&gt;
&lt;p&gt;比如在全局文件里写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每次开始任务前，都要完整阅读项目目录。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每次修改后，都要执行完整链路测试。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些话看起来很负责，但放在全局记忆里就会变成“所有任务都默认执行”。哪怕只是改一行文案，模型也可能因为这条规则去做不必要的探索和测试。结果就是任务变慢、成本变高，甚至引入新的干扰。&lt;/p&gt;
&lt;p&gt;第三，它会增加判断负担。&lt;/p&gt;
&lt;p&gt;像“保持代码优雅、简洁、可维护、可扩展”这类话，听起来正确，但实际约束很弱。模型每次生成代码时都要判断什么叫优雅、什么叫可扩展，却没有得到明确边界。&lt;/p&gt;
&lt;p&gt;更好的写法不是堆抽象美德，而是写具体禁令或反例。比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要为了单个调用点新增通用抽象。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要在没有测试覆盖的情况下改动共享解析逻辑。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要把临时脚本放进业务源码目录。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些规则更具体，也更容易被执行。&lt;/p&gt;
&lt;h2 id=&#34;应该写什么&#34;&gt;应该写什么
&lt;/h2&gt;&lt;p&gt;判断一条内容要不要写进 &lt;code&gt;Claude.md&lt;/code&gt;，可以用一个简单标准：&lt;/p&gt;
&lt;p&gt;如果不写，AI 就会反复犯同一种错误，那它值得写进去。&lt;/p&gt;
&lt;p&gt;适合写进全局记忆文件的内容，通常有这些特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长期有效&lt;/li&gt;
&lt;li&gt;与当前仓库强相关&lt;/li&gt;
&lt;li&gt;无法从代码结构自然推断&lt;/li&gt;
&lt;li&gt;能明确改变模型行为&lt;/li&gt;
&lt;li&gt;最好是约束、禁令、路径规则或固定命令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;所有 Hugo 文章只改 index.zh-cn.md，不自动生成其他语言版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文章 front matter 必须包含 title/date/draft/tags/categories/slug/description。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要修改 public/ 目录里的构建产物。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PowerShell 下执行部署时使用 scripts/deploy.ps1。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些内容不是泛泛而谈，而是和仓库的真实工作方式绑定。模型如果不知道，就可能做错；模型知道以后，确实能减少误操作。&lt;/p&gt;
&lt;h2 id=&#34;不该写什么&#34;&gt;不该写什么
&lt;/h2&gt;&lt;p&gt;很多人容易把 &lt;code&gt;Claude.md&lt;/code&gt; 写成项目说明书，这通常没有必要。&lt;/p&gt;
&lt;p&gt;不太适合写进去的内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目愿景和背景介绍&lt;/li&gt;
&lt;li&gt;大段目录结构说明&lt;/li&gt;
&lt;li&gt;临时任务计划&lt;/li&gt;
&lt;li&gt;一次性的调试步骤&lt;/li&gt;
&lt;li&gt;抽象的代码审美要求&lt;/li&gt;
&lt;li&gt;只在少数情况下才需要执行的长流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如“这是一个电商项目，包含商品、订单、用户模块”这种描述，对模型完成具体编码任务帮助有限。真正开发时，模型应该根据当前需求、规格文档、代码结构和测试来判断，而不是靠全局记忆里的粗略介绍。&lt;/p&gt;
&lt;p&gt;目录结构也是类似。除非某个目录有特殊约定，比如“共享组件只能从这个目录引用”，否则没必要把整个树形结构写进去。模型可以自己读取项目目录，硬塞一份静态目录说明反而容易过期。&lt;/p&gt;
&lt;h2 id=&#34;流程更适合做成技能或命令&#34;&gt;流程更适合做成技能或命令
&lt;/h2&gt;&lt;p&gt;如果一段内容是“第一步做什么、第二步做什么、第三步做什么”，它未必适合放进 &lt;code&gt;Claude.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;长期流程可以沉淀成技能、脚本或命令。这样做的好处是：全局记忆里只需要保留名称和触发条件，真正的详细步骤只在需要时加载。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;当用户要求翻译 Hugo 文章时，使用 post-translate 技能。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;当用户要求部署站点时，运行 hugo-rsync-deploy 流程。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这比把完整翻译流程、部署流程都写进 &lt;code&gt;Claude.md&lt;/code&gt; 更轻。全局记忆保持短，具体流程交给可触发的工具。&lt;/p&gt;
&lt;p&gt;Claude 最近的初始化流程也在往这个方向走：不只是生成一个 &lt;code&gt;Claude.md&lt;/code&gt;，还会尝试把可复用流程拆成 skills，把固定事件拆成 hooks。这个变化背后的思路很清楚：全局记忆只做入口，细节按需加载。&lt;/p&gt;
&lt;h2 id=&#34;claudemd-需要持续迭代&#34;&gt;Claude.md 需要持续迭代
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; 不应该一次写完就不管。&lt;/p&gt;
&lt;p&gt;更合理的方式是先保持简短，让模型在真实任务里暴露问题。某个错误出现一次，可以先人工处理；如果同类错误出现两次以上，就说明它可能值得沉淀为全局规则。&lt;/p&gt;
&lt;p&gt;这类迭代比一开始写一大堆规则更有效。因为一开始你不知道哪些规则真的有用，也不知道哪些内容会变成噪音。随着项目变大、协作变多、模型行为逐渐稳定，再慢慢把高频问题写进去。&lt;/p&gt;
&lt;p&gt;还有一个重要趋势：模型越强，全局记忆文件反而应该越短。&lt;/p&gt;
&lt;p&gt;以前很多需要写进提示词的要求，现在模型已经能自然做到。继续把这些基础要求塞进 &lt;code&gt;Claude.md&lt;/code&gt;，只会增加上下文负担。全局记忆应该随着模型能力提升而收缩，只保留这个仓库独有、模型无法自动推断的部分。&lt;/p&gt;
&lt;h2 id=&#34;一个更实用的写法&#34;&gt;一个更实用的写法
&lt;/h2&gt;&lt;p&gt;写 &lt;code&gt;Claude.md&lt;/code&gt; 时，可以按这个顺序思考：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这个仓库有什么特殊约定？&lt;/li&gt;
&lt;li&gt;哪些错误模型已经犯过不止一次？&lt;/li&gt;
&lt;li&gt;哪些目录、文件或命令绝对不能误用？&lt;/li&gt;
&lt;li&gt;哪些流程应该改成技能、脚本或命令，而不是常驻上下文？&lt;/li&gt;
&lt;li&gt;哪些内容只是介绍，可以删掉？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最后得到的文件，可能只有几十行。它不需要完整解释项目，而是要精确约束行为。&lt;/p&gt;
&lt;p&gt;一个好的 &lt;code&gt;Claude.md&lt;/code&gt;，应该像这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 工作规则
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 只改与当前任务相关的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不要修改 public/、resources/ 这类构建产物目录。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Hugo 文章改写只处理 index.zh-cn.md，不生成其他语言版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果涉及部署，先运行 hugo 构建，再执行既有 rsync 脚本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 遇到已有用户改动时，不要回滚，必须基于现状继续修改。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它短，但每一条都能影响实际行为。这样的内容才值得长期占用上下文。&lt;/p&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; 的价值不在于让 AI “知道更多”，而在于让 AI “少犯固定错误”。&lt;/p&gt;
&lt;p&gt;它不是知识库，也不是项目百科，而是 AI 编程过程里的长期约束文件。&lt;br&gt;
写得越具体、越短、越贴近真实错误，它越有用；写得越泛、越长、越像项目介绍，它越可能拖慢模型，甚至让结果变差。&lt;/p&gt;
&lt;p&gt;把全局记忆当成稀缺资源，而不是无限草稿纸。这大概就是写好 &lt;code&gt;Claude.md&lt;/code&gt; 最重要的一条原则。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 开始控制电脑，对以后意味着什么？</title>
        <link>https://knightli.com/2026/04/29/codex-computer-use-update/</link>
        <pubDate>Wed, 29 Apr 2026 11:28:25 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/29/codex-computer-use-update/</guid>
        <description>&lt;p&gt;Codex 这次最值得关注的变化，不是又多了一个普通按钮，而是它开始往“控制电脑”这个方向走。&lt;/p&gt;
&lt;p&gt;以前我们使用 AI，更多是在聊天框里提问、复制、粘贴、再手动操作软件。&lt;br&gt;
现在这个边界开始往外扩：AI 不只是回答你，而是可以根据你的目标去操作桌面应用。&lt;/p&gt;
&lt;p&gt;这件事短期看是一个新功能，长期看可能会改变很多人使用电脑的方式。&lt;/p&gt;
&lt;h2 id=&#34;这个功能是什么&#34;&gt;这个功能是什么
&lt;/h2&gt;&lt;p&gt;简单说，Codex 的电脑使用能力，就是让它能接触并操作桌面环境。&lt;/p&gt;
&lt;p&gt;它可以做的事包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以选择并控制某个应用&lt;/li&gt;
&lt;li&gt;可以用自然语言下达任务&lt;/li&gt;
&lt;li&gt;可以打开浏览器、AI 工具、本地文件或其他软件&lt;/li&gt;
&lt;li&gt;可以输入内容、点击按钮、等待结果&lt;/li&gt;
&lt;li&gt;可以把多个步骤串成一个任务&lt;/li&gt;
&lt;li&gt;可以在后台继续执行，不需要用户每一步都手动跟着&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的定位不是单纯替你写一段文本，而是替你完成一段操作流程。&lt;/p&gt;
&lt;p&gt;这就是 Agent 和普通聊天机器人的关键区别：&lt;br&gt;
聊天机器人主要给答案，Agent 更接近“拿到目标后去执行”。&lt;/p&gt;
&lt;h2 id=&#34;为什么这件事重要&#34;&gt;为什么这件事重要
&lt;/h2&gt;&lt;p&gt;过去很多自动化都要求你会写脚本。&lt;/p&gt;
&lt;p&gt;比如你想完成一个跨软件流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开网页&lt;/li&gt;
&lt;li&gt;找资料&lt;/li&gt;
&lt;li&gt;复制内容&lt;/li&gt;
&lt;li&gt;交给另一个 AI 工具处理&lt;/li&gt;
&lt;li&gt;保存文件&lt;/li&gt;
&lt;li&gt;再打开本地目录检查结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果要自动化这件事，传统做法可能是写浏览器脚本、调用 API、写本地程序，甚至还要处理各种软件窗口。&lt;/p&gt;
&lt;p&gt;但很多普通用户不会写这些东西。&lt;br&gt;
就算会写，也未必值得为一个临时任务专门写脚本。&lt;/p&gt;
&lt;p&gt;电脑使用能力的意义就在这里：它把“脚本能力”往自然语言方向推了一步。&lt;/p&gt;
&lt;p&gt;你不一定要告诉它每一步怎么点。&lt;br&gt;
你可以告诉它你要什么结果，让它自己去尝试完成。&lt;/p&gt;
&lt;h2 id=&#34;它能改变哪些工作流&#34;&gt;它能改变哪些工作流
&lt;/h2&gt;&lt;p&gt;我觉得最先被改变的，不会是特别严肃、特别高风险的工作，而是那些“烦、杂、重复、但又不值得专门写程序”的流程。&lt;/p&gt;
&lt;h3 id=&#34;1-跨软件搬运&#34;&gt;1. 跨软件搬运
&lt;/h3&gt;&lt;p&gt;最典型的就是在多个软件之间搬信息。&lt;/p&gt;
&lt;p&gt;以前你可能要在浏览器、文档、聊天窗口、本地文件夹之间来回切。&lt;br&gt;
以后可以把这类任务交给 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;去找某类资料&lt;/li&gt;
&lt;li&gt;汇总成文档&lt;/li&gt;
&lt;li&gt;保存到指定目录&lt;/li&gt;
&lt;li&gt;打开结果给你确认&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类工作不难，但很耗注意力。&lt;br&gt;
Agent 的价值就是把这些碎操作吃掉。&lt;/p&gt;
&lt;h3 id=&#34;2-多个-ai-工具协同&#34;&gt;2. 多个 AI 工具协同
&lt;/h3&gt;&lt;p&gt;现在很多人的真实工作流已经不是只用一个 AI。&lt;/p&gt;
&lt;p&gt;可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个工具写代码&lt;/li&gt;
&lt;li&gt;一个工具查资料&lt;/li&gt;
&lt;li&gt;一个工具生成图片&lt;/li&gt;
&lt;li&gt;一个工具整理文档&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以前这些工具之间靠人肉复制粘贴。&lt;br&gt;
以后 Agent 可以成为中间层：它负责打开工具、传递上下文、等待输出、整理结果。&lt;/p&gt;
&lt;p&gt;这会让“多个 AI 协同”从手工流程变成半自动流程。&lt;/p&gt;
&lt;h3 id=&#34;3-办公软件自动化&#34;&gt;3. 办公软件自动化
&lt;/h3&gt;&lt;p&gt;表格、PPT、文档、邮件，这些软件都有一个共同特点：功能很强，但很多操作很碎。&lt;/p&gt;
&lt;p&gt;如果 Agent 能稳定控制这些软件，以后的办公自动化门槛会明显下降。&lt;/p&gt;
&lt;p&gt;你不用记菜单在哪里，也不用学复杂快捷键。&lt;br&gt;
你只需要说清楚目标，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把这份表格整理成月报&lt;/li&gt;
&lt;li&gt;根据这份文档做一页总结&lt;/li&gt;
&lt;li&gt;把这些资料合并成一个结构清楚的说明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正麻烦的按钮操作，会逐渐被隐藏到自然语言后面。&lt;/p&gt;
&lt;h2 id=&#34;对普通用户意味着什么&#34;&gt;对普通用户意味着什么
&lt;/h2&gt;&lt;p&gt;对普通用户来说，这类功能的影响可能比“模型又聪明了一点”更直接。&lt;/p&gt;
&lt;p&gt;因为它降低的不是知识门槛，而是操作门槛。&lt;/p&gt;
&lt;p&gt;很多人不是不会表达需求，而是不知道软件里该点哪里、怎么组合功能。&lt;br&gt;
Agent 如果能接管这部分，人使用电脑的方式就会变成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我描述目标
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Agent 操作软件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我检查结果
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这比单纯聊天更接近真实生产力。&lt;/p&gt;
&lt;h2 id=&#34;对软件形态的影响&#34;&gt;对软件形态的影响
&lt;/h2&gt;&lt;p&gt;如果这类 Agent 能力继续成熟，软件本身也会被反向影响。&lt;/p&gt;
&lt;p&gt;过去软件设计主要服务人类点击。&lt;br&gt;
以后软件可能还要服务 Agent 操作。&lt;/p&gt;
&lt;p&gt;这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;界面元素需要更清晰&lt;/li&gt;
&lt;li&gt;操作反馈需要更稳定&lt;/li&gt;
&lt;li&gt;本地权限需要更细&lt;/li&gt;
&lt;li&gt;软件可能会提供更适合 Agent 调用的接口&lt;/li&gt;
&lt;li&gt;用户会更在意“能不能被 AI 顺利操作”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;长期看，应用之间的边界可能会变薄。&lt;br&gt;
用户关心的不再是“我打开哪个软件”，而是“我要完成什么任务”。&lt;/p&gt;
&lt;h2 id=&#34;现在还不能过度乐观&#34;&gt;现在还不能过度乐观
&lt;/h2&gt;&lt;p&gt;当然，现在还不到完全放手的时候。&lt;/p&gt;
&lt;p&gt;这类能力目前还有几个明显限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;稳定性还需要观察&lt;/li&gt;
&lt;li&gt;复杂任务可能中途出错&lt;/li&gt;
&lt;li&gt;权限边界必须谨慎&lt;/li&gt;
&lt;li&gt;涉及账号、支付、删除文件等操作不能随便放权&lt;/li&gt;
&lt;li&gt;额度消耗也不是完全可以忽略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以现阶段最合适的用法，不是让它完全接管电脑，而是让它处理低风险、可检查、步骤繁琐的任务。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;整理资料&lt;/li&gt;
&lt;li&gt;生成草稿&lt;/li&gt;
&lt;li&gt;跨工具搬运内容&lt;/li&gt;
&lt;li&gt;打开和检查文件&lt;/li&gt;
&lt;li&gt;做一些可以人工复核的半自动流程&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;Codex 这次更新真正重要的地方，是它把 AI 从“回答问题”推向了“操作环境”。&lt;/p&gt;
&lt;p&gt;短期看，它是一个电脑使用功能。&lt;br&gt;
长期看，它可能是个人电脑交互方式的一次转向。&lt;/p&gt;
&lt;p&gt;以后我们使用电脑，可能会越来越少地记按钮、找菜单、切窗口。&lt;br&gt;
更多时候，我们只需要说清楚目标，然后让 Agent 去执行，再由人做最后判断。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Skill 明明在目录里，为什么就是不显示？</title>
        <link>https://knightli.com/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/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</guid>
        <description>&lt;p&gt;这次遇到的问题很隐蔽：&lt;code&gt;~/.codex/skills&lt;/code&gt; 里明明已经放好了多个 skill，新开 Codex 线程之后，侧边栏却还是只能看到少数几个。&lt;/p&gt;
&lt;p&gt;一开始看起来像是缓存或索引问题，但实际原因更具体：几个 &lt;code&gt;SKILL.md&lt;/code&gt; 文件开头带了 UTF-8 BOM，Codex 0.111.0 的 skill loader 没有跳过这个字节，于是误判文件没有合法的 YAML front matter。&lt;/p&gt;
&lt;h2 id=&#34;现象&#34;&gt;现象
&lt;/h2&gt;&lt;p&gt;本地目录里有这些 skill：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/git-commit-push/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/hugo-rsync-deploy/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/bilibili-speech-transcriber/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/product-cutout-normalize/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但新开线程时，实际暴露出来的只有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是说，文件存在不等于当前会话一定能加载成功。Codex 会先解析每个 &lt;code&gt;SKILL.md&lt;/code&gt; 的 front matter，解析失败的 skill 会直接被排除。&lt;/p&gt;
&lt;h2 id=&#34;排查&#34;&gt;排查
&lt;/h2&gt;&lt;p&gt;用 &lt;code&gt;codex exec&lt;/code&gt; 启动一个新会话时，可以看到更直接的错误（在vscode等IDE中可能看不到这些log）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md: missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md: missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些文件肉眼看起来都有正常的开头：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: post-rewrite
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;真正的问题在字节层面。&lt;/p&gt;
&lt;p&gt;失败文件的开头是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EF-BB-BF-2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;能正常加载的文件开头是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;2D-2D-2D&lt;/code&gt; 就是 &lt;code&gt;---&lt;/code&gt;。前面的 &lt;code&gt;EF-BB-BF&lt;/code&gt; 是 UTF-8 BOM。&lt;/p&gt;
&lt;h2 id=&#34;原因&#34;&gt;原因
&lt;/h2&gt;&lt;p&gt;Codex 0.111.0 的 skill loader 当前要求 &lt;code&gt;SKILL.md&lt;/code&gt; 文件第一个字节就是 &lt;code&gt;---&lt;/code&gt; 的第一个 &lt;code&gt;-&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果文件前面带了 UTF-8 BOM，那么文件实际开头就不再是 &lt;code&gt;---&lt;/code&gt;，而是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BOM + ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;于是 loader 会认为它没有以 front matter 分隔符开头，最后报：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这不是 skill 内容写错了，也不是目录放错了，而是编码细节让解析器没认出来。&lt;/p&gt;
&lt;h2 id=&#34;修复&#34;&gt;修复
&lt;/h2&gt;&lt;p&gt;把出问题的 &lt;code&gt;SKILL.md&lt;/code&gt; 转成无 BOM 的 UTF-8 即可。&lt;/p&gt;
&lt;p&gt;PowerShell 可以这样处理：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$paths&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$utf8NoBom&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;UTF8Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;vm&#34;&gt;$false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;Text.Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTF8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$utf8NoBom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;处理后再检查文件头，应该从：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EF-BB-BF-2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;变成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;验证&#34;&gt;验证
&lt;/h2&gt;&lt;p&gt;重新启动一个 Codex 会话后，可见 skill 恢复为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git-commit-push-zh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo-rsync-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果侧边栏仍然只显示旧的列表，可以退出当前 Codex sidebar 或窗口，再重新打开项目。skill 列表通常在会话启动时加载，中途改文件不一定会立刻刷新到当前线程。&lt;/p&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;这类问题最容易误判成“Codex 没重新索引”或“skill 没安装好”。&lt;/p&gt;
&lt;p&gt;实际排查时可以先看三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 是否真的在正确目录&lt;/li&gt;
&lt;li&gt;文件头部是否有合法的 &lt;code&gt;---&lt;/code&gt; front matter&lt;/li&gt;
&lt;li&gt;文件是否是无 BOM 的 UTF-8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这次的关键就是第三点：文件看起来没问题，但第一个字节不是 &lt;code&gt;-&lt;/code&gt;，Codex 就没有把它当作一个有效 skill。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 里的 ~/.codex/skills 和 项目/.codex/skills 有什么区别</title>
        <link>https://knightli.com/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/2026/04/29/difference-between-global-and-project-codex-skills/</guid>
        <description>&lt;p&gt;很多人整理 Codex skills 时，最容易卡住的问题就两个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 和 &lt;code&gt;项目/.codex/skills&lt;/code&gt; 有什么区别&lt;/li&gt;
&lt;li&gt;为什么 skill 明明在目录里，当前会话里却不一定显示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇就直接说结论。&lt;/p&gt;
&lt;h2 id=&#34;两者的区别&#34;&gt;两者的区别
&lt;/h2&gt;&lt;p&gt;先记最短版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 是你的全局技能库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;项目/.codex/skills&lt;/code&gt; 是这个仓库的本地技能库&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;codexskills&#34;&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;适合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你自己跨项目反复会用的 skill&lt;/li&gt;
&lt;li&gt;跟具体仓库无关的通用流程&lt;/li&gt;
&lt;li&gt;很明显属于你个人习惯的工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;post-rewrite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;post-translate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git-commit-push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo-rsync-deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bilibili-speech-transcriber&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类 skill 的特点就是：&lt;strong&gt;离开当前项目也还能用。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;项目codexskills&#34;&gt;&lt;code&gt;项目/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;适合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只对这个仓库成立的流程&lt;/li&gt;
&lt;li&gt;跟当前项目目录结构、脚本、模板绑定很深的规则&lt;/li&gt;
&lt;li&gt;需要让团队一起共享的 skill&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个仓库特有的发布流程&lt;/li&gt;
&lt;li&gt;只能在这个项目里用的生成模板&lt;/li&gt;
&lt;li&gt;跟项目私有脚本强绑定的自动化步骤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类 skill 的特点是：&lt;strong&gt;离开这个仓库就没意义。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;什么时候放全局什么时候放项目里&#34;&gt;什么时候放全局，什么时候放项目里
&lt;/h2&gt;&lt;p&gt;直接这样判断就够了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跟你个人习惯有关，放 &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;跟仓库规则有关，放 &lt;code&gt;项目/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;能跨项目复用，优先放全局&lt;/li&gt;
&lt;li&gt;要多人共享、跟仓库一起演进，优先放项目里&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;当前这个仓库是什么情况&#34;&gt;当前这个仓库是什么情况
&lt;/h2&gt;&lt;p&gt;按我现在看到的实际状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的本机里有 &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;当前仓库里没有 &lt;code&gt;.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以你现在主要依赖的是全局 skills。&lt;br&gt;
也就是说，像 &lt;code&gt;post-rewrite&lt;/code&gt;、&lt;code&gt;post-translate&lt;/code&gt;、&lt;code&gt;git-commit-push&lt;/code&gt; 这些流程，现在更多是你个人工作流的一部分，不是这个仓库显式自带的一部分。&lt;/p&gt;
&lt;h2 id=&#34;为什么磁盘里有当前会话里却不一定显示&#34;&gt;为什么磁盘里有，当前会话里却不一定显示
&lt;/h2&gt;&lt;p&gt;这里要分清两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;磁盘存在&lt;/strong&gt;：说明 skill 文件在本地目录里&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会话暴露&lt;/strong&gt;：说明当前会话把它注册进了可用 skill 列表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两者不是一回事。&lt;/p&gt;
&lt;p&gt;所以会出现这种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 里已经有 skill&lt;/li&gt;
&lt;li&gt;但 &lt;code&gt;/&lt;/code&gt; 后面的列表里没有显示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这通常不代表 skill 坏了，更常见的原因是：&lt;strong&gt;当前会话没有把它重新索引进去。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;怎样让-skill-被当前会话暴露&#34;&gt;怎样让 skill 被当前会话暴露
&lt;/h2&gt;&lt;p&gt;最实用的步骤就这几条：&lt;/p&gt;
&lt;h3 id=&#34;1-目录放对&#34;&gt;1. 目录放对
&lt;/h3&gt;&lt;p&gt;全局：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;项目级：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;项目/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-skillmd-头部可识别&#34;&gt;2. &lt;code&gt;SKILL.md&lt;/code&gt; 头部可识别
&lt;/h3&gt;&lt;p&gt;最少要有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: your-skill-name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 这个 skill 是干什么的
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-新建或修改后开新会话&#34;&gt;3. 新建或修改后，开新会话
&lt;/h3&gt;&lt;p&gt;很多时候 skill 没显示，不是文件有问题，而是当前会话启动时就已经把可用 skill 列表定下来了。&lt;br&gt;
所以你中途新建 skill，磁盘里虽然已经有了，这次会话也未必会重新认。&lt;/p&gt;
&lt;p&gt;最稳的做法就是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;放好 skill&lt;/li&gt;
&lt;li&gt;结束当前会话&lt;/li&gt;
&lt;li&gt;重新进入项目&lt;/li&gt;
&lt;li&gt;开一个新会话&lt;/li&gt;
&lt;li&gt;再看 &lt;code&gt;/&lt;/code&gt; 里有没有出现&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;4-项目-skill-最好提前放好&#34;&gt;4. 项目 skill 最好提前放好
&lt;/h3&gt;&lt;p&gt;如果你想让 &lt;code&gt;项目/.codex/skills&lt;/code&gt; 更稳定地被识别，最好在进入仓库、启动会话之前，就把这些 skill 放进项目里。&lt;/p&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;最短结论就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 是你的个人技能库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;项目/.codex/skills&lt;/code&gt; 是仓库的本地规则库&lt;/li&gt;
&lt;li&gt;skill 在目录里，不等于当前会话一定会显示&lt;/li&gt;
&lt;li&gt;想让它显示，最常见的办法就是放对目录、写好 &lt;code&gt;SKILL.md&lt;/code&gt;，然后开新会话&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT 5.5、Claude Opus 4.7、DeepSeek V4、Qwen 3.6 Max 怎么选</title>
        <link>https://knightli.com/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/2026/04/28/coding-ai-benchmark-gpt55-claude-opus47-deepseek-v4-qwen36max/</guid>
        <description>&lt;p&gt;如果你现在只想知道一句话答案，那可以先记这个版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要最稳、最省时间，优先看 &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;要页面观感、创意和展示感，&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 还是强&lt;/li&gt;
&lt;li&gt;要看国产模型里谁最接近第一梯队，&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 现在很有竞争力&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 不是不能打，但波动比前面几家更明显&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多人问“现在最强编程 AI 到底是谁”，其实问到最后，通常不是在问排行榜，而是在问一件更实际的事：&lt;br&gt;
&lt;strong&gt;我现在要写页面、做 demo、生成小工具、补交互，哪一个最容易一次就给我能用的东西。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从这个角度看，这几家模型的差别已经很清楚了。&lt;/p&gt;
&lt;h2 id=&#34;先说总判断&#34;&gt;先说总判断
&lt;/h2&gt;&lt;p&gt;如果把 &lt;code&gt;GPT 5.5&lt;/code&gt;、&lt;code&gt;Claude Opus 4.7&lt;/code&gt;、&lt;code&gt;DeepSeek V4&lt;/code&gt;、&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 放在一起看，综合能力最稳的还是 &lt;code&gt;GPT 5.5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它不一定每次都是最花哨的那个，但它很少让你明显失望。速度快，第一次生成的完成度高，逻辑、交互、动效、小游戏这一类综合任务通常都比较顺。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 的特点很不一样。它最强的地方不是“最稳”，而是页面气质、UI 组织和展示感。很多时候你一打开它写的东西，会先觉得“这个看起来像回事”。如果你更在意页面呈现，它还是很值得看。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 是这几家里最值得重新看的一个。它已经不是“国产里能用”这个级别了，而是有些场景下真的能和 &lt;code&gt;GPT 5.5&lt;/code&gt; 直接拼效果。尤其是前端页面、视觉完成度、拟真感这些部分，它已经开始有明显存在感。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 的问题不是完全不行，而是不够稳。它能写出来的时候并不弱，甚至有些场景还不错，但上下限差得比另外几家更明显。你有时候会觉得它挺能打，有时候又会觉得怎么突然掉下去了。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-强在哪&#34;&gt;&lt;code&gt;GPT 5.5&lt;/code&gt; 强在哪
&lt;/h2&gt;&lt;p&gt;如果你平时最常做的是这些事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接生成一个完整网页&lt;/li&gt;
&lt;li&gt;做带动效的小 demo&lt;/li&gt;
&lt;li&gt;写有一点逻辑的互动页面&lt;/li&gt;
&lt;li&gt;生成小游戏或多状态交互&lt;/li&gt;
&lt;li&gt;想尽量少返工&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;GPT 5.5&lt;/code&gt; 基本还是最稳的答案。&lt;/p&gt;
&lt;p&gt;它的优势主要有几个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出代码速度快&lt;/li&gt;
&lt;li&gt;第一次成品可用度高&lt;/li&gt;
&lt;li&gt;逻辑和交互比较少出硬伤&lt;/li&gt;
&lt;li&gt;综合题表现稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;说得更直接一点，&lt;code&gt;GPT 5.5&lt;/code&gt; 最像一个“你把需求扔过去，它大概率能先把地基搭对”的模型。&lt;br&gt;
很多人真正缺的不是某一项最惊艳，而是第一版别翻车。这件事上它现在还是最让人省心。&lt;/p&gt;
&lt;p&gt;当然，它也不是完全没有短板。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某些偏视觉表现的页面，不一定是最有惊喜的&lt;/li&gt;
&lt;li&gt;有时候太稳了，反而少一点设计感上的记忆点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以如果你问“要一个默认推荐”，那还是 &lt;code&gt;GPT 5.5&lt;/code&gt;。&lt;br&gt;
但如果你问“要不要只看它”，答案也不是。&lt;/p&gt;
&lt;h2 id=&#34;claude-opus-47-适合什么人&#34;&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 适合什么人
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 这类模型的吸引力，更多来自页面观感。&lt;/p&gt;
&lt;p&gt;它的长处通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI 结构更顺&lt;/li&gt;
&lt;li&gt;视觉表现更完整&lt;/li&gt;
&lt;li&gt;某些页面更有展示感&lt;/li&gt;
&lt;li&gt;在可视化和创意感上更容易出彩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你让模型去做的是这些东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;演示页面&lt;/li&gt;
&lt;li&gt;数据展示页面&lt;/li&gt;
&lt;li&gt;强调观感的小网页&lt;/li&gt;
&lt;li&gt;想要一打开就“看着比较高级”的结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;Claude&lt;/code&gt; 依然值得进前排。&lt;/p&gt;
&lt;p&gt;不过它的问题也一直比较明显：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;稳定性不如 &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;有时看着不错，但细节逻辑会偏掉&lt;/li&gt;
&lt;li&gt;个别场景里会出现功能能跑，但核心体验不够准的情况&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;Claude&lt;/code&gt; 更像一个有审美加成的前端型选手。&lt;br&gt;
你要是更看重页面“长得好不好”，它很有优势；你要是最怕第一次输出就出逻辑问题，那还是得更谨慎一点。&lt;/p&gt;
&lt;h2 id=&#34;qwen-36-max-为什么值得认真看&#34;&gt;&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 为什么值得认真看
&lt;/h2&gt;&lt;p&gt;这几家里，&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 给人的最大变化感最明显。&lt;/p&gt;
&lt;p&gt;以前很多人看国产编程 AI，更多是抱着“能不能跟上”的心态。现在看 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;，已经是另一种问题了：&lt;br&gt;
&lt;strong&gt;它在一些前端直出场景里，到底能不能直接和国外头部模型打。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它现在比较突出的地方有这些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;页面观感不错&lt;/li&gt;
&lt;li&gt;某些动效和拟真效果做得挺好&lt;/li&gt;
&lt;li&gt;生成结果比较有完成感&lt;/li&gt;
&lt;li&gt;有些题目里，效果已经能接近甚至咬住 &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明一件事：&lt;br&gt;
如果你的使用场景偏网页、偏前端、偏展示结果，那 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 已经不是“备用选项”，而是可以认真放进主选名单的模型。&lt;/p&gt;
&lt;p&gt;当然，它还没有稳到完全没有短板。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;交互逻辑题上，偶尔还是会掉一点完成度&lt;/li&gt;
&lt;li&gt;有些页面很好看，但有些任务又会突然平一点&lt;/li&gt;
&lt;li&gt;起伏比 &lt;code&gt;GPT 5.5&lt;/code&gt; 还是大一些&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但整体上，它现在的存在感已经非常强了。&lt;br&gt;
如果你想知道“国产模型里现在最该重点看谁”，那 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 很难绕开。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-现在处在什么位置&#34;&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 现在处在什么位置
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 的情况稍微复杂一点。&lt;/p&gt;
&lt;p&gt;它的问题不是完全做不好，而是你不太容易预判它这次会落在哪个区间。&lt;br&gt;
有时候它能把事情做出来，观感和功能都不算差；有时候遇到稍微复杂一点、同时要求动画、逻辑、数据表现的任务，它又容易掉链子。&lt;/p&gt;
&lt;p&gt;它目前给人的感觉更像这样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能力有&lt;/li&gt;
&lt;li&gt;不算弱&lt;/li&gt;
&lt;li&gt;某些题目可以交卷&lt;/li&gt;
&lt;li&gt;但稳定性还不够让人完全放心&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就决定了它现在更适合什么样的人。&lt;/p&gt;
&lt;p&gt;如果你愿意多试几次、能接受偶尔需要重来、或者你本来就会自己检查和修代码，那 &lt;code&gt;DeepSeek V4&lt;/code&gt; 还是可以继续用。&lt;br&gt;
但如果你就是想少折腾、想把第一次生成成功率放在前面，那它现在还不是最稳的答案。&lt;/p&gt;
&lt;h2 id=&#34;普通用户到底该怎么选&#34;&gt;普通用户到底该怎么选
&lt;/h2&gt;&lt;p&gt;如果你不是做模型评测，而是真的想拿来干活，那其实可以直接按用途选。&lt;/p&gt;
&lt;h3 id=&#34;1-想少折腾想提高第一次成功率&#34;&gt;1. 想少折腾，想提高第一次成功率
&lt;/h3&gt;&lt;p&gt;选 &lt;code&gt;GPT 5.5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它最适合的就是“我给需求，你先给我一版能用的”。&lt;br&gt;
尤其是你没有太多时间来回调、反复修的时候，它的综合稳定性最有价值。&lt;/p&gt;
&lt;h3 id=&#34;2-更看重页面展示感和视觉完成度&#34;&gt;2. 更看重页面展示感和视觉完成度
&lt;/h3&gt;&lt;p&gt;选 &lt;code&gt;Claude Opus 4.7&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你想要的是一个看起来更像成品的页面，或者你做的是偏演示型、展示型的东西，&lt;code&gt;Claude&lt;/code&gt; 的优势会更容易体现出来。&lt;/p&gt;
&lt;h3 id=&#34;3-想重点看国产里最强的前端直出能力&#34;&gt;3. 想重点看国产里最强的前端直出能力
&lt;/h3&gt;&lt;p&gt;优先看 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它现在已经不是“将就用”，而是真的可以拿来正面比较。&lt;br&gt;
如果你的任务偏网页、偏动效、偏展示，&lt;code&gt;Qwen&lt;/code&gt; 的竞争力已经很实际了。&lt;/p&gt;
&lt;h3 id=&#34;4-能接受波动想继续观察国产综合能力&#34;&gt;4. 能接受波动，想继续观察国产综合能力
&lt;/h3&gt;&lt;p&gt;可以继续看 &lt;code&gt;DeepSeek V4&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它的问题不是没实力，而是发挥不够整齐。&lt;br&gt;
如果后面稳定性继续补上，它的存在感还会更强。&lt;/p&gt;
&lt;h2 id=&#34;最后一句话&#34;&gt;最后一句话
&lt;/h2&gt;&lt;p&gt;现在这几家主流编程 AI，差距已经不再是“谁能写、谁不能写”，而是“谁更稳、谁更好看、谁更适合你的任务”。&lt;/p&gt;
&lt;p&gt;如果你就想要一个最省事的答案，&lt;code&gt;GPT 5.5&lt;/code&gt; 还是第一选择。&lt;br&gt;
如果你想要更强的展示感，&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 仍然很有味道。&lt;br&gt;
如果你关心国产模型里谁最值得认真看，&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 现在已经站到很靠前的位置。&lt;br&gt;
&lt;code&gt;DeepSeek V4&lt;/code&gt; 则更像一个还在继续补稳定性的强力选手。&lt;/p&gt;
&lt;p&gt;真要压成一句最短结论，就是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最稳看 &lt;code&gt;GPT 5.5&lt;/code&gt;，最有观感看 &lt;code&gt;Claude&lt;/code&gt;，国产里最值得重点看的是 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ralph 和多智能体协同：怎么让 AI 长时间稳定工作</title>
        <link>https://knightli.com/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/2026/04/27/ralph-multi-agent-long-running-ai-workflows/</guid>
        <description>&lt;p&gt;如果你最近在折腾 coding agent，很快就会遇到一个现实问题：&lt;strong&gt;AI 当然能干活，但怎么让它连续干几个小时，还不在中途跑偏、忘要求、返工一堆？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;围绕 &lt;code&gt;Ralph&lt;/code&gt; 和多智能体协同的这类讨论，真正值得看的也正是这个问题。它不是单纯比较某个模型有多强，而是把重点放在一层更实际的东西上：&lt;strong&gt;怎么设计工作流，才能让 AI 在长任务里保持稳定输出。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把这个问题拆开看，常见的路线主要有两条：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 方案：不断启动新会话，通过文件系统衔接上下文&lt;/li&gt;
&lt;li&gt;多智能体方案：主 Agent 做协调，子 Agent 分工执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果把它压成一句更好理解的话，这期内容讲的其实不是“哪个模型更厉害”，而是“怎么把 AI 组织起来，让它更像一个能持续交付的小团队”。&lt;/p&gt;
&lt;h2 id=&#34;01-为什么长时任务容易失控&#34;&gt;01 为什么长时任务容易失控
&lt;/h2&gt;&lt;p&gt;短任务里，很多问题不明显。你给一句指令，模型读几份文件，改几行代码，事情也就结束了。&lt;/p&gt;
&lt;p&gt;但任务一旦拉长，问题会集中冒出来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会话越来越长，上下文开始膨胀&lt;/li&gt;
&lt;li&gt;早先的要求被新信息挤掉&lt;/li&gt;
&lt;li&gt;一个 Agent 既要想方案，又要写代码，还要自己测，容易顾不过来&lt;/li&gt;
&lt;li&gt;没有明确验收环节时，看起来“做完了”，其实只是“说自己做完了”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以长时间运行 AI，真正考验的往往不是模型单次输出能力，而是 &lt;strong&gt;任务拆分、状态衔接、角色分工和反馈回路&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;02-ralph-方案把长任务拆成很多短回合&#34;&gt;02 Ralph 方案：把长任务拆成很多短回合
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ralph&lt;/code&gt; 的思路很适合先解决“上下文越跑越脏”这个问题。&lt;/p&gt;
&lt;p&gt;它的核心做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用循环不断启动新的 agent 会话&lt;/li&gt;
&lt;li&gt;每轮只处理一个足够小的任务&lt;/li&gt;
&lt;li&gt;把跨轮状态放到文件里，而不是全压在同一个对话上下文里&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做的好处很直接：每次都是 fresh context，单轮会更聚焦，也更不容易被历史消息拖慢。&lt;/p&gt;
&lt;p&gt;如果你已经看过 &lt;code&gt;Ralph&lt;/code&gt; 相关项目，会发现这套方法背后的逻辑很一致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前任务写在结构化文件里&lt;/li&gt;
&lt;li&gt;中间经验写到进度文件里&lt;/li&gt;
&lt;li&gt;代码变化留在 git 历史里&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，&lt;code&gt;Ralph&lt;/code&gt; 不是试图让一个 Agent “永远记住所有事”，而是主动把记忆外置，让会话本身保持轻一点。&lt;/p&gt;
&lt;p&gt;这类方案特别适合下面几种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务已经能拆成一组小 story&lt;/li&gt;
&lt;li&gt;每个 story 都能在单个上下文窗口里完成&lt;/li&gt;
&lt;li&gt;项目里已经有测试、typecheck 或其他检查机制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解决的是“如何让 AI 一轮一轮稳定推进”。&lt;/p&gt;
&lt;h2 id=&#34;03-多智能体方案把一个人做不完的事分出去&#34;&gt;03 多智能体方案：把一个人做不完的事分出去
&lt;/h2&gt;&lt;p&gt;另一条路线是多智能体协同。&lt;/p&gt;
&lt;p&gt;从这类工作流设计思路来看，更值得推荐的通常是这种方式：主 Agent 不直接埋头干活，而是负责协调；子 Agent 各自处理开发、测试、检查、验收等不同任务。&lt;/p&gt;
&lt;p&gt;这和 &lt;code&gt;Ralph&lt;/code&gt; 的区别在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 更像串行迭代&lt;/li&gt;
&lt;li&gt;多智能体更像并行分工&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任务里天然有不同角色，多智能体会更顺手。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个 Agent 负责拆任务和写执行计划&lt;/li&gt;
&lt;li&gt;一个 Agent 负责具体实现&lt;/li&gt;
&lt;li&gt;一个 Agent 负责测试和验证&lt;/li&gt;
&lt;li&gt;一个 Agent 负责回看结果是不是符合最初需求&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做的价值不是“多开几个窗口显得很高级”，而是让不同工作职责分离开。原来塞在一个 Agent 身上的几件事，现在可以拆成几个更明确的环节。&lt;/p&gt;
&lt;p&gt;一旦角色边界清楚，很多问题都会变轻：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;写的人不必同时当审的人&lt;/li&gt;
&lt;li&gt;跑测试的人不必重新推导整套需求&lt;/li&gt;
&lt;li&gt;主 Agent 不会被实现细节淹没&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解决的是“如何让 AI 像一个小团队那样配合”。&lt;/p&gt;
&lt;h2 id=&#34;04-真正关键的不是多开而是怎么拆&#34;&gt;04 真正关键的，不是多开，而是怎么拆
&lt;/h2&gt;&lt;p&gt;无论是 &lt;code&gt;Ralph&lt;/code&gt; 还是多智能体，最容易被忽略的一点都是：&lt;strong&gt;流程设计比多开几个 Agent 更重要。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果任务拆分不对，就算开再多 Agent，也只是把混乱并行化。&lt;/p&gt;
&lt;p&gt;比较稳的拆法通常有几个特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个任务只对应一个明确目标&lt;/li&gt;
&lt;li&gt;一个角色只负责一类输出&lt;/li&gt;
&lt;li&gt;每轮都有清楚的完成标准&lt;/li&gt;
&lt;li&gt;上一轮的结果能被下一轮直接消费&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如比起给 AI 一个“把整个功能做完”的大指令，更稳的方式往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先拆出需求和边界&lt;/li&gt;
&lt;li&gt;再拆实现&lt;/li&gt;
&lt;li&gt;再拆测试&lt;/li&gt;
&lt;li&gt;最后单独做验收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类拆法的好处是，问题一旦出现，更容易知道是出在理解、实现、测试，还是交付标准上。&lt;/p&gt;
&lt;h2 id=&#34;05-为什么验收环节特别重要&#34;&gt;05 为什么验收环节特别重要
&lt;/h2&gt;&lt;p&gt;很多 AI 工作流失败，不是因为前面完全没做事，而是因为最后缺了一个真正独立的确认动作。&lt;/p&gt;
&lt;p&gt;在长任务里，“已经生成结果”和“结果真的可用”之间，经常隔着一整层差距。&lt;/p&gt;
&lt;p&gt;这里有个很值得重视的方向，就是把开发和验收拆开看。哪怕不做到特别复杂，至少也应该把这些问题单独问一遍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它真的完成了最初那条任务吗&lt;/li&gt;
&lt;li&gt;有没有只改表面、没解决根因&lt;/li&gt;
&lt;li&gt;测试是不是只验证了最顺利的路径&lt;/li&gt;
&lt;li&gt;有没有把上游要求悄悄改掉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要这层检查缺位，AI 很容易在长流程里不断“自我宣布成功”。&lt;/p&gt;
&lt;h2 id=&#34;06-两条路线怎么选&#34;&gt;06 两条路线怎么选
&lt;/h2&gt;&lt;p&gt;如果只是想快速判断，可以先这么理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你最痛的是上下文膨胀和长会话失焦，先看 &lt;code&gt;Ralph&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;你最痛的是一个 Agent 身兼多职、任务之间互相打架，先看多智能体&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;再具体一点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 更适合流程清楚、任务细碎、可以按回合推进的工作&lt;/li&gt;
&lt;li&gt;多智能体更适合角色明显、需要并行和交叉验证的工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多时候，这两条路也不是非此即彼。比较成熟的做法，反而可能是把它们组合起来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;外层用 &lt;code&gt;Ralph&lt;/code&gt; 这种迭代循环推进大任务&lt;/li&gt;
&lt;li&gt;内层在单轮里再用多智能体处理研究、实现、测试和验收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样既能控制长上下文，又能提高单轮内部的协作效率。&lt;/p&gt;
&lt;h2 id=&#34;07-一句话总结&#34;&gt;07 一句话总结
&lt;/h2&gt;&lt;p&gt;这类方法最值得看的地方，不是单独推荐了 &lt;code&gt;Ralph&lt;/code&gt; 或多智能体，而是把一个很现实的问题讲清楚了：&lt;strong&gt;让 AI 长时间稳定工作，关键从来不只是模型本身，而是你有没有把上下文、任务、角色和验收设计好。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你已经开始让 &lt;code&gt;Claude Code&lt;/code&gt;、&lt;code&gt;Codex&lt;/code&gt; 或其他 coding agent 处理更长的真实任务，这类工作流思路会比“再换一个更强模型”更值得优先补课。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ralph 是什么：把 Claude Code 和 Amp 变成可循环执行的自主开发流程</title>
        <link>https://knightli.com/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/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</guid>
        <description>&lt;p&gt;如果你最近在关注 coding agent 的长流程执行，&lt;code&gt;snarktank/ralph&lt;/code&gt; 是个很值得看一眼的小项目。它不是再做一个新的模型壳子，也不是再包一层聊天界面，而是把 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 组织成一个可以反复运行的 autonomous loop，让 AI 按 &lt;code&gt;PRD&lt;/code&gt; 里的 story 一项一项往前做，直到全部完成。&lt;/p&gt;
&lt;p&gt;它的核心思路其实很直接：&lt;strong&gt;不要让同一个 agent 在一个越来越长、越来越脏的上下文里硬撑，而是每轮都重新启动一个全新的 AI coding session。&lt;/strong&gt; 这样做的好处是，上下文不会一路膨胀，任务边界也更清楚。&lt;/p&gt;
&lt;h2 id=&#34;01-ralph-是什么&#34;&gt;01 Ralph 是什么
&lt;/h2&gt;&lt;p&gt;Ralph 的官方定位很明确：它是一个 autonomous AI agent loop，会反复调用 AI coding tool，直到 &lt;code&gt;PRD&lt;/code&gt; 里的项目都做完。&lt;/p&gt;
&lt;p&gt;当前仓库支持两种工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Amp CLI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一轮迭代都会启动一个 fresh instance。也就是说，不依赖“同一个会话一直聊下去”，而是依赖这些外部状态来保存记忆：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git 历史&lt;/li&gt;
&lt;li&gt;&lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这点非常关键。很多人让 agent 跑长任务时，最大的痛点不是模型不会写，而是会话越跑越重，最后开始漏上下文、忘要求、反复返工。Ralph 的设计，基本就是冲着这个问题去的。&lt;/p&gt;
&lt;h2 id=&#34;02-它怎么工作&#34;&gt;02 它怎么工作
&lt;/h2&gt;&lt;p&gt;Ralph 的工作流分成三步：&lt;/p&gt;
&lt;h3 id=&#34;1-先写-prd&#34;&gt;1. 先写 PRD
&lt;/h3&gt;&lt;p&gt;README 里建议先用配套的 &lt;code&gt;prd&lt;/code&gt; skill 生成需求文档，把功能拆成比较细的 story。&lt;/p&gt;
&lt;h3 id=&#34;2-再把-prd-转成-prdjson&#34;&gt;2. 再把 PRD 转成 &lt;code&gt;prd.json&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;然后用 &lt;code&gt;ralph&lt;/code&gt; skill，把 Markdown 版 PRD 转成结构化的 &lt;code&gt;prd.json&lt;/code&gt;。这个文件里会保存 user stories，以及每一项是不是已经通过。&lt;/p&gt;
&lt;h3 id=&#34;3-运行循环脚本&#34;&gt;3. 运行循环脚本
&lt;/h3&gt;&lt;p&gt;真正执行的是 &lt;code&gt;ralph.sh&lt;/code&gt;。命令大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh --tool claude &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认是 10 轮。每一轮大致会做这些事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从 &lt;code&gt;branchName&lt;/code&gt; 创建分支&lt;/li&gt;
&lt;li&gt;选择优先级最高、&lt;code&gt;passes: false&lt;/code&gt; 的 story&lt;/li&gt;
&lt;li&gt;只实现这一项&lt;/li&gt;
&lt;li&gt;跑质量检查，比如 typecheck 和 tests&lt;/li&gt;
&lt;li&gt;检查通过后提交代码&lt;/li&gt;
&lt;li&gt;更新 &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;把经验追加到 &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;继续下一轮&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也就是说，Ralph 并不追求“一口气把整件事做完”，而是把任务压缩成很多个能在单个上下文窗口里完成的小闭环。&lt;/p&gt;
&lt;h2 id=&#34;03-ralph-最有意思的地方&#34;&gt;03 Ralph 最有意思的地方
&lt;/h2&gt;&lt;h3 id=&#34;1-每轮都是-fresh-context&#34;&gt;1. 每轮都是 fresh context
&lt;/h3&gt;&lt;p&gt;这是 Ralph 最核心的设计点。README 里强调，每次迭代都是一个新的 AI 实例，跨轮记忆只靠 git、&lt;code&gt;progress.txt&lt;/code&gt; 和 &lt;code&gt;prd.json&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这和很多人平时直接在一个长对话里让 Claude Code 或其他工具连续工作很不一样。后者在任务变大后，很容易被历史消息拖慢，还会逐渐失去焦点。Ralph 则是主动接受“单轮记不住全部”，然后把记忆放到外部文件里。&lt;/p&gt;
&lt;h3 id=&#34;2-强制把任务拆小&#34;&gt;2. 强制把任务拆小
&lt;/h3&gt;&lt;p&gt;仓库文档特别强调，单个 PRD item 必须小到能在一个 context window 里完成。像“加一个筛选器”“改一个 server action”“补一列数据库字段”这种粒度比较合适；而“重构整个 API”“做完整 dashboard”这种就太大了。&lt;/p&gt;
&lt;p&gt;这个约束其实很现实。很多 autonomous agent 跑崩，不是 loop 本身有问题，而是任务切分太粗，让模型一轮里就背了过量目标。&lt;/p&gt;
&lt;h3 id=&#34;3-不是只有代码连经验也要沉淀&#34;&gt;3. 不是只有代码，连经验也要沉淀
&lt;/h3&gt;&lt;p&gt;除了 &lt;code&gt;progress.txt&lt;/code&gt;，README 还特别强调要更新 &lt;code&gt;AGENTS.md&lt;/code&gt;。原因也很实际：未来迭代和未来开发者都会读这些说明，所以每轮发现的模式、坑点、约定，最好都落到项目文档里。&lt;/p&gt;
&lt;p&gt;换句话说，Ralph 不只是让 agent 连续写代码，也想让它连续积累对代码库的工作记忆。&lt;/p&gt;
&lt;h2 id=&#34;04-它适合什么场景&#34;&gt;04 它适合什么场景
&lt;/h2&gt;&lt;p&gt;如果你的任务具备这些特征，Ralph 会比较对路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已经能拆成一组明确的 user stories&lt;/li&gt;
&lt;li&gt;代码库里有比较可靠的反馈回路，比如测试、typecheck、CI&lt;/li&gt;
&lt;li&gt;你希望 agent 持续推进，但不想把所有事压在单个长对话里&lt;/li&gt;
&lt;li&gt;你接受它按迭代方式一点点完成，而不是一次性全做完&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;反过来说，如果你的需求还很模糊，或者任务本身高度依赖来回讨论、频繁改方向，那 Ralph 可能还不是第一选择。它更适合“需求已经整理好，现在需要稳定推进执行”的阶段。&lt;/p&gt;
&lt;h2 id=&#34;05-它和普通-claude-code-用法有什么不同&#34;&gt;05 它和普通 Claude Code 用法有什么不同
&lt;/h2&gt;&lt;p&gt;如果平时直接用 &lt;code&gt;Claude Code&lt;/code&gt;，常见模式是你开一个会话，让它持续读代码、改代码、跑命令。这个方式在中小任务上很好用，但在大任务上容易碰到两个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文越来越长&lt;/li&gt;
&lt;li&gt;中间决策不容易结构化沉淀&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ralph 的做法更像把 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 变成一个“批处理执行器”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任务来源不是临时聊天，而是 &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;每轮只认一个 story&lt;/li&gt;
&lt;li&gt;完成状态写回文件&lt;/li&gt;
&lt;li&gt;经验写进 &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;代码提交进 git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它更像是“给 coding agent 加了一层迭代控制器”，而不是换了一个新的 AI assistant。&lt;/p&gt;
&lt;h2 id=&#34;06-一个值得注意的前提&#34;&gt;06 一个值得注意的前提
&lt;/h2&gt;&lt;p&gt;Ralph 能不能跑顺，关键不在 loop 本身，而在反馈回路够不够好。README 里写得很直白：如果没有 typecheck、tests、CI 这些机制，错误会在后续迭代里不断累积。&lt;/p&gt;
&lt;p&gt;对于前端任务，仓库甚至明确建议把“用浏览器验证”写进 acceptance criteria。因为如果没有实际验证，agent 很容易把“看起来写完了”和“真的可用”混在一起。&lt;/p&gt;
&lt;p&gt;这点很重要。Ralph 不是 magical automation，它更像把你现有的工程纪律放大。如果你的项目本来就有清晰任务拆分和可靠检查，它会更有价值；如果这些基础还没有，loop 只会把混乱重复很多次。&lt;/p&gt;
&lt;h2 id=&#34;07-一句话总结&#34;&gt;07 一句话总结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ralph&lt;/code&gt; 最值得看的地方，不是它写了多少新基础设施，而是它把一个朴素但很有用的思路落成了现成流程：&lt;strong&gt;让 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 每轮只做一个足够小的 story，用 fresh context 保持专注，再靠 &lt;code&gt;git&lt;/code&gt;、&lt;code&gt;prd.json&lt;/code&gt; 和 &lt;code&gt;progress.txt&lt;/code&gt; 维持跨轮连续性。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你已经开始把 coding agent 用到真实项目里，并且正在被“长任务怎么稳定推进”这个问题困住，Ralph 这套方法很值得参考。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/snarktank/ralph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;交互式流程图：&lt;a class=&#34;link&#34; href=&#34;https://snarktank.github.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://snarktank.github.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek V4 Pro 对比 GPT-5.5：前端、写作、代码实测后，差距比想象更大</title>
        <link>https://knightli.com/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/2026/04/25/deepseek-v4-pro-vs-gpt-5-5-frontend-writing-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 这种对比，最近越来越容易引发讨论。因为它已经不是“谁能不能用”的问题，而是：&lt;strong&gt;当任务落到前端、写作、代码这三类高频场景时，谁更适合当主力？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人做这类比较时，习惯先问一句：哪个更强。&lt;br&gt;
但更有价值的问题通常不是这个，而是：&lt;strong&gt;在具体任务里，哪个更稳、哪个更省沟通成本、哪个更容易产出能直接继续推进的结果。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果先给一个简化版结论，可以大致这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要更均衡、产品化体验更完整的综合输出时，很多人还是会先看 &lt;code&gt;GPT-5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要中文语境下高频迭代、成本更敏感、追求响应效率时，&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 会更容易进入候选名单&lt;/li&gt;
&lt;li&gt;真正决定体验的，往往不是模型名字本身，而是任务类型、提示方式和你后续要不要继续改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面按三个最常见的比较场景展开。&lt;/p&gt;
&lt;h2 id=&#34;1-前端任务比的不是会不会写页面而是能不能继续接着改&#34;&gt;1. 前端任务：比的不是“会不会写页面”，而是能不能继续接着改
&lt;/h2&gt;&lt;p&gt;前端任务看起来很适合拿来做模型对比，因为它结果直观：&lt;br&gt;
页面能不能跑、样式好不好看、结构清不清楚，一眼就能看到。&lt;/p&gt;
&lt;p&gt;但真正拉开差距的，往往不是第一版能不能写出来，而是后续这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;结构是不是足够清晰&lt;/li&gt;
&lt;li&gt;组件拆分是否自然&lt;/li&gt;
&lt;li&gt;改一处时会不会连带改坏别的地方&lt;/li&gt;
&lt;li&gt;能不能在多轮指令下继续保持同一套实现思路&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是为什么很多“首轮效果惊艳”的前端演示，放进真实工作流后未必依然占优。&lt;/p&gt;
&lt;p&gt;如果你的任务是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速生成一个可运行的页面原型&lt;/li&gt;
&lt;li&gt;把一个落地页思路先写出来&lt;/li&gt;
&lt;li&gt;按要求补齐样式、按钮、卡片、表单等基础元素&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那两类模型通常都能完成得八九不离十，区别更多体现在输出风格。&lt;/p&gt;
&lt;p&gt;而如果你的任务变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持续多轮改 UI&lt;/li&gt;
&lt;li&gt;一边读现有代码一边接着改&lt;/li&gt;
&lt;li&gt;同时兼顾组件结构、样式一致性和可维护性&lt;/li&gt;
&lt;li&gt;从静态页面逐步推进到真实项目代码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那你更应该观察的就不是“第一轮谁更像样”，而是“谁在第五轮以后还不容易跑偏”。&lt;/p&gt;
&lt;p&gt;所以前端对比真正该看的，不是模型能不能生成页面，而是它能不能在你连续追加约束之后，依旧保持结构稳定、命名一致、修改成本可控。&lt;/p&gt;
&lt;h2 id=&#34;2-写作任务比的不是字多不多而是风格稳不稳重写顺不顺&#34;&gt;2. 写作任务：比的不是字多不多，而是风格稳不稳、重写顺不顺
&lt;/h2&gt;&lt;p&gt;写作是另一类特别容易出现误判的场景。&lt;/p&gt;
&lt;p&gt;因为很多时候，模型第一次输出看起来都不差：&lt;br&gt;
结构完整、段落齐全、语气顺滑，乍看之下很容易觉得“差不多”。&lt;/p&gt;
&lt;p&gt;但只要你把任务往前推一步，差异就会冒出来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能不能准确理解你要的受众&lt;/li&gt;
&lt;li&gt;能不能在同一主题下切换不同口吻&lt;/li&gt;
&lt;li&gt;重写时会不会丢掉原文重点&lt;/li&gt;
&lt;li&gt;压缩、扩写、改标题、换结构时是否稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;写作任务里最怕的不是“写不出来”，而是“看起来写出来了，但你还得重改很多遍”。&lt;/p&gt;
&lt;p&gt;所以在 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 之间，更实用的比较方式通常不是让它们各写一篇，而是连续做这几轮：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先写初稿&lt;/li&gt;
&lt;li&gt;再换一个语气重写&lt;/li&gt;
&lt;li&gt;再压缩成更短版本&lt;/li&gt;
&lt;li&gt;再改成更适合标题党或搜索分发的写法&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果一个模型在这几轮里仍然能保持重点不散、表达不飘、结构不乱，那它在真实写作工作流里的价值才会更高。&lt;/p&gt;
&lt;p&gt;也就是说，写作任务真正比的不是“文采”，而是&lt;strong&gt;改稿能力、服从度和连续协作感&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;3-代码任务真正拉开差距的是长链路稳定性&#34;&gt;3. 代码任务：真正拉开差距的是长链路稳定性
&lt;/h2&gt;&lt;p&gt;代码任务比前端任务更容易暴露模型真实水平，因为它不仅要“输出”，还要“对接现实”。&lt;/p&gt;
&lt;p&gt;你很快就会遇到这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它能不能理解已有项目结构&lt;/li&gt;
&lt;li&gt;能不能同时修改多个文件&lt;/li&gt;
&lt;li&gt;改完以后有没有引入新的问题&lt;/li&gt;
&lt;li&gt;出错时会不会顺着日志继续往下查&lt;/li&gt;
&lt;li&gt;多轮之后还记不记得前面已经做过什么&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务里，用户最在意的通常不是某一段代码漂不漂亮，而是：&lt;strong&gt;能不能帮我持续往前推进，而不是让我来收拾残局。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以比较 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 时，最值得看的往往不是单点题，而是这种更接近真实工作的过程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读一个已有仓库&lt;/li&gt;
&lt;li&gt;找到一个 bug&lt;/li&gt;
&lt;li&gt;改多个相关文件&lt;/li&gt;
&lt;li&gt;根据报错继续修&lt;/li&gt;
&lt;li&gt;最后把结果整理清楚&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要任务进入这种连续推进模式，模型的上下文保持能力、执行习惯、解释质量和返工率，都会比“单轮答题效果”更重要。&lt;/p&gt;
&lt;p&gt;这也是为什么很多用户在代码场景里，最终形成的不是“永远只用一个模型”，而是按任务阶段切换主力。&lt;/p&gt;
&lt;h2 id=&#34;4-真正值得比较的不是输赢而是哪类任务交给谁更划算&#34;&gt;4. 真正值得比较的，不是输赢，而是“哪类任务交给谁更划算”
&lt;/h2&gt;&lt;p&gt;把 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 放在一起时，如果目标只是争一个总冠军，最后往往会得到一个很空的结论。&lt;/p&gt;
&lt;p&gt;因为现实任务不是统一题目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有的是一次性生成&lt;/li&gt;
&lt;li&gt;有的是多轮协作&lt;/li&gt;
&lt;li&gt;有的是中文写作&lt;/li&gt;
&lt;li&gt;有的是工程改动&lt;/li&gt;
&lt;li&gt;有的是强调速度&lt;/li&gt;
&lt;li&gt;有的是强调稳定性&lt;/li&gt;
&lt;li&gt;有的是强调成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更接近真实使用的方法，通常是按任务目标分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想要更完整的综合体验、更成熟的交互和更稳定的通用输出，可以优先试 &lt;code&gt;GPT-5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想要在中文环境里高频试错、快速迭代，并且更关注投入产出比，&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 值得重点放进工作流里&lt;/li&gt;
&lt;li&gt;如果任务本身是长链路、多轮修正、多人协作，那就不要只看第一轮结果，要看五轮以后谁还更稳&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，真正该问的不是“谁绝对更强”，而是：&lt;br&gt;
&lt;strong&gt;前端、写作、代码这三类任务里，哪一个模型更像你当前阶段最顺手的工具。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;5-怎么做一次更像样的模型对比&#34;&gt;5. 怎么做一次更像样的模型对比
&lt;/h2&gt;&lt;p&gt;如果你自己也准备测 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt;，一个更靠谱的做法通常不是只跑一轮，而是这样测：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;给两边同一份初始需求&lt;/li&gt;
&lt;li&gt;保持相同限制条件&lt;/li&gt;
&lt;li&gt;连续追问三到五轮&lt;/li&gt;
&lt;li&gt;记录改动质量、跑偏次数和返工量&lt;/li&gt;
&lt;li&gt;最后再看速度、成本和最终可用度&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样测出来的结果，会比“谁第一轮更惊艳”更接近真实工作。&lt;/p&gt;
&lt;p&gt;尤其在前端、写作、代码这三类任务里，很多时候真正决定体验的不是起跑线，而是&lt;strong&gt;谁能陪你把事情做完&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;6-可以先这样记&#34;&gt;6. 可以先这样记
&lt;/h2&gt;&lt;p&gt;如果只想先记一个够用的版本，可以先这么理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：更像综合型、产品化、默认可用的主流工作台&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;：更像在中文环境和高频试错里更值得纳入日常工作流的竞争者&lt;/li&gt;
&lt;li&gt;真正的比较重点：不是首轮炫技，而是多轮修改之后谁更稳、谁更省事&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以这类对比里，真正重要的从来都不是“谁赢了”，而是：&lt;br&gt;
&lt;strong&gt;你的前端、写作、代码任务，交给谁之后最容易持续推进、最少返工、最能稳定产出。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ChatGPT、Claude、Gemini 怎么分工：日常对话、编程和特殊能力怎么选</title>
        <link>https://knightli.com/2026/04/25/chatgpt-claude-gemini-task-selection/</link>
        <pubDate>Sat, 25 Apr 2026 10:51:19 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/25/chatgpt-claude-gemini-task-selection/</guid>
        <description>&lt;p&gt;现在很多人不是只用一个模型，而是会在 &lt;code&gt;ChatGPT&lt;/code&gt;、&lt;code&gt;Claude&lt;/code&gt; 和 &lt;code&gt;Gemini&lt;/code&gt; 之间来回切换。问题也随之变得很实际：&lt;strong&gt;到底什么任务该交给谁？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这件事之所以容易让人纠结，不是因为三家都不够强，而是因为它们已经强到开始“分工不同”。如果还用“谁更聪明”这种非常笼统的标准去选，反而容易选错。&lt;/p&gt;
&lt;p&gt;如果先说一个简化版结论，可以大致这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常对话和综合型任务，很多人会先想到 &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;命令行编程、长上下文协作、持续推进型任务，&lt;code&gt;Claude&lt;/code&gt; 往往更顺手&lt;/li&gt;
&lt;li&gt;需要依赖 Google 生态、搜索、多模态入口或某些产品级特殊能力时，&lt;code&gt;Gemini&lt;/code&gt; 更有存在感&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面分三块讲。&lt;/p&gt;
&lt;h2 id=&#34;1-日常对话为什么很多人还是先打开-chatgpt&#34;&gt;1. 日常对话：为什么很多人还是先打开 &lt;code&gt;ChatGPT&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;对大多数普通使用场景来说，&lt;code&gt;ChatGPT&lt;/code&gt; 仍然很像“默认入口”。&lt;/p&gt;
&lt;p&gt;这里说的不是某一个 benchmark，而是整体体验：&lt;br&gt;
你临时想问一个问题、整理一个思路、写一段文案、做一份初稿、总结一篇资料，&lt;code&gt;ChatGPT&lt;/code&gt; 通常给人的感觉会比较均衡。&lt;/p&gt;
&lt;p&gt;它的优势往往体现在几个地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回答风格比较稳定&lt;/li&gt;
&lt;li&gt;普通用户上手门槛低&lt;/li&gt;
&lt;li&gt;多数综合型任务不需要太多额外调教&lt;/li&gt;
&lt;li&gt;产品完成度高，适合高频日常使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以如果你的任务是下面这种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;帮我整理一个主题&lt;/li&gt;
&lt;li&gt;把一段想法写成结构化内容&lt;/li&gt;
&lt;li&gt;总结一篇长文&lt;/li&gt;
&lt;li&gt;头脑风暴几个方案&lt;/li&gt;
&lt;li&gt;把表达润色得更清楚&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;ChatGPT&lt;/code&gt; 往往是个很自然的起点。&lt;/p&gt;
&lt;p&gt;这并不代表它在所有专业任务里都一定最强，而是它在“广谱通用”这件事上，通常更像一个默认工作台。&lt;/p&gt;
&lt;h2 id=&#34;2-命令行编程和长任务为什么很多人更偏向-claude&#34;&gt;2. 命令行编程和长任务：为什么很多人更偏向 &lt;code&gt;Claude&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;一旦任务从“聊一聊”切换成“把事情持续做完”，很多人的偏好就会开始转向 &lt;code&gt;Claude&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;尤其是这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;命令行编程&lt;/li&gt;
&lt;li&gt;大项目上下文理解&lt;/li&gt;
&lt;li&gt;多文件协作修改&lt;/li&gt;
&lt;li&gt;长链路调试&lt;/li&gt;
&lt;li&gt;边读代码边推进任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务的关键，往往不是一轮回答有多惊艳，而是模型能不能在更长的任务链里保持稳定。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude&lt;/code&gt; 经常被偏爱的原因，通常不是“它一句话比别人更会说”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对长上下文任务更耐用&lt;/li&gt;
&lt;li&gt;连续读文件、读日志、读规则时体验更稳定&lt;/li&gt;
&lt;li&gt;更适合逐步推进复杂编码任务&lt;/li&gt;
&lt;li&gt;在命令行和 agent 工作流里更常被当成主力模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是在做 &lt;code&gt;vibe coding&lt;/code&gt;、命令行修 bug、项目结构理解、跨多个文件改功能，&lt;code&gt;Claude&lt;/code&gt; 的优势会更容易体现出来。&lt;/p&gt;
&lt;p&gt;简单说，&lt;code&gt;Claude&lt;/code&gt; 比较像那种适合一起“干活”的模型，而不只是适合问一句答一句。&lt;/p&gt;
&lt;h2 id=&#34;3-gemini-的优势往往不在和别人正面拼一切&#34;&gt;3. &lt;code&gt;Gemini&lt;/code&gt; 的优势往往不在“和别人正面拼一切”
&lt;/h2&gt;&lt;p&gt;很多人讨论 &lt;code&gt;Gemini&lt;/code&gt; 时，容易把问题问成：它到底是不是三家里最强。&lt;/p&gt;
&lt;p&gt;但从实际使用体验看，更有用的问题通常不是这个，而是：&lt;strong&gt;它在哪些场景里特别值得单独拿出来用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Gemini&lt;/code&gt; 的价值，往往更容易体现在这些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google 生态结合&lt;/li&gt;
&lt;li&gt;搜索与资料获取&lt;/li&gt;
&lt;li&gt;多模态入口&lt;/li&gt;
&lt;li&gt;某些产品侧功能联动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的工作流本来就和 Google 的工具链很近，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;搜索&lt;/li&gt;
&lt;li&gt;文档&lt;/li&gt;
&lt;li&gt;邮件&lt;/li&gt;
&lt;li&gt;浏览器侧使用&lt;/li&gt;
&lt;li&gt;手机端入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;Gemini&lt;/code&gt; 的实际便利性可能会高于单纯的模型分数对比。&lt;/p&gt;
&lt;p&gt;也就是说，&lt;code&gt;Gemini&lt;/code&gt; 的可用性很多时候来自“它在哪里更顺手接入你的工作流”，而不只是“它单轮回答是不是赢了谁”。&lt;/p&gt;
&lt;h2 id=&#34;4-真正有用的选法不是问谁最强而是问任务类型&#34;&gt;4. 真正有用的选法，不是问谁最强，而是问任务类型
&lt;/h2&gt;&lt;p&gt;把三家模型放在一起比较时，最容易踩的坑就是试图找一个“唯一最强”。&lt;/p&gt;
&lt;p&gt;但现实里的任务差异太大了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有的是一次性问答&lt;/li&gt;
&lt;li&gt;有的是长对话陪跑&lt;/li&gt;
&lt;li&gt;有的是代码工程&lt;/li&gt;
&lt;li&gt;有的是信息检索&lt;/li&gt;
&lt;li&gt;有的是多模态处理&lt;/li&gt;
&lt;li&gt;有的是工具链协作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更有效的选法，通常是按任务类型来分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要一个综合型、日常高频、打开就能用的助手：先看 &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要长上下文、命令行、编程协作、持续推进复杂任务：优先试 &lt;code&gt;Claude&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要借力 Google 生态、搜索、多模态入口或某些产品联动能力：重点看 &lt;code&gt;Gemini&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样分工，比强行争一个总冠军更接近真实使用。&lt;/p&gt;
&lt;h2 id=&#34;5-为什么很多重度用户会同时订三家&#34;&gt;5. 为什么很多重度用户会同时订三家
&lt;/h2&gt;&lt;p&gt;从轻度用户视角看，同时订三家模型服务很容易显得“重复”。&lt;br&gt;
但从重度用户视角看，这更像是在给不同任务配不同工具。&lt;/p&gt;
&lt;p&gt;原因很简单：&lt;br&gt;
如果三家的长处已经开始明显分化，那么同时使用它们，本质上就不是重复付费，而是在减少任务切换成本和试错成本。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常整理和综合问答，用 &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;编程主任务，用 &lt;code&gt;Claude&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;某些检索、多模态或 Google 相关链路，用 &lt;code&gt;Gemini&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种组合方式的逻辑，和设计师同时装多个软件、开发者同时用多个 IDE，并没有本质区别。&lt;/p&gt;
&lt;h2 id=&#34;6-什么时候不要来回切太多模型&#34;&gt;6. 什么时候不要来回切太多模型
&lt;/h2&gt;&lt;p&gt;当然，模型多也不一定总是更好。&lt;/p&gt;
&lt;p&gt;如果你本身还在建立稳定工作流，过早在三个模型之间频繁横跳，反而可能让自己更乱。常见问题包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一个任务来回重复讲三遍&lt;/li&gt;
&lt;li&gt;不同模型给出不同建议，自己更难判断&lt;/li&gt;
&lt;li&gt;上下文断裂，协作成本反而更高&lt;/li&gt;
&lt;li&gt;还没形成自己的使用边界，就先被工具选择拖住&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更稳的方式通常是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先给每个模型一个主场景&lt;/li&gt;
&lt;li&gt;在主场景里连续用一段时间&lt;/li&gt;
&lt;li&gt;再逐步形成自己的分工习惯&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样你会更容易得到真正可复用的经验，而不是永远停留在“今天换这个试试”的阶段。&lt;/p&gt;
&lt;h2 id=&#34;7-可以先这样记住&#34;&gt;7. 可以先这样记住
&lt;/h2&gt;&lt;p&gt;如果只想先记一个够用的版本，可以直接记这张口语化分工表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ChatGPT&lt;/code&gt;：更像通用型默认助手&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Claude&lt;/code&gt;：更像长任务和编程协作主力&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemini&lt;/code&gt;：更像在搜索、多模态和 Google 生态里更有优势的工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是绝对规则，也不是说三者彼此不能替代，而是一个更接近真实使用体验的起点。&lt;/p&gt;
&lt;p&gt;真正重要的不是选出“宇宙最强模型”，而是尽快知道：&lt;br&gt;
&lt;strong&gt;你手上的这类任务，用哪个模型最省时间、最省心、最容易做出结果。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>大模型 API 为什么按 Token 收费：一文讲清输入、输出和上下文成本</title>
        <link>https://knightli.com/2026/04/25/llm-token-pricing-principles/</link>
        <pubDate>Sat, 25 Apr 2026 08:44:32 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/25/llm-token-pricing-principles/</guid>
        <description>&lt;p&gt;大模型 API 的计费方式里，最容易让人困惑的一点，就是为什么几乎所有平台最后都会落到 &lt;code&gt;token&lt;/code&gt; 这个单位上：&lt;strong&gt;大模型为什么按 token 收费，而且不同 token 还会有不同价格。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人刚接触模型 API 时，最容易困惑的不是模型能力，而是账单。明明只问了几个问题，为什么费用会涨得这么快？为什么输入便宜、输出更贵？为什么上下文一长，成本就开始明显失控？&lt;/p&gt;
&lt;p&gt;如果把这件事讲简单一点，可以先记住一句话：&lt;strong&gt;模型收费，买的不是“一次回答”，而是整段推理过程中消耗的计算与带宽资源。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-什么是-token&#34;&gt;1. 什么是 token
&lt;/h2&gt;&lt;p&gt;在大模型计费里，&lt;code&gt;token&lt;/code&gt; 不是“字数”也不是“单词数”，而是模型处理文本时使用的切分单位。&lt;/p&gt;
&lt;p&gt;它可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个汉字&lt;/li&gt;
&lt;li&gt;一个英文单词的一部分&lt;/li&gt;
&lt;li&gt;一个标点符号&lt;/li&gt;
&lt;li&gt;一小段常见词组合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 API 平台通常不会按“每句话”或“每次请求”收费，而是按模型实际读入和生成的 token 数量收费。&lt;br&gt;
这比按请求次数计费更合理，因为同样是一次请求，可能只输入 20 个字，也可能塞进去 20 万 token 的上下文，两者消耗完全不是一个量级。&lt;/p&gt;
&lt;h2 id=&#34;2-为什么输入和输出要分开定价&#34;&gt;2. 为什么输入和输出要分开定价
&lt;/h2&gt;&lt;p&gt;现在大多数模型 API，都会把价格拆成两部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入 token 价格&lt;/li&gt;
&lt;li&gt;输出 token 价格&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而且常见情况是：&lt;strong&gt;输出 token 比输入 token 更贵。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原因并不难理解。&lt;/p&gt;
&lt;p&gt;模型处理输入时，本质上是在“读”和“编码”已有内容；但生成输出时，它需要一步一步预测下一个 token，再继续预测下一个 token。这个过程不只是读取，而是持续进行推理和采样，所以通常更耗算力。&lt;/p&gt;
&lt;p&gt;你可以把它粗略理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入：像把材料递给模型&lt;/li&gt;
&lt;li&gt;输出：像让模型现场写答案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;“现场写”的计算成本，通常比“把材料读一遍”更高，所以输出价格更贵是很常见的设计。&lt;/p&gt;
&lt;h2 id=&#34;3-为什么上下文越长费用越容易失控&#34;&gt;3. 为什么上下文越长，费用越容易失控
&lt;/h2&gt;&lt;p&gt;很多人以为自己只是在“多贴一点背景资料”，但从模型账单的角度看，这件事的影响往往比想象中大。&lt;/p&gt;
&lt;p&gt;原因在于：&lt;strong&gt;模型每次调用时，通常都要重新处理当前请求里带进去的整段上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;也就是说，如果你当前请求里包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统提示词&lt;/li&gt;
&lt;li&gt;历史对话&lt;/li&gt;
&lt;li&gt;工具返回结果&lt;/li&gt;
&lt;li&gt;长文档片段&lt;/li&gt;
&lt;li&gt;代码文件内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些内容都会一起进入输入 token 计费。&lt;/p&gt;
&lt;p&gt;所以真正让账单变大的，往往不是最后那一句提问，而是它前面拖着的一大串上下文。&lt;br&gt;
当对话轮数增加、工具调用变多、历史消息不断回灌时，token 成本就会被一轮轮放大。&lt;/p&gt;
&lt;h2 id=&#34;4-工具调用为什么特别容易涨-token&#34;&gt;4. 工具调用为什么特别容易涨 token
&lt;/h2&gt;&lt;p&gt;在 Agent、代码助手、工作流自动化这类场景里，token 消耗通常比普通聊天高得多。&lt;/p&gt;
&lt;p&gt;问题不只是“模型回答了一段话”，而是整个流程里会不断出现这些内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读文件&lt;/li&gt;
&lt;li&gt;看日志&lt;/li&gt;
&lt;li&gt;调接口&lt;/li&gt;
&lt;li&gt;返回 JSON&lt;/li&gt;
&lt;li&gt;执行工具结果再回填给模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一次工具调用的结果，只要被重新塞回下一轮上下文，就会继续变成新的输入 token。&lt;/p&gt;
&lt;p&gt;这就是为什么很多开发者会发现：&lt;br&gt;
&lt;strong&gt;不是模型本身单价特别离谱，而是工作流把 token 账单一层层叠上去了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;例如一个编码 Agent 连续做下面这些事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;读取项目结构&lt;/li&gt;
&lt;li&gt;打开几个源码文件&lt;/li&gt;
&lt;li&gt;跑一次测试&lt;/li&gt;
&lt;li&gt;把报错日志喂回模型&lt;/li&gt;
&lt;li&gt;再读取更多相关文件&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;每一步都可能让后续请求背着更长的上下文继续跑。这样即使单价不变，总账单也会很快增长。&lt;/p&gt;
&lt;h2 id=&#34;5-为什么同样是模型价格会差很多&#34;&gt;5. 为什么同样是模型，价格会差很多
&lt;/h2&gt;&lt;p&gt;不同模型的 token 价格差异，背后通常不只是“厂商想卖贵一点”，而是和几个因素直接相关：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型规模&lt;/li&gt;
&lt;li&gt;推理效率&lt;/li&gt;
&lt;li&gt;上下文长度&lt;/li&gt;
&lt;li&gt;部署成本&lt;/li&gt;
&lt;li&gt;目标市场&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型越大、激活参数越多、推理链路越复杂，单次生成一个 token 的成本通常就越高。&lt;br&gt;
如果模型还支持超长上下文、复杂推理、工具调用优化，那它的基础设施压力也会进一步增加。&lt;/p&gt;
&lt;p&gt;所以定价本质上是在覆盖几类成本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU / 加速卡资源&lt;/li&gt;
&lt;li&gt;显存占用&lt;/li&gt;
&lt;li&gt;推理延迟&lt;/li&gt;
&lt;li&gt;网络与服务稳定性&lt;/li&gt;
&lt;li&gt;峰值并发能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;便宜模型不一定差，贵模型也不一定适合所有场景。很多时候价格差，反映的是“这类能力大概值多少基础设施成本”。&lt;/p&gt;
&lt;h2 id=&#34;6-为什么缓存输入会更便宜&#34;&gt;6. 为什么缓存输入会更便宜
&lt;/h2&gt;&lt;p&gt;不少模型平台现在会提供：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cached input&lt;/li&gt;
&lt;li&gt;prompt caching&lt;/li&gt;
&lt;li&gt;prefix caching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类能力的共同思路是：如果一大段输入已经算过，不要每次都从头按原价重算。&lt;/p&gt;
&lt;p&gt;比如一个固定 system prompt、固定工具说明、固定长文档前缀，如果每轮都完全重复发送，平台就有机会把其中一部分计算缓存下来。这样同样是输入 token，缓存命中的部分就可以按更低价格计费。&lt;/p&gt;
&lt;p&gt;这也解释了为什么很多 API 价格页会出现三档甚至更多价格：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通输入&lt;/li&gt;
&lt;li&gt;缓存输入&lt;/li&gt;
&lt;li&gt;输出&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们反映的不是文字内容不同，而是底层计算是否可以复用。&lt;/p&gt;
&lt;h2 id=&#34;7-便宜-token为什么不等于总成本更低&#34;&gt;7. “便宜 token”为什么不等于“总成本更低”
&lt;/h2&gt;&lt;p&gt;很多人看到某个模型“每百万 token 超便宜”，第一反应是总成本一定更低。实际上不一定。&lt;/p&gt;
&lt;p&gt;因为总账单大致等于：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;token 单价 × 实际消耗量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而实际消耗量又会被很多因素放大：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提示词写得太长&lt;/li&gt;
&lt;li&gt;历史消息不清理&lt;/li&gt;
&lt;li&gt;工具结果回填过多&lt;/li&gt;
&lt;li&gt;输出太啰嗦&lt;/li&gt;
&lt;li&gt;一个任务反复重试&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以真正决定账单的，通常不是单价一个变量，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型单价&lt;/li&gt;
&lt;li&gt;每轮输入长度&lt;/li&gt;
&lt;li&gt;每轮输出长度&lt;/li&gt;
&lt;li&gt;调用次数&lt;/li&gt;
&lt;li&gt;工作流设计&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是为什么“低单价模型”在某些 Agent 任务里，最后总费用仍然可能不低。因为它可能需要更多轮交互、更多补充上下文、更多失败重试。&lt;/p&gt;
&lt;h2 id=&#34;8-开发者该怎么估算-token-成本&#34;&gt;8. 开发者该怎么估算 token 成本
&lt;/h2&gt;&lt;p&gt;如果你想在项目里更稳地控制预算，可以先用一个很朴素的估算方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;统计平均每次请求的输入 token&lt;/li&gt;
&lt;li&gt;统计平均每次请求的输出 token&lt;/li&gt;
&lt;li&gt;估算一个任务会调用多少轮&lt;/li&gt;
&lt;li&gt;再乘上对应模型单价&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;举个思路上的例子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每轮输入 &lt;code&gt;8k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;每轮输出 &lt;code&gt;1k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;一个任务跑 &lt;code&gt;10&lt;/code&gt; 轮&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那它真正消耗的就不是“一次问答”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入约 &lt;code&gt;80k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;输出约 &lt;code&gt;10k tokens&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果中途还有日志、工具结果、文件内容不断追加，总量还会继续上升。&lt;/p&gt;
&lt;p&gt;所以做预算时，最好不要只看单轮，而要看&lt;strong&gt;一个完整任务闭环&lt;/strong&gt;到底会吃掉多少 token。&lt;/p&gt;
&lt;h2 id=&#34;9-怎么实际控制账单&#34;&gt;9. 怎么实际控制账单
&lt;/h2&gt;&lt;p&gt;如果你已经在用 API 或 Agent，下面这些做法通常最有效：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;缩短 system prompt，避免重复废话&lt;/li&gt;
&lt;li&gt;定期裁剪历史消息&lt;/li&gt;
&lt;li&gt;工具返回结果只保留必要字段&lt;/li&gt;
&lt;li&gt;长文档先检索，再喂局部片段&lt;/li&gt;
&lt;li&gt;控制输出长度，避免模型无上限展开&lt;/li&gt;
&lt;li&gt;对高价值任务用贵模型，低价值任务用便宜模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多时候，省钱最有效的方式不是一味换更便宜的模型，而是先把工作流里无意义的 token 消耗砍掉。&lt;/p&gt;
&lt;h2 id=&#34;10-这件事真正该怎么理解&#34;&gt;10. 这件事真正该怎么理解
&lt;/h2&gt;&lt;p&gt;大模型 token 定价，说到底是在给“模型读了多少、想了多少、写了多少”计费。&lt;/p&gt;
&lt;p&gt;它不是传统软件那种按账号、按次数、按包月就能完全描述的资源模型，因为模型调用本身就是一个动态计算过程。你塞进去的上下文、拉起的工具、要求的输出长度，都会直接影响成本。&lt;/p&gt;
&lt;p&gt;所以理解 token 定价，最重要的不是背价格表，而是先建立一个直觉：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长上下文会涨输入成本&lt;/li&gt;
&lt;li&gt;长输出会涨生成成本&lt;/li&gt;
&lt;li&gt;工具链会放大总 token&lt;/li&gt;
&lt;li&gt;缓存和工作流设计会明显影响账单&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要把这几个点想清楚，大多数模型 API 的价格结构其实都不难理解。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-V4 Preview 发布：1M 上下文、双模型与 API 切换提醒</title>
        <link>https://knightli.com/2026/04/24/deepseek-v4-preview-release/</link>
        <pubDate>Fri, 24 Apr 2026 22:39:46 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/24/deepseek-v4-preview-release/</guid>
        <description>&lt;p&gt;DeepSeek 在 &lt;code&gt;2026-04-24&lt;/code&gt; 发布了 &lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek V4 Preview Release&lt;/a&gt;。从官方新闻页来看，这次更新的重点非常集中：&lt;code&gt;1M context&lt;/code&gt;、&lt;code&gt;V4-Pro&lt;/code&gt; 与 &lt;code&gt;V4-Flash&lt;/code&gt; 双模型、对 Agent 场景的专门优化，以及 API 侧的模型切换。&lt;/p&gt;
&lt;p&gt;如果只看一句话，这次发布的核心信号是：DeepSeek 不只是继续做更强的模型，而是在把超长上下文和 Agent 能力一起往“可直接上线使用”的方向推进。&lt;/p&gt;
&lt;h2 id=&#34;1-这次一共发布了什么&#34;&gt;1. 这次一共发布了什么
&lt;/h2&gt;&lt;p&gt;官方页面里，&lt;code&gt;DeepSeek-V4 Preview&lt;/code&gt; 主要包含两条产品线：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对应的官方描述也很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;：&lt;code&gt;1.6T total / 49B active params&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;：&lt;code&gt;284B total / 13B active params&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从命名就能看出来，这次不是单模型升级，而是把高性能版本和更高性价比版本同时推了出来。&lt;/p&gt;
&lt;p&gt;其中 &lt;code&gt;V4-Pro&lt;/code&gt; 更强调上限，官方说它的表现已经可以和全球顶级闭源模型竞争；&lt;code&gt;V4-Flash&lt;/code&gt; 则更强调速度、效率和成本，更适合对响应速度和 API 成本更敏感的场景。&lt;/p&gt;
&lt;h2 id=&#34;2-1m-context-是这次最突出的卖点&#34;&gt;2. &lt;code&gt;1M context&lt;/code&gt; 是这次最突出的卖点
&lt;/h2&gt;&lt;p&gt;官方页面最醒目的表述之一，就是：&lt;strong&gt;“Welcome to the era of cost-effective 1M context length.”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DeepSeek 这次不只是说“支持长上下文”，而是明确把 &lt;code&gt;1M context&lt;/code&gt; 当成这代模型的默认能力来讲。页面里也写得很清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1M context&lt;/code&gt; 已经成为官方 DeepSeek 服务的默认标准&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4-Pro&lt;/code&gt; 和 &lt;code&gt;V4-Flash&lt;/code&gt; 都支持 &lt;code&gt;1M context&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这件事的意义不只是“能塞更多 token”。它更直接影响下面这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长代码仓库理解&lt;/li&gt;
&lt;li&gt;长文档问答和资料整合&lt;/li&gt;
&lt;li&gt;多轮 Agent 工作流&lt;/li&gt;
&lt;li&gt;跨多文件、多工具、多阶段的复杂任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果上下文窗口足够大，模型就更不容易因为中途丢上下文而反复回读材料，这对 Agent 编码和复杂知识工作会特别重要。&lt;/p&gt;
&lt;h2 id=&#34;3-v4-pro-主要在强调什么&#34;&gt;3. &lt;code&gt;V4-Pro&lt;/code&gt; 主要在强调什么
&lt;/h2&gt;&lt;p&gt;从官方页的措辞看，&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt; 重点强调三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agentic Coding 能力&lt;/li&gt;
&lt;li&gt;世界知识&lt;/li&gt;
&lt;li&gt;推理能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;页面里提到，&lt;code&gt;V4-Pro&lt;/code&gt; 在 Agentic Coding benchmark 上达到开源 SOTA；在世界知识方面领先当前开源模型，仅落后于 &lt;code&gt;Gemini-3.1-Pro&lt;/code&gt;；在数学、&lt;code&gt;STEM&lt;/code&gt; 和编码能力上超过当前开源模型，并且可以和顶级闭源模型竞争。&lt;/p&gt;
&lt;p&gt;换句话说，&lt;code&gt;V4-Pro&lt;/code&gt; 的定位并不是单纯回答问题，而是更偏向高难度推理、复杂编码和长任务执行。&lt;/p&gt;
&lt;h2 id=&#34;4-v4-flash-并不是简单的缩水版&#34;&gt;4. &lt;code&gt;V4-Flash&lt;/code&gt; 并不是简单的缩水版
&lt;/h2&gt;&lt;p&gt;另一个值得注意的点是，官方没有把 &lt;code&gt;V4-Flash&lt;/code&gt; 包装成“低配模型”，而是强调它在很多实际任务里已经足够强。&lt;/p&gt;
&lt;p&gt;按照新闻页给出的说法，&lt;code&gt;V4-Flash&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;推理能力已经很接近 &lt;code&gt;V4-Pro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在简单 Agent 任务上与 &lt;code&gt;V4-Pro&lt;/code&gt; 表现相当&lt;/li&gt;
&lt;li&gt;参数规模更小，响应更快，API 定价更便宜&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着 DeepSeek 这次给出的并不是“一个旗舰、一个入门”的非常割裂的组合，而更像是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4-Pro&lt;/code&gt;：追求更高性能和更强上限&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4-Flash&lt;/code&gt;：追求更低延迟和更好成本效率&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于开发者来说，这样的组合会更实用，因为很多线上任务真正需要的不是“理论最强”，而是“够强、够快、够省”。&lt;/p&gt;
&lt;h2 id=&#34;5-官方特别强调了-agent-优化&#34;&gt;5. 官方特别强调了 Agent 优化
&lt;/h2&gt;&lt;p&gt;这次发布页里还有一个很明确的方向：DeepSeek 在主动把 &lt;code&gt;V4&lt;/code&gt; 往 Agent 场景上推。&lt;/p&gt;
&lt;p&gt;官方页面提到，&lt;code&gt;DeepSeek-V4&lt;/code&gt; 已经和一些主流 AI Agent 深度集成，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenClaw&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenCode&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同时 DeepSeek 也提到，&lt;code&gt;V4&lt;/code&gt; 已经在内部 agentic coding 场景中使用。&lt;/p&gt;
&lt;p&gt;这说明它想覆盖的，不再只是聊天或普通补全，而是更长链路的工作方式：读代码、理解结构、调用工具、生成结果，再把整条流程串起来。&lt;/p&gt;
&lt;p&gt;如果你最近正好在关注 coding agent，这个信号值得留意。因为它意味着模型厂商已经不再只拼 benchmark，而是在拼“能不能真正接进工作流”。&lt;/p&gt;
&lt;h2 id=&#34;6-底层结构创新在为长上下文服务&#34;&gt;6. 底层结构创新在为长上下文服务
&lt;/h2&gt;&lt;p&gt;在技术描述上，官方页把这次的结构创新总结为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;token-wise compression&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DSA (DeepSeek Sparse Attention)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;页面给出的方向非常明确：目标是把长上下文做得更便宜、更高效，尽量降低计算和显存成本。&lt;/p&gt;
&lt;p&gt;虽然新闻页没有展开完整技术细节，但这至少说明 DeepSeek 这次不是单纯靠“更大算力硬堆更长窗口”，而是在结构层面针对长上下文效率做了专门优化。&lt;/p&gt;
&lt;p&gt;对实际使用者来说，这通常比单纯“窗口数字变大”更重要，因为真正决定可用性的，不只是能不能开到 &lt;code&gt;1M&lt;/code&gt;，还包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;速度是否还能接受&lt;/li&gt;
&lt;li&gt;成本是否还能接受&lt;/li&gt;
&lt;li&gt;长上下文任务是否真的稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-api-已经可用但要注意模型切换&#34;&gt;7. API 已经可用，但要注意模型切换
&lt;/h2&gt;&lt;p&gt;官方页面明确写到，这次 API 当天就已经可用。&lt;/p&gt;
&lt;p&gt;接入方式也比较简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;base_url&lt;/code&gt; 保持不变&lt;/li&gt;
&lt;li&gt;把模型名切换为 &lt;code&gt;deepseek-v4-pro&lt;/code&gt; 或 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同时页面说明，这两个模型都支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1M context&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Thinking / Non-Thinking&lt;/code&gt; 双模式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenAI ChatCompletions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Anthropic APIs&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着如果你原本已经接了 DeepSeek API，升级门槛并不高，主要是模型名切换和能力验证。&lt;/p&gt;
&lt;h2 id=&#34;8-旧模型的退役时间也写得很明确&#34;&gt;8. 旧模型的退役时间也写得很明确
&lt;/h2&gt;&lt;p&gt;对开发者来说，这次新闻页里最不能忽略的信息之一，其实是旧模型退役提醒。&lt;/p&gt;
&lt;p&gt;官方写明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;deepseek-chat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deepseek-reasoner&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;会在 &lt;strong&gt;2026 年 7 月 24 日 15:59（UTC）&lt;/strong&gt; 后完全退役并不可访问。&lt;/p&gt;
&lt;p&gt;页面还说明，当前这两个模型实际上已经路由到 &lt;code&gt;deepseek-v4-flash&lt;/code&gt; 的非思考 / 思考模式。&lt;/p&gt;
&lt;p&gt;这意味着如果你的项目里还直接写着 &lt;code&gt;deepseek-chat&lt;/code&gt; 或 &lt;code&gt;deepseek-reasoner&lt;/code&gt;，现在就应该开始安排迁移，而不要拖到正式下线前再处理。&lt;/p&gt;
&lt;h2 id=&#34;9-这次发布值得怎么理解&#34;&gt;9. 这次发布值得怎么理解
&lt;/h2&gt;&lt;p&gt;如果把这次更新浓缩成几个重点，大概可以这样看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DeepSeek 开始把 &lt;code&gt;1M context&lt;/code&gt; 从“高配能力”变成默认标准&lt;/li&gt;
&lt;li&gt;双模型路线更清晰：一个冲性能上限，一个冲速度和性价比&lt;/li&gt;
&lt;li&gt;Agent 能力已经被放到很核心的位置&lt;/li&gt;
&lt;li&gt;API 升级路径相对直接，但旧模型退役时间需要尽快关注&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对普通使用者来说，最直观的变化可能是：长文档、长代码、长流程任务会更容易放进一次上下文里。&lt;br&gt;
对开发者来说，更重要的是：如果你已经在做 Agent、代码助手、资料整理、复杂工作流，这一代模型显然就是朝这些场景设计的。&lt;/p&gt;
&lt;p&gt;DeepSeek 这次发布，不只是一次常规模型更新，更像是在明确它下一阶段的产品方向：&lt;strong&gt;超长上下文 + Agent 优化 + 更实际的 API 可用性。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;DeepSeek 官方新闻页：&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://api-docs.deepseek.com/news/news260424&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tech Report：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro/blob/main/DeepSeek_V4.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro/blob/main/DeepSeek_V4.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open Weights：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/deepseek-ai/deepseek-v4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/collections/deepseek-ai/deepseek-v4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>解决 Ollama 使用 CPU 而不使用 GPU 运算的问题</title>
        <link>https://knightli.com/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/2026/04/24/fix-ollama-using-cpu-instead-of-gpu/</guid>
        <description>&lt;p&gt;本地跑大模型时，最让人困惑的一类问题就是：机器明明有显卡，&lt;code&gt;Ollama&lt;/code&gt; 却还是主要吃 &lt;code&gt;CPU&lt;/code&gt;，速度也慢得离谱。&lt;/p&gt;
&lt;p&gt;先说结论，这类问题通常不是单一原因。最常见的几类分别是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; 根本没有识别到可用 GPU&lt;/li&gt;
&lt;li&gt;驱动、&lt;code&gt;ROCm&lt;/code&gt; 或 &lt;code&gt;CUDA&lt;/code&gt; 环境没装对&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; 服务启动时没有继承正确环境变量&lt;/li&gt;
&lt;li&gt;模型太大，实际已经退回到 &lt;code&gt;CPU&lt;/code&gt; 或 &lt;code&gt;CPU/GPU&lt;/code&gt; 混合加载&lt;/li&gt;
&lt;li&gt;AMD 平台存在额外兼容性问题，比如 &lt;code&gt;ROCm&lt;/code&gt; 版本、&lt;code&gt;gfx&lt;/code&gt; 代号或设备可见性设置不对&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面按最省时间的顺序排查。&lt;/p&gt;
&lt;h2 id=&#34;1-先确认是不是真的没用-gpu&#34;&gt;1. 先确认是不是“真的没用 GPU”
&lt;/h2&gt;&lt;p&gt;最直接的方法是看：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重点看 &lt;code&gt;PROCESSOR&lt;/code&gt; 一列。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100% GPU&lt;/code&gt;：说明模型完整跑在显卡上&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;：说明完全没用上显卡&lt;/li&gt;
&lt;li&gt;&lt;code&gt;48%/52% CPU/GPU&lt;/code&gt; 这类结果：说明模型部分进显存、部分落到系统内存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你看到的是 &lt;code&gt;100% CPU&lt;/code&gt;，后面就该重点查环境和服务配置。&lt;br&gt;
如果看到的是混合加载，那不一定是“显卡没生效”，更可能是显存不够。&lt;/p&gt;
&lt;h2 id=&#34;2-先排除最常见的误区模型装不进显存&#34;&gt;2. 先排除最常见的误区：模型装不进显存
&lt;/h2&gt;&lt;p&gt;很多人以为只要装了 GPU，&lt;code&gt;Ollama&lt;/code&gt; 就一定会全显卡推理。实际上不是。&lt;/p&gt;
&lt;p&gt;如果模型太大、上下文太长，或者机器上已经有别的模型占着显存，&lt;code&gt;Ollama&lt;/code&gt; 很可能会退回到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部分 GPU + 部分 CPU&lt;/li&gt;
&lt;li&gt;直接 &lt;code&gt;100% CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这时候可以先做两个最简单的验证：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;换一个更小的模型测试&lt;br&gt;
比如先用 &lt;code&gt;4B&lt;/code&gt;、&lt;code&gt;7B&lt;/code&gt; 这类小模型，而不是一上来就跑更大的参数量。&lt;/li&gt;
&lt;li&gt;卸载其他已加载模型后再试&lt;br&gt;
先看 &lt;code&gt;ollama ps&lt;/code&gt;，确认没有别的模型占着显存。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果小模型能上 GPU，大模型不行，问题往往就不在驱动，而在显存容量。&lt;/p&gt;
&lt;h2 id=&#34;3-检查显卡驱动和底层环境是不是可用&#34;&gt;3. 检查显卡驱动和底层环境是不是可用
&lt;/h2&gt;&lt;p&gt;如果连小模型都只能跑 &lt;code&gt;CPU&lt;/code&gt;，下一步就该看底层环境。&lt;/p&gt;
&lt;h3 id=&#34;nvidia-方向&#34;&gt;NVIDIA 方向
&lt;/h3&gt;&lt;p&gt;先确认驱动正常，系统能看到显卡。常见检查方式包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果这里都报错，&lt;code&gt;Ollama&lt;/code&gt; 基本不可能正常使用 GPU。&lt;/p&gt;
&lt;h3 id=&#34;amd--rocm-方向&#34;&gt;AMD / ROCm 方向
&lt;/h3&gt;&lt;p&gt;如果你是 &lt;code&gt;AMD GPU&lt;/code&gt;，尤其是 &lt;code&gt;ROCm&lt;/code&gt; 环境，重点先看：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rocminfo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rocm-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果这些工具都不能正常列出设备，说明问题还在 &lt;code&gt;Ollama&lt;/code&gt; 之前，先不要继续折腾应用层。&lt;/p&gt;
&lt;p&gt;对 AMD 来说，最常见的问题不是“有没有装驱动”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 版本和系统版本不匹配&lt;/li&gt;
&lt;li&gt;当前 GPU 架构支持不完整&lt;/li&gt;
&lt;li&gt;设备虽然存在，但运行环境没有正确暴露给 &lt;code&gt;Ollama&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-重启-ollama-服务不要只重开终端&#34;&gt;4. 重启 Ollama 服务，不要只重开终端
&lt;/h2&gt;&lt;p&gt;这是非常高频的坑。&lt;/p&gt;
&lt;p&gt;很多人装完驱动、改完环境变量、补完 &lt;code&gt;ROCm&lt;/code&gt; 之后，只是重新开了一个终端，然后直接继续 &lt;code&gt;ollama run&lt;/code&gt;。但如果 &lt;code&gt;Ollama&lt;/code&gt; 是以后台服务方式运行，它很可能还在用旧环境。&lt;/p&gt;
&lt;p&gt;所以更稳的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完整重启 &lt;code&gt;Ollama&lt;/code&gt; 服务&lt;/li&gt;
&lt;li&gt;必要时直接重启系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是在 Linux 上以服务方式运行，通常要确认服务进程已经重新拉起，而不是沿用之前的旧进程。&lt;/p&gt;
&lt;h2 id=&#34;5-检查服务环境变量有没有真正传进去&#34;&gt;5. 检查服务环境变量有没有真正传进去
&lt;/h2&gt;&lt;p&gt;这一步在 &lt;code&gt;AMD ROCm&lt;/code&gt; 环境尤其重要。&lt;/p&gt;
&lt;p&gt;有些机器在终端里手动执行命令没问题，但 &lt;code&gt;Ollama&lt;/code&gt; 服务还是只跑 &lt;code&gt;CPU&lt;/code&gt;，原因是服务进程没有拿到你在 shell 里设置的变量。&lt;/p&gt;
&lt;p&gt;常见需要关注的变量包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ROCR_VISIBLE_DEVICES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HSA_OVERRIDE_GFX_VERSION
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; 用来限制或指定 &lt;code&gt;ROCm&lt;/code&gt; 能看到哪些 GPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; 常见于某些 AMD 平台兼容性处理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是在当前终端里临时 &lt;code&gt;export&lt;/code&gt; 了变量，但 &lt;code&gt;Ollama&lt;/code&gt; 是 systemd、桌面后台服务或其他守护进程启动的，这些变量未必会生效。&lt;/p&gt;
&lt;p&gt;也就是说，终端里“看起来已经设置好了”，不代表 &lt;code&gt;Ollama&lt;/code&gt; 真的拿到了。&lt;/p&gt;
&lt;h2 id=&#34;6-amd-平台重点看-rocm-兼容性&#34;&gt;6. AMD 平台重点看 ROCm 兼容性
&lt;/h2&gt;&lt;p&gt;从公开页面信息看，这个问题对应的视频主题本身就落在 &lt;code&gt;AMD Max+ 395&lt;/code&gt;、&lt;code&gt;strix halo&lt;/code&gt;、&lt;code&gt;AMD ROCm&lt;/code&gt; 这条线上。&lt;br&gt;
这类环境里，&lt;code&gt;Ollama&lt;/code&gt; 不走 GPU，往往比 NVIDIA 平台更依赖版本匹配。&lt;/p&gt;
&lt;p&gt;可以优先排查下面几项：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 版本是否适合当前系统和当前显卡&lt;/li&gt;
&lt;li&gt;当前 GPU 是否属于 &lt;code&gt;ROCm&lt;/code&gt; 支持较好的架构范围&lt;/li&gt;
&lt;li&gt;是否需要补 &lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;是否是旧版 &lt;code&gt;Ollama&lt;/code&gt; 或旧版底层推理库导致兼容问题&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你已经确认 &lt;code&gt;rocminfo&lt;/code&gt; 正常、GPU 也能被系统识别，但 &lt;code&gt;Ollama&lt;/code&gt; 仍然只跑 &lt;code&gt;CPU&lt;/code&gt;，那大概率要回到版本组合上重新检查，而不是继续盲目调模型参数。&lt;/p&gt;
&lt;h2 id=&#34;7-dockerwsl-或远程环境要额外检查设备映射&#34;&gt;7. Docker、WSL 或远程环境要额外检查设备映射
&lt;/h2&gt;&lt;p&gt;如果你不是直接在裸机跑，而是在下面这些环境里运行：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;WSL&lt;/li&gt;
&lt;li&gt;远程容器&lt;/li&gt;
&lt;li&gt;虚拟化环境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那还要多看一层：GPU 设备有没有真正暴露进去。&lt;/p&gt;
&lt;p&gt;典型现象是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宿主机能看到 GPU&lt;/li&gt;
&lt;li&gt;容器里 &lt;code&gt;Ollama&lt;/code&gt; 却只能跑 &lt;code&gt;CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这时要先确认不是 &lt;code&gt;Ollama&lt;/code&gt; 本身的问题，而是容器或子系统根本没拿到 GPU 访问权限。&lt;/p&gt;
&lt;h2 id=&#34;8-最后再看日志而不是一开始就瞎猜&#34;&gt;8. 最后再看日志，而不是一开始就瞎猜
&lt;/h2&gt;&lt;p&gt;如果前面都查过了，最有效的做法不是继续反复重装，而是直接看 &lt;code&gt;Ollama&lt;/code&gt; 启动日志和运行日志。&lt;/p&gt;
&lt;p&gt;重点看两类信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有没有识别到 GPU&lt;/li&gt;
&lt;li&gt;有没有出现驱动、库加载、设备初始化失败之类的报错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要日志里明确出现类似“未找到兼容 GPU”或“初始化 ROCm/CUDA 失败”，排查方向就会立刻清晰很多。&lt;/p&gt;
&lt;h2 id=&#34;排查顺序&#34;&gt;排查顺序
&lt;/h2&gt;&lt;p&gt;如果你只想记最短路径，可以按这个顺序来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ollama ps&lt;/code&gt; 看现在到底是 &lt;code&gt;GPU&lt;/code&gt;、&lt;code&gt;CPU&lt;/code&gt; 还是混合加载&lt;/li&gt;
&lt;li&gt;换一个更小的模型，排除显存不够&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;nvidia-smi&lt;/code&gt;、&lt;code&gt;rocminfo&lt;/code&gt;、&lt;code&gt;rocm-smi&lt;/code&gt; 先确认底层环境正常&lt;/li&gt;
&lt;li&gt;完整重启 &lt;code&gt;Ollama&lt;/code&gt; 服务&lt;/li&gt;
&lt;li&gt;检查服务环境变量，尤其是 AMD 的 &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt;、&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;如果是 Docker / WSL，再检查设备映射&lt;/li&gt;
&lt;li&gt;最后看日志定位具体报错&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>NVIDIA nvbandwidth 是什么：GPU 带宽测试工具怎么用</title>
        <link>https://knightli.com/2026/04/24/nvidia-nvbandwidth-guide/</link>
        <pubDate>Fri, 24 Apr 2026 14:41:35 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/24/nvidia-nvbandwidth-guide/</guid>
        <description>&lt;p&gt;如果你最近在排查多张 &lt;code&gt;NVIDIA GPU&lt;/code&gt; 之间的互联性能，或者想确认 &lt;code&gt;PCIe&lt;/code&gt;、&lt;code&gt;NVLink&lt;/code&gt;、主机内存到显存之间的实际带宽，&lt;code&gt;NVIDIA/nvbandwidth&lt;/code&gt; 是一个很值得知道的小工具。&lt;/p&gt;
&lt;p&gt;它不是通用跑分软件，也不是大模型框架里的隐藏命令，而是 NVIDIA 开源出来、专门用于测量 GPU 相关内存拷贝带宽与延迟的工具。相比只看理论带宽，&lt;code&gt;nvbandwidth&lt;/code&gt; 更适合回答一个实际问题：&lt;strong&gt;这台机器当前这组 GPU 和互联链路，真实能跑到多少带宽。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-nvbandwidth-是做什么的&#34;&gt;1. &lt;code&gt;nvbandwidth&lt;/code&gt; 是做什么的
&lt;/h2&gt;&lt;p&gt;从官方 README 的定位看，&lt;code&gt;nvbandwidth&lt;/code&gt; 是一个用于测量 &lt;code&gt;NVIDIA GPU&lt;/code&gt; 带宽的命令行工具。&lt;/p&gt;
&lt;p&gt;它重点关注的是各种 &lt;code&gt;memcpy&lt;/code&gt; 模式下的传输表现，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPU -&amp;gt; GPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CPU -&amp;gt; GPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPU -&amp;gt; CPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;多节点 GPU 之间的传输&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类测试对下面几种场景尤其有用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;排查多卡训练或推理时的互联瓶颈&lt;/li&gt;
&lt;li&gt;验证 &lt;code&gt;NVLink&lt;/code&gt;、&lt;code&gt;PCIe&lt;/code&gt;、&lt;code&gt;C2C&lt;/code&gt; 等链路的实际表现&lt;/li&gt;
&lt;li&gt;对比不同服务器、不同拓扑、不同驱动或 CUDA 版本下的传输差异&lt;/li&gt;
&lt;li&gt;做集群部署前的基础硬件验收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，&lt;code&gt;nvbandwidth&lt;/code&gt; 看的不是模型吞吐，而是更底层的“数据搬运能力”。&lt;/p&gt;
&lt;h2 id=&#34;2-它测的不是一个单点数字&#34;&gt;2. 它测的不是一个单点数字
&lt;/h2&gt;&lt;p&gt;很多人会把“带宽测试”理解成最后只得到一个分数，但 &lt;code&gt;nvbandwidth&lt;/code&gt; 实际输出的信息更细。&lt;/p&gt;
&lt;p&gt;它会按测试类型给出矩阵结果。比如在 &lt;code&gt;device_to_device_memcpy_write_ce&lt;/code&gt; 这类测试里，输出会按 GPU 行列展示每一对设备之间的带宽。这样你不只知道“这台机器大概有多快”，还可以看出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪两张卡之间速度特别高&lt;/li&gt;
&lt;li&gt;哪些卡之间明显受限于 &lt;code&gt;PCIe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;某些 GPU 对之间是否存在异常低带宽&lt;/li&gt;
&lt;li&gt;多卡拓扑是否和预期一致&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你在看八卡服务器、双路平台或者跨节点系统，这类矩阵结果会比单一平均值更有参考意义。&lt;/p&gt;
&lt;h2 id=&#34;3-ce-和-sm-两类拷贝怎么理解&#34;&gt;3. &lt;code&gt;CE&lt;/code&gt; 和 &lt;code&gt;SM&lt;/code&gt; 两类拷贝怎么理解
&lt;/h2&gt;&lt;p&gt;官方文档里把测试分成两类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CE&lt;/code&gt;：基于 &lt;code&gt;memcpy&lt;/code&gt; API 的 copy engine 拷贝&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SM&lt;/code&gt;：基于 kernel 的拷贝&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两类结果不一定完全相同，因为它们代表的是不同拷贝路径。&lt;br&gt;
如果你只是想看设备之间常规数据搬运的表现，通常会先关注 &lt;code&gt;CE&lt;/code&gt;；如果你要研究更细的执行路径，再继续看 &lt;code&gt;SM&lt;/code&gt; 会更合适。&lt;/p&gt;
&lt;p&gt;此外，README 也说明了带宽结果默认取多次测试的中位数；新版还补充了统计波动信息，这对判断结果是否稳定会更有帮助。&lt;/p&gt;
&lt;h2 id=&#34;4-运行它需要什么环境&#34;&gt;4. 运行它需要什么环境
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; 不是一个“下载即用”的纯二进制小工具，它需要标准的 CUDA 开发环境。&lt;/p&gt;
&lt;p&gt;官方 README 当前给出的基本要求包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA Toolkit 11.x&lt;/code&gt; 或更高版本&lt;/li&gt;
&lt;li&gt;支持 &lt;code&gt;C++17&lt;/code&gt; 的编译器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CMake 3.20+&lt;/code&gt;，更推荐 &lt;code&gt;3.24+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Boost program_options&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;可用的 &lt;code&gt;CUDA&lt;/code&gt; 设备与兼容驱动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你要跑多节点版本，要求会更高。当前 README 明确写到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多节点构建需要 &lt;code&gt;CUDA Toolkit 12.3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;驱动需要 &lt;code&gt;550&lt;/code&gt; 或更高&lt;/li&gt;
&lt;li&gt;需要 &lt;code&gt;MPI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要配置 &lt;code&gt;nvidia-imex&lt;/code&gt; 服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它更像面向 Linux GPU 服务器和集群环境的工程工具，而不是给普通桌面用户随手装着玩的。&lt;/p&gt;
&lt;h2 id=&#34;5-单机版怎么编译和运行&#34;&gt;5. 单机版怎么编译和运行
&lt;/h2&gt;&lt;p&gt;单机版构建流程很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 &lt;code&gt;Ubuntu&lt;/code&gt; / &lt;code&gt;Debian&lt;/code&gt; 上，官方还提供了一个 &lt;code&gt;debian_install.sh&lt;/code&gt; 脚本，用来安装通用依赖并构建项目。&lt;/p&gt;
&lt;p&gt;编译完成后，可以先看帮助：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth -h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;几个比较常用的参数包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-l&lt;/code&gt;：列出可用测试&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-t&lt;/code&gt;：按测试名或索引运行指定测试&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p&lt;/code&gt;：按前缀批量运行测试&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b&lt;/code&gt;：设置 memcpy buffer 大小，默认 &lt;code&gt;512 MiB&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt;：设置测试迭代次数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-j&lt;/code&gt;：输出 &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-H&lt;/code&gt;：启用 huge pages 的主机内存分配&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是想先跑一轮默认测试，直接执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只想测一个具体项目，例如某个设备到设备的拷贝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth -t device_to_device_memcpy_read_ce
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;6-多节点支持是它比较特别的地方&#34;&gt;6. 多节点支持是它比较特别的地方
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; 不只是单机多卡测试工具，它还支持多节点场景。&lt;/p&gt;
&lt;p&gt;从 README 看，多节点版本的构建方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -DMULTINODE&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;运行时通常要配合 &lt;code&gt;mpirun&lt;/code&gt;，并按“每张 GPU 一个进程”的方式启动。&lt;br&gt;
官方文档还要求所有参与测试的 rank 处在同一个 multinode clique 内，并建议在 MPI 环境里主要运行带 &lt;code&gt;multinode&lt;/code&gt; 前缀的测试。&lt;/p&gt;
&lt;p&gt;这一点说明它的定位明显偏向高性能计算和大规模 GPU 系统，而不只是工作站自测。&lt;/p&gt;
&lt;p&gt;如果你手上是 &lt;code&gt;NVLink&lt;/code&gt; 多节点部署、&lt;code&gt;GB200&lt;/code&gt;/&lt;code&gt;Grace Hopper&lt;/code&gt; 一类更复杂的系统，&lt;code&gt;nvbandwidth&lt;/code&gt; 的价值会比普通消费级显卡环境大很多。&lt;/p&gt;
&lt;h2 id=&#34;7-新版-v09-更新了什么&#34;&gt;7. 新版 &lt;code&gt;v0.9&lt;/code&gt; 更新了什么
&lt;/h2&gt;&lt;p&gt;截至 &lt;strong&gt;2026 年 4 月 24 日&lt;/strong&gt;，GitHub Releases 页面显示 &lt;code&gt;nvbandwidth&lt;/code&gt; 的最新版本是 &lt;strong&gt;&lt;code&gt;v0.9&lt;/code&gt;&lt;/strong&gt;，发布时间是 &lt;strong&gt;2026 年 4 月 8 日&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这版比较值得注意的更新主要有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为带宽输出增加波动统计信息&lt;/li&gt;
&lt;li&gt;增加 host memory huge pages 支持（Windows 不启用）&lt;/li&gt;
&lt;li&gt;为设备到设备测试增加 pair sampling 选项&lt;/li&gt;
&lt;li&gt;补充 troubleshooting guide&lt;/li&gt;
&lt;li&gt;统一单机与多节点执行路径&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外还有两点工程层面的变化也很实用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改进 CUDA 架构检测，减少对实际 GPU 访问的依赖&lt;/li&gt;
&lt;li&gt;对 &lt;code&gt;CUDA Toolkit 13.0+&lt;/code&gt; 场景弃用 &lt;code&gt;Volta&lt;/code&gt;（&lt;code&gt;sm_70&lt;/code&gt; / &lt;code&gt;sm_72&lt;/code&gt;）支持&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你之前只看过旧版资料，现在再回来看，&lt;code&gt;v0.9&lt;/code&gt; 已经不只是“测一下带宽”的初始版本，而是朝着更适合自动化、排障和大规模系统测试的方向继续推进了。&lt;/p&gt;
&lt;h2 id=&#34;8-什么时候适合用它&#34;&gt;8. 什么时候适合用它
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; 最适合下面这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你想确认多张 &lt;code&gt;NVIDIA GPU&lt;/code&gt; 之间的真实互联带宽&lt;/li&gt;
&lt;li&gt;你怀疑某张卡被插在了受限的 &lt;code&gt;PCIe&lt;/code&gt; 槽位&lt;/li&gt;
&lt;li&gt;你想比较 &lt;code&gt;NVLink&lt;/code&gt; 和非 &lt;code&gt;NVLink&lt;/code&gt; 路径的差异&lt;/li&gt;
&lt;li&gt;你在做多节点 GPU 集群部署，需要验证链路是否正常&lt;/li&gt;
&lt;li&gt;你想把测试结果接进自动化流程，输出 &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但如果你的目标只是看“训练快不快”或“推理 tokens/s 有多少”，那它不是直接答案。&lt;br&gt;
这时你还需要配合训练框架、推理引擎或具体 workload 的实测一起看。&lt;/p&gt;
&lt;h2 id=&#34;9-可以怎么理解它的价值&#34;&gt;9. 可以怎么理解它的价值
&lt;/h2&gt;&lt;p&gt;很多 GPU 性能问题，本质都不是“算力不够”，而是数据没搬好。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU 之间没有走到预期链路&lt;/li&gt;
&lt;li&gt;跨 NUMA 节点访问导致速度下降&lt;/li&gt;
&lt;li&gt;某些卡对之间带宽异常&lt;/li&gt;
&lt;li&gt;跨节点通信配置不完整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类问题如果只看 &lt;code&gt;nvidia-smi&lt;/code&gt;、只看模型吞吐，往往不容易定位。&lt;br&gt;
而 &lt;code&gt;nvbandwidth&lt;/code&gt; 这种更底层、矩阵化的测试工具，恰好能把“链路层发生了什么”暴露出来。&lt;/p&gt;
&lt;p&gt;所以你可以把它理解成：&lt;strong&gt;给 NVIDIA GPU 系统做带宽体检的命令行工具。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvbandwidth&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvbandwidth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Releases：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvbandwidth/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvbandwidth/releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>K-近邻算法入门：用邻居投票理解机器学习分类</title>
        <link>https://knightli.com/2026/04/24/knn-algorithm-beginner-guide/</link>
        <pubDate>Fri, 24 Apr 2026 11:17:13 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/24/knn-algorithm-beginner-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;K-近邻算法&lt;/code&gt;，也常写作 &lt;code&gt;KNN&lt;/code&gt; 或 &lt;code&gt;k-NN&lt;/code&gt;，是机器学习里非常适合入门的一类算法。它的想法很朴素：要判断一个新样本属于哪一类，就看看它周围最像它的几个样本大多属于哪一类。&lt;/p&gt;
&lt;p&gt;如果一句话解释 KNN，可以这样说：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;近朱者赤，近墨者黑。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比如你刚搬到一个小区，不知道附近哪家早餐店更适合学生。你问了离你最近的 5 个邻居，里面 4 个人都推荐同一家店，那你大概率也会先相信这家店。KNN 做分类时，也是在做类似的事情：找邻居，看多数。&lt;/p&gt;
&lt;h2 id=&#34;1-先从一个小例子理解&#34;&gt;1. 先从一个小例子理解
&lt;/h2&gt;&lt;p&gt;假设我们要判断一个水果是苹果还是橙子。已知一些水果的特征，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重量&lt;/li&gt;
&lt;li&gt;颜色&lt;/li&gt;
&lt;li&gt;甜度&lt;/li&gt;
&lt;li&gt;表皮是否粗糙&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现在来了一个新水果，我们还不知道它是什么。KNN 不会先总结一套复杂规则，而是直接去已知水果里找“最像它”的几个。&lt;/p&gt;
&lt;p&gt;如果最像它的 5 个水果中，有 4 个是苹果，1 个是橙子，那么 KNN 就会判断：这个新水果更可能是苹果。&lt;/p&gt;
&lt;p&gt;这里的 &lt;code&gt;K&lt;/code&gt;，就是“要看几个邻居”。如果 &lt;code&gt;K=5&lt;/code&gt;，就是看最近的 5 个样本。&lt;/p&gt;
&lt;h2 id=&#34;2-一个简单示意图&#34;&gt;2. 一个简单示意图
&lt;/h2&gt;&lt;p&gt;下面用一个二维小图来直观理解。假设 &lt;code&gt;A&lt;/code&gt; 表示苹果，&lt;code&gt;O&lt;/code&gt; 表示橙子，&lt;code&gt;?&lt;/code&gt; 是我们想判断的新水果。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;甜度 ↑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  高 |        A       A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |           ?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |       A       O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  低 |   O       O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     +--------------------→ 重量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        轻              重
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果我们设 &lt;code&gt;K=3&lt;/code&gt;，就看离 &lt;code&gt;?&lt;/code&gt; 最近的 3 个点。假设最近的 3 个邻居里有 2 个 &lt;code&gt;A&lt;/code&gt;、1 个 &lt;code&gt;O&lt;/code&gt;，那 KNN 就会把 &lt;code&gt;?&lt;/code&gt; 判断为 &lt;code&gt;A&lt;/code&gt;，也就是苹果。&lt;/p&gt;
&lt;p&gt;这就是 KNN 最核心的过程：&lt;strong&gt;找最近的 K 个邻居，然后投票。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;3-knn-的基本步骤&#34;&gt;3. KNN 的基本步骤
&lt;/h2&gt;&lt;p&gt;用不带公式的方式看，KNN 的分类流程大概是这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;准备一批已经标好类别的数据&lt;/li&gt;
&lt;li&gt;新来一个未知类别的样本&lt;/li&gt;
&lt;li&gt;计算它和所有已知样本的相似程度&lt;/li&gt;
&lt;li&gt;找出最相似的 K 个样本&lt;/li&gt;
&lt;li&gt;看这 K 个样本里哪个类别最多&lt;/li&gt;
&lt;li&gt;把新样本归到这个类别&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这也是为什么 KNN 很容易理解。它不像一些模型那样需要先训练出一堆参数，KNN 更像是把训练数据先存起来，真正需要判断时再去查邻居。&lt;/p&gt;
&lt;p&gt;这种特点也让 KNN 常被称为一种“惰性学习”方法。这里的“惰性”不是贬义，而是说它不会在训练阶段做太多计算，主要工作被推迟到了预测阶段。&lt;/p&gt;
&lt;h2 id=&#34;4-什么叫最近&#34;&gt;4. 什么叫“最近”
&lt;/h2&gt;&lt;p&gt;KNN 里的“最近”，不一定只是地图上的距离。它通常表示“特征上更相似”。&lt;/p&gt;
&lt;p&gt;比如判断水果时，两个水果如果重量接近、颜色接近、甜度接近，就可以认为距离更近。判断用户兴趣时，如果两个人看过的内容、点击习惯、购买记录很像，也可以认为他们更接近。&lt;/p&gt;
&lt;p&gt;所以 KNN 的关键不是“空间位置”，而是你怎么描述一个样本。&lt;/p&gt;
&lt;p&gt;常见特征可以是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;商品价格、重量、销量&lt;/li&gt;
&lt;li&gt;用户年龄、浏览次数、购买频率&lt;/li&gt;
&lt;li&gt;图片的颜色、纹理、形状&lt;/li&gt;
&lt;li&gt;文本中某些词出现的情况&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特征选得好不好，会直接影响 KNN 的效果。&lt;/p&gt;
&lt;h2 id=&#34;5-k-值怎么选&#34;&gt;5. K 值怎么选
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;K&lt;/code&gt; 不是固定答案，而是需要根据数据来选。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;K&lt;/code&gt; 太小，比如 &lt;code&gt;K=1&lt;/code&gt;，模型会非常相信最近的那个样本。这有时很敏感：如果最近的样本刚好是噪声数据，判断就容易错。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;K&lt;/code&gt; 太大，模型又会看太多邻居，结果可能被远处不太相关的样本影响，分类边界会变得模糊。&lt;/p&gt;
&lt;p&gt;可以把它理解成问人意见：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只问 1 个人：容易被个别意见带偏&lt;/li&gt;
&lt;li&gt;问太多人：可能把不熟悉情况的人也算进来了&lt;/li&gt;
&lt;li&gt;问附近几位最相关的人：通常更稳&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在二分类问题里，很多时候会选奇数 K，比如 &lt;code&gt;3&lt;/code&gt;、&lt;code&gt;5&lt;/code&gt;、&lt;code&gt;7&lt;/code&gt;，这样可以减少投票平局的情况。&lt;/p&gt;
&lt;h2 id=&#34;6-knn-不只可以做分类&#34;&gt;6. KNN 不只可以做分类
&lt;/h2&gt;&lt;p&gt;KNN 最常见的用途是分类，比如判断：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;邮件是不是垃圾邮件&lt;/li&gt;
&lt;li&gt;图片里是猫还是狗&lt;/li&gt;
&lt;li&gt;用户是否可能流失&lt;/li&gt;
&lt;li&gt;一条评论是正面还是负面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也可以做回归。回归可以理解为预测一个数值。&lt;/p&gt;
&lt;p&gt;比如我们想估计一套房子的价格，可以找出和它最相似的几套房子，然后参考这些房子的价格。不是投票选类别，而是把邻居的数值做一个综合估计。&lt;/p&gt;
&lt;p&gt;简单说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分类：邻居投票，选类别&lt;/li&gt;
&lt;li&gt;回归：参考邻居数值，估结果&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-加权-knn近一点的邻居更重要&#34;&gt;7. 加权 KNN：近一点的邻居更重要
&lt;/h2&gt;&lt;p&gt;普通 KNN 会让每个邻居的投票权差不多。但现实中，离得更近的邻居通常更可信。&lt;/p&gt;
&lt;p&gt;比如有 5 个邻居，其中 1 个和新样本几乎一模一样，另外 4 个只是稍微有点像。完全平均投票可能不太合理。&lt;/p&gt;
&lt;p&gt;所以有一种改进思路叫“加权 KNN”：越近的邻居，影响越大；越远的邻居，影响越小。&lt;/p&gt;
&lt;p&gt;这很好理解。你买手机时，和你预算、用途、品牌偏好都很接近的人，他的建议往往比泛泛而谈的建议更有参考价值。&lt;/p&gt;
&lt;h2 id=&#34;8-knn-的优点&#34;&gt;8. KNN 的优点
&lt;/h2&gt;&lt;p&gt;KNN 的优点非常适合初学者理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;思路直观，容易解释&lt;/li&gt;
&lt;li&gt;不需要复杂训练过程&lt;/li&gt;
&lt;li&gt;可以用于分类，也可以用于回归&lt;/li&gt;
&lt;li&gt;对一些边界不规则的问题比较灵活&lt;/li&gt;
&lt;li&gt;新增数据时通常比较方便&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你刚开始学机器学习，KNN 是一个很好的起点。它能帮助你理解“样本”“特征”“距离”“分类”“训练数据”这些基本概念。&lt;/p&gt;
&lt;h2 id=&#34;9-knn-的局限&#34;&gt;9. KNN 的局限
&lt;/h2&gt;&lt;p&gt;KNN 也有明显短板。&lt;/p&gt;
&lt;p&gt;第一，预测时可能比较慢。因为每来一个新样本，都要和很多已有样本比较。如果数据量很大，计算成本会升高。&lt;/p&gt;
&lt;p&gt;第二，它很依赖特征尺度。比如一个特征是“收入”，动不动几千几万；另一个特征是“年龄”，通常几十。如果不做处理，收入这个特征可能会过度影响距离判断。&lt;/p&gt;
&lt;p&gt;所以在使用 KNN 前，经常需要做数据标准化，让不同特征在比较时更公平。&lt;/p&gt;
&lt;p&gt;第三，它容易受无关特征影响。如果你判断水果类别，却把“购买日期”这种无关信息也放进去，模型可能会被干扰。&lt;/p&gt;
&lt;p&gt;第四，它对局部数据分布敏感。如果某一类样本特别多，投票时可能更容易压过其他类别。&lt;/p&gt;
&lt;h2 id=&#34;10-容易和-k-平均算法混淆&#34;&gt;10. 容易和 K-平均算法混淆
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;KNN&lt;/code&gt; 和 &lt;code&gt;K-平均算法&lt;/code&gt; 名字里都有 &lt;code&gt;K&lt;/code&gt;，但它们不是一回事。&lt;/p&gt;
&lt;p&gt;KNN 是监督学习，通常使用已经标好类别的数据来判断新样本。&lt;/p&gt;
&lt;p&gt;K-平均算法更常用于聚类，也就是在没有明确标签时，把数据自动分成几组。&lt;/p&gt;
&lt;p&gt;可以简单记：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KNN：看邻居，做分类或回归&lt;/li&gt;
&lt;li&gt;K-平均：找中心，把数据分组&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;11-什么时候适合用-knn&#34;&gt;11. 什么时候适合用 KNN
&lt;/h2&gt;&lt;p&gt;KNN 适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据量不太大&lt;/li&gt;
&lt;li&gt;特征比较容易表示成数值&lt;/li&gt;
&lt;li&gt;样本之间的“相似程度”比较有意义&lt;/li&gt;
&lt;li&gt;需要一个容易解释的基线方法&lt;/li&gt;
&lt;li&gt;想快速验证一个分类思路是否可行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果数据量巨大、特征非常多、预测速度要求很高，KNN 可能就不是最合适的选择，或者需要配合更高效的近邻搜索方法。&lt;/p&gt;
&lt;h2 id=&#34;12-初学者应该记住什么&#34;&gt;12. 初学者应该记住什么
&lt;/h2&gt;&lt;p&gt;学 KNN 时，不需要一开始就钻进复杂公式。先记住这几个直觉就够了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KNN 用“邻居”来判断新样本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;K&lt;/code&gt; 表示看几个最近邻居&lt;/li&gt;
&lt;li&gt;分类时靠投票，回归时参考邻居数值&lt;/li&gt;
&lt;li&gt;特征选择和数据标准化很重要&lt;/li&gt;
&lt;li&gt;&lt;code&gt;K&lt;/code&gt; 太小容易受噪声影响，太大又可能变得迟钝&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;KNN 的价值不只是它本身能解决一些问题，更在于它把机器学习里几个基础观念讲得很清楚：数据如何表示、相似度如何衡量、预测如何从已有样本中产生。&lt;/p&gt;
&lt;p&gt;只要理解了“找相似样本，再根据邻居做判断”这件事，就已经抓住了 KNN 的核心。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zh.wikipedia.org/wiki/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-近邻算法 - 维基百科&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 发布 GPT-5.5：更强的智能体编码、知识工作与科研能力</title>
        <link>https://knightli.com/2026/04/24/openai-gpt-5-5-release/</link>
        <pubDate>Fri, 24 Apr 2026 08:39:56 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/24/openai-gpt-5-5-release/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 4 月 23 日发布了 &lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing GPT-5.5&lt;/a&gt;。从官方页面看，这次更新的重点不是单纯“模型更聪明”，而是更强调模型能不能把复杂任务持续推进下去。&lt;/p&gt;
&lt;p&gt;官方给 GPT-5.5 的定位，是一个更适合真实工作的模型。它不仅要回答问题，还要能写代码、调试、查资料、分析数据、生成文档和表格、操作软件，并在多个工具之间来回切换，直到任务完成。&lt;/p&gt;
&lt;h2 id=&#34;1-gpt-55-主要强在哪里&#34;&gt;1. GPT-5.5 主要强在哪里
&lt;/h2&gt;&lt;p&gt;这次发布页里反复出现的几个方向，可以概括为四类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;智能体编码&lt;/li&gt;
&lt;li&gt;电脑操作与工具使用&lt;/li&gt;
&lt;li&gt;知识工作&lt;/li&gt;
&lt;li&gt;早期科研辅助&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，GPT-5.5 的重点不是短问短答，而是更长链路的任务。比如一个工程问题不只是“这段代码怎么改”，而是要理解项目结构、定位失败原因、修改相关文件、补测试、验证结果，并尽量减少用户反复提示。&lt;/p&gt;
&lt;p&gt;OpenAI 也特别强调，GPT-5.5 在 Codex 任务中更省 token。这个点很实际，因为编码智能体一旦开始读文件、跑命令、修 bug，token 消耗会非常快。如果模型能用更少的步骤完成同样任务，实际成本和等待时间都会下降。&lt;/p&gt;
&lt;h2 id=&#34;2-编码能力是这次最重要的展示方向&#34;&gt;2. 编码能力是这次最重要的展示方向
&lt;/h2&gt;&lt;p&gt;官方称 GPT-5.5 是目前最强的 agentic coding 模型。&lt;/p&gt;
&lt;p&gt;几个公开指标里，比较值得注意的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Terminal-Bench 2.0&lt;/code&gt;：GPT-5.5 达到 &lt;code&gt;82.7%&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SWE-Bench Pro&lt;/code&gt;：GPT-5.5 达到 &lt;code&gt;58.6%&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OpenAI 内部的 &lt;code&gt;Expert-SWE&lt;/code&gt;：GPT-5.5 也高于 GPT-5.4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些测试的共同点是，它们更接近真实工程流程，而不是只考单个算法题。特别是 Terminal-Bench 这类任务，会涉及命令行操作、规划、试错、工具协调和多步骤验证。&lt;/p&gt;
&lt;p&gt;对日常开发者来说，这里的意义很直接：模型是否能接住更大的任务，取决于它能不能长时间保持上下文、自己检查假设、知道什么时候该跑测试、知道改动会影响哪里。&lt;/p&gt;
&lt;p&gt;GPT-5.5 在 Codex 里的价值，也主要体现在这些地方。它更像是可以接手一段工程任务的协作者，而不是只会补全代码片段的工具。&lt;/p&gt;
&lt;h2 id=&#34;3-知识工作开始变成重点场景&#34;&gt;3. 知识工作开始变成重点场景
&lt;/h2&gt;&lt;p&gt;除了写代码，OpenAI 这次还把 GPT-5.5 放到了更广的办公场景里。&lt;/p&gt;
&lt;p&gt;官方提到，GPT-5.5 在 Codex 中可以更好地生成文档、电子表格和演示文稿，也更适合处理运营研究、表格建模、业务材料整理这类任务。结合电脑操作能力之后，它的目标不是只给建议，而是能直接参与“找资料、理解内容、调用工具、检查输出、整理成结果”这一整条流程。&lt;/p&gt;
&lt;p&gt;发布页里还提到 OpenAI 内部已经在多部门使用 Codex，包括软件工程、财务、传播、市场、数据科学和产品管理等。这里真正值得关注的不是某个单点案例，而是 OpenAI 正在把 Codex 从开发工具扩展为通用工作工具。&lt;/p&gt;
&lt;p&gt;在 ChatGPT 里，GPT-5.5 Thinking 面向 Plus、Pro、Business 和 Enterprise 用户；GPT-5.5 Pro 则面向更难问题和更高准确率需求，提供给 Pro、Business 和 Enterprise 用户。&lt;/p&gt;
&lt;h2 id=&#34;4-科研能力不只是答题更强&#34;&gt;4. 科研能力不只是“答题更强”
&lt;/h2&gt;&lt;p&gt;GPT-5.5 的科研展示也很重。&lt;/p&gt;
&lt;p&gt;官方提到它在遗传学、定量生物学、生物信息学、数学证明等方向都有改进。这里的重点不是模型能不能背出一个知识点，而是能不能处理更接近真实研究的问题：读数据、发现异常、提出分析方式、解释结果，并根据中间结果继续推进。&lt;/p&gt;
&lt;p&gt;发布页里提到的 &lt;code&gt;GeneBench&lt;/code&gt; 和 &lt;code&gt;BixBench&lt;/code&gt;，都更偏多阶段科学分析任务。OpenAI 还提到，一个内部版本的 GPT-5.5 借助自定义工具链，帮助发现了关于 Ramsey numbers 的新证明，并用 Lean 做了验证。&lt;/p&gt;
&lt;p&gt;这类案例还不能简单理解为“AI 已经能独立做科研”，但它说明模型正在从问答工具往研究协作者靠近。尤其是在代码、数据、论文、实验想法混在一起的场景里，GPT-5.5 的长链路推理和工具使用能力会更重要。&lt;/p&gt;
&lt;h2 id=&#34;5-推理效率更强但没有明显变慢&#34;&gt;5. 推理效率：更强但没有明显变慢
&lt;/h2&gt;&lt;p&gt;一个容易被忽略的点是，OpenAI 说 GPT-5.5 在真实服务中的 per-token latency 与 GPT-5.4 相当。&lt;/p&gt;
&lt;p&gt;通常更大的模型、更强的模型会带来更高延迟。OpenAI 这次强调，它们通过推理系统优化，让 GPT-5.5 在智能提升的同时保持速度。发布页里还提到，Codex 分析生产流量模式并编写负载分配相关启发式算法，使 token 生成速度提升超过 &lt;code&gt;20%&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这个细节很有意思：模型不仅被基础设施服务，也反过来帮助改进服务它的基础设施。&lt;/p&gt;
&lt;h2 id=&#34;6-安全策略会更严格尤其是网络安全方向&#34;&gt;6. 安全策略会更严格，尤其是网络安全方向
&lt;/h2&gt;&lt;p&gt;GPT-5.5 的网络安全能力更强，所以 OpenAI 同时加强了安全限制。&lt;/p&gt;
&lt;p&gt;官方说明中提到，GPT-5.5 在网络安全能力上比 GPT-5.4 有提升，因此会部署更严格的分类器，尤其针对高风险活动、敏感网络安全请求和重复滥用行为。&lt;/p&gt;
&lt;p&gt;这意味着一部分用户在使用网络安全相关能力时，可能会遇到更多拒答或限制。OpenAI 也提供了 Trusted Access for Cyber，用于让经过验证的防御性用户获得更少不必要阻碍。&lt;/p&gt;
&lt;p&gt;对普通开发者来说，可以简单理解为：合法的安全加固、漏洞修复、代码审计会继续被支持，但高风险攻击链路会被更严格地控制。&lt;/p&gt;
&lt;h2 id=&#34;7-可用性与-api-价格&#34;&gt;7. 可用性与 API 价格
&lt;/h2&gt;&lt;p&gt;根据 OpenAI 发布页，GPT-5.5 的可用性如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT：GPT-5.5 Thinking 面向 Plus、Pro、Business、Enterprise 用户&lt;/li&gt;
&lt;li&gt;ChatGPT：GPT-5.5 Pro 面向 Pro、Business、Enterprise 用户&lt;/li&gt;
&lt;li&gt;Codex：GPT-5.5 面向 Plus、Pro、Business、Enterprise、Edu、Go 计划&lt;/li&gt;
&lt;li&gt;Codex：上下文窗口为 &lt;code&gt;400K&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Codex Fast mode：生成速度约 &lt;code&gt;1.5x&lt;/code&gt;，成本为 &lt;code&gt;2.5x&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;API 方面，OpenAI 表示 &lt;code&gt;gpt-5.5&lt;/code&gt; 和 &lt;code&gt;gpt-5.5-pro&lt;/code&gt; 会很快开放。&lt;/p&gt;
&lt;p&gt;官方给出的 API 价格是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5&lt;/code&gt;：输入 &lt;code&gt;5 美元 / 1M tokens&lt;/code&gt;，输出 &lt;code&gt;30 美元 / 1M tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5-pro&lt;/code&gt;：输入 &lt;code&gt;30 美元 / 1M tokens&lt;/code&gt;，输出 &lt;code&gt;180 美元 / 1M tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5&lt;/code&gt; API 上下文窗口为 &lt;code&gt;1M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Batch 和 Flex 为标准 API 价格的一半&lt;/li&gt;
&lt;li&gt;Priority processing 为标准价格的 &lt;code&gt;2.5x&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个价格明显高于很多日常模型，所以它更适合高价值任务：复杂工程改造、长文档分析、自动化办公、科研辅助、重要业务流程，而不是普通闲聊。&lt;/p&gt;
&lt;h2 id=&#34;8-怎么看这次发布&#34;&gt;8. 怎么看这次发布
&lt;/h2&gt;&lt;p&gt;如果只看一句话，GPT-5.5 的重点是：OpenAI 正在把模型从“回答问题”继续推向“完成工作”。&lt;/p&gt;
&lt;p&gt;它最值得关注的地方，不只是 benchmark 分数提升，而是几种能力开始汇合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更强的长任务保持能力&lt;/li&gt;
&lt;li&gt;更稳定的工具使用&lt;/li&gt;
&lt;li&gt;更好的工程上下文理解&lt;/li&gt;
&lt;li&gt;更适合文档、表格、研究和业务流程&lt;/li&gt;
&lt;li&gt;更长上下文和更高 token 效率&lt;/li&gt;
&lt;li&gt;更严格的高风险能力控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对开发者来说，最值得试的是 Codex 里的复杂工程任务。对企业用户来说，更值得关注的是它能不能把一部分跨工具、跨文档、跨流程的工作变成可交付结果。&lt;/p&gt;
&lt;p&gt;GPT-5.5 不是一次只面向聊天体验的小更新，而更像是 OpenAI 在继续推进“AI 作为工作执行层”的方向。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing GPT-5.5 - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>常见向量模型怎么选：OpenAI、BGE、E5、GTE、Jina 对比</title>
        <link>https://knightli.com/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/2026/04/23/compare-openai-bge-e5-gte-jina-embedding-models/</guid>
        <description>&lt;p&gt;做 RAG、语义搜索、知识库召回时，很多人一开始会纠结同一个问题：向量模型这么多，到底该选哪一个。&lt;/p&gt;
&lt;p&gt;常见模型大致可以分成两组。一组是通用文本向量，覆盖中英文和多语言任务；另一组更适合中文场景，重点看中文检索、中文问答和中文知识库效果。&lt;/p&gt;
&lt;p&gt;如果先给一个很短的结论，可以这样看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想省事、直接用 API：&lt;code&gt;text-embedding-3-small&lt;/code&gt; 或 &lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想做中文检索，且希望开源可自部署：&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;、&lt;code&gt;bge-m3&lt;/code&gt;、&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想兼顾多语言：&lt;code&gt;multilingual-e5-base&lt;/code&gt;、&lt;code&gt;multilingual-e5-large&lt;/code&gt;、&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想在中文场景里压成本：&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;、&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一先按类型看这些模型&#34;&gt;一、先按类型看这些模型
&lt;/h2&gt;&lt;h3 id=&#34;1-openai-系列&#34;&gt;1. OpenAI 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类模型的特点是调用简单、稳定，适合直接接 API 做检索、RAG、分类和相似度匹配。它们的优势不在“某一个中文榜单分数特别高”，而在整体体验完整：接入门槛低、效果稳定、工程成本也低。&lt;/p&gt;
&lt;p&gt;如果团队不想自己托管模型、不想维护推理服务，OpenAI 这类方案通常最省时间。&lt;/p&gt;
&lt;h3 id=&#34;2-bge-系列&#34;&gt;2. BGE 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BAAI/bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BAAI/bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BGE 是中文检索里很常见的一条线。&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt; 和 &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt; 更偏中文单语任务，适合中文语义搜索、知识库召回、FAQ 匹配。&lt;code&gt;bge-m3&lt;/code&gt; 则更通用，能覆盖多语言、多粒度和更复杂的检索场景。&lt;/p&gt;
&lt;p&gt;如果你的数据主要是中文文本，BGE 往往是最容易进入候选名单的一组。&lt;/p&gt;
&lt;h3 id=&#34;3-e5-系列&#34;&gt;3. E5 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;intfloat/multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;E5 系列的特点是多语言能力比较均衡，适合中英混合、跨语种检索、国际化内容库。它不是只盯中文，而是更强调“不同语言都能放到一个统一检索体系里”。&lt;/p&gt;
&lt;p&gt;如果你的语料不是纯中文，而是中文、英文、日文甚至更多语言混在一起，E5 通常比中文专用模型更稳。&lt;/p&gt;
&lt;h3 id=&#34;4-gte-系列&#34;&gt;4. GTE 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Alibaba-NLP/gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GTE 在中文任务里也很常见，定位和 BGE 有点接近，都是中文检索的实用型选手。它的特点通常是比较平衡，没有特别复杂的使用门槛，适合做中文知识库、站内搜索和企业内部文档召回。&lt;/p&gt;
&lt;p&gt;如果你想在中文开源模型里多做一组对照，GTE 很值得一起评测。&lt;/p&gt;
&lt;h3 id=&#34;5-jina-embeddings&#34;&gt;5. Jina Embeddings
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jina 这一类更偏通用和现代工程场景，常见于多语言检索、长文本、网页内容处理等任务。它经常出现在“一个模型覆盖更多任务形态”的讨论里，适合希望统一 embedding 层的团队。&lt;/p&gt;
&lt;p&gt;如果你的内容来源比较杂，既有网页、文档，也有多语言文本，Jina 往往是一个值得测试的备选。&lt;/p&gt;
&lt;h2 id=&#34;二中文场景里哪些模型更常用&#34;&gt;二、中文场景里，哪些模型更常用
&lt;/h2&gt;&lt;p&gt;如果把范围收窄到中文场景，常见候选基本就是这些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这几类里，最典型的分法其实不是“谁绝对更强”，而是下面这三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你的数据是不是以中文为主&lt;/li&gt;
&lt;li&gt;你是不是需要多语言&lt;/li&gt;
&lt;li&gt;你更在意效果、成本，还是部署方便&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三把这些模型放在一起看&#34;&gt;三、把这些模型放在一起看
&lt;/h2&gt;&lt;h3 id=&#34;1-如果只看中文效果&#34;&gt;1. 如果只看中文效果
&lt;/h3&gt;&lt;p&gt;纯中文知识库、中文问答、中文文档召回，一般优先看 BGE 和 GTE。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;：更轻，适合成本敏感场景&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;：通常是中文场景里更均衡的一档&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;：和轻量 BGE 类似，适合先做基线&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;：更适合追求召回质量的场景&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;：适合希望把中文检索和更复杂能力放到一起考虑的团队&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果语料几乎全是中文，E5 虽然也能用，但很多时候不会是第一优先。&lt;/p&gt;
&lt;h3 id=&#34;2-如果需要多语言&#34;&gt;2. 如果需要多语言
&lt;/h3&gt;&lt;p&gt;这时优先级会明显变化。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt; 和 &lt;code&gt;multilingual-e5-large&lt;/code&gt; 更适合多语言统一检索&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt; 也适合多语言和通用文本任务&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt; 比传统中文专用模型更适合扩展到多语言&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt; 和 &lt;code&gt;text-embedding-3-large&lt;/code&gt; 适合想直接上 API 的场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的库里同时有中文、英文、产品文档、网页文案和用户问题，多语言模型会比中文专用模型省掉很多后续改造成本。&lt;/p&gt;
&lt;h3 id=&#34;3-如果要控制推理和存储成本&#34;&gt;3. 如果要控制推理和存储成本
&lt;/h3&gt;&lt;p&gt;轻量模型更有优势。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类模型通常更适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文档量大&lt;/li&gt;
&lt;li&gt;更新频繁&lt;/li&gt;
&lt;li&gt;需要批量向量化&lt;/li&gt;
&lt;li&gt;对延迟和成本比较敏感&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果数据规模很大，embedding 维度、推理速度、索引占用都会直接影响总成本，所以“先上小模型做基线”通常是更稳的做法。&lt;/p&gt;
&lt;h3 id=&#34;4-如果优先追求上限&#34;&gt;4. 如果优先追求上限
&lt;/h3&gt;&lt;p&gt;更大的模型通常更适合复杂检索或高质量召回，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这里要注意，模型越大不代表线上体验一定越好。很多项目最后的瓶颈不是模型本身，而是切分策略、召回条数、重排、数据清洗和评测方式。&lt;/p&gt;
&lt;h2 id=&#34;四每个模型更适合什么任务&#34;&gt;四、每个模型更适合什么任务
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;更适合的场景&lt;/th&gt;
          &lt;th&gt;简单判断&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;通用检索、RAG、快速接入&lt;/td&gt;
          &lt;td&gt;API 省事，成本友好&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;更重视质量的通用检索&lt;/td&gt;
          &lt;td&gt;效果优先，工程最省心&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文轻量检索&lt;/td&gt;
          &lt;td&gt;中文常用入门款&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文知识库、FAQ、语义搜索&lt;/td&gt;
          &lt;td&gt;中文场景很均衡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文为主但希望兼顾更复杂检索&lt;/td&gt;
          &lt;td&gt;扩展性更强&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;多语言基础检索&lt;/td&gt;
          &lt;td&gt;国际化项目常用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;多语言高质量召回&lt;/td&gt;
          &lt;td&gt;更偏效果导向&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文轻量召回&lt;/td&gt;
          &lt;td&gt;适合先做基线&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文质量优先场景&lt;/td&gt;
          &lt;td&gt;可作为 BGE 对照组&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;多语言、网页、通用文本任务&lt;/td&gt;
          &lt;td&gt;统一 embedding 层时值得测&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;五实际选型时可以怎么决策&#34;&gt;五、实际选型时可以怎么决策
&lt;/h2&gt;&lt;p&gt;如果你只是要落地，而不是写论文，选型顺序可以简单一点：&lt;/p&gt;
&lt;h3 id=&#34;场景一中文知识库&#34;&gt;场景一：中文知识库
&lt;/h3&gt;&lt;p&gt;优先测试这几组：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果预算紧，先从小模型开始；如果更重视召回质量，再往更大的模型试。&lt;/p&gt;
&lt;h3 id=&#34;场景二中英混合知识库&#34;&gt;场景二：中英混合知识库
&lt;/h3&gt;&lt;p&gt;优先测试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果不想自部署，OpenAI 会更直接；如果要自己托管，E5 更常见。&lt;/p&gt;
&lt;h3 id=&#34;场景三中文为主但未来可能扩到多语言&#34;&gt;场景三：中文为主，但未来可能扩到多语言
&lt;/h3&gt;&lt;p&gt;优先测试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类场景最怕的是一开始只看中文，后面又要重做整个向量库。&lt;/p&gt;
&lt;h2 id=&#34;六最后怎么选关键不是榜单第一&#34;&gt;六、最后怎么选，关键不是“榜单第一”
&lt;/h2&gt;&lt;p&gt;向量模型选型里，最容易踩的坑就是只看公开分数，然后直接上线。&lt;/p&gt;
&lt;p&gt;更靠谱的方式通常是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先挑 2 到 4 个候选模型&lt;/li&gt;
&lt;li&gt;用自己的真实数据做 embedding&lt;/li&gt;
&lt;li&gt;跑一轮召回评测&lt;/li&gt;
&lt;li&gt;再结合成本、延迟、部署方式做决定&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因为真正决定结果的，往往不是模型名本身，而是模型和你的语料、分块策略、查询形式到底合不合。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;如果只想记住一版实用结论，可以这样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文优先：先看 &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;、&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;成本优先：先看 &lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;、&lt;code&gt;gte-base-zh&lt;/code&gt;、&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;多语言优先：先看 &lt;code&gt;multilingual-e5-base&lt;/code&gt;、&lt;code&gt;multilingual-e5-large&lt;/code&gt;、&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;直接上 API：先看 &lt;code&gt;text-embedding-3-small&lt;/code&gt;、&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想兼顾中文和后续扩展：先看 &lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;没有一个模型适合所有项目，但大多数项目都可以先从这几组里很快筛出第一批候选。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>什么是图像向量化：从像素图到可搜索可分析的向量表示</title>
        <link>https://knightli.com/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/2026/04/23/what-is-image-vectorization-vector-search-vision-workflow/</guid>
        <description>&lt;p&gt;图片一直都很多，但图片真正能被系统“理解”和“利用”，并不是一件天然发生的事。&lt;/p&gt;
&lt;p&gt;对人来说，一张图里有没有猫、是不是同一件商品、是不是某种异常缺陷，往往一眼就能看出来。可对系统来说，原始图片首先只是像素排列。没有额外处理时，它更像一堆颜色点，而不是一份可以直接做检索、聚类、推荐和识别的数据。&lt;/p&gt;
&lt;p&gt;图像向量化解决的就是这一步。它把原本以像素形式存在的图片，转换成一组可以被机器高效比较和计算的向量表示。很多“以图搜图”、相似图片推荐、视觉检索、图像聚类和多模态理解，真正的基础都在这里。&lt;/p&gt;
&lt;h2 id=&#34;一图像向量化到底是什么&#34;&gt;一、图像向量化到底是什么
&lt;/h2&gt;&lt;p&gt;先把概念压缩成一句话：&lt;/p&gt;
&lt;p&gt;图像向量化，就是把图片转换成一串能表示图像特征的数字向量。&lt;/p&gt;
&lt;p&gt;这个向量通常不是给人看的，而是给模型和检索系统用的。它的价值在于，图片从此不再只是文件，而变成了一种可以参与计算、排序和相似度比较的数据对象。&lt;/p&gt;
&lt;p&gt;比如一张猫的图片，原始文件里保存的是像素信息；做完向量化之后，系统拿到的是一个固定长度的数值向量。这个向量不会直接写着“这是猫”，但它会把轮廓、纹理、颜色分布、局部结构、语义信息等特征编码进去。这样系统就能把它和别的图片做距离计算，判断哪些更相似，哪些差得更远。&lt;/p&gt;
&lt;p&gt;所以图像向量化真正改变的，不是图片本身，而是图片被系统处理的方式。&lt;/p&gt;
&lt;h2 id=&#34;二为什么不直接用原始像素做检索和分析&#34;&gt;二、为什么不直接用原始像素做检索和分析
&lt;/h2&gt;&lt;p&gt;原始像素当然也能算，但效果和效率都很受限。&lt;/p&gt;
&lt;p&gt;问题主要有三类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据维度高，直接比较成本很高&lt;/li&gt;
&lt;li&gt;像素接近不等于语义接近&lt;/li&gt;
&lt;li&gt;光照、裁切、背景、分辨率变化都可能干扰结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最典型的例子就是商品图检索。两张商品图片哪怕拍摄角度不同、背景不同、尺寸不同，人在看时还是知道它们是同一类商品；但如果只是逐像素对比，系统很容易把它们判成完全不同的图片。&lt;/p&gt;
&lt;p&gt;向量化的意义，就是把“像不像”从像素层面的比较，提升到更接近语义和特征层面的比较。&lt;/p&gt;
&lt;h2 id=&#34;三图像向量化一般是怎么做出来的&#34;&gt;三、图像向量化一般是怎么做出来的
&lt;/h2&gt;&lt;p&gt;从流程上看，图像向量化通常不是一步完成，而是一条比较标准的处理链：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先做预处理&lt;/li&gt;
&lt;li&gt;再提取图像特征&lt;/li&gt;
&lt;li&gt;把特征压成固定长度向量&lt;/li&gt;
&lt;li&gt;存进向量库或检索系统&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其中每一步都在影响最后效果。&lt;/p&gt;
&lt;h3 id=&#34;1-预处理&#34;&gt;1. 预处理
&lt;/h3&gt;&lt;p&gt;预处理做的事情一般包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;缩放图片尺寸&lt;/li&gt;
&lt;li&gt;归一化输入&lt;/li&gt;
&lt;li&gt;去除部分噪声&lt;/li&gt;
&lt;li&gt;统一颜色或输入格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的目的不是“优化视觉效果”，而是让后面的模型输入尽可能稳定。&lt;/p&gt;
&lt;h3 id=&#34;2-特征提取&#34;&gt;2. 特征提取
&lt;/h3&gt;&lt;p&gt;这里是图像向量化的核心。&lt;/p&gt;
&lt;p&gt;早期方法更依赖人工设计特征，比如 &lt;code&gt;SIFT&lt;/code&gt;、&lt;code&gt;SURF&lt;/code&gt;、&lt;code&gt;HOG&lt;/code&gt; 这一类算法，擅长提取边缘、角点、局部结构等低层特征。现在更常见的是深度学习模型来做这件事，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ResNet&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VGG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Inception&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ViT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLIP&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些模型会把图片编码成更高层、更抽象的视觉特征。和传统特征工程相比，它们更擅长表达语义，也更适合做相似度检索、多模态理解和大规模聚类。&lt;/p&gt;
&lt;h3 id=&#34;3-向量生成&#34;&gt;3. 向量生成
&lt;/h3&gt;&lt;p&gt;特征提取之后，系统通常会把中间表示进一步压缩成固定长度的向量，比如 &lt;code&gt;512&lt;/code&gt; 维、&lt;code&gt;768&lt;/code&gt; 维、&lt;code&gt;1024&lt;/code&gt; 维。&lt;/p&gt;
&lt;p&gt;这个步骤的关键，不是维度越高越好，而是要在表达能力、存储成本和检索速度之间找到平衡。&lt;/p&gt;
&lt;h3 id=&#34;4-存储与检索&#34;&gt;4. 存储与检索
&lt;/h3&gt;&lt;p&gt;向量生成之后，通常不会再按普通图片文件那样管理，而是会进入支持向量检索的系统，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Faiss&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Milvus&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;带向量能力的搜索系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这时候图片就可以参与近似最近邻检索、聚类分析、相似度排序等任务。&lt;/p&gt;
&lt;h2 id=&#34;四技术路线是怎么演进过来的&#34;&gt;四、技术路线是怎么演进过来的
&lt;/h2&gt;&lt;p&gt;图像向量化不是这两年才有，只是近几年效果和应用场景扩展得更快。&lt;/p&gt;
&lt;p&gt;大致可以分成三段看：&lt;/p&gt;
&lt;h3 id=&#34;1-传统特征工程阶段&#34;&gt;1. 传统特征工程阶段
&lt;/h3&gt;&lt;p&gt;这时候的重点是人工定义图像特征，比如边缘、纹理、角点和局部描述子。优点是实现成熟、可解释性强，缺点是对复杂场景和语义理解能力有限。&lt;/p&gt;
&lt;h3 id=&#34;2-cnn-主导阶段&#34;&gt;2. CNN 主导阶段
&lt;/h3&gt;&lt;p&gt;卷积神经网络让图像向量化进入了自动学习特征的阶段。相比手工特征，它可以学到更复杂、更稳定的视觉表达，适合分类、识别、相似检索等任务。&lt;/p&gt;
&lt;h3 id=&#34;3-transformer-和多模态阶段&#34;&gt;3. Transformer 和多模态阶段
&lt;/h3&gt;&lt;p&gt;这一步把图像向量化从“看图特征”进一步推向“图文语义对齐”。像 &lt;code&gt;ViT&lt;/code&gt; 和 &lt;code&gt;CLIP&lt;/code&gt; 这一类模型，已经不只是为了识别图像本身，而是在让图像进入更大的多模态系统里，和文本、标签、知识库一起工作。&lt;/p&gt;
&lt;p&gt;这也是为什么现在很多图像检索系统，不只是“以图搜图”，而是已经能做“文本搜图”或者图文混合检索。&lt;/p&gt;
&lt;h2 id=&#34;五它最常见的应用场景有哪些&#34;&gt;五、它最常见的应用场景有哪些
&lt;/h2&gt;&lt;p&gt;图像向量化并不是只服务于学术研究，它在业务里非常实用。&lt;/p&gt;
&lt;h3 id=&#34;1-相似图片检索&#34;&gt;1. 相似图片检索
&lt;/h3&gt;&lt;p&gt;这是最直观的场景。&lt;/p&gt;
&lt;p&gt;系统把图片转成向量之后，就可以做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以图搜图&lt;/li&gt;
&lt;li&gt;重复图片识别&lt;/li&gt;
&lt;li&gt;相似商品匹配&lt;/li&gt;
&lt;li&gt;视觉去重&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;电商、内容平台、图库管理系统里，这类需求都很常见。&lt;/p&gt;
&lt;h3 id=&#34;2-推荐系统&#34;&gt;2. 推荐系统
&lt;/h3&gt;&lt;p&gt;很多推荐问题，本质上是“这张图和用户刚看过的内容像不像”。&lt;/p&gt;
&lt;p&gt;向量化之后，系统可以把图片内容本身也纳入推荐逻辑，而不是只依赖文本标签或人工分类。对商品推荐、内容推荐、广告匹配来说，这一步很有价值。&lt;/p&gt;
&lt;h3 id=&#34;3-图像聚类和自动分类&#34;&gt;3. 图像聚类和自动分类
&lt;/h3&gt;&lt;p&gt;当图片规模很大时，人工整理会非常慢。&lt;/p&gt;
&lt;p&gt;向量化之后，可以先按相似度把图片自动聚成若干组，再做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;图片归档&lt;/li&gt;
&lt;li&gt;场景分组&lt;/li&gt;
&lt;li&gt;素材整理&lt;/li&gt;
&lt;li&gt;自动标签建议&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这在制造、医疗、教育、媒体内容管理里都很常见。&lt;/p&gt;
&lt;h3 id=&#34;4-异常检测和质检&#34;&gt;4. 异常检测和质检
&lt;/h3&gt;&lt;p&gt;如果“正常样本”已经能被稳定向量化，那么偏离正常分布的图片就更容易被识别出来。&lt;/p&gt;
&lt;p&gt;典型场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工业缺陷检测&lt;/li&gt;
&lt;li&gt;监控异常识别&lt;/li&gt;
&lt;li&gt;票据或影像异常筛查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里向量化的作用，不是直接给出最终判断，而是先把图像变成适合比较和建模的输入。&lt;/p&gt;
&lt;h3 id=&#34;5-多模态检索和图文理解&#34;&gt;5. 多模态检索和图文理解
&lt;/h3&gt;&lt;p&gt;这是现在更值得关注的一块。&lt;/p&gt;
&lt;p&gt;当图像和文本都能被编码到相近的向量空间里，系统就可以做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文本搜图&lt;/li&gt;
&lt;li&gt;图文对齐&lt;/li&gt;
&lt;li&gt;图像内容检索&lt;/li&gt;
&lt;li&gt;多模态知识检索&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类能力和当前很多生成式 AI、视觉问答、企业知识库增强检索都能接起来。&lt;/p&gt;
&lt;h2 id=&#34;六企业落地时真正要面对哪些问题&#34;&gt;六、企业落地时真正要面对哪些问题
&lt;/h2&gt;&lt;p&gt;图像向量化听起来很顺，但真正落地时，难点通常不在“知不知道这个概念”，而在下面这些细节：&lt;/p&gt;
&lt;h3 id=&#34;1-向量维度和成本怎么平衡&#34;&gt;1. 向量维度和成本怎么平衡
&lt;/h3&gt;&lt;p&gt;维度太低，表达不够；维度太高，存储和检索成本就会上去。这个问题没有统一答案，必须结合数据规模、响应时间和准确率一起看。&lt;/p&gt;
&lt;h3 id=&#34;2-模型效果能不能跨场景复用&#34;&gt;2. 模型效果能不能跨场景复用
&lt;/h3&gt;&lt;p&gt;一个模型在公开数据集上表现不错，不代表它在你的业务图片上也同样有效。商品图、工业图、医学影像、监控截图，这些分布差异很大，很多时候都要重新评估。&lt;/p&gt;
&lt;h3 id=&#34;3-检索系统能不能跟上规模增长&#34;&gt;3. 检索系统能不能跟上规模增长
&lt;/h3&gt;&lt;p&gt;当图片量从几万变成几百万、几千万时，向量生成只是前半段，后面的索引、召回、更新策略和在线查询能力才是真正决定体验的部分。&lt;/p&gt;
&lt;h3 id=&#34;4-图像向量化不是业务闭环本身&#34;&gt;4. 图像向量化不是业务闭环本身
&lt;/h3&gt;&lt;p&gt;这一点特别容易被忽略。&lt;/p&gt;
&lt;p&gt;向量化解决的是“把图片变成可计算对象”的问题，但它不等于完整方案。你后面还需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检索逻辑&lt;/li&gt;
&lt;li&gt;标签体系&lt;/li&gt;
&lt;li&gt;结果评估&lt;/li&gt;
&lt;li&gt;人工校验流程&lt;/li&gt;
&lt;li&gt;和业务系统的连接方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些没接上，向量本身并不会自动产生价值。&lt;/p&gt;
&lt;h2 id=&#34;七怎么看它的实际价值&#34;&gt;七、怎么看它的实际价值
&lt;/h2&gt;&lt;p&gt;如果只看技术定义，图像向量化像是一个底层术语；但从业务角度看，它的价值其实很具体：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让图片第一次具备可搜索性&lt;/li&gt;
&lt;li&gt;让相似度比较从像素层走向语义层&lt;/li&gt;
&lt;li&gt;让图像能接进推荐、检索、聚类和识别链路&lt;/li&gt;
&lt;li&gt;让视觉数据真正进入企业分析和自动化流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以把它理解成视觉数据进入 AI 系统的“标准化入口”。没有这一步，很多图片相关能力都只能停留在文件管理层；有了这一步，图片才开始变成能参与决策和自动化处理的数据资产。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;图像向量化不是一个孤立的小技巧，而是现代视觉系统里非常基础的一层。&lt;/p&gt;
&lt;p&gt;它做的事并不神秘：把图片从“像素集合”变成“可检索、可比较、可分析的向量表示”。但就是这一步，决定了图片能不能真正进入 AI、搜索、推荐和多模态应用链路里。&lt;/p&gt;
&lt;p&gt;如果只记一句话，可以先记住这个判断：&lt;/p&gt;
&lt;p&gt;图像向量化的本质，不是压缩图片，而是把图片变成机器真正能用的数据表示。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI 名词解释：用大白话讲清楚 Agent、MCP、RAG 和 Token</title>
        <link>https://knightli.com/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/2026/04/23/ai-terms-agent-mcp-rag-token-explained/</guid>
        <description>&lt;p&gt;刚开始接触 AI，最容易劝退人的通常不是模型本身，而是讨论里那些一串串名词。&lt;code&gt;Agent&lt;/code&gt;、&lt;code&gt;MCP&lt;/code&gt;、&lt;code&gt;RAG&lt;/code&gt;、&lt;code&gt;AIGC&lt;/code&gt;、&lt;code&gt;Token&lt;/code&gt; 看起来都很常见，但如果没人先用人话讲一遍，很多人其实只是在“眼熟”，并没有真正听懂。&lt;/p&gt;
&lt;p&gt;这篇就顺着一组常见入门解释的思路，把 10 个高频 AI 名词压缩成一套更容易记住的解释。目标不是讲得多学术，而是先帮你建立一个能跟上日常讨论的基础框架。&lt;/p&gt;
&lt;h2 id=&#34;10-个常见-ai-名词分别是什么意思&#34;&gt;10 个常见 AI 名词，分别是什么意思
&lt;/h2&gt;&lt;h3 id=&#34;1-agent不只会聊天的执行型-ai&#34;&gt;1. Agent：不只会聊天的执行型 AI
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Agent&lt;/code&gt; 可以先理解成“会干活的 AI 助手”。&lt;/p&gt;
&lt;p&gt;普通聊天机器人更像是你问一句、它答一句；&lt;code&gt;Agent&lt;/code&gt; 则更进一步，它会把任务拆开、安排步骤、调用工具，再把结果交回来。比如你让它帮你整理资料、查信息、生成文档，它不只是给建议，而是可能直接把这些动作串起来做完。&lt;/p&gt;
&lt;p&gt;所以 &lt;code&gt;Agent&lt;/code&gt; 的关键，不在“会不会说”，而在“能不能做”。&lt;/p&gt;
&lt;h3 id=&#34;2-openclaw驻留在电脑里的-ai-助手&#34;&gt;2. OpenClaw：驻留在电脑里的 AI 助手
&lt;/h3&gt;&lt;p&gt;视频里把 &lt;code&gt;OpenClaw&lt;/code&gt; 形容成一种“住在电脑里的 AI 管家”。&lt;/p&gt;
&lt;p&gt;你可以把这类工具理解成更贴近桌面操作的 AI 助手：它不只是接收文字，还可能直接观察界面、调用本地工具、按流程执行任务。和普通网页聊天相比，这类工具更强调实际操作能力。&lt;/p&gt;
&lt;p&gt;如果说 &lt;code&gt;Agent&lt;/code&gt; 是抽象层面的“执行型 AI”，那这类桌面型助手更像是它在个人电脑上的一种具体落地形式。&lt;/p&gt;
&lt;h3 id=&#34;3-skills给-agent-装上的能力包&#34;&gt;3. Skills：给 Agent 装上的能力包
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Skills&lt;/code&gt; 可以理解成 &lt;code&gt;Agent&lt;/code&gt; 的功能模块或操作说明。&lt;/p&gt;
&lt;p&gt;同一个 &lt;code&gt;Agent&lt;/code&gt;，装上不同的 &lt;code&gt;Skills&lt;/code&gt;，就能表现出不同的专长。比如有的偏文案生成，有的偏数据整理，有的偏代码处理。它们有点像手机里的 App，也有点像一套套可复用的工作流程。&lt;/p&gt;
&lt;p&gt;所以很多时候，不是模型突然“变聪明”了，而是它背后多了一组明确的规则、工具和步骤。&lt;/p&gt;
&lt;h3 id=&#34;4-mcpai-连接外部工具的统一接口&#34;&gt;4. MCP：AI 连接外部工具的统一接口
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;MCP&lt;/code&gt; 全称是 &lt;code&gt;Model Context Protocol&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果用生活里的比喻，它有点像 AI 世界里的 &lt;code&gt;Type-C&lt;/code&gt; 接口。以前模型想接不同工具，往往要一套一套单独对接；有了统一协议之后，接入方式会更标准，也更容易复用。&lt;/p&gt;
&lt;p&gt;对普通用户来说，最值得记住的一点是：&lt;code&gt;MCP&lt;/code&gt; 解决的不是“模型会不会回答”，而是“模型怎么安全、稳定地连上外部工具和资源”。&lt;/p&gt;
&lt;h3 id=&#34;5-抽卡ai-生成结果带有随机性&#34;&gt;5. 抽卡：AI 生成结果带有随机性
&lt;/h3&gt;&lt;p&gt;“抽卡”这个说法常见于 &lt;code&gt;AI&lt;/code&gt; 绘图、视频生成和内容创作场景。&lt;/p&gt;
&lt;p&gt;意思很简单：同样的提示词、同样的大方向，每次生成出来的结果也可能不一样。有时候效果惊艳，有时候明显翻车，所以很多人会把反复尝试生成结果这件事，形容成像游戏里抽卡。&lt;/p&gt;
&lt;p&gt;它提醒我们的其实是同一件事：AI 生成不是固定公式，而是带概率和波动的过程。&lt;/p&gt;
&lt;h3 id=&#34;6-api应用和模型之间的连接方式&#34;&gt;6. API：应用和模型之间的连接方式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;API&lt;/code&gt; 全称是 &lt;code&gt;Application Programming Interface&lt;/code&gt;，也就是应用程序接口。&lt;/p&gt;
&lt;p&gt;它可以理解成程序之间沟通的标准入口。你在自己的应用、脚本或编辑器里调用模型服务，本质上就是通过 &lt;code&gt;API&lt;/code&gt; 发请求、拿结果。&lt;/p&gt;
&lt;p&gt;如果把模型服务比作一家餐厅，那么：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;菜单像 &lt;code&gt;API&lt;/code&gt; 文档&lt;/li&gt;
&lt;li&gt;点菜像发起 &lt;code&gt;API&lt;/code&gt; 请求&lt;/li&gt;
&lt;li&gt;后厨出餐像模型返回结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以很多工具表面上看起来不一样，底层其实都是在调用某种 &lt;code&gt;API&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;7-多模态ai-不只处理文字&#34;&gt;7. 多模态：AI 不只处理文字
&lt;/h3&gt;&lt;p&gt;“多模态”说的是 AI 不再只会读写文本，而是可以同时处理多种信息形态。&lt;/p&gt;
&lt;p&gt;比如它可以看图、听语音、理解视频、生成图片，甚至做实时语音和视频交互。和早期只会处理文字的模型相比，多模态模型更像是在同时拥有“看、听、说、写”的能力。&lt;/p&gt;
&lt;p&gt;这也是为什么现在很多 AI 产品的交互方式，已经不再局限于一个输入框。&lt;/p&gt;
&lt;h3 id=&#34;8-rag先检索资料再组织答案&#34;&gt;8. RAG：先检索资料，再组织答案
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;RAG&lt;/code&gt; 是 &lt;code&gt;Retrieval-Augmented Generation&lt;/code&gt;，通常译作检索增强生成。&lt;/p&gt;
&lt;p&gt;它适合解决一个很现实的问题：模型本身的训练数据有时间边界，也不知道你企业内部的新文档、客服记录和业务规则。&lt;code&gt;RAG&lt;/code&gt; 的思路就是，先从指定资料里把相关内容找出来，再结合这些资料生成回答。&lt;/p&gt;
&lt;p&gt;它的价值通常体现在三点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;答案更容易贴近真实资料&lt;/li&gt;
&lt;li&gt;可以追溯回答依据来自哪里&lt;/li&gt;
&lt;li&gt;新文档加入后，知识可随时更新&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以很多企业知识库、智能客服和内部问答系统，底层都会用到 &lt;code&gt;RAG&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;9-aigcai-生成内容的总称&#34;&gt;9. AIGC：AI 生成内容的总称
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;AIGC&lt;/code&gt; 是 &lt;code&gt;AI Generated Content&lt;/code&gt; 的缩写。&lt;/p&gt;
&lt;p&gt;它不是某一个单独工具，而是一个总称，泛指 AI 生成出来的内容，包括文本、图片、音频、视频等各种形式。你看到的 AI 写稿、AI 制图、AI 做短视频、AI 配音，都可以放进 &lt;code&gt;AIGC&lt;/code&gt; 这个大框里理解。&lt;/p&gt;
&lt;p&gt;这个词真正重要的地方在于，它描述的是一种内容生产方式，而不是某个具体模型。&lt;/p&gt;
&lt;h3 id=&#34;10-token模型处理内容时的计量单位&#34;&gt;10. Token：模型处理内容时的计量单位
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Token&lt;/code&gt; 可以理解成模型处理文本时使用的基础计量单位。&lt;/p&gt;
&lt;p&gt;它不完全等于“一个字”或者“一个单词”，但在使用层面上，你可以先把它当成模型计算和计费时的通用单位。你的输入会消耗 &lt;code&gt;Token&lt;/code&gt;，模型的输出会消耗 &lt;code&gt;Token&lt;/code&gt;，上下文里保留的历史内容同样会占用 &lt;code&gt;Token&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;所以为什么很多模型服务都在强调上下文长度、成本控制和压缩提示词，本质上都和 &lt;code&gt;Token&lt;/code&gt; 有关。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>8G 显存跑 llama.cpp 怎么调：32K 更稳，64K 要开 KV Cache 量化</title>
        <link>https://knightli.com/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/2026/04/23/llama-cpp-8g-vram-32k-64k-kv-cache-tuning/</guid>
        <description>&lt;p&gt;&lt;code&gt;8G&lt;/code&gt; 显存到底还能不能把本地大模型跑顺，尤其是在长上下文场景下还能不能保住速度，这是很多人在折腾 &lt;code&gt;llama.cpp&lt;/code&gt; 时都会遇到的问题。&lt;/p&gt;
&lt;p&gt;核心结论可以先记住三条：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对 &lt;code&gt;8G&lt;/code&gt; 显存来说，&lt;code&gt;32K&lt;/code&gt; 上下文通常是更稳的平衡点&lt;/li&gt;
&lt;li&gt;如果一定要跑 &lt;code&gt;64K&lt;/code&gt;，&lt;code&gt;KV Cache&lt;/code&gt; 量化基本是必选项&lt;/li&gt;
&lt;li&gt;在全显卡运行场景里，盲目拉高 &lt;code&gt;CPU&lt;/code&gt; 线程数，反而可能让速度明显下降&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一先解释清楚32k64k-和-kv-cache-是什么&#34;&gt;一、先解释清楚：32K、64K 和 KV Cache 是什么
&lt;/h2&gt;&lt;p&gt;很多人第一次看这类调优文章，最容易卡住的就是这三个词。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; 和 &lt;code&gt;64K&lt;/code&gt; 说的是上下文长度，也就是模型一次最多能处理多少 &lt;code&gt;token&lt;/code&gt;。这里的 &lt;code&gt;K&lt;/code&gt; 就是千，&lt;code&gt;32K&lt;/code&gt; 大约是 &lt;code&gt;32000 token&lt;/code&gt;，&lt;code&gt;64K&lt;/code&gt; 大约是 &lt;code&gt;64000 token&lt;/code&gt;。上下文越长，模型一次能看到的历史内容越多，适合长文档问答、长对话和多轮分析。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;KV Cache&lt;/code&gt; 则是模型为了加速连续生成而保留的一份中间结果缓存。你可以把它理解成：模型已经读过、算过的一部分内容，不会每次都从头重算，而是把关键结果先存起来，后面继续接着用。这里的 &lt;code&gt;K&lt;/code&gt; 和 &lt;code&gt;V&lt;/code&gt;，来自 Transformer 里的 &lt;code&gt;Key&lt;/code&gt; 和 &lt;code&gt;Value&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;为什么这三个词总是一起出现？因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt;、&lt;code&gt;64K&lt;/code&gt; 决定你想让模型一次记住多长内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KV Cache&lt;/code&gt; 决定为了维持这段记忆，要额外占多少显存&lt;/li&gt;
&lt;li&gt;上下文越长，&lt;code&gt;KV Cache&lt;/code&gt; 通常越大，显存压力也越高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以很多长上下文变慢的问题，本质上并不是模型“不会算”，而是缓存太大，把显存挤到了临界点。&lt;/p&gt;
&lt;h2 id=&#34;二为什么-32k-和-64k-的速度会差这么多&#34;&gt;二、为什么 32K 和 64K 的速度会差这么多
&lt;/h2&gt;&lt;p&gt;这里用《三体》大约 &lt;code&gt;3&lt;/code&gt; 万字的文本做压力测试，对比 &lt;code&gt;32K&lt;/code&gt; 和 &lt;code&gt;64K&lt;/code&gt; 两种上下文设置。结果很夸张：在文档长度接近的情况下，&lt;code&gt;64K&lt;/code&gt; 模式的速度显著下降，总耗时也明显拉长。&lt;/p&gt;
&lt;p&gt;问题不在模型突然变笨，而在显存边界被撞到了。&lt;/p&gt;
&lt;p&gt;当 &lt;code&gt;32K&lt;/code&gt; 模式下，模型权重加缓存还能基本塞进 &lt;code&gt;8G&lt;/code&gt; 显存里，数据大多走显卡显存带宽，速度还能维持在比较可用的区间。但一旦切到 &lt;code&gt;64K&lt;/code&gt;，缓存体积继续上涨，总占用逼近甚至超过显存上限，系统就会把部分数据挤到内存里。&lt;/p&gt;
&lt;p&gt;这时候真正掉下去的，不是算力，而是带宽。&lt;/p&gt;
&lt;p&gt;也就是说，很多人看到的是“上下文翻倍后速度暴跌”，本质上其实是数据路径从显存掉到了共享内存或系统内存，推理链路不再跑在高速通道上。&lt;/p&gt;
&lt;h2 id=&#34;三64k-还能不能跑关键在-kv-cache-量化&#34;&gt;三、64K 还能不能跑，关键在 KV Cache 量化
&lt;/h2&gt;&lt;p&gt;第二个很关键的结论，是 &lt;code&gt;KV Cache&lt;/code&gt; 量化对 &lt;code&gt;8G&lt;/code&gt; 显存用户特别重要。&lt;/p&gt;
&lt;p&gt;如果不改变模型本身，只针对缓存做量化，长上下文下最直接的收益就是把缓存占用压缩下来，让原本已经溢出的那部分重新回到显存里。这样一来，&lt;code&gt;64K&lt;/code&gt; 模式虽然依然比 &lt;code&gt;32K&lt;/code&gt; 更吃资源，但至少不会直接跌进最慢的区间。&lt;/p&gt;
&lt;p&gt;换句话说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt; 更像是 &lt;code&gt;8G&lt;/code&gt; 显存的默认推荐区间&lt;/li&gt;
&lt;li&gt;&lt;code&gt;64K&lt;/code&gt; 不是完全不能跑&lt;/li&gt;
&lt;li&gt;但如果不上缓存量化，性能很容易从“能用”直接掉到“很难用”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目标是尽量稳定地跑长上下文，那优先级通常应该是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先确认显存是否已经逼近上限&lt;/li&gt;
&lt;li&gt;再决定是否开启 &lt;code&gt;KV Cache&lt;/code&gt; 量化&lt;/li&gt;
&lt;li&gt;最后才去继续尝试更激进的吞吐量参数&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四gpu-占用不高不代表显卡没干活&#34;&gt;四、GPU 占用不高，不代表显卡没干活
&lt;/h2&gt;&lt;p&gt;这是一个很容易打破直觉的点。&lt;/p&gt;
&lt;p&gt;很多人看到任务管理器里 &lt;code&gt;GPU&lt;/code&gt; 使用率只有二三十，就会怀疑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是不是参数没设对&lt;/li&gt;
&lt;li&gt;是不是模型没真正跑到显卡上&lt;/li&gt;
&lt;li&gt;是不是显卡根本没吃满&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这组测试给出的判断是，&lt;code&gt;llama.cpp&lt;/code&gt; 这类推理很多时候首先卡的不是核心算力，而是显存读写速度。&lt;/p&gt;
&lt;p&gt;也就是说，显卡核心可能很快就把一批计算做完了，但后面还得等下一批权重和缓存数据搬过来。于是你看到的现象就会变成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心占用不算高&lt;/li&gt;
&lt;li&gt;但整体速度还是上不去&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是显卡在偷懒，而是数据通路太窄。&lt;/p&gt;
&lt;p&gt;所以看本地大模型速度时，不能只盯着 &lt;code&gt;GPU Usage&lt;/code&gt;。显存容量、显存带宽、缓存是否溢出，往往更影响最终体验。&lt;/p&gt;
&lt;h2 id=&#34;五调大吞吐量参数确实可能再快一截&#34;&gt;五、调大吞吐量参数，确实可能再快一截
&lt;/h2&gt;&lt;p&gt;这里还做了一个思路很清晰的测试：既然显卡核心并没有完全忙满，那能不能通过调大吞吐量相关参数，让显卡一次处理更多数据，把并行能力进一步压出来。&lt;/p&gt;
&lt;p&gt;测试结果表明，这种做法确实有机会把速度再往上拉一段。&lt;/p&gt;
&lt;p&gt;但这里也有一个前提：显存还得扛得住。&lt;/p&gt;
&lt;p&gt;因为吞吐量相关参数调大之后，往往会带来额外显存占用。如果你本来就在 &lt;code&gt;64K&lt;/code&gt;、高缓存、显存见底的状态下继续往上推，就很容易出现两种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接崩溃&lt;/li&gt;
&lt;li&gt;没崩，但被迫进入更慢的共享内存模式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更稳妥的顺序通常不是“先把参数拉满”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先守住显存边界&lt;/li&gt;
&lt;li&gt;再考虑吞吐量优化&lt;/li&gt;
&lt;li&gt;每调一步都重新看速度和稳定性&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;六cpu-线程不是越多越好&#34;&gt;六、CPU 线程不是越多越好
&lt;/h2&gt;&lt;p&gt;这也是整篇内容里最值得记住的坑点之一。&lt;/p&gt;
&lt;p&gt;很多人做本地推理调优时，容易下意识觉得线程越多越快，既然机器有那么多线程，不用满就像浪费。但实测给出的结果恰恰相反：在模型已经主要跑在显卡上的情况下，强行把 &lt;code&gt;CPU&lt;/code&gt; 线程拉高，性能反而会明显变差。&lt;/p&gt;
&lt;p&gt;原因不复杂。&lt;/p&gt;
&lt;p&gt;在全显卡运行时，&lt;code&gt;CPU&lt;/code&gt; 更像是调度者和预处理协作者，而不是主力计算单元。这时候如果开太多线程，CPU 端的线程竞争、调度切换和上下文切换开销都会变重，最终把本来应该更流畅的数据流打乱。&lt;/p&gt;
&lt;p&gt;结果就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CPU&lt;/code&gt; 更忙了&lt;/li&gt;
&lt;li&gt;但整体速度变慢了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以在这种场景下，默认设置或者较低线程数，往往比一味拉满更靠谱。&lt;/p&gt;
&lt;h2 id=&#34;七对-8g-显存用户更实用的一套思路&#34;&gt;七、对 8G 显存用户更实用的一套思路
&lt;/h2&gt;&lt;p&gt;如果把上面的结论压成一套更容易执行的思路，大概可以整理成这样：&lt;/p&gt;
&lt;h3 id=&#34;1-先把-32k-当成默认目标&#34;&gt;1. 先把 32K 当成默认目标
&lt;/h3&gt;&lt;p&gt;如果你用的是 &lt;code&gt;8G&lt;/code&gt; 显存显卡，先别急着追 &lt;code&gt;64K&lt;/code&gt;。&lt;code&gt;32K&lt;/code&gt; 往往是速度、稳定性和显存占用之间更现实的平衡点。&lt;/p&gt;
&lt;h3 id=&#34;2-想上-64k先处理缓存问题&#34;&gt;2. 想上 64K，先处理缓存问题
&lt;/h3&gt;&lt;p&gt;不要先想“还能不能再榨一点速度”，而是先确认 &lt;code&gt;KV Cache&lt;/code&gt; 有没有量化、显存是不是已经压线。&lt;/p&gt;
&lt;h3 id=&#34;3-不要用-gpu-占用率判断一切&#34;&gt;3. 不要用 GPU 占用率判断一切
&lt;/h3&gt;&lt;p&gt;低占用不一定代表设置错了，也可能只是显存带宽在拖后腿。&lt;/p&gt;
&lt;h3 id=&#34;4-吞吐量优化可以做但别越过显存边界&#34;&gt;4. 吞吐量优化可以做，但别越过显存边界
&lt;/h3&gt;&lt;p&gt;这类参数确实能带来收益，但前提是显存还有余量。&lt;/p&gt;
&lt;h3 id=&#34;5-cpu-线程先保守再逐步测试&#34;&gt;5. CPU 线程先保守，再逐步测试
&lt;/h3&gt;&lt;p&gt;如果模型已经基本跑在显卡上，CPU 线程并不是越高越好。先用默认值或低线程值测试，再看是否值得继续调整。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;这组内容最有价值的地方，不只是给出几个测试数字，而是把一个经常被忽略的事实讲清楚了：&lt;/p&gt;
&lt;p&gt;本地大模型调优，很多时候拼的不是“有没有把所有参数开到最大”，而是你有没有搞清楚瓶颈到底在算力、显存容量、显存带宽，还是在 &lt;code&gt;CPU&lt;/code&gt; 调度。&lt;/p&gt;
&lt;p&gt;对 &lt;code&gt;8G&lt;/code&gt; 显存用户来说，真正更稳的思路通常不是硬冲最长上下文，而是先守住显存边界，再决定要不要继续往上加。&lt;/p&gt;
&lt;p&gt;如果只记一句话，那就是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; 往往是 &lt;code&gt;8G&lt;/code&gt; 显存更稳的工作区间；&lt;code&gt;64K&lt;/code&gt; 不是不能跑，但前提是你已经把 &lt;code&gt;KV Cache&lt;/code&gt; 和显存占用管住了。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code 环境配置四件套：CLAUDE.md、Rules、Memory、Hooks 一次讲清</title>
        <link>https://knightli.com/2026/04/23/claude-code-claude-md-rules-memory-hooks-guide/</link>
        <pubDate>Thu, 23 Apr 2026 10:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/23/claude-code-claude-md-rules-memory-hooks-guide/</guid>
        <description>&lt;p&gt;如果你用 &lt;code&gt;Claude Code&lt;/code&gt; 一段时间，就会很快发现一件事：模型本身当然重要，但给它什么环境、什么边界、什么规则，同样重要。&lt;/p&gt;
&lt;p&gt;很多人刚开始会把注意力放在“我这次 prompt 怎么写”，但真正把 &lt;code&gt;Claude Code&lt;/code&gt; 用成熟之后，你会更关心另一件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它知不知道你是谁&lt;/li&gt;
&lt;li&gt;它知不知道你怎么工作&lt;/li&gt;
&lt;li&gt;它知不知道哪些规则不能违反&lt;/li&gt;
&lt;li&gt;它知不知道什么事情必须先确认&lt;/li&gt;
&lt;li&gt;它能不能长期记住这些边界&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude Code&lt;/code&gt; 之所以能变成一个成熟工具，不只是因为模型强，而是因为它有一整套机制，帮你把这些工作方式沉淀下来。核心上可以拆成四层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Rules&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hooks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇文章就把这四个部分一次讲清楚。&lt;/p&gt;
&lt;h2 id=&#34;为什么环境配置比单次提示词更重要&#34;&gt;为什么环境配置比单次提示词更重要
&lt;/h2&gt;&lt;p&gt;你可以把 &lt;code&gt;Claude Code&lt;/code&gt; 想成你请来的一个助理。&lt;/p&gt;
&lt;p&gt;第一天上岗时，你不会只跟他说一句“帮我做事”，而是会给他一份说明书，告诉他：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的身份是什么&lt;/li&gt;
&lt;li&gt;你的沟通语气偏好是什么&lt;/li&gt;
&lt;li&gt;哪些操作必须先确认&lt;/li&gt;
&lt;li&gt;哪些错误之前犯过，未来不能再犯&lt;/li&gt;
&lt;li&gt;这个项目最重要的文档放在哪里&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是为什么，长期来看，环境配置往往比单次 prompt 更重要。&lt;/p&gt;
&lt;p&gt;因为 prompt 解决的是“这一次要做什么”，而环境配置解决的是“以后每次都要怎么做”。&lt;/p&gt;
&lt;h2 id=&#34;第一层claudemd&#34;&gt;第一层：&lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;先从最基础的开始，&lt;code&gt;CLAUDE.md&lt;/code&gt; 本质上就是一个文字文件。&lt;/p&gt;
&lt;p&gt;你可以在里面写给 Claude 的说明，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你是谁&lt;/li&gt;
&lt;li&gt;你在做什么&lt;/li&gt;
&lt;li&gt;你的沟通偏好&lt;/li&gt;
&lt;li&gt;需要遵守的规则&lt;/li&gt;
&lt;li&gt;当前项目的特殊背景&lt;/li&gt;
&lt;li&gt;重要文档或目录的位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每次 &lt;code&gt;Claude Code&lt;/code&gt; 启动时，这份文档都会被自动送进上下文里，所以模型一定会读到。&lt;/p&gt;
&lt;p&gt;我通常把它叫做“默契档”，因为它本质上就是你和模型之间长期协作的默契。&lt;/p&gt;
&lt;h3 id=&#34;claudemd-适合写什么&#34;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 适合写什么
&lt;/h3&gt;&lt;p&gt;最适合写进 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的，大致有这几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;身份与工作背景&lt;/li&gt;
&lt;li&gt;沟通语气和输出偏好&lt;/li&gt;
&lt;li&gt;全局性的行为规则&lt;/li&gt;
&lt;li&gt;经常会用到的重要项目背景&lt;/li&gt;
&lt;li&gt;常见错误与避免方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你所在的时区&lt;/li&gt;
&lt;li&gt;你是否接受模型直接发送邮件或消息&lt;/li&gt;
&lt;li&gt;哪些操作属于不可逆行为&lt;/li&gt;
&lt;li&gt;处理文档和文件时的习惯&lt;/li&gt;
&lt;li&gt;安全规范和敏感信息边界&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;一个很重要的原则尽量精简&#34;&gt;一个很重要的原则：尽量精简
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 有一个很重要的原则，就是一定要尽量精简。&lt;/p&gt;
&lt;p&gt;原因很简单：它每次都会被强制注入上下文。&lt;/p&gt;
&lt;p&gt;如果你写得太长，就会占掉大量上下文空间，导致真正重要的信息被稀释。模型不是不读，而是注意力会分散，最后更容易漏掉你最在意的规则。&lt;/p&gt;
&lt;p&gt;官方建议通常是最好不要超过 &lt;code&gt;400&lt;/code&gt; 行。&lt;/p&gt;
&lt;p&gt;我自己的习惯会更保守一些，尽量控制在 &lt;code&gt;200&lt;/code&gt; 行以内。&lt;/p&gt;
&lt;h3 id=&#34;claudemd-的常见作用范围&#34;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 的常见作用范围
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 实际上有不同的放置层级，对应不同的作用范围。最常用的是两个：&lt;/p&gt;
&lt;h4 id=&#34;1-user-level&#34;&gt;1. User Level
&lt;/h4&gt;&lt;p&gt;这是全局层级。&lt;/p&gt;
&lt;p&gt;它放在你电脑环境里，对你本机操作的所有项目都有效。&lt;/p&gt;
&lt;p&gt;这个位置适合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的身份信息&lt;/li&gt;
&lt;li&gt;通用的沟通偏好&lt;/li&gt;
&lt;li&gt;你跨项目都适用的做事习惯&lt;/li&gt;
&lt;li&gt;全局性的安全规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如，如果你的时区不是默认常见值，而是曼谷时间，那这类信息就很适合放在 &lt;code&gt;user level&lt;/code&gt;，这样模型以后帮你安排时间时就不容易出错。&lt;/p&gt;
&lt;h4 id=&#34;2-project-level&#34;&gt;2. Project Level
&lt;/h4&gt;&lt;p&gt;这是项目层级。&lt;/p&gt;
&lt;p&gt;它放在具体项目目录下面，只对那个项目有效。&lt;/p&gt;
&lt;p&gt;这个位置适合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目专属背景&lt;/li&gt;
&lt;li&gt;只在这个项目里成立的规则&lt;/li&gt;
&lt;li&gt;项目的目录结构说明&lt;/li&gt;
&lt;li&gt;这个项目的重要文档入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;举个例子，如果一个项目处理财务，另一个项目处理人事，那两边的背景和约束显然不同，就不应该混在同一个全局说明里。&lt;/p&gt;
&lt;h3 id=&#34;怎么判断该放哪一层&#34;&gt;怎么判断该放哪一层
&lt;/h3&gt;&lt;p&gt;判断方式其实很简单：&lt;/p&gt;
&lt;p&gt;你写进去的东西，如果换到另一个项目里还成立，那就放 &lt;code&gt;user level&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果一换项目就不成立，那就放 &lt;code&gt;project level&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;怎么开始写第一版&#34;&gt;怎么开始写第一版
&lt;/h3&gt;&lt;p&gt;最常见的起手方式有两种：&lt;/p&gt;
&lt;h4 id=&#34;1-用-init&#34;&gt;1. 用 &lt;code&gt;/init&lt;/code&gt;
&lt;/h4&gt;&lt;p&gt;你可以直接在终端里运行斜线命令 &lt;code&gt;/init&lt;/code&gt;，让 Claude 扫描当前项目，自动帮你生成一份基础版 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;h4 id=&#34;2-让-claude-帮你整理&#34;&gt;2. 让 Claude 帮你整理
&lt;/h4&gt;&lt;p&gt;你也可以直接让 Claude 去搜索别人是怎么写 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的，再结合你的情况问你问题，最后帮你整理成适合你自己的版本。&lt;/p&gt;
&lt;p&gt;很多时候，这比自己从零开始写更轻松。&lt;/p&gt;
&lt;h3 id=&#34;一个很实用的习惯&#34;&gt;一个很实用的习惯
&lt;/h3&gt;&lt;p&gt;在你和 Claude 长期协作的过程中，只要你发现某件事情属于“未来一定要记住、不要再犯”的内容，就可以直接让它写进 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;不过写之前还是要判断一下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这是全局规则&lt;/li&gt;
&lt;li&gt;还是当前项目规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;别把所有东西都塞进一个文件里。&lt;/p&gt;
&lt;h2 id=&#34;第二层rules&#34;&gt;第二层：&lt;code&gt;Rules&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;接下来是 &lt;code&gt;Rules&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它和 &lt;code&gt;CLAUDE.md&lt;/code&gt; 最大的差别，不是文件形式，而是加载方式。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是无论你做什么，模型都会读到。&lt;/p&gt;
&lt;p&gt;而 &lt;code&gt;Rules&lt;/code&gt; 的优势在于：&lt;strong&gt;可以条件加载。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;也就是说，只有在某些路径、某些文件、某些工具或某些场景下，这条规则才会被读到。&lt;/p&gt;
&lt;h3 id=&#34;为什么条件加载很重要&#34;&gt;为什么条件加载很重要
&lt;/h3&gt;&lt;p&gt;因为上下文空间永远是稀缺资源。&lt;/p&gt;
&lt;p&gt;如果所有规则都无差别地塞进上下文里，就会发生两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型负担变重&lt;/li&gt;
&lt;li&gt;真正关键的规则反而被淹没&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;按需加载的价值就在这里：让模型在刚好的时候读到刚好的信息。&lt;/p&gt;
&lt;h3 id=&#34;什么时候该把规则从-claudemd-挪到-rules&#34;&gt;什么时候该把规则从 &lt;code&gt;CLAUDE.md&lt;/code&gt; 挪到 &lt;code&gt;Rules&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;通常有两种情况：&lt;/p&gt;
&lt;h4 id=&#34;1-claudemd-太长了&#34;&gt;1. &lt;code&gt;CLAUDE.md&lt;/code&gt; 太长了
&lt;/h4&gt;&lt;p&gt;如果你的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 开始超过 &lt;code&gt;200&lt;/code&gt; 行，规则越来越多，重要内容被稀释，那就该考虑把一部分规则拆出去。&lt;/p&gt;
&lt;h4 id=&#34;2-某些规则只和特定路径相关&#34;&gt;2. 某些规则只和特定路径相关
&lt;/h4&gt;&lt;p&gt;如果你已经明显知道某些规则只在某类文件里才有意义，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只对 Python 脚本有效&lt;/li&gt;
&lt;li&gt;只对某个 hooks 目录有效&lt;/li&gt;
&lt;li&gt;只对某个子项目有效&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那这些规则就更适合移到 &lt;code&gt;Rules&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;rules-最适合的场景&#34;&gt;&lt;code&gt;Rules&lt;/code&gt; 最适合的场景
&lt;/h3&gt;&lt;p&gt;最典型的就是“特定情境、特定路径、特定文件类型”。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只在处理 hooks 文件时触发的规范&lt;/li&gt;
&lt;li&gt;只在某类脚本中要遵守的编码规则&lt;/li&gt;
&lt;li&gt;只在某个目录下适用的工作方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些内容如果继续塞在 &lt;code&gt;CLAUDE.md&lt;/code&gt; 里，其实是不划算的。&lt;/p&gt;
&lt;h2 id=&#34;第三层memory&#34;&gt;第三层：&lt;code&gt;Memory&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;第三个层面是 &lt;code&gt;Memory&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它和 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;Rules&lt;/code&gt; 一样，也会进入模型上下文，但它最核心的区别是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是你主动设定的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Memory&lt;/code&gt; 则更像是 Claude 在协作过程中，写给自己的笔记。&lt;/p&gt;
&lt;h3 id=&#34;memory-记的是什么&#34;&gt;&lt;code&gt;Memory&lt;/code&gt; 记的是什么
&lt;/h3&gt;&lt;p&gt;当 Claude 判断某件事值得记住，或者需要短期保留，它就会把这些内容写进 &lt;code&gt;Memory&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;常见内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你纠正过它的某个做法&lt;/li&gt;
&lt;li&gt;你最近新增的偏好&lt;/li&gt;
&lt;li&gt;当前项目的临时状态&lt;/li&gt;
&lt;li&gt;你今天没做完、明天还要继续的事&lt;/li&gt;
&lt;li&gt;你最近在跟哪些人合作&lt;/li&gt;
&lt;li&gt;某些最近才提到的个人信息或上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，&lt;code&gt;Memory&lt;/code&gt; 更像动态知识，而不是长期制度。&lt;/p&gt;
&lt;h3 id=&#34;memory-和前两者的区别&#34;&gt;&lt;code&gt;Memory&lt;/code&gt; 和前两者的区别
&lt;/h3&gt;&lt;p&gt;一个简单的区分方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;Rules&lt;/code&gt;：偏长期、偏制度、偏明确规则&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;：偏临时、偏动态、偏工作过程中的新理解&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果某件事只是最近几天有效，或者项目状态在持续变化，那它通常更适合放进 &lt;code&gt;Memory&lt;/code&gt;，而不是写成长期规则。&lt;/p&gt;
&lt;h3 id=&#34;memory-也可以手动写&#34;&gt;&lt;code&gt;Memory&lt;/code&gt; 也可以手动写
&lt;/h3&gt;&lt;p&gt;虽然 &lt;code&gt;Memory&lt;/code&gt; 有自动整理能力，但你也可以主动告诉 Claude：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;请记下来我明天要做什么&lt;/li&gt;
&lt;li&gt;请记下来我要追踪谁的状态&lt;/li&gt;
&lt;li&gt;请记下来这个月某个项目的关键节点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它也可以帮你写进 &lt;code&gt;Memory&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你还可以通过斜线命令 &lt;code&gt;/memory&lt;/code&gt; 查看当前有哪些记忆，并手动编辑或删除。&lt;/p&gt;
&lt;p&gt;不过很多时候，我自己不会频繁手动维护，因为 Claude 本身也会定期整理这些记忆，把已经过时的部分清掉。&lt;/p&gt;
&lt;h2 id=&#34;第四层hooks&#34;&gt;第四层：&lt;code&gt;Hooks&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;最后也是最重要、最进阶的一层，就是 &lt;code&gt;Hooks&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;前面讲到的 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;Rules&lt;/code&gt;、&lt;code&gt;Memory&lt;/code&gt;，本质上都还是自然语言说明。&lt;/p&gt;
&lt;p&gt;你写了规则，模型通常会遵守，但它仍然是在“理解之后执行”。&lt;/p&gt;
&lt;p&gt;只要还是自然语言，就会存在几个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型偶尔会漏掉&lt;/li&gt;
&lt;li&gt;规则太多时，注意力会分散&lt;/li&gt;
&lt;li&gt;某些情境下它会自行判断这条规则不重要&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是你写得不够认真，而是自然语言规则本来就很难做到 &lt;code&gt;100%&lt;/code&gt; 强制。&lt;/p&gt;
&lt;h3 id=&#34;hooks-的本质是什么&#34;&gt;&lt;code&gt;Hooks&lt;/code&gt; 的本质是什么
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Hooks&lt;/code&gt; 不再是自然语言说明，而是一段脚本。&lt;/p&gt;
&lt;p&gt;它是事件触发的、程序级别的强制逻辑。&lt;/p&gt;
&lt;p&gt;只要某个事件发生，这段逻辑就一定会执行，不会被模型“自己判断后略过”。&lt;/p&gt;
&lt;p&gt;这就是 &lt;code&gt;Hooks&lt;/code&gt; 最关键的价值：&lt;/p&gt;
&lt;p&gt;把“建议遵守”变成“必须执行”。&lt;/p&gt;
&lt;h3 id=&#34;什么时候该上-hooks&#34;&gt;什么时候该上 &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;当你发现某条规则已经写进了 &lt;code&gt;CLAUDE.md&lt;/code&gt; 或 &lt;code&gt;Rules&lt;/code&gt;，但 Claude 偶尔还是不执行，而且这件事一旦漏掉，风险就比较大，那就应该考虑改成 &lt;code&gt;Hooks&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;简单说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;低风险的，写规则&lt;/li&gt;
&lt;li&gt;高风险的，写 &lt;code&gt;Hooks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;最典型的-hooks-场景&#34;&gt;最典型的 &lt;code&gt;Hooks&lt;/code&gt; 场景
&lt;/h3&gt;&lt;p&gt;最典型的，就是那些你绝对不希望出错的动作，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;发邮件前必须确认&lt;/li&gt;
&lt;li&gt;发 Slack、Outlook、Gmail 消息前必须确认&lt;/li&gt;
&lt;li&gt;删除危险文件前必须拦截&lt;/li&gt;
&lt;li&gt;检测到要外发密码或 API Key 时必须阻止&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些要求只是写成一句自然语言规则，模型有可能哪天忙中出错，真的就发出去了。&lt;/p&gt;
&lt;p&gt;但如果写成 &lt;code&gt;Hooks&lt;/code&gt;，只要事件发生，就会被强制拦截。&lt;/p&gt;
&lt;p&gt;这才是程序层面的硬防线。&lt;/p&gt;
&lt;h3 id=&#34;hooks-常见的触发时机&#34;&gt;&lt;code&gt;Hooks&lt;/code&gt; 常见的触发时机
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Hooks&lt;/code&gt; 可以设置在很多不同阶段，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对话刚开始时注入提醒&lt;/li&gt;
&lt;li&gt;某个工具执行前进行检查&lt;/li&gt;
&lt;li&gt;某个工具执行后做结果校验&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你不一定需要自己知道专业术语。&lt;/p&gt;
&lt;p&gt;很多时候，只要你能清楚描述需求，让 Claude 帮你判断“这条规则适不适合改成 hook”，它就能帮你一起设计。&lt;/p&gt;
&lt;p&gt;你也可以通过斜线命令 &lt;code&gt;/hook&lt;/code&gt; 去查看系统当前已经设置了哪些 hooks。&lt;/p&gt;
&lt;h2 id=&#34;一套更实用的上手顺序&#34;&gt;一套更实用的上手顺序
&lt;/h2&gt;&lt;p&gt;如果你想把这四层串起来，我自己更推荐下面这条路径：&lt;/p&gt;
&lt;h3 id=&#34;第一步先用-init-生成基础版-claudemd&#34;&gt;第一步：先用 &lt;code&gt;/init&lt;/code&gt; 生成基础版 &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;不要一开始就手写一份特别完整的规则文档。&lt;/p&gt;
&lt;p&gt;先让 Claude 帮你扫描项目，生成一个起点版本，再慢慢迭代。&lt;/p&gt;
&lt;h3 id=&#34;第二步边用边补&#34;&gt;第二步：边用边补
&lt;/h3&gt;&lt;p&gt;在协作过程中，只要你发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这件事以后一定要记得&lt;/li&gt;
&lt;li&gt;这个错误以后不能再犯&lt;/li&gt;
&lt;li&gt;这个偏好以后每次都适用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就让 Claude 帮你写进 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;第三步当-claudemd-变长时拆到-rules&#34;&gt;第三步：当 &lt;code&gt;CLAUDE.md&lt;/code&gt; 变长时，拆到 &lt;code&gt;Rules&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;一旦你发现 &lt;code&gt;CLAUDE.md&lt;/code&gt; 越来越长，模型开始不一定遵守每一条规则，就该考虑拆分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些是全局规则&lt;/li&gt;
&lt;li&gt;哪些只和某些路径相关&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把后者移到 &lt;code&gt;Rules&lt;/code&gt;，改成条件加载。&lt;/p&gt;
&lt;h3 id=&#34;第四步再把高风险规则升级成-hooks&#34;&gt;第四步：再把高风险规则升级成 &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;如果某些规则即使写了，模型还是偶尔会漏，而且漏掉代价很高，那就不要再停留在自然语言层面，直接升级成 &lt;code&gt;Hooks&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;也就是把“提醒”变成“强制”。&lt;/p&gt;
&lt;h3 id=&#34;第五步把临时状态交给-memory&#34;&gt;第五步：把临时状态交给 &lt;code&gt;Memory&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;对于那些会过期、会变化、不是长期制度的内容，不要一股脑写进 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;更合适的做法是交给 &lt;code&gt;Memory&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前项目进度&lt;/li&gt;
&lt;li&gt;最近合作对象&lt;/li&gt;
&lt;li&gt;最近新增偏好&lt;/li&gt;
&lt;li&gt;近期计划和待办&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样上下文会更清爽，模型也更容易保持稳定表现。&lt;/p&gt;
&lt;h2 id=&#34;这四层分别该记什么&#34;&gt;这四层分别该记什么
&lt;/h2&gt;&lt;p&gt;如果你想快速记住，可以直接用下面这个区分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;：长期默契、全局说明、项目基础背景&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Rules&lt;/code&gt;：按路径或场景加载的专项规则&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;：动态知识、临时状态、最近学到的东西&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hooks&lt;/code&gt;：高风险操作的程序级强制拦截&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;很多人把 &lt;code&gt;Claude Code&lt;/code&gt; 当成“会写代码的聊天界面”，但真正用深之后，你会发现它更像一个长期协作的智能工作台。&lt;/p&gt;
&lt;p&gt;关键不只是你每次怎么下指令，而是你有没有给它一套稳定、清晰、可长期积累的环境。&lt;/p&gt;
&lt;p&gt;一旦你把这四层搭起来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Rules&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hooks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你和模型之间的协作质量，通常会有非常明显的提升。&lt;/p&gt;
&lt;p&gt;因为你终于不是每次都从零开始解释自己是谁、怎么工作、什么事不能做，而是把这些真正沉淀成了环境。&lt;/p&gt;
&lt;p&gt;这才是把一个强模型，真正用成成熟工具的关键一步。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp ollama 显卡性能天梯：CUDA、ROCm、Vulkan </title>
        <link>https://knightli.com/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</link>
        <pubDate>Thu, 23 Apr 2026 09:58:11 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</guid>
        <description>&lt;h2 id=&#34;先看懂这些参数&#34;&gt;先看懂这些参数
&lt;/h2&gt;&lt;h3 id=&#34;q4_0-是什么&#34;&gt;&lt;code&gt;Q4_0&lt;/code&gt; 是什么
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; 是一种 4-bit 量化格式。它的意义不是“模型更强”，而是“模型更小、更省显存、更容易塞进更多设备里”。这些榜单大多统一用 &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt;，核心目的是减少变量，让不同 GPU 的成绩更容易横向比较。&lt;/p&gt;
&lt;h3 id=&#34;pp512-是什么&#34;&gt;&lt;code&gt;pp512&lt;/code&gt; 是什么
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; 一般可以理解为 &lt;code&gt;prompt processing 512 tokens&lt;/code&gt;，也就是处理 512 个输入 token 时的吞吐。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp&lt;/code&gt; = prompt processing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;512&lt;/code&gt; = 输入长度是 512 token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens per second&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它更像“吃提示词的速度”，通常能并行得更充分，所以数字往往很高。&lt;/p&gt;
&lt;h3 id=&#34;tg128-是什么&#34;&gt;&lt;code&gt;tg128&lt;/code&gt; 是什么
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; 一般可以理解为 &lt;code&gt;text generation 128 tokens&lt;/code&gt;，也就是连续生成 128 个 token 时的速度。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tg&lt;/code&gt; = text generation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128&lt;/code&gt; = 连续生成 128 token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens per second&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它更接近我们平时感受到的“模型回答快不快”。因为生成阶段是逐 token 递推，所以通常明显低于 &lt;code&gt;pp512&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;fa-是什么&#34;&gt;&lt;code&gt;FA&lt;/code&gt; 是什么
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FA&lt;/code&gt; 是 &lt;code&gt;Flash Attention&lt;/code&gt;。简单理解就是注意力计算的一种优化开关。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;with FA&lt;/code&gt; 表示启用了 Flash Attention&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt; 表示关闭 Flash Attention&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在不少卡上，&lt;code&gt;FA&lt;/code&gt; 对 &lt;code&gt;pp512&lt;/code&gt; 的提升比对 &lt;code&gt;tg128&lt;/code&gt; 更明显；但不同后端、不同驱动和不同架构之间，提升幅度并不一致，个别设备甚至会出现 PP 升、TG 变化很小，或者 PP 反而下降的情况。&lt;/p&gt;
&lt;h3 id=&#34;ts-怎么看&#34;&gt;&lt;code&gt;t/s&lt;/code&gt; 怎么看
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;t/s&lt;/code&gt; 就是 &lt;code&gt;tokens per second&lt;/code&gt;。它不是帧率，也不是 FLOPS，而是模型吞吐表现的直接结果。&lt;/p&gt;
&lt;p&gt;读榜单时最重要的一点是：&lt;strong&gt;先确认你在比的是不是同一种测试。&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要把 &lt;code&gt;pp512&lt;/code&gt; 和 &lt;code&gt;tg128&lt;/code&gt; 直接混着比&lt;/li&gt;
&lt;li&gt;不要把 &lt;code&gt;no FA&lt;/code&gt; 和 &lt;code&gt;with FA&lt;/code&gt; 混着比&lt;/li&gt;
&lt;li&gt;不要把 CUDA、ROCm、Vulkan 的结果当成完全等价的同一条曲线&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;先说结论&#34;&gt;先说结论
&lt;/h2&gt;&lt;p&gt;从这几条讨论串当前可见的数据看，大致可以先记住这几个结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt; 仍然是目前 &lt;code&gt;llama.cpp&lt;/code&gt; GPU 跑分里最强、样本也最密集的一条线，特别是高端 Nvidia 卡在 &lt;code&gt;pp512&lt;/code&gt; 上优势很大。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 在高端 AMD 卡和 Instinct 卡上已经能给出非常像样的成绩，&lt;code&gt;MI300X&lt;/code&gt;、&lt;code&gt;7900 XTX&lt;/code&gt;、&lt;code&gt;W7900&lt;/code&gt; 这些条目都不弱。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Vulkan&lt;/code&gt; 的优点不是“绝对最快”，而是覆盖面最广，Nvidia、AMD、Intel、Apple Asahi / MoltenVK，甚至很多老卡和核显都能找到条目。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; 往往更接近日常体感，&lt;code&gt;pp512&lt;/code&gt; 更适合看吞吐能力。很多“榜一”卡，在两项里领先幅度并不完全一样。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cuda-完整榜单&#34;&gt;CUDA 完整榜单
&lt;/h2&gt;&lt;h3 id=&#34;llama-2-7b-q4_0-no-fa&#34;&gt;Llama 2 7B, Q4_0, no FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5090&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14073.41 ± 115.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;290.02 ± 1.10&lt;/td&gt;
          &lt;td&gt;8cf6b42&lt;/td&gt;
          &lt;td&gt;@totaldev&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 6000 Blackwell&lt;/td&gt;
          &lt;td&gt;96 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14854.63 ± 22.73&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;274.20 ± 0.14&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@Tom94&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;H100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM3 / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9918.34 ± 176.97&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;267.81 ± 1.54&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM2e / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4849.53 ± 8.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;190.88 ± 0.33&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090 D&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10293.86 ± 134.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;189.33 ± 0.19&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@autonomous-AI-lab&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11992.70 ± 107.99&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;186.21 ± 0.13&lt;/td&gt;
          &lt;td&gt;2241453&lt;/td&gt;
          &lt;td&gt;@lhl&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8297.36 ± 9.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;181.99 ± 0.42&lt;/td&gt;
          &lt;td&gt;8a4280c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070 Ti&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6952.38 ± 13.73&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;176.85 ± 0.07&lt;/td&gt;
          &lt;td&gt;933414c&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 6000 Ada&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9229.23 ± 101.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;176.07 ± 0.26&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090 Ti&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6567.49 ± 20.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;171.19 ± 3.98&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5174.69 ± 21.83&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;158.16 ± 0.21&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;L40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8870.49 ± 378.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;152.01 ± 0.28&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080 SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8125.15 ± 41.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;148.33 ± 0.20&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;@zacharyarnaise&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8031.64 ± 26.49&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;142.49 ± 0.16&lt;/td&gt;
          &lt;td&gt;20638e4&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3080&lt;/td&gt;
          &lt;td&gt;10 GB / GDDR6X / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5013.86 ± 24.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.65 ± 0.99&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A6000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4913.93 ± 6.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;138.73 ± 2.75&lt;/td&gt;
          &lt;td&gt;4795c91&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4070 Ti SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6924.53 ± 13.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;132.26 ± 0.16&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 4000 Blackwell&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4992.83 ± 113.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;131.66 ± 0.20&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A5000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4028.16 ± 19.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.07 ± 2.74&lt;/td&gt;
          &lt;td&gt;e5155e6&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla V100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3042.64 ± 40.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;129.08 ± 0.05&lt;/td&gt;
          &lt;td&gt;51f5a45&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5184.75 ± 18.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;127.54 ± 0.46&lt;/td&gt;
          &lt;td&gt;@Spyro000&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4609.01 ± 10.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.11 ± 0.17&lt;/td&gt;
          &lt;td&gt;3470a5c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A30&lt;/td&gt;
          &lt;td&gt;24 GB / HBM2e / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2767.10 ± 1.88&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.81 ± 0.16&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan V&lt;/td&gt;
          &lt;td&gt;12 GB / HBM2 / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2617.46 ± 2.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.79 ± 0.05&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR6 / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2890.66 ± 2.42&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;107.51 ± 0.21&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 6000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2751.18 ± 19.43&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;102.77 ± 0.04&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 8000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2709.95 ± 3.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;102.68 ± 0.03&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4500&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2827.20 ± 66.43&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.32 ± 2.80&lt;/td&gt;
          &lt;td&gt;5cdb27e&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5060 Ti 16 GB&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3737.25 ± 6.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;90.94 ± 0.02&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2070 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2088.34 ± 1.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;88.06 ± 0.28&lt;/td&gt;
          &lt;td&gt;bc07349&lt;/td&gt;
          &lt;td&gt;@phstudy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2684.06 ± 15.28&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;83.77 ± 0.37&lt;/td&gt;
          &lt;td&gt;65349f2&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan Xp&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1154.96 ± 1.46&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.08 ± 0.08&lt;/td&gt;
          &lt;td&gt;c4510dc&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3060&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR6 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2137.50 ± 10.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.57 ± 0.07&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@QuantiusBenignus&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 4000&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1536.89 ± 0.90&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;65.62 ± 0.62&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4060 Ti 8 GB&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3394.63 ± 7.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.86 ± 0.01&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR5X / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1084.41 ± 3.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.49 ± 0.06&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000 Ada&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2779.77 ± 9.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.83 ± 0.04&lt;/td&gt;
          &lt;td&gt;a74a0d6&lt;/td&gt;
          &lt;td&gt;@sdwolfz&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2060 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1420.24 ± 1.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;60.04 ± 0.01&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P100&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;760.80 ± 2.92&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;58.35 ± 0.00&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DGX Spark&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5x&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3062.31 ± 11.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;57.21 ± 0.06&lt;/td&gt;
          &lt;td&gt;5acd455&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1007.42 ± 1.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;54.74 ± 0.07&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2000 Ada&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1956.22 ± 7.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.62 ± 0.04&lt;/td&gt;
          &lt;td&gt;756cfea&lt;/td&gt;
          &lt;td&gt;@DigitalRudeness&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla T4&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1219.06 ± 4.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;46.38 ± 0.73&lt;/td&gt;
          &lt;td&gt;d32e03f&lt;/td&gt;
          &lt;td&gt;@pt13762104&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4050 Laptop&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR6 / 96 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1725.85 + 17.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.72 + 0.41&lt;/td&gt;
          &lt;td&gt;d79d8f3&lt;/td&gt;
          &lt;td&gt;@TimCabbage&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1660&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;148.91 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.35 ± 0.02&lt;/td&gt;
          &lt;td&gt;9515c61&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla M40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;282.65 ± 0.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.04 ± 0.02&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1070 Ti&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;714.44 ± 2.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.82 ± 0.02&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Jetson AGX Orin&lt;/td&gt;
          &lt;td&gt;64 GB / LPDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;991.31 ± 1.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.58 ± 0.14&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P4&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;514.53 ± 3.06&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.29 ± 0.00&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;P106-100&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;406.94 ± 0.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;30.40 ± 0.02&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1060&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;416.85 ± 1.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.79 ± 0.02&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro T1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;79.44 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.82 ± 0.18&lt;/td&gt;
          &lt;td&gt;f6da8cb&lt;/td&gt;
          &lt;td&gt;@hanabu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P2000&lt;/td&gt;
          &lt;td&gt;5 GB / GDDR5 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;309.30 ± 0.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.63 ± 0.00&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;183.40 ± 0.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.99 ± 0.13&lt;/td&gt;
          &lt;td&gt;1e74897&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla K80&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;133.14 ± 0.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.80 ± 0.02&lt;/td&gt;
          &lt;td&gt;32732f2&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;llama-2-7b-q4_0-with-fa&#34;&gt;Llama 2 7B, Q4_0, with FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5090&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14970.15 ± 381.06&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;300.40 ± 0.28&lt;/td&gt;
          &lt;td&gt;8cf6b42&lt;/td&gt;
          &lt;td&gt;@totaldev&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 6000 Blackwell&lt;/td&gt;
          &lt;td&gt;96 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16618.98 ± 20.66&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;281.11 ± 0.41&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Tom94&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;H100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM3 / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11263.29 ± 98.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;280.74 ± 1.17&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM2e / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5285.96 ± 6.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;200.90 ± 0.12&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090 D&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12506.97 ± 11.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;191.57 ± 0.03&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@autonomous-AI-lab&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14770.63 ± 102.93&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;188.96 ± 0.05&lt;/td&gt;
          &lt;td&gt;2241453&lt;/td&gt;
          &lt;td&gt;@lhl&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9487.70 ± 21.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;184.68 ± 0.05&lt;/td&gt;
          &lt;td&gt;8a4280c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070 Ti&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8419.56 ± 35.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;182.43 ± 0.09&lt;/td&gt;
          &lt;td&gt;933414c&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 6000 Ada&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10576.85 ± 530.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;179.47 ± 0.32&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090 Ti&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6924.01 ± 10.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;172.26 ± 1.31&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 4500 Blackwell&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7251.66 ± 92.40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;168.90 ± 0.20&lt;/td&gt;
          &lt;td&gt;becc481&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5560.06 ± 16.28&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;161.89 ± 0.18&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;L40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10097.64 ± 671.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;153.76 ± 0.12&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080 SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9439.01 ± 56.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;147.48 ± 1.41&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;@zacharyarnaise&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9205.93 ± 22.31&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;143.47 ± 0.02&lt;/td&gt;
          &lt;td&gt;20638e4&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A6000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5662.39 ± 13.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;144.87 ± 0.18&lt;/td&gt;
          &lt;td&gt;4795c91&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3080&lt;/td&gt;
          &lt;td&gt;10 GB / GDDR6X / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5569.56 ± 14.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.95 ± 0.95&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 4000 Blackwell&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5674.44 ± 139.53&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;136.38 ± 0.13&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A5000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4552.15 ± 9.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;135.83 ± 0.11&lt;/td&gt;
          &lt;td&gt;e5155e6&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla V100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2973.78 ± 3.62&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;134.76 ± 0.02&lt;/td&gt;
          &lt;td&gt;51f5a45&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4070 Ti SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7612.32 ± 37.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;132.85 ± 0.31&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A30&lt;/td&gt;
          &lt;td&gt;24 GB / HBM2e / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3068.72 ± 0.63&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;131.93 ± 0.18&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5783.44 ± 36.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128.21 ± 2.52&lt;/td&gt;
          &lt;td&gt;@Spyro000&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5256.38 ± 19.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;126.24 ± 0.06&lt;/td&gt;
          &lt;td&gt;3470a5c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan V&lt;/td&gt;
          &lt;td&gt;12 GB / HBM2 / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2481.25 ± 1.31&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;112.17 ± 0.01&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR6 / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3107.61 ± 4.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;109.17 ± 0.07&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 6000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3053.96 ± 1.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.38 ± 0.04&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 8000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3052.35 ± 5.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;103.63 ± 0.02&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4500&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3453.10 ± 49.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;103.00 ± 0.25&lt;/td&gt;
          &lt;td&gt;5cdb27e&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5060 Ti 16 GB&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4195.53 ± 1.98&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.46 ± 0.01&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2070 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2293.29 ± 5.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;87.71 ± 0.29&lt;/td&gt;
          &lt;td&gt;bc07349&lt;/td&gt;
          &lt;td&gt;@phstudy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2807.83 ± 52.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;85.17 ± 0.66&lt;/td&gt;
          &lt;td&gt;65349f2&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3060&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR6 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2407.67 ± 3.73&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.92 ± 0.03&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@QuantiusBenignus&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan Xp&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1218.12 ± 1.82&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.84 ± 0.04&lt;/td&gt;
          &lt;td&gt;c4510dc&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 4000&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1662.80 ± 2.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;67.62 ± 0.67&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4060 Ti 8 GB&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3803.45 ± 70.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.03 ± 0.53&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P100&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;787.36 ± 3.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.99 ± 0.00&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR5X / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1138.14 ± 2.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.38 ± 0.03&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000 Ada&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3171.86 ± 4.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.37 ± 0.01&lt;/td&gt;
          &lt;td&gt;a74a0d6&lt;/td&gt;
          &lt;td&gt;@sdwolfz&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2060 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1563.77 ± 0.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.13 ± 0.05&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DGX Spark&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5x&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3661.37 ± 38.66&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56.74 ± 0.03&lt;/td&gt;
          &lt;td&gt;5acd455&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1079.66 ± 0.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.73 ± 0.05&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2000 Ada&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2250.14 ± 5.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.71 ± 0.01&lt;/td&gt;
          &lt;td&gt;756cfea&lt;/td&gt;
          &lt;td&gt;@DigitalRudeness&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla T4&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1309.73 ± 1.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;44.03 ± 0.57&lt;/td&gt;
          &lt;td&gt;d32e03f&lt;/td&gt;
          &lt;td&gt;@pt13762104&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1660&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;154.45 ± 0.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.43 ± 0.01&lt;/td&gt;
          &lt;td&gt;9515c61&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla M40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;290.17 ± 0.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.98 ± 0.01&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1070 Ti&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;790.52 ± 2.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.87 ± 0.00&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Jetson AGX Orin&lt;/td&gt;
          &lt;td&gt;64 GB / LPDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1171.96 ± 4.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;35.88 ± 0.18&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P4&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;529.53 ± 2.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.12 ± 0.03&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;P106-100&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;438.49 ± 0.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;30.64 ± 0.06&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1060&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;446.19 ± 0.81&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.18 ± 0.01&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro T1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.46 ± 0.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.46 ± 0.23&lt;/td&gt;
          &lt;td&gt;f6da8cb&lt;/td&gt;
          &lt;td&gt;@hanabu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P2000&lt;/td&gt;
          &lt;td&gt;5 GB / GDDR5 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;311.55 ± 0.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.76 ± 0.01&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla K80&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;133.36 ± 0.60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14.27 ± 0.32&lt;/td&gt;
          &lt;td&gt;32732f2&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;173.82 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.65 ± 0.14&lt;/td&gt;
          &lt;td&gt;1e74897&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;apple-silicon-参考口径&#34;&gt;Apple Silicon 参考口径
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;#4167&lt;/code&gt; 这条讨论和后三条最大的区别，是它更早建立了统一口径，除了 &lt;code&gt;Q4_0&lt;/code&gt;，还会顺带放 &lt;code&gt;F16&lt;/code&gt; 和 &lt;code&gt;Q8_0&lt;/code&gt;。它对理解 &lt;code&gt;PP / TG / t/s&lt;/code&gt; 很有帮助。&lt;/p&gt;
&lt;p&gt;讨论里直接给出的说明是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PP&lt;/code&gt; 表示 &lt;code&gt;prompt processing&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TG&lt;/code&gt; 表示 &lt;code&gt;text-generation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; 表示 &lt;code&gt;tokens per second&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;文中可见的一个时间对比样例，是 &lt;code&gt;M2 Ultra&lt;/code&gt; 在同一台机器上随着版本和 &lt;code&gt;FA&lt;/code&gt; 演进后的成绩：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;时间&lt;/th&gt;
          &lt;th&gt;设备&lt;/th&gt;
          &lt;th&gt;版本/说明&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;带宽 GB/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GPU 核心&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 TG&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;2023-11-21&lt;/td&gt;
          &lt;td&gt;M2 Ultra&lt;/td&gt;
          &lt;td&gt;8e672ef&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1401.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1248.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;66.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1238.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.27&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2024-11-12&lt;/td&gt;
          &lt;td&gt;M2 Ultra&lt;/td&gt;
          &lt;td&gt;86ed72d + FA&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1525.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1368.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1391.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.80&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2025-08-02&lt;/td&gt;
          &lt;td&gt;M2 Ultra&lt;/td&gt;
          &lt;td&gt;5c0eb5e + FA&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1561.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1386.97&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1412.42&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;109.41&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;讨论正文前部还给了几台 Apple Silicon 设备的统一样例：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;设备&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 TG&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;M1 Pro 16 GPU&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;266.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;36.41&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;270.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;302.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.75&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;M2 Ultra 76 GPU&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1238.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1248.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;66.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1401.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.02&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;M3 Max 40 GPU&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;690.99&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;65.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;749.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;794.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.27&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Apple 这条线这里不展开全文搬运，后面重点看你指定的三类独显后端榜单。&lt;/p&gt;
&lt;h2 id=&#34;rocm--hip-完整榜单&#34;&gt;ROCm / HIP 完整榜单
&lt;/h2&gt;&lt;h3 id=&#34;llama-2-7b-q4_0-no-fa-1&#34;&gt;Llama 2 7B, Q4_0, no FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI300X&lt;/td&gt;
          &lt;td&gt;192 GB / HBM3 / 8192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11476.40 ± 72.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;232.92 ± 0.53&lt;/td&gt;
          &lt;td&gt;ee3a9fc&lt;/td&gt;
          &lt;td&gt;@yeahdongcn&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XTX&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3552.27 ± 101.96&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;167.11 ± 0.50&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;@Diablo-D3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI210&lt;/td&gt;
          &lt;td&gt;64 GB / HBM2e / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2486.22 ± 9.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.51 ± 0.04&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro W7900&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3213.17 ± 80.47&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;121.18 ± 0.06&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XT&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3098.38 ± 24.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;116.15 ± 0.06&lt;/td&gt;
          &lt;td&gt;1e15bfd&lt;/td&gt;
          &lt;td&gt;@AdamNiederer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2381.77 ± 3.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;114.48 ± 0.60&lt;/td&gt;
          &lt;td&gt;d0660f2&lt;/td&gt;
          &lt;td&gt;@andj1210&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2732.83 ± 1.98&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;110.48 ± 0.14&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5055.19 ± 109.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;101.27 ± 0.27&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hadrianneue&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7800 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2151.81 + 17.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.94 + 0.10&lt;/td&gt;
          &lt;td&gt;00131d6&lt;/td&gt;
          &lt;td&gt;@olegshulyakov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI50&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1057.24 ± 0.53&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;98.95 ± 0.25&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@wtarreau&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 GRE&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1456.98 ± 12.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96.07 ± 0.10&lt;/td&gt;
          &lt;td&gt;6fa3b55&lt;/td&gt;
          &lt;td&gt;@MihaiBojescu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI PRO R9700&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4443.54 ± 339.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.84 ± 0.26&lt;/td&gt;
          &lt;td&gt;bd4ef13&lt;/td&gt;
          &lt;td&gt;@gogich77&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI60&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1289.11 ± 0.62&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;91.46 ± 0.13&lt;/td&gt;
          &lt;td&gt;504af20&lt;/td&gt;
          &lt;td&gt;@Said-Akbar&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 6900 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1889.84 ± 31.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;88.49 ± 0.00&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;@notgood&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro VII&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1064.99 ± 1.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;87.45 ± 0.04&lt;/td&gt;
          &lt;td&gt;2739a71&lt;/td&gt;
          &lt;td&gt;@8XXD8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 6800 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1447.07 ± 1.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;83.92 ± 0.03&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@MrLavender&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro V620&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1803.65 ± 2.54&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;74.66 ± 0.01&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@samteezy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9060 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1419.67 ± 3.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;67.58 ± 0.24&lt;/td&gt;
          &lt;td&gt;a0e13dc&lt;/td&gt;
          &lt;td&gt;@lcy0321&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 5700 XT&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;354.17 ± 0.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;67.55 ± 0.04&lt;/td&gt;
          &lt;td&gt;c05e8c9&lt;/td&gt;
          &lt;td&gt;@daniandtheweb&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI25&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 2048 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;409.83 ± 0.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.94 ± 0.06&lt;/td&gt;
          &lt;td&gt;2739a71&lt;/td&gt;
          &lt;td&gt;@8XXD8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Max+ 395&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;911.36 ± 1.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.01 ± 0.07&lt;/td&gt;
          &lt;td&gt;e60f241&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7600 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1099.64 ± 2.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.58 ± 0.06&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@wbruna&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX Vega 64&lt;/td&gt;
          &lt;td&gt;8 GB / HBM2 / 2048 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;240.68 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.46 ± 0.09&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;@davispuh&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 8060S&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;351.36 ± 0.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.97 ± 0.33&lt;/td&gt;
          &lt;td&gt;1d0125b&lt;/td&gt;
          &lt;td&gt;@hspak&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 880M&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;163.25 ± 13.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.97 ± 1.63&lt;/td&gt;
          &lt;td&gt;c55d53a&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;llama-2-7b-q4_0-with-fa-1&#34;&gt;Llama 2 7B, Q4_0, with FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI300X&lt;/td&gt;
          &lt;td&gt;192 GB / HBM3 / 8192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11945.97 ± 54.29&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;218.53 ± 0.09&lt;/td&gt;
          &lt;td&gt;ee3a9fc&lt;/td&gt;
          &lt;td&gt;@yeahdongcn&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XTX&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3874.25 ± 11.92&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;170.12 ± 0.56&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;@Diablo-D3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro W7900&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3472.86 ± 52.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;127.43 ± 0.12&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI210&lt;/td&gt;
          &lt;td&gt;64 GB / HBM2e / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2571.82 ± 2.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.18 ± 0.06&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2452.68 ± 1.33&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;115.32 ± 0.52&lt;/td&gt;
          &lt;td&gt;d0660f2&lt;/td&gt;
          &lt;td&gt;@andj1210&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XT&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3261.75 ± 9.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;112.30 ± 0.06&lt;/td&gt;
          &lt;td&gt;1e15bfd&lt;/td&gt;
          &lt;td&gt;@AdamNiederer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI50&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1129.43 ± 0.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;105.82 ± 0.07&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@wtarreau&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2755.00 ± 3.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.71 ± 0.10&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI PRO R9700&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4773.07 ± 49.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.98 ± 0.13&lt;/td&gt;
          &lt;td&gt;bd4ef13&lt;/td&gt;
          &lt;td&gt;@gogich77&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 GRE&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1598.79 ± 11.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.53 ± 0.06&lt;/td&gt;
          &lt;td&gt;6fa3b55&lt;/td&gt;
          &lt;td&gt;@MihaiBojescu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4903.51 ± 96.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.28 ± 0.13&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hadrianneue&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7800 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2304.63 + 2.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;95.99 + 0.21&lt;/td&gt;
          &lt;td&gt;00131d6&lt;/td&gt;
          &lt;td&gt;@olegshulyakov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 6900 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1948.31 ± 13.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;85.04 ± 0.02&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;@notgood&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro V620&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1256.86 ± 0.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.83 ± 0.02&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@samteezy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9060 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1479.27 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;65.42 ± 0.19&lt;/td&gt;
          &lt;td&gt;a0e13dc&lt;/td&gt;
          &lt;td&gt;@lcy0321&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 5700 XT&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;314.17 ± 0.29&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.02 ± 0.05&lt;/td&gt;
          &lt;td&gt;c05e8c9&lt;/td&gt;
          &lt;td&gt;@daniandtheweb&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Max+ 395&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1003.53 ± 2.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.87 ± 0.02&lt;/td&gt;
          &lt;td&gt;e60f241&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 8060S&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;366.08 ± 1.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.97 ± 0.15&lt;/td&gt;
          &lt;td&gt;1d0125b&lt;/td&gt;
          &lt;td&gt;@hspak&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7600 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1199.16 ± 1.07&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.65 ± 0.06&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@wbruna&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX Vega 64&lt;/td&gt;
          &lt;td&gt;8 GB / HBM2 / 2048 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;153.17 ± 0.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;42.46 ± 0.40&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;@davispuh&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 880M&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;213.31 ± 14.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.16 ± 1.41&lt;/td&gt;
          &lt;td&gt;c55d53a&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;vulkan-完整榜单&#34;&gt;Vulkan 完整榜单
&lt;/h2&gt;&lt;h3 id=&#34;llama-2-7b-q4_0-no-fa-2&#34;&gt;Llama 2 7B, Q4_0, no FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Comments&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10381.64 ± 508.84&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;263.63 ± 0.91&lt;/td&gt;
          &lt;td&gt;ca71fb9&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XTX&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3531.93 ± 31.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;191.28 ± 0.20&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9452.03 ± 187.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;187.97 ± 0.21&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7444.99 ± 20.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;185.10 ± 0.54&lt;/td&gt;
          &lt;td&gt;f6b533d&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia A100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6389.86 ± 4.83&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160.78 ± 0.16&lt;/td&gt;
          &lt;td&gt;2257758&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4298.97 ± 10.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160.13 ± 0.25&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4080 Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7101.18 ± 269.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;147.13 ± 5.64&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4287.11 ± 55.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.15 ± 0.05&lt;/td&gt;
          &lt;td&gt;7c7d6ce&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A5000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3641.55 ± 9.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.89 ± 0.69&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5036.04 ± 88.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;137.11 ± 0.02&lt;/td&gt;
          &lt;td&gt;e9fd8dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6213.63 ± 27.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;135.63 ± 0.18&lt;/td&gt;
          &lt;td&gt;d13d0f6&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon AI Pro R9700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4036.04 ± 34.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.19 ± 0.39&lt;/td&gt;
          &lt;td&gt;3191462&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla V100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1391.39 ± 1.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;129.58 ± 0.58&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4070 Ti Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6099.18 ± 154.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;129.45 ± 0.18&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2941.58 ± 17.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;123.18 ± 0.40&lt;/td&gt;
          &lt;td&gt;71e74a3&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3164.10 ± 66.84&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;119.71 ± 3.40&lt;/td&gt;
          &lt;td&gt;21c17b5&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2017.33 ± 19.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;118.27 ± 0.27&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 GRE&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2336.31 ± 7.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;116.11 ± 0.26&lt;/td&gt;
          &lt;td&gt;4b2a477&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M3 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1116.83 ± 0.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;115.54 ± 0.78&lt;/td&gt;
          &lt;td&gt;2d451c8&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3379.00 ± 47.92&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;112.02 ± 1.08&lt;/td&gt;
          &lt;td&gt;b863507&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Titan V&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;984.36 ± 4.13&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.86 ± 0.28&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro VII&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1078.54 ± 0.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;107.82 ± 0.14&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1837.21 ± 25.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.60 ± 0.30&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro A60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2261.11 ± 9.53&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.25 ± 0.07&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1752.92 ± 1.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.32 ± 0.97&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon VII&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1059.14 ± 0.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;101.19 ± 0.53&lt;/td&gt;
          &lt;td&gt;77d6ae4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 2080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1888.24 ± 9.20&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.58 ± 6.60&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1698.69 ± 0.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;95.61 ± 0.19&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W6800X Duo&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;687.71 ± 4.33&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.82 ± 0.12&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5060 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3460.92 ± 7.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.51 ± 0.15&lt;/td&gt;
          &lt;td&gt;89f10ba&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3179.37 ± 46.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;92.29 ± 0.28&lt;/td&gt;
          &lt;td&gt;9a48399&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W6800X&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;510.80 ± 0.13&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;86.47 ± 0.46&lt;/td&gt;
          &lt;td&gt;13b4548&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1051.20 ± 0.98&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;83.88 ± 0.08&lt;/td&gt;
          &lt;td&gt;6d75883&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6750 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1040.58 ± 0.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;81.98 ± 0.03&lt;/td&gt;
          &lt;td&gt;228f34c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V620&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1595.32 ± 1.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;81.78 ± 0.06&lt;/td&gt;
          &lt;td&gt;03d4698&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2113.02 ± 7.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;78.71 ± 0.13&lt;/td&gt;
          &lt;td&gt;1b8fb81&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Instinct MI60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;369.26 ± 2.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;78.16 ± 1.40&lt;/td&gt;
          &lt;td&gt;504af20&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3060&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1815.70 ± 5.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.94 ± 0.80&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M4 Max&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;724.77 ± 20.93&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.02 ± 0.14&lt;/td&gt;
          &lt;td&gt;1ece0cb6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla T10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1692.70 ± 2.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.01 ± 0.21&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A4000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2248.14 ± 7.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.74 ± 0.08&lt;/td&gt;
          &lt;td&gt;f5245b5&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 5700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;529.69 ± 0.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.73 ± 0.04&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9060 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2141.67 ± 6.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.54 ± 0.74&lt;/td&gt;
          &lt;td&gt;ed52f36&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B580&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;620.94 ± 15.33&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.14 ± 0.28&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V540&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;583.88 ± 6.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;69.64 ± 0.24&lt;/td&gt;
          &lt;td&gt;9da3dcd&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W5700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;449.85 ± 0.46&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;68.55 ± 0.15&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;522.36 ± 3.60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;68.55 ± 0.01&lt;/td&gt;
          &lt;td&gt;516a4ca&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;540.69 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.99 ± 0.08&lt;/td&gt;
          &lt;td&gt;360d653&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 2070 Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1199.13 ± 7.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.64 ± 0.20&lt;/td&gt;
          &lt;td&gt;b7552cf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3070 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1689.40 ± 19.57&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.64 ± 0.39&lt;/td&gt;
          &lt;td&gt;ceff6bb&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;678.14 ± 1.40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.16 ± 0.06&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD BC-250&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;370.66 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.32 ± 0.32&lt;/td&gt;
          &lt;td&gt;5886f4f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6650 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1029.52 ± 1.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.14 ± 0.02&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4060 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2135.66 ± 23.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;59.53 ± 0.03&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;488.06 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;59.36 ± 0.16&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1660 Ti Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;511.67 ± 2.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56.60 ± 0.07&lt;/td&gt;
          &lt;td&gt;b43556e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Instinct MI25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;439.42 ± 0.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;54.69 ± 0.03&lt;/td&gt;
          &lt;td&gt;2739a71&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;574.65 ± 0.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.92 ± 0.11&lt;/td&gt;
          &lt;td&gt;091592d&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI Max+ 395&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1288.96 ± 6.49&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.59 ± 0.38&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7600 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;840.85 ± 3.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.02 ± 0.01&lt;/td&gt;
          &lt;td&gt;01d8eaa&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1073.85 + 29.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.56 + 0.11&lt;/td&gt;
          &lt;td&gt;a69d54f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GB10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2737.79 ± 19.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.28 ± 0.03&lt;/td&gt;
          &lt;td&gt;b9da444&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro S9300 x2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;247.26 ± 0.43&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;51.86 ± 0.11&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;761.89 ± 1.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.63 ± 0.02&lt;/td&gt;
          &lt;td&gt;b1c70e2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;439.87 ± 0.61&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.23 ± 0.14&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B570&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;913.95 ± 0.90&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.64 ± 0.03&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3060 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1059.76 ± 3.54&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.03 ± 0.13&lt;/td&gt;
          &lt;td&gt;dbb3a47&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;861.99 ± 7.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.71 ± 0.71&lt;/td&gt;
          &lt;td&gt;8e6f8bc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;605.59 ± 0.65&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.21 ± 0.07&lt;/td&gt;
          &lt;td&gt;fe5b78c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;875.92 ± 2.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.69 ± 0.16&lt;/td&gt;
          &lt;td&gt;eeee367&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P104-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;311.90 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;46.18 ± 0.05&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;356.08 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.73 ± 0.18&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1245.19 ± 8.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.52 ± 0.54&lt;/td&gt;
          &lt;td&gt;b1afcab&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7600M XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;459.39 ± 2.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.28 ± 0.10&lt;/td&gt;
          &lt;td&gt;b9ab0a4&lt;/td&gt;
          &lt;td&gt;eGPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V340&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;375.41 ± 0.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.16 ± 0.06&lt;/td&gt;
          &lt;td&gt;9da3dcd&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;297.50 ± 0.54&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;42.86 ± 1.20&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;eGPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A750&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1075.94 ± 13.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;42.66 ± 0.18&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4050 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1154.28 + 15.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.89 + 0.10&lt;/td&gt;
          &lt;td&gt;d79d8f3&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;321.57 ± 0.93&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.48 ± 0.09&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;193.50 ± 0.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.99 ± 0.10&lt;/td&gt;
          &lt;td&gt;7b43f55&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla M40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;92.48 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.35 ± 1.22&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 580&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;258.03 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.32 ± 0.03&lt;/td&gt;
          &lt;td&gt;de4c07f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 470&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;218.07 ± 0.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.63 ± 0.21&lt;/td&gt;
          &lt;td&gt;e288693&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W5500&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;315.39 ± 3.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;36.82 ± 0.38&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 480&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;248.66 ± 0.28&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;34.71 ± 0.14&lt;/td&gt;
          &lt;td&gt;3b15924&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;205.98 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;34.34 ± 0.12&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 980&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;186.24 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.90 ± 0.51&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P106-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;183.78 ± 0.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.77 ± 0.04&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro W8100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;155.22 ± 0.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.52 ± 0.05&lt;/td&gt;
          &lt;td&gt;4536363&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;265.54 ± 0.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.03 ± 0.14&lt;/td&gt;
          &lt;td&gt;24d2ee0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6500 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;255.25 ± 0.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.81 ± 0.10&lt;/td&gt;
          &lt;td&gt;g9fdfcd&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M3&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;263.70 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;26.39 ± 0.14&lt;/td&gt;
          &lt;td&gt;b9ab0a4&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro S10000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.78 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.32 ± 0.02&lt;/td&gt;
          &lt;td&gt;914a82d&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Quadro P2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;169.55 ± 0.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.05 ± 0.03&lt;/td&gt;
          &lt;td&gt;63f8fe0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 200 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;544.95 ± 4.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.49 ± 0.09&lt;/td&gt;
          &lt;td&gt;cea560f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI 9 300 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;479.07 ± 0.41&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.41 ± 0.18&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 6000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;240.89 ± 0.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.26 ± 0.08&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Pro&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.70 ± 0.03&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.95 ± 0.11&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1050 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;136.42 ± 0.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.96 ± 0.21&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;266.19 ± 1.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.53 ± 0.08&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 7000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;281.62 ± 1.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;19.91 ± 0.07&lt;/td&gt;
          &lt;td&gt;ebce03e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen Z1 Extreme&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;199.36 ± 7.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.77 ± 0.02&lt;/td&gt;
          &lt;td&gt;53ff6b9&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro D700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;69.95 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.62 ± 0.01&lt;/td&gt;
          &lt;td&gt;d3bd719&lt;/td&gt;
          &lt;td&gt;MoltenVK, running in FP16 mode on FP32 only chip&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro WX 4100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;78.79 ± 0.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.05 ± 0.07&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.79 ± 0.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.50 ± 0.02&lt;/td&gt;
          &lt;td&gt;8c0d6bb&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M1&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.29 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.47 ± 0.03&lt;/td&gt;
          &lt;td&gt;2370665&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 5000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;90.55 ± 0.08&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.98 ± 0.07&lt;/td&gt;
          &lt;td&gt;d84635b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 1100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;187.20 ± 1.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.39 ± 0.04&lt;/td&gt;
          &lt;td&gt;abb9f3c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 550&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.66 ± 0.49&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.20 ± 0.01&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 4000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;103.87 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.63 ± 0.01&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;89.46 ± 0.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.39 ± 0.06&lt;/td&gt;
          &lt;td&gt;5d46bab&lt;/td&gt;
          &lt;td&gt;Running on single GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.37 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.30 ± 0.19&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MediaTek Dimensity 9400&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.36 ± 15.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.92 ± 0.06&lt;/td&gt;
          &lt;td&gt;b9ab0a4&lt;/td&gt;
          &lt;td&gt;GPU supports coopmat but pp512 is faster with it turned off&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;185.51 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.21 ± 0.07&lt;/td&gt;
          &lt;td&gt;1d72c84&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 3000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.63 ± 0.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.49 ± 0.01&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CIX CD8180&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.80 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5.51 ± 0.00&lt;/td&gt;
          &lt;td&gt;4dca015&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 1000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.58 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.25 ± 0.18&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.43 ± 0.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.35 ± 0.03&lt;/td&gt;
          &lt;td&gt;c4df49a&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel N150&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.84 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.93 ± 0.00&lt;/td&gt;
          &lt;td&gt;4f63cd7&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;llama-2-7b-q4_0-fa-enabled&#34;&gt;Llama 2 7B, Q4_0, FA enabled
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Comments&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11796.38 ± 601.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;273.68 ± 0.52&lt;/td&gt;
          &lt;td&gt;ca71fb9&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XTX&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3332.90 ± 11.47&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;195.30 ± 0.23&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8054.59 ± 35.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192.17 ± 0.21&lt;/td&gt;
          &lt;td&gt;f6b533d&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10830.41 ± 36.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;190.10 ± 0.31&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia A100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7064.40 ± 1.63&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;170.56 ± 0.02&lt;/td&gt;
          &lt;td&gt;2257758&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4732.33 ± 4.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;162.28 ± 0.21&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4080 Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8007.37 ± 46.03&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;150.20 ± 0.26&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4913.83 ± 21.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;145.74 ± 0.16&lt;/td&gt;
          &lt;td&gt;7c7d6ce&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla V100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1411.25 ± 2.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;142.13 ± 0.03&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A5000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4071.22 ± 13.13&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;140.43 ± 0.22&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4911.74 ± 28.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;138.20 ± 0.18&lt;/td&gt;
          &lt;td&gt;e9fd8dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6764.53 ± 11.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;135.65 ± 0.02&lt;/td&gt;
          &lt;td&gt;d13d0f6&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon AI Pro R9700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4333.83 ± 29.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.90 ± 0.12&lt;/td&gt;
          &lt;td&gt;3191462&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3043.93 ± 10.42&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.20 ± 0.09&lt;/td&gt;
          &lt;td&gt;71e74a3&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2094.64 ± 14.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;119.63 ± 0.13&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3277.24 ± 18.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;119.55 ± 0.06&lt;/td&gt;
          &lt;td&gt;21c17b5&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 GRE&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2402.07 ± 22.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;116.77 ± 0.08&lt;/td&gt;
          &lt;td&gt;4b2a477&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M3 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1115.55 ± 0.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;115.99 ± 0.12&lt;/td&gt;
          &lt;td&gt;2d451c8&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3314.53 ± 17.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;111.63 ± 0.05&lt;/td&gt;
          &lt;td&gt;b863507&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Titan V&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;792.74 ± 4.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;109.21 ± 0.72&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro VII&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;783.94 ± 0.77&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.45 ± 0.48&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1761.93 ± 4.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;106.15 ± 0.04&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 2080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1936.25 ± 32.08&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.99 ± 0.24&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1704.79 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.50 ± 0.06&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W6800X Duo&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;795.28 ± 0.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.08 ± 0.02&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5060 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3912.65 ± 5.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.01 ± 0.14&lt;/td&gt;
          &lt;td&gt;89f10ba&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1749.46 ± 3.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96.65 ± 0.48&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4293.57 ± 27.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;91.49 ± 0.89&lt;/td&gt;
          &lt;td&gt;9a48399&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6750 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;997.05 ± 0.45&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;82.29 ± 0.06&lt;/td&gt;
          &lt;td&gt;228f34c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1010.90 ± 12.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;81.86 ± 0.19&lt;/td&gt;
          &lt;td&gt;6d75883&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3060&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2012.88 ± 10.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80.59 ± 0.02&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V620&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1556.31 ± 2.82&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;79.24 ± 0.09&lt;/td&gt;
          &lt;td&gt;03d4698&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A4000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2482.74 ± 26.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.07 ± 0.08&lt;/td&gt;
          &lt;td&gt;f5245b5&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla T10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1840.14 ± 1.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.05 ± 0.13&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 5700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;538.31 ± 0.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;74.43 ± 0.03&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B580&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;419.49 ± 3.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;72.00 ± 0.24&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M4 Max&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;557.46 ± 26.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;71.79 ± 4.16&lt;/td&gt;
          &lt;td&gt;1ece0cb6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W5700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;446.98 ± 0.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;71.30 ± 0.24&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;274.76 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.54 ± 0.03&lt;/td&gt;
          &lt;td&gt;516a4ca&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9060 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1915.41 ± 7.90&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.52 ± 0.16&lt;/td&gt;
          &lt;td&gt;ed52f36&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;685.51 ± 0.88&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;66.48 ± 0.02&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6650 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1088.90 ± 0.40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.53 ± 0.75&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;529.96 ± 0.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.63 ± 0.10&lt;/td&gt;
          &lt;td&gt;360d653&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD BC-250&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;356.87 ± 1.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.14 ± 0.09&lt;/td&gt;
          &lt;td&gt;5886f4f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3070 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1832.07 ± 57.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.92 ± 0.37&lt;/td&gt;
          &lt;td&gt;ceff6bb&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4060 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2358.03 ± 12.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;60.01 ± 0.08&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;484.37 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;59.22 ± 0.15&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1660 Ti Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;514.34 ± 0.88&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;57.30 ± 0.42&lt;/td&gt;
          &lt;td&gt;b43556e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7600 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1024.38 ± 7.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56.11 ± 0.02&lt;/td&gt;
          &lt;td&gt;01d8eaa&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro S9300 x2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;243.33 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;55.64 ± 0.06&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GB10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3279.89 ± 26.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.64 ± 0.05&lt;/td&gt;
          &lt;td&gt;b9da444&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;808.76 ± 0.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.24 ± 0.03&lt;/td&gt;
          &lt;td&gt;b1c70e2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1119.68 + 30.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.07 + 0.09&lt;/td&gt;
          &lt;td&gt;a69d54f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI Max+ 395&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1357.07 ± 10.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.00 ± 0.13&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;428.54 ± 0.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.66 ± 0.03&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B570&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;288.51 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.49 ± 0.05&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P104-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;325.30 ± 0.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.64 ± 0.04&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V340&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;360.23 ± 0.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.54 ± 0.06&lt;/td&gt;
          &lt;td&gt;9da3dcd&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;784.16 ± 2.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.06 ± 0.34&lt;/td&gt;
          &lt;td&gt;8e6f8bc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;320.12 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.06 ± 0.01&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1361.85 ± 3.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.69 ± 0.20&lt;/td&gt;
          &lt;td&gt;b1afcab&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;384.74 ± 0.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.68 ± 0.06&lt;/td&gt;
          &lt;td&gt;eeee367&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A750&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;303.37 ± 1.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.96 ± 0.03&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;292.85 ± 0.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.42 ± 0.34&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;eGPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;330.84 ± 1.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.33 ± 0.06&lt;/td&gt;
          &lt;td&gt;360d653&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla M40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.35 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.68 ± 0.01&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;132.48 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.02 ± 0.04&lt;/td&gt;
          &lt;td&gt;7b43f55&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 470&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;197.26 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.28 ± 0.11&lt;/td&gt;
          &lt;td&gt;3769fe6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 480&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;194.52 ± 0.61&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.23 ± 0.09&lt;/td&gt;
          &lt;td&gt;0bcb40b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;198.83 ± 0.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;198.83 ± 0.85&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 980&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;180.97 ± 0.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;34.16 ± 0.10&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P106-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;183.40 ± 0.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;30.79 ± 0.32&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro W8100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;140.52 ± 0.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.28 ± 0.14&lt;/td&gt;
          &lt;td&gt;4536363&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;287.14 ± 0.29&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.37 ± 0.24&lt;/td&gt;
          &lt;td&gt;24d2ee0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Quadro P2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;181.71 ± 0.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.77 ± 0.02&lt;/td&gt;
          &lt;td&gt;63f8fe0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 200 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;536.48 ± 1.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.05 ± 0.04&lt;/td&gt;
          &lt;td&gt;cea560f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI 9 300 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;532.59 ± 3.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.31 ± 0.06&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 6000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;277.91 ± 0.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.15 ± 0.09&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Pro&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;58.86 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.97 ± 0.03&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;297.39 ± 1.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.59 ± 0.38&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 7000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;312.85 ± 2.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.09 ± 0.35&lt;/td&gt;
          &lt;td&gt;835b2b9&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1050 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;127.54 ± 1.03&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.08 ± 0.17&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro WX 4100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.59 ± 0.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.56 ± 0.04&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M1&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;35.93 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.85 ± 0.02&lt;/td&gt;
          &lt;td&gt;2370665&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;46.81 ± 0.08&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.25 ± 2.30&lt;/td&gt;
          &lt;td&gt;8c0d6bb&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 5000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;79.06 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.75 ± 0.00&lt;/td&gt;
          &lt;td&gt;5d195f1&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 1100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;174.77 ± 4.47&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.58 ± 0.03&lt;/td&gt;
          &lt;td&gt;abb9f3c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.37 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.92 ± 0.06&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 4000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;113.32 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.87 ± 0.01&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;88.26 ± 0.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.49 ± 0.01&lt;/td&gt;
          &lt;td&gt;5d46bab&lt;/td&gt;
          &lt;td&gt;Running on single GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 5 3000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.41 ± 0.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.47 ± 0.01&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;77.66 ± 2.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7.75 ± 0.05&lt;/td&gt;
          &lt;td&gt;2e89f76&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.55 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.35 ± 0.02&lt;/td&gt;
          &lt;td&gt;c4df49a&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel N150&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.59 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.91 ± 0.00&lt;/td&gt;
          &lt;td&gt;4f63cd7&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;这些表格该怎么用&#34;&gt;这些表格该怎么用
&lt;/h2&gt;&lt;p&gt;如果你只是想买卡或者看手里机器大概在哪个档位，最实用的读法其实是这三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;先看你关心的是 &lt;code&gt;tg128&lt;/code&gt; 还是 &lt;code&gt;pp512&lt;/code&gt;。&lt;br&gt;
日常对话、写代码、聊天体感，优先看 &lt;code&gt;tg128&lt;/code&gt;；长上下文吞吐、批处理、服务端压 prompt，更应该看 &lt;code&gt;pp512&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再看你实际跑的后端。&lt;br&gt;
Nvidia 通常看 &lt;code&gt;CUDA&lt;/code&gt; 更贴近真实上限；AMD 机器更应该先对照 &lt;code&gt;ROCm&lt;/code&gt; 和 &lt;code&gt;Vulkan&lt;/code&gt;；跨平台兼容场景则更适合参考 &lt;code&gt;Vulkan&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后再看 &lt;code&gt;FA&lt;/code&gt;。&lt;br&gt;
很多卡开启 &lt;code&gt;FA&lt;/code&gt; 后 &lt;code&gt;pp512&lt;/code&gt; 会涨得更明显，但 &lt;code&gt;tg128&lt;/code&gt; 不一定同步大涨，所以不能只看单个最高分。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;一句话总结&#34;&gt;一句话总结
&lt;/h2&gt;&lt;p&gt;同样是 &lt;code&gt;llama.cpp&lt;/code&gt; 跑分，&lt;code&gt;pp512&lt;/code&gt;、&lt;code&gt;tg128&lt;/code&gt;、&lt;code&gt;Q4_0&lt;/code&gt;、&lt;code&gt;FA&lt;/code&gt;、&lt;code&gt;CUDA / ROCm / Vulkan&lt;/code&gt; 分别代表的是完全不同的维度。把口径先分清，再看数字，榜单才有意义。&lt;/p&gt;
&lt;p&gt;如果你只想记一个最短结论，那就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt; 目前整体最强&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 在高端 AMD 卡上已经很能打&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Vulkan&lt;/code&gt; 覆盖最广，老卡、核显、Intel Arc、Apple Asahi 都能找到可比条目&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; 比 &lt;code&gt;pp512&lt;/code&gt; 更接近日常真实体感&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;原始来源&#34;&gt;原始来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA discussion #15013: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15013&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Silicon discussion #4167: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/4167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/4167&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ROCm discussion #15021: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15021&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vulkan discussion #10879: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/10879&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/10879&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>显卡推理速度测试的常用指标具体含义：FA、pp512、tg128、Q4_0 都是什么意思</title>
        <link>https://knightli.com/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/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</guid>
        <description>&lt;p&gt;看显卡推理速度测试时，最容易把人看晕的不是分数本身，而是这些缩写：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pp512 t/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tg128 t/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下面直接按最常见的问题拆开解释。&lt;/p&gt;
&lt;h2 id=&#34;这行标题整体是什么意思&#34;&gt;这行标题整体是什么意思
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)&lt;/code&gt; 通常包含四层信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt;：说明跑分是在 NVIDIA GPU 的 CUDA 路径上完成的&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Llama 2 7B&lt;/code&gt;：说明测试对象是 &lt;code&gt;Llama 2&lt;/code&gt; 的 &lt;code&gt;7B&lt;/code&gt; 参数版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;：说明模型用了 4-bit 量化格式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt;：说明这次测试关闭了 &lt;code&gt;Flash Attention&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话理解：这是某个量化版模型在 NVIDIA 显卡上的推理速度测试，而且没有开启 &lt;code&gt;Flash Attention&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;fa-是什么flash-attention&#34;&gt;FA 是什么：Flash Attention
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FA&lt;/code&gt; 就是 &lt;code&gt;Flash Attention&lt;/code&gt;，它是注意力计算的加速技术。核心作用可以直接记成三点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更快&lt;/li&gt;
&lt;li&gt;更省显存&lt;/li&gt;
&lt;li&gt;在数学上和普通注意力等价，不是“牺牲精度换速度”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;no-fa-是什么意思&#34;&gt;no FA 是什么意思
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;no FA&lt;/code&gt; 就是没开 &lt;code&gt;Flash Attention&lt;/code&gt;。它通常出现在跑分表里，主要是为了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做对照组，方便看出开启 &lt;code&gt;FA&lt;/code&gt; 后到底提升了多少&lt;/li&gt;
&lt;li&gt;兼容某些不支持 &lt;code&gt;FA&lt;/code&gt; 的硬件或软件环境&lt;/li&gt;
&lt;li&gt;避免不同测试项混在一起，导致数据不可比&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;q4_0-是什么量化格式&#34;&gt;Q4_0 是什么：量化格式
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; 是一种 4-bit 量化格式，可以先这样记：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q&lt;/code&gt;：Quantization，量化&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;：4-bit&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_0&lt;/code&gt;：某一种具体量化方案的标识&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的作用是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;减少模型体积&lt;/li&gt;
&lt;li&gt;降低显存需求&lt;/li&gt;
&lt;li&gt;让本来装不下的模型变得能跑起来&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;pp512-ts-是什么意思&#34;&gt;pp512 t/s 是什么意思
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; 一般是 &lt;code&gt;Prompt Processing 512 tokens&lt;/code&gt;，测的是输入处理速度。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp&lt;/code&gt;：prompt processing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;512&lt;/code&gt;：测试输入长度是 512 token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt;：每秒多少 token&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它测的不是模型吐字速度，而是模型“先把输入读完”的速度。这个阶段并行度高，所以数值通常会很大，比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;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;h2 id=&#34;tg128-ts-是什么意思&#34;&gt;tg128 t/s 是什么意思
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; 一般是 &lt;code&gt;Text Generation 128 tokens&lt;/code&gt;，测的是输出生成速度。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tg&lt;/code&gt;：text generation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128&lt;/code&gt;：测试连续生成 128 token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt;：每秒多少 token&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它更接近我们平时感受到的“模型回答快不快”。因为生成是逐 token 递推的，所以它通常会明显低于 &lt;code&gt;pp512&lt;/code&gt;，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt; 是上万 &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; 却只有几百 &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;为什么-pp512-和-tg128-会差这么多&#34;&gt;为什么 pp512 和 tg128 会差这么多
&lt;/h2&gt;&lt;p&gt;核心原因就一句话：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; 测的是并行吞吐，&lt;code&gt;tg128&lt;/code&gt; 测的是逐 token 生成。`&lt;/p&gt;
&lt;p&gt;具体来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入阶段更容易并行&lt;/li&gt;
&lt;li&gt;输出阶段更依赖逐步递推&lt;/li&gt;
&lt;li&gt;生成阶段通常更吃显存带宽和缓存效率&lt;/li&gt;
&lt;li&gt;所以生成速度远低于输入处理速度是正常现象&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ts-到底怎么理解&#34;&gt;t/s 到底怎么理解
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;t/s&lt;/code&gt; 就是 &lt;code&gt;tokens per second&lt;/code&gt;。它表示模型每秒能处理或生成多少 token。&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;token&lt;/code&gt; 不是“字”也不是“单词”，所以 &lt;code&gt;t/s&lt;/code&gt; 更适合做这些对比：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同模型下不同显卡对比&lt;/li&gt;
&lt;li&gt;同环境下不同参数设置对比&lt;/li&gt;
&lt;li&gt;同一框架里开启或关闭某个优化项前后的对比&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一页记住&#34;&gt;一页记住
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;：模型被压缩成了 4-bit 量化版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FA&lt;/code&gt;：是不是启用了 Flash Attention 加速&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;：处理 512 token 输入时有多快&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;：生成 128 token 输出时有多快&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt;：速度单位，每秒多少 token&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;看这类显卡推理速度测试时，最重要的不是只看分高不高，而是先分清：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型和量化格式&lt;/li&gt;
&lt;li&gt;有没有开 &lt;code&gt;FA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;测的是输入处理还是文本生成&lt;/li&gt;
&lt;li&gt;单位是不是 &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把这几件事分清楚，绝大多数 scoreboard 都不会太难读。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>大模型常见张量类型入门：FP32、FP16、BF16、TF32 与 FP8</title>
        <link>https://knightli.com/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/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/</guid>
        <description>&lt;p&gt;只要你开始接触大模型训练、推理或者部署，很快就会遇到一组高频缩写：&lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt;、&lt;code&gt;TF32&lt;/code&gt;、&lt;code&gt;FP8&lt;/code&gt;。它们看起来像是参数页上的几个附加标签，但实际影响远不止“写法不同”。&lt;/p&gt;
&lt;p&gt;这些类型决定了数字在显存里怎么存、在计算中怎么表示，也直接影响模型训练是否稳定、推理速度如何，以及一张显卡到底能装下多大的模型。&lt;/p&gt;
&lt;p&gt;所以如果你想真正理解大模型里的精度取舍，最值得先补的一课，不是某个具体模型的跑分，而是先把这些常见张量类型各自是什么、为什么会这样设计搞清楚。&lt;/p&gt;
&lt;h2 id=&#34;张量类型到底在决定什么&#34;&gt;张量类型到底在决定什么
&lt;/h2&gt;&lt;p&gt;大模型本质上是海量参数参与的矩阵运算，而张量类型就是这些数字在显存里如何存、在计算中如何表示。&lt;/p&gt;
&lt;p&gt;它的核心取舍通常围绕三个维度展开：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;精度&lt;/li&gt;
&lt;li&gt;显存占用&lt;/li&gt;
&lt;li&gt;计算速度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这和图片格式其实很像。无损格式保留细节更多，但体积大、加载慢；压缩格式会丢掉一部分肉眼不敏感的信息，换来更小的体积和更快的处理速度。大模型之所以能接受这种取舍，是因为在极大量参数里，很多微小数值变化并不会明显影响最终输出。&lt;/p&gt;
&lt;p&gt;也正因为如此，模型世界里才会出现一整套不同精度的张量格式。&lt;/p&gt;
&lt;h2 id=&#34;一个数字是怎么被表示的&#34;&gt;一个数字是怎么被表示的
&lt;/h2&gt;&lt;p&gt;理解这些格式之前，可以先记住一个非常基础的结构。一个浮点数通常由三部分组成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;符号位：决定正负&lt;/li&gt;
&lt;li&gt;指数位：决定数值范围&lt;/li&gt;
&lt;li&gt;尾数位：决定数值精细程度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在大模型里，尾数精度当然重要，但很多时候模型更怕的是数值范围不够，也就是指数位太小，导致溢出或者训练不稳定。很多张量格式的设计，本质上就是在“范围”和“细节”之间重新分配有限的 bit 数。&lt;/p&gt;
&lt;p&gt;下面这张图可以先帮你建立一个整体印象：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/tensor-format-overview.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP32、FP16、BF16、TF32 与 FP8 的位宽结构总览&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;fp32最稳但太贵&#34;&gt;FP32：最稳，但太贵
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FP32&lt;/code&gt; 是最传统的单精度浮点格式，总共 32 bit，也就是 4 个字节。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/fp32-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP32 位宽结构示意图&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;它的优点很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数值范围大&lt;/li&gt;
&lt;li&gt;精度高&lt;/li&gt;
&lt;li&gt;训练最稳&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但问题也同样明显：太占显存。&lt;/p&gt;
&lt;p&gt;一个非常粗略的估算方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;显存占用 ≈ 参数量 × 每个参数的字节数
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果一个 27B 模型完全用 &lt;code&gt;FP32&lt;/code&gt; 存权重，那么光权重本身就大约需要：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;27B × 4 bytes ≈ 108GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这还没算激活值、KV Cache、优化器状态和其他运行开销。也就是说，&lt;code&gt;FP32&lt;/code&gt; 在今天的大模型推理和训练里，已经不是“默认选择”，而更像是“最稳的基线格式”。&lt;/p&gt;
&lt;h2 id=&#34;fp16体积减半但稳定性一般&#34;&gt;FP16：体积减半，但稳定性一般
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FP16&lt;/code&gt; 把每个参数压缩到 2 个字节，显存占用相比 &lt;code&gt;FP32&lt;/code&gt; 直接减半。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/fp16-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP16 位宽结构示意图&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;对于同一个 27B 模型，如果只看权重体积：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;27B × 2 bytes ≈ 54GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这就已经能解释为什么很多部署说明里，27B 模型的显存需求会落在 50GB 左右。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FP16&lt;/code&gt; 的优势很明显：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显存压力大幅下降&lt;/li&gt;
&lt;li&gt;吞吐更高&lt;/li&gt;
&lt;li&gt;早期混合精度训练大量使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它的问题在于指数位偏小，动态范围不够大。对于大模型训练来说，这会让溢出更容易发生，需要额外依赖 loss scaling 一类技巧来补救，工程上比较麻烦。&lt;/p&gt;
&lt;p&gt;所以现在 &lt;code&gt;FP16&lt;/code&gt; 仍然常见，但在很多场景里，它已经不再是最舒服的选择。&lt;/p&gt;
&lt;h2 id=&#34;bf16大模型时代更实用的半精度&#34;&gt;BF16：大模型时代更实用的半精度
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;BF16&lt;/code&gt; 同样只占 2 个字节，但和 &lt;code&gt;FP16&lt;/code&gt; 的设计重点不一样。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/bf16-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;BF16 位宽结构示意图&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;它保留了更大的指数范围，让它在动态范围上更接近 &lt;code&gt;FP32&lt;/code&gt;，只是牺牲了一部分尾数精度。这种取舍对大模型尤其友好，因为很多时候模型对“范围”更敏感，对尾数少几位反而没那么敏感。&lt;/p&gt;
&lt;p&gt;这也是为什么现在很多训练框架、很多大模型论文和大量实际部署方案，都更偏向 &lt;code&gt;BF16&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你可以把它理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显存成本接近 &lt;code&gt;FP16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;稳定性体验更接近 &lt;code&gt;FP32&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一套 27B 部署方案写的是 50GB 左右显存，而另一套经过进一步优化后接近 30GB，前者往往还停留在 &lt;code&gt;FP16/BF16&lt;/code&gt; 这一层，后者则通常已经继续向更低精度或量化方向走了。&lt;/p&gt;
&lt;h2 id=&#34;tf32不是省显存而是加速-fp32-工作流&#34;&gt;TF32：不是省显存，而是加速 FP32 工作流
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TF32&lt;/code&gt; 很容易被误会成“又一种更省的格式”，但它的定位其实不太一样。&lt;/p&gt;
&lt;p&gt;从常见理解上看，它可以近似看成一种保留了较大指数范围、但缩短了尾数精度的计算格式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/tf32-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;TF32 计算格式示意图&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;不过要注意，&lt;code&gt;TF32&lt;/code&gt; 更像是一条 Tensor Core 计算路径里的内部计算格式，而不是像 &lt;code&gt;FP16/BF16&lt;/code&gt; 那样主要拿来做权重存储。&lt;/p&gt;
&lt;p&gt;它主要是 NVIDIA 在较新的 GPU 上提供的一种计算模式，目标不是减少显存占用，而是让原本基于 &lt;code&gt;FP32&lt;/code&gt; 的训练流程，在尽量不大改代码的前提下跑得更快。&lt;/p&gt;
&lt;p&gt;它的特点可以概括成一句话：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对外看起来还是 &lt;code&gt;FP32&lt;/code&gt; 工作流&lt;/li&gt;
&lt;li&gt;底层在矩阵乘法时做了更快的近似计算&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;TF32&lt;/code&gt; 主要解决的是“&lt;code&gt;FP32&lt;/code&gt; 太慢”的问题，而不是“&lt;code&gt;FP32&lt;/code&gt; 太占显存”的问题。如果你关心的是为什么同一个模型部署时显存需求不一样，&lt;code&gt;TF32&lt;/code&gt; 不是最主要的答案。&lt;/p&gt;
&lt;h2 id=&#34;fp8进一步压缩但更考验工程能力&#34;&gt;FP8：进一步压缩，但更考验工程能力
&lt;/h2&gt;&lt;p&gt;再往下走就是 &lt;code&gt;FP8&lt;/code&gt;。它把单个数值继续压缩到更少 bit 数，进一步降低显存带宽和存储成本。&lt;/p&gt;
&lt;p&gt;它常见的不是单一一种格式，而是两类变体：&lt;code&gt;E4M3&lt;/code&gt; 和 &lt;code&gt;E5M2&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/fp8-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP8 两种常见变体示意图&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;FP8&lt;/code&gt; 的代价也很明显：位数太少以后，你很难同时兼顾范围和精度，因此实际工程里通常会针对不同阶段采用不同变体，分别照顾前向、反向和梯度的稳定性。&lt;/p&gt;
&lt;p&gt;这类格式代表的是一种更激进的思路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;愿意牺牲更多精度&lt;/li&gt;
&lt;li&gt;换取更低的存储和更高的吞吐&lt;/li&gt;
&lt;li&gt;需要更成熟的硬件和训练框架配合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它很有前景，但对普通使用者来说，日常最常碰到的核心分界点，通常还是 &lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt; 和 &lt;code&gt;BF16&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;为什么理解这些类型很重要&#34;&gt;为什么理解这些类型很重要
&lt;/h2&gt;&lt;p&gt;很多人第一次看到这些缩写，会把它们理解成“模型下载页上的一些实现细节”。但实际上，它们会直接改变你对模型训练和部署的理解方式。&lt;/p&gt;
&lt;p&gt;比如同样一张显卡：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为什么有些模型训练必须强调数值稳定性&lt;/li&gt;
&lt;li&gt;为什么有些推理方案会优先谈量化和低精度&lt;/li&gt;
&lt;li&gt;为什么看起来参数量相近的模型，部署门槛却差很多&lt;/li&gt;
&lt;li&gt;为什么有些格式适合存权重，有些格式更适合做计算路径&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题往下拆，最后几乎都会回到同一个核心：你到底怎么在“精度、范围、显存和速度”之间做取舍。&lt;/p&gt;
&lt;p&gt;也正因为这样，理解 &lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt;、&lt;code&gt;TF32&lt;/code&gt; 和 &lt;code&gt;FP8&lt;/code&gt;，不只是为了看懂术语表，而是为了在面对训练配置、推理引擎和部署门槛时，知道这些数字背后到底在交换什么。&lt;/p&gt;
&lt;h2 id=&#34;一个实用的理解框架&#34;&gt;一个实用的理解框架
&lt;/h2&gt;&lt;p&gt;如果你不想一上来就记一堆格式细节，可以先用下面这个顺序理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FP32&lt;/code&gt;：最稳、最贵&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FP16&lt;/code&gt;：更省显存，但范围偏小&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BF16&lt;/code&gt;：显存接近 &lt;code&gt;FP16&lt;/code&gt;，稳定性更适合大模型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TF32&lt;/code&gt;：主要解决 &lt;code&gt;FP32&lt;/code&gt; 太慢，不主要解决显存&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FP8&lt;/code&gt;：更激进的压缩和加速路线&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/tensor-format-summary.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;常见张量类型总结图&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;当你以后再看到模型下载页里写着 &lt;code&gt;fp16&lt;/code&gt;、&lt;code&gt;bf16&lt;/code&gt;、&lt;code&gt;fp8&lt;/code&gt;，或者看到不同部署教程给出完全不一样的显存门槛时，就不会再觉得那只是“写法不同”。它们背后其实对应的是完全不同的精度预算和工程取舍。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;大模型里的张量类型，表面上是在讨论 bit 数，实际上讨论的是一整套工程取舍。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt;、&lt;code&gt;TF32&lt;/code&gt; 和 &lt;code&gt;FP8&lt;/code&gt; 没有绝对的好坏，它们只是分别站在不同的位置上，帮你在稳定性、范围、精度、显存和速度之间做平衡。&lt;/p&gt;
&lt;p&gt;如果把这一层看懂，后面无论你是在读训练论文、调推理参数，还是比较不同部署方案，都会更容易抓住重点。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>16G 显卡也能跑 35B 模型：LM Studio 下 MoE 模型的显存压缩思路</title>
        <link>https://knightli.com/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/2026/04/22/16gb-gpu-run-35b-moe-models-in-lm-studio/</guid>
        <description>&lt;p&gt;很多人对 16G 显存的印象是：本地部署大模型时，差不多也就跑到 12B 到 14B，量化之后再往上就很吃力了。这个判断不算离谱，但也不是 16G 显卡的真正上限。&lt;/p&gt;
&lt;p&gt;如果模型选型和参数设置都合适，16G 显卡并不只能停留在“小参数量模型”这一档。围绕这件事，一套比较有代表性的思路是：在 &lt;code&gt;LM Studio&lt;/code&gt; 里利用 &lt;code&gt;MoE&lt;/code&gt; 模型和合理的卸载策略，把 35B 级模型跑到比较可用的速度。&lt;/p&gt;
&lt;h2 id=&#34;01-为什么-16g-显卡不一定只能跑-12b-到-14b&#34;&gt;01 为什么 16G 显卡不一定只能跑 12B 到 14B
&lt;/h2&gt;&lt;p&gt;这里的核心观点很直接：显存大小固然重要，但模型架构同样重要。&lt;/p&gt;
&lt;p&gt;如果你拿一个标准稠密模型去硬塞进 16G 显卡，确实很快就会遇到瓶颈。因为这类模型在推理时通常要参与全部参数计算，显存压力和带宽压力都会直接上来。&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;MoE&lt;/code&gt; 模型不一样。它的总参数量可以很大，可是在单次推理时，只会激活其中一部分专家参数。以 35B 级模型为例，虽然总参数规模不小，但单次推理实际参与计算的参数量要小得多，所以它对显存的实际要求没有想象中那么夸张。&lt;/p&gt;
&lt;p&gt;也正因为这样，16G 显卡在面对这类模型时，并不是完全没有操作空间。&lt;/p&gt;
&lt;h2 id=&#34;02-实测重点35b-moe-模型可以跑得很快&#34;&gt;02 实测重点：35B MoE 模型可以跑得很快
&lt;/h2&gt;&lt;p&gt;一个重点案例，是 &lt;code&gt;Qwen 3.5 35B A3B&lt;/code&gt; 一类的 &lt;code&gt;MoE&lt;/code&gt; 模型量化版本。在 16G 显卡配合 &lt;code&gt;LM Studio&lt;/code&gt; 做参数调整后，&lt;code&gt;Q6&lt;/code&gt; 量化大约能跑到 30 多 &lt;code&gt;tokens/s&lt;/code&gt;，此前 &lt;code&gt;Q4&lt;/code&gt; 量化甚至能测到更高的速度。&lt;/p&gt;
&lt;p&gt;这个结果之所以有参考价值，不只是因为“能跑”，而是因为速度已经进入了“明显可用”的区间。&lt;/p&gt;
&lt;p&gt;作为对比，同类大参数量但不是 &lt;code&gt;MoE&lt;/code&gt; 的模型，在 16G 显卡上如果直接硬跑，往往会出现爆显存、速度明显掉下来的情况。换句话说，决定结果的不是单纯看参数总量，还要看模型在推理时到底怎么用这些参数。&lt;/p&gt;
&lt;h2 id=&#34;03-在-lm-studio-里重点不只一个参数&#34;&gt;03 在 LM Studio 里，重点不只一个参数
&lt;/h2&gt;&lt;p&gt;想在 16G 显卡上把这类模型跑顺，关键不是“碰运气”，而是调对两个参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPU Offload&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;强制把部分专家层加载到 CPU 内存的参数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第一项比较好理解，&lt;code&gt;GPU Offload&lt;/code&gt; 基本就是能拉多高就拉多高，让模型尽量优先使用显卡计算。&lt;/p&gt;
&lt;p&gt;第二项才是这里的关键。它的作用不是传统意义上那种“显存爆了以后再借系统内存”，而是主动把一部分专家层放到 CPU 内存里，提前降低显存占用。因为 &lt;code&gt;MoE&lt;/code&gt; 模型本来就不是每次都要把所有专家都激活，所以把一部分专家放到内存里，对整体推理速度的影响没有很多人想象中那么夸张。&lt;/p&gt;
&lt;p&gt;更稳妥的做法，是先在一个区间里尝试，再根据自己的机器慢慢调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以先把相关参数设到 &lt;code&gt;20&lt;/code&gt; 到 &lt;code&gt;35&lt;/code&gt; 之间&lt;/li&gt;
&lt;li&gt;然后结合显存占用和内存压力，逐步微调&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本质上，这套方法就是用系统内存去换显存空间。&lt;/p&gt;
&lt;h2 id=&#34;04-128k-上下文下也能跑缩小上下文还能继续压显存&#34;&gt;04 128K 上下文下也能跑，缩小上下文还能继续压显存
&lt;/h2&gt;&lt;p&gt;还有一个比较有意思的点：测试时把上下文长度拉到了 &lt;code&gt;128K&lt;/code&gt;，在这种偏激进的设置下，35B 级 &lt;code&gt;MoE&lt;/code&gt; 模型依然能跑出比较高的速度。&lt;/p&gt;
&lt;p&gt;这说明一个问题，16G 显卡的瓶颈没有想象中那么死板。尤其在 &lt;code&gt;LM Studio&lt;/code&gt; 这种本地推理工具里，很多时候不是“能不能运行”的二选一，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你愿不愿意拿更多内存换显存&lt;/li&gt;
&lt;li&gt;你愿不愿意缩短上下文长度&lt;/li&gt;
&lt;li&gt;你愿不愿意接受不同量化版本之间的能力差异&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果把上下文从 &lt;code&gt;128K&lt;/code&gt; 进一步收缩到 &lt;code&gt;64K&lt;/code&gt; 或 &lt;code&gt;32K&lt;/code&gt;，显存压力还可以继续下降。也就是说，某些 35B 级 &lt;code&gt;MoE&lt;/code&gt; 模型甚至可能在更小显存的显卡上勉强跑起来，只是速度和内存压力要重新权衡。&lt;/p&gt;
&lt;h2 id=&#34;05-这种方法的代价对系统内存和虚拟内存要求更高&#34;&gt;05 这种方法的代价：对系统内存和虚拟内存要求更高
&lt;/h2&gt;&lt;p&gt;这类方案并不是白送性能。&lt;/p&gt;
&lt;p&gt;需要注意的是，当显存压力被进一步压缩时，系统内存占用会明显上升，虚拟内存的压力也会变大。换句话说，你省下来的不是成本，只是把压力从显卡挪到了内存和磁盘交换空间上。&lt;/p&gt;
&lt;p&gt;所以如果你也想照着试，最好先确认几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的系统内存是否足够&lt;/li&gt;
&lt;li&gt;虚拟内存是否留得够大&lt;/li&gt;
&lt;li&gt;机器后台是否还有很多占资源的软件在运行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些条件跟不上，最终看到的可能不是“35B 也能飞快跑”，而是整体系统都被拖慢。&lt;/p&gt;
&lt;h2 id=&#34;06-量化版本也不是越激进越好&#34;&gt;06 量化版本也不是越激进越好
&lt;/h2&gt;&lt;p&gt;这里还有一个实际选择：虽然更低位数的量化通常能进一步节省显存，但不一定是最合适的方案。&lt;/p&gt;
&lt;p&gt;作者给出的经验是，某些模型在 &lt;code&gt;Q4&lt;/code&gt; 下速度确实更高，但对原始能力的影响也更明显；相对来说，&lt;code&gt;Q6&lt;/code&gt; 在速度和能力保留之间更平衡。所以最终不一定要无脑追求最小体积，而是要看你更在意什么：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你主要追求速度和塞进显存&lt;/li&gt;
&lt;li&gt;或者你更在意模型原有能力的保留&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两种取向，对应的量化选择可能并不一样。&lt;/p&gt;
&lt;h2 id=&#34;07-哪些模型思路值得试&#34;&gt;07 哪些模型思路值得试
&lt;/h2&gt;&lt;p&gt;从这个思路来看，最值得尝试的并不是“盲目追大参数量”，而是优先找适合这种玩法的模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MoE&lt;/code&gt; 架构模型&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;LM Studio&lt;/code&gt; 里支持较好、量化版本较全的模型&lt;/li&gt;
&lt;li&gt;对长上下文或指令跟随有明确优势的模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除了主讲的 35B &lt;code&gt;MoE&lt;/code&gt; 模型，这类方案也适合延伸到一些其他方向，比如偏长上下文记忆、指令遵循表现更好的实验性模型，以及一些速度表现不错的轻量量化版本。&lt;/p&gt;
&lt;p&gt;这类推荐背后的逻辑其实很统一：先找架构上适合“内存换显存”的模型，再谈参数调优，而不是先看参数量再决定能不能跑。&lt;/p&gt;
&lt;h2 id=&#34;08-简单总结&#34;&gt;08 简单总结
&lt;/h2&gt;&lt;p&gt;如果你手里正好是一张 16G 显卡，觉得本地大模型最多只能玩 12B 到 14B，这种想法可以稍微更新一下。&lt;/p&gt;
&lt;p&gt;更准确的说法应该是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;16G 显卡跑大模型并不是完全没戏&lt;/li&gt;
&lt;li&gt;稠密模型和 &lt;code&gt;MoE&lt;/code&gt; 模型要分开看&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LM Studio&lt;/code&gt; 里的 &lt;code&gt;GPU Offload&lt;/code&gt; 和专家层转移到 CPU 内存的参数，能明显改变显存占用情况&lt;/li&gt;
&lt;li&gt;你实际上是在用更高的内存压力，换更大的模型规模和更高的可用速度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套思路不一定适合所有机器，但它至少说明了一点：本地部署大模型时，显存上限不是唯一限制，模型架构和推理配置同样重要。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code 多 Agent 协作：Subagents 和 Agent Teams 怎么选</title>
        <link>https://knightli.com/2026/04/22/claude-code-subagents-vs-agent-teams/</link>
        <pubDate>Wed, 22 Apr 2026 21:35:52 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/22/claude-code-subagents-vs-agent-teams/</guid>
        <description>&lt;p&gt;Claude Code 里和多 Agent 协作相关的能力，最容易混淆的就是 &lt;code&gt;Subagents&lt;/code&gt; 和 &lt;code&gt;Agent Teams&lt;/code&gt;。它们看起来都像“多开几个 Agent 一起做事”，但定位并不一样。简单说，前者更适合把独立任务分出去做，后者更适合让多个 Agent 围绕同一件事持续协作、互相验证。&lt;/p&gt;
&lt;p&gt;如果你之前用过 Skill，也可以先这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skill 负责定义流程和规则&lt;/li&gt;
&lt;li&gt;Subagent 或 Agent teammate 负责实际执行任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以问题不在于“哪个更高级”，而在于你要解决的是哪一类协作。&lt;/p&gt;
&lt;h2 id=&#34;subagents把支线任务分出去&#34;&gt;Subagents：把支线任务分出去
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Subagents&lt;/code&gt; 更像是在当前会话里临时派出去的分身。每个分身都有自己的上下文窗口，做完之后只把结果摘要带回来，主对话不会被大量中间输出塞满。&lt;/p&gt;
&lt;p&gt;这类能力的优势很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主线对话更干净，不容易被测试日志、搜索结果或长输出污染&lt;/li&gt;
&lt;li&gt;可以把相互独立的研究或执行任务并行化&lt;/li&gt;
&lt;li&gt;适合“给我结果就行”的任务，不需要持续讨论&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原文提到，Claude Code 内置了三类 Subagent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Explore&lt;/code&gt;：只读、适合快速搜索代码库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan&lt;/code&gt;：只读、适合在 plan mode 下后台收集信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;General-purpose&lt;/code&gt;：可读可写，适合同时探索和修改的任务&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;自定义-subagent&#34;&gt;自定义 Subagent
&lt;/h3&gt;&lt;p&gt;如果内置能力不够，可以自己定义一个 Subagent。方式也不复杂，本质上就是写一个 Markdown 文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.claude/agents/&lt;/code&gt;：只对当前项目生效&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.claude/agents/&lt;/code&gt;：对所有项目生效&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;文件格式类似这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: code-reviewer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tools: Read, Grep, Glob, Bash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;model: inherit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You are a senior code reviewer ensuring high standards of code quality and security.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When invoked:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; Run git diff to see recent changes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; Focus on modified files
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; Begin review immediately
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Review checklist:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Code is clear and readable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Functions and variables are well-named
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; No duplicated code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Proper error handling
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; No exposed secrets or API keys
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Input validation implemented
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Good test coverage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Performance considerations addressed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provide feedback organized by priority:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Critical issues (must fix)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Warnings (should fix)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Suggestions (consider improving)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Include specific examples of how to fix issues.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里最关键的是 &lt;code&gt;description&lt;/code&gt;。Claude 会根据这段描述判断什么时候应该调用这个 Subagent，所以写得越清楚，触发越准。&lt;/p&gt;
&lt;p&gt;另外几个常见配置项也很实用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tools&lt;/code&gt;：限制它能用哪些工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt;：决定使用 &lt;code&gt;sonnet&lt;/code&gt;、&lt;code&gt;opus&lt;/code&gt;、&lt;code&gt;haiku&lt;/code&gt; 或 &lt;code&gt;inherit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;permissionMode&lt;/code&gt;：控制编辑权限和权限提示行为&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memory&lt;/code&gt;：给 Subagent 配跨对话记忆目录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是临时用一次，也可以直接通过 CLI 注入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --agents &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;code-reviewer&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;description&amp;#34;: &amp;#34;Expert code reviewer. Use proactively after code changes.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;prompt&amp;#34;: &amp;#34;You are a senior code reviewer. Focus on code quality, security, and best practices.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;tools&amp;#34;: [&amp;#34;Read&amp;#34;, &amp;#34;Grep&amp;#34;, &amp;#34;Glob&amp;#34;, &amp;#34;Bash&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;model&amp;#34;: &amp;#34;sonnet&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;subagents-适合什么场景&#34;&gt;Subagents 适合什么场景
&lt;/h3&gt;&lt;p&gt;最适合 &lt;code&gt;Subagents&lt;/code&gt; 的，通常是这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跑测试并返回失败摘要，而不是把几千行日志全塞回主会话&lt;/li&gt;
&lt;li&gt;并行调查几个互不依赖的模块&lt;/li&gt;
&lt;li&gt;把“检查问题”和“修问题”拆成两步流水线&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Research the authentication, database, and API modules in parallel using separate subagents
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但如果任务需要频繁来回修正、多个阶段共享大量上下文，或者改动高度集中在少数几个文件里，那么直接在主对话里做，往往比派 Subagent 更省事。&lt;/p&gt;
&lt;h2 id=&#34;agent-teams多个独立会话一起协作&#34;&gt;Agent Teams：多个独立会话一起协作
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Agent Teams&lt;/code&gt; 是另一个层级的能力。它不是在一个会话里派出分身，而是启动多个彼此独立的 Claude Code 实例，让它们围绕共享任务列表协作，还可以互相发消息。&lt;/p&gt;
&lt;p&gt;这意味着它更像一个真正的小团队，而不只是“分出去做个支线”。&lt;/p&gt;
&lt;p&gt;原文提到，这项能力目前还是实验功能，需要先开启：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;把它加到 &lt;code&gt;settings.json&lt;/code&gt; 后，就可以让 Claude 按你的要求组织一个 team。比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;I&amp;#39;m designing a CLI tool that helps developers track TODO comments across
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;their codebase. Create an agent team to explore this from different angles: one
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;teammate on UX, one on technical architecture, one playing devil&amp;#39;s advocate.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;agent-teams-的组成&#34;&gt;Agent Teams 的组成
&lt;/h3&gt;&lt;p&gt;一个 Agent Team 主要由三部分组成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Team lead：你当前正在使用的主会话，负责组队、分派和汇总&lt;/li&gt;
&lt;li&gt;Teammates：多个独立的 Claude Code 实例&lt;/li&gt;
&lt;li&gt;Task list 和 Mailbox：共享任务列表与消息通道&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;和 Subagents 最大的不同在于，teammates 之间可以直接沟通，不需要每次都经过 lead 中转。任务状态通常会在 &lt;code&gt;pending&lt;/code&gt;、&lt;code&gt;in progress&lt;/code&gt;、&lt;code&gt;completed&lt;/code&gt; 之间流转，成员完成一个任务后，还可以继续认领下一个任务。&lt;/p&gt;
&lt;h3 id=&#34;agent-teams-适合什么场景&#34;&gt;Agent Teams 适合什么场景
&lt;/h3&gt;&lt;p&gt;当任务需要多角度讨论、互相挑战结论、或者拆成多个模块并行推进时，&lt;code&gt;Agent Teams&lt;/code&gt; 会更合适。&lt;/p&gt;
&lt;p&gt;原文给了几个很典型的场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多人并行审查同一个 PR，但每个人关注不同维度&lt;/li&gt;
&lt;li&gt;围绕同一个 bug 提出不同假设，并互相反驳&lt;/li&gt;
&lt;li&gt;前端、后端、测试分别推进不同模块&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如并行代码审查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create an agent team to review PR &lt;span class=&#34;ni&#34;&gt;#142&lt;/span&gt;. Spawn three reviewers:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; One focused on security implications
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; One checking performance impact
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; One validating test coverage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Have them each review and report findings.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再比如竞争假说式调试：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Users report the app exits after one message instead of staying connected.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Spawn 5 agent teammates to investigate different hypotheses. Have them talk to
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;each other to try to disprove each other&amp;#39;s theories, like a scientific
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debate. Update the findings doc with whatever consensus emerges.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这类任务的共性是：不是只要一个结果，而是需要不同 Agent 之间不断交换判断、修正方向，最后再形成比较可靠的结论。&lt;/p&gt;
&lt;h2 id=&#34;两者怎么选&#34;&gt;两者怎么选
&lt;/h2&gt;&lt;p&gt;如果要快速区分，可以直接记这条：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做完给结果，用 &lt;code&gt;Subagents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要讨论和相互验证，用 &lt;code&gt;Agent Teams&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;再展开一点，区别主要在这几个维度：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通信方式：&lt;code&gt;Subagents&lt;/code&gt; 主要把结果回传给主对话；&lt;code&gt;Agent Teams&lt;/code&gt; 的成员之间可以直接通信&lt;/li&gt;
&lt;li&gt;协调模式：&lt;code&gt;Subagents&lt;/code&gt; 更依赖主会话统一调度；&lt;code&gt;Agent Teams&lt;/code&gt; 有共享任务列表，成员可以自己认领任务&lt;/li&gt;
&lt;li&gt;Token 成本：&lt;code&gt;Subagents&lt;/code&gt; 更省；&lt;code&gt;Agent Teams&lt;/code&gt; 成本更高，因为每个 teammate 都是独立实例&lt;/li&gt;
&lt;li&gt;适合任务：&lt;code&gt;Subagents&lt;/code&gt; 更适合独立、结果导向的任务；&lt;code&gt;Agent Teams&lt;/code&gt; 更适合需要讨论、交叉验证的任务&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Agent Teams&lt;/code&gt; 虽然更强，但并不意味着任何任务都值得开 team。原文特别提醒了几个现实问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;token 消耗明显更高&lt;/li&gt;
&lt;li&gt;同时让多个 teammate 改同一个文件，很容易互相覆盖&lt;/li&gt;
&lt;li&gt;teammate 太多会增加协调成本，收益未必继续增长&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，比较稳妥的做法通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3 到 5 个 teammate 作为起点&lt;/li&gt;
&lt;li&gt;按模块或文件拆任务，避免写入冲突&lt;/li&gt;
&lt;li&gt;如果 lead 过早接手了 teammate 的任务，要明确告诉它先等队友完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外，当前实验能力还有一些限制，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不支持 &lt;code&gt;/resume&lt;/code&gt; 和 &lt;code&gt;/rewind&lt;/code&gt; 恢复 in-process teammates&lt;/li&gt;
&lt;li&gt;任务状态偶尔会滞后，需要人工提醒更新&lt;/li&gt;
&lt;li&gt;一个 lead 一次只能管理一个 team&lt;/li&gt;
&lt;li&gt;teammate 不能再继续派子 team&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;简单结论&#34;&gt;简单结论
&lt;/h2&gt;&lt;p&gt;这两个能力并不是替代关系，而是分别解决两类协作问题。&lt;/p&gt;
&lt;p&gt;如果你的需求是“把支线任务并行做掉，别污染主上下文”，优先用 &lt;code&gt;Subagents&lt;/code&gt;。如果你的需求是“让几个 Agent 像一个小团队一样协作、讨论、交叉验证”，再考虑 &lt;code&gt;Agent Teams&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;先用一个真实场景试一次，通常很快就能体会到差别：一个强调上下文隔离和结果回收，另一个强调多视角协同和持续互动。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原文链接：&lt;a class=&#34;link&#34; href=&#34;https://cloud.tencent.com/developer/article/2652960&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cloud.tencent.com/developer/article/2652960&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT Image 2 正式发布：从能生成到能商用的跨越</title>
        <link>https://knightli.com/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/2026/04/22/gpt-image-2-from-generation-to-commercial-use/</guid>
        <description>&lt;p&gt;OpenAI 的下一代图像生成模型 &lt;code&gt;GPT Image 2&lt;/code&gt; 已经正式面向 ChatGPT 用户开放。结合社区在泄露测试阶段的反馈，以及公开可见的实际效果，这一代模型的变化不像一次常规迭代，更像是 AI 生图从“能看”走向“能用”的一次明显推进。&lt;/p&gt;
&lt;p&gt;如果说上一阶段的图像模型，更多还是用来做灵感图、概念图和试玩性质的生成，那么 &lt;code&gt;GPT Image 2&lt;/code&gt; 最突出的地方，是它开始接近生产级工具。无论是可读文字、界面截图、营销海报，还是更逼真的商业摄影风格图片，它都比过去更接近“直接拿去用”的状态。&lt;/p&gt;
&lt;h2 id=&#34;一核心升级五个最值得注意的点&#34;&gt;一、核心升级：五个最值得注意的点
&lt;/h2&gt;&lt;h3 id=&#34;1-文字渲染终于进入可用区间&#34;&gt;1. 文字渲染终于进入可用区间
&lt;/h3&gt;&lt;p&gt;AI 生图过去最难啃的一块，就是文字。乱码、拼写错误、长文本崩坏、字体变形，这些几乎是所有模型都会碰到的问题。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; 在这方面的提升非常明显。它不仅能处理更清晰的英文和中文文字，还能应对更复杂的排版、更长的段落，以及一定程度上的多语言混排。这意味着很多原本必须靠后期修字的场景，现在可以直接在生成阶段完成。&lt;/p&gt;
&lt;p&gt;比较典型的用法包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;海报&lt;/li&gt;
&lt;li&gt;社交媒体封面&lt;/li&gt;
&lt;li&gt;带标题与说明文字的宣传页&lt;/li&gt;
&lt;li&gt;PPT 配图&lt;/li&gt;
&lt;li&gt;带真实文案和界面元素的 App 截图&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对实际工作流来说，这一步很重要。因为只要文字能稳定可读，图像生成就不再只是“出一张背景图”，而开始具备承接营销物料和产品展示图的能力。&lt;/p&gt;
&lt;h3 id=&#34;2-照片级真实感明显提升&#34;&gt;2. 照片级真实感明显提升
&lt;/h3&gt;&lt;p&gt;从社区并排对比来看，&lt;code&gt;GPT Image 2&lt;/code&gt; 的整体画质更锐利，材质纹理更细，光线一致性也更强。过去最容易露出 AI 痕迹的人脸、手部、边缘细节，这一代都明显更稳定。&lt;/p&gt;
&lt;p&gt;更准确地说，它不是完全没有破绽，而是“AI 味”显著下降。很多图第一次看上去，已经会让人直接把它当作真实照片、商业摄影样片或者游戏截图。&lt;/p&gt;
&lt;p&gt;这也是为什么很多人对它的第一反应不再是“画得不错”，而是“这张图已经很像真的了”。&lt;/p&gt;
&lt;h3 id=&#34;3-世界知识整合能力更强&#34;&gt;3. 世界知识整合能力更强
&lt;/h3&gt;&lt;p&gt;这是一个不那么显眼，但非常实用的升级。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; 给人的感觉，不只是会拼图块、凑风格，而是更像“知道自己在画什么”。原文里提到的几个方向很有代表性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手表表盘时间逻辑更合理&lt;/li&gt;
&lt;li&gt;品牌细节和角色特征还原更准确&lt;/li&gt;
&lt;li&gt;Minecraft 这类游戏截图或软件界面的逻辑结构更像真的&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着它在处理现实物体、数字界面、游戏画面这类需要常识和结构感的内容时，成功率更高。对用户来说，这种提升往往比单纯的“更高清”更有价值。&lt;/p&gt;
&lt;h3 id=&#34;4-ui-与截图生成能力很强&#34;&gt;4. UI 与截图生成能力很强
&lt;/h3&gt;&lt;p&gt;从泄露期到正式上线，&lt;code&gt;GPT Image 2&lt;/code&gt; 最出圈的一个方向，就是生成软件界面、网页截图和 App mockup。&lt;/p&gt;
&lt;p&gt;这类任务过去很难做，因为它们同时要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文字清楚&lt;/li&gt;
&lt;li&gt;布局规整&lt;/li&gt;
&lt;li&gt;按钮、卡片、导航条等元素对齐&lt;/li&gt;
&lt;li&gt;配色和层级像真实产品&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而这次模型在这些方面的表现已经相当成熟。对于产品经理、独立开发者和设计师来说，这意味着可以更快做出高保真原型图，用于提案、演示甚至用户测试。&lt;/p&gt;
&lt;h3 id=&#34;5-局部编辑更接近实用工作流&#34;&gt;5. 局部编辑更接近实用工作流
&lt;/h3&gt;&lt;p&gt;按原文整理的信息，&lt;code&gt;GPT Image 2&lt;/code&gt; 支持更精准的局部编辑能力，也就是只修改画面中的特定区域，而不是每次整张图推倒重来。&lt;/p&gt;
&lt;p&gt;这类能力对创意工作流非常关键。因为实际设计场景里，很多时候不是“重做一张”，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改一个按钮&lt;/li&gt;
&lt;li&gt;换一段文字&lt;/li&gt;
&lt;li&gt;调整某个物体的位置&lt;/li&gt;
&lt;li&gt;修一块背景&lt;/li&gt;
&lt;li&gt;替换局部元素&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果局部编辑足够稳定，AI 生图的价值就不只是第一次出图，而是能真正参与到反复迭代中。&lt;/p&gt;
&lt;h2 id=&#34;二怎么使用-gpt-image-2&#34;&gt;二、怎么使用 GPT Image 2
&lt;/h2&gt;&lt;h3 id=&#34;在-chatgpt-里使用&#34;&gt;在 ChatGPT 里使用
&lt;/h3&gt;&lt;p&gt;目前 &lt;code&gt;GPT Image 2&lt;/code&gt; 已经集成在 ChatGPT 里，普通用户可以直接通过图像生成功能调用。&lt;/p&gt;
&lt;p&gt;常见操作流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 ChatGPT 网页版或 App&lt;/li&gt;
&lt;li&gt;在输入框点击 &lt;code&gt;+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;选择“创建图片”&lt;/li&gt;
&lt;li&gt;输入提示词并提交&lt;/li&gt;
&lt;li&gt;系统调用 &lt;code&gt;GPT Image 2&lt;/code&gt; 生成结果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文还提到，不同订阅等级对应的可用额度不同，免费用户和 &lt;code&gt;Plus&lt;/code&gt; / &lt;code&gt;Pro&lt;/code&gt; 用户在生成次数上会有差别。具体额度规则建议以当时 ChatGPT 产品内显示为准，因为这类限制后续可能调整。&lt;/p&gt;
&lt;h3 id=&#34;在-api-中使用&#34;&gt;在 API 中使用
&lt;/h3&gt;&lt;p&gt;如果是开发者场景，也可以通过 OpenAI API 调用图像生成模型。原文里提到的模型名写法是 &lt;code&gt;gpt-image-2&lt;/code&gt;，但实际接入时仍建议以官方文档中的最新名称和参数为准。&lt;/p&gt;
&lt;p&gt;文中列出的几个常见分辨率如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;分辨率&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;1024×1024&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;通用方图、头像、社交媒体图片&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;1536×1024&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;横版封面、幻灯片、宽屏壁纸&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;1024×1536&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;竖版海报、手机壁纸、故事配图&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;2048×2048&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;高清印刷、大幅展示、精细插画&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;三几个代表性使用场景&#34;&gt;三、几个代表性使用场景
&lt;/h2&gt;&lt;p&gt;原文列了不少案例，这里整理出最有代表性的几类。&lt;/p&gt;
&lt;h3 id=&#34;1-app-界面截图&#34;&gt;1. App 界面截图
&lt;/h3&gt;&lt;p&gt;这一类提示词非常适合产品原型、设计演示、需求讨论。&lt;/p&gt;
&lt;p&gt;示例特点通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指定平台风格，例如 iOS&lt;/li&gt;
&lt;li&gt;写清页面结构&lt;/li&gt;
&lt;li&gt;列出核心数据卡片&lt;/li&gt;
&lt;li&gt;指定底部导航栏&lt;/li&gt;
&lt;li&gt;说明配色与字体风格&lt;/li&gt;
&lt;li&gt;强调文字必须清晰、元素要对齐&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种写法的重点不是“画面好看”，而是尽量减少模型发挥空间，让结果更像一个真的界面。&lt;/p&gt;
&lt;h3 id=&#34;2-电商产品图&#34;&gt;2. 电商产品图
&lt;/h3&gt;&lt;p&gt;像香水、耳机、手表、化妆品这类商品图，很适合 &lt;code&gt;GPT Image 2&lt;/code&gt; 发挥。&lt;/p&gt;
&lt;p&gt;因为它现在对以下内容的处理已经更稳定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;玻璃、金属、液体等材质质感&lt;/li&gt;
&lt;li&gt;柔和阴影和反射&lt;/li&gt;
&lt;li&gt;商业摄影常见的布光逻辑&lt;/li&gt;
&lt;li&gt;简洁背景下的高端展示感&lt;/li&gt;
&lt;li&gt;少量品牌文字&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果生成结果稳定，很多电商详情图、营销页主图、社交媒体产品视觉，都能把试错成本压低很多。&lt;/p&gt;
&lt;h3 id=&#34;3-文字海报&#34;&gt;3. 文字海报
&lt;/h3&gt;&lt;p&gt;海报是最能体现这一代文字能力的场景之一。&lt;/p&gt;
&lt;p&gt;原文给出的方向很典型：在一个黄昏城市剪影背景上，明确写出主标题、时间地点、艺人名单，并要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文字清晰可读&lt;/li&gt;
&lt;li&gt;无拼写错误&lt;/li&gt;
&lt;li&gt;中英文混排稳定&lt;/li&gt;
&lt;li&gt;风格统一&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务过去通常要先生成背景图，再人工补字。现在如果模型能一次完成大部分工作，它的实用价值就会大很多。&lt;/p&gt;
&lt;h3 id=&#34;4-游戏概念图和假截图&#34;&gt;4. 游戏概念图和“假截图”
&lt;/h3&gt;&lt;p&gt;这是 &lt;code&gt;GPT Image 2&lt;/code&gt; 在社交媒体上最容易传播的一类内容。&lt;/p&gt;
&lt;p&gt;比如第三人称游戏截图、霓虹街道、雨后积水反射、景深、颗粒感、PS5 实机风格，这种提示词组合出来的结果，很容易让人第一眼误判为游戏泄露画面。&lt;/p&gt;
&lt;p&gt;从传播角度看，这类图很吸睛；从风险角度看，也说明以假乱真的门槛已经明显下降，用户对图片真实性的判断需要更谨慎。&lt;/p&gt;
&lt;h3 id=&#34;5-拟真人像与创意肖像&#34;&gt;5. 拟真人像与创意肖像
&lt;/h3&gt;&lt;p&gt;人像一直是 AI 图像能力最直观的测试题。&lt;/p&gt;
&lt;p&gt;原文里的示例聚焦在自然光、咖啡馆、逆光边缘、针织衫、暖色背景虚化这类细节组合。它们背后的重点其实是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;皮肤纹理自然&lt;/li&gt;
&lt;li&gt;发丝细节完整&lt;/li&gt;
&lt;li&gt;手部结构不崩&lt;/li&gt;
&lt;li&gt;光线逻辑合理&lt;/li&gt;
&lt;li&gt;整体氛围不带明显 AI 痕迹&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这几点能稳定做到，人像生成才算真正进入可用阶段。&lt;/p&gt;
&lt;h3 id=&#34;6-美食摄影&#34;&gt;6. 美食摄影
&lt;/h3&gt;&lt;p&gt;原文还给了一个非常长的英文提示词，用来生成高端餐厅风格的豚骨拉面照片。这个例子说明了一个很现实的趋势：当模型足够强时，提示词可以写得像摄影脚本。&lt;/p&gt;
&lt;p&gt;这种写法会细到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;菜品构成&lt;/li&gt;
&lt;li&gt;餐具材质&lt;/li&gt;
&lt;li&gt;汤底光泽&lt;/li&gt;
&lt;li&gt;叉烧的脂肪层和焦边&lt;/li&gt;
&lt;li&gt;溏心蛋状态&lt;/li&gt;
&lt;li&gt;背景景深和散景&lt;/li&gt;
&lt;li&gt;光源方向&lt;/li&gt;
&lt;li&gt;镜头型号与光圈&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于餐饮品牌、菜单设计、外卖平台主图和社交媒体内容，这种生成能力已经非常接近商业摄影替代方案。&lt;/p&gt;
&lt;h3 id=&#34;7-教育插图&#34;&gt;7. 教育插图
&lt;/h3&gt;&lt;p&gt;另一个很有代表性的方向，是带标注的科学教育图。&lt;/p&gt;
&lt;p&gt;原文示例是一张植物细胞剖面图，要求模型同时处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;结构正确&lt;/li&gt;
&lt;li&gt;标签位置准确&lt;/li&gt;
&lt;li&gt;引导线清晰&lt;/li&gt;
&lt;li&gt;字体统一&lt;/li&gt;
&lt;li&gt;配色有层次&lt;/li&gt;
&lt;li&gt;整体适合教材或课件使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明 &lt;code&gt;GPT Image 2&lt;/code&gt; 的价值不只是做“好看”的图，还包括做“信息型”的图。&lt;/p&gt;
&lt;h2 id=&#34;四对普通用户最实际的意义&#34;&gt;四、对普通用户最实际的意义
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; 真正值得关注的地方，不只是它又把画质往前推了一步，而是它把 AI 生图从娱乐型、试玩型工具，进一步推向了可商用、可交付的生产工具。&lt;/p&gt;
&lt;p&gt;具体体现在几个层面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文字终于开始靠谱&lt;/li&gt;
&lt;li&gt;界面和海报更像真实物料&lt;/li&gt;
&lt;li&gt;商业摄影风格图更可用&lt;/li&gt;
&lt;li&gt;教育类、信息类图片也能做&lt;/li&gt;
&lt;li&gt;局部编辑让它更适合迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当然，这并不代表它已经完全替代设计师、摄影师或插画师。真正的商业项目仍然需要审美判断、品牌控制、版权意识和人工复核。&lt;/p&gt;
&lt;p&gt;但至少从这次更新能看出来，AI 图像生成的竞争点已经不只是“能不能出图”，而是“能不能更稳定地进入真实工作流”。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原文提到的参考链接：&lt;a class=&#34;link&#34; href=&#34;https://getgpt.pro/blog/gpt-image-2-release&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getgpt.pro/blog/gpt-image-2-release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;原文提到的体验站点：&lt;a class=&#34;link&#34; href=&#34;https://getgpt.pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getgpt.pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;原文提到的邀请码链接：&lt;a class=&#34;link&#34; href=&#34;https://getgpt.pro/i/ig2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getgpt.pro/i/ig2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>nuwa-skill：把“蒸馏一个人”从灵感变成可执行流程</title>
        <link>https://knightli.com/2026/04/22/nuwa-skill-distill-how-someone-thinks/</link>
        <pubDate>Wed, 22 Apr 2026 16:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/22/nuwa-skill-distill-how-someone-thinks/</guid>
        <description>&lt;p&gt;&lt;code&gt;[alchaincyf/nuwa-skill](https://github.com/alchaincyf/nuwa-skill)&lt;/code&gt; 很容易让人先想到一句话：让 AI 模仿名人的口吻回答问题。但它真正有意思的地方，不在“像不像”，而在于它试图把“蒸馏一个人的思维方式”做成一条可重复执行的流程。&lt;/p&gt;
&lt;p&gt;这件事一旦成立，价值就不只是做几个好玩的角色 prompt，而是把某个人的判断框架、关注重点、常见启发式和表达习惯，沉淀成一个可以反复调用的 skill。你要的不是一句像某某说出来的话，而是一个更接近“如果他来分析这件事，会先看哪里、怎么取舍、会质疑什么”的工作接口。&lt;/p&gt;
&lt;h2 id=&#34;它解决的不是模仿而是建模&#34;&gt;它解决的不是“模仿”，而是“建模”
&lt;/h2&gt;&lt;p&gt;很多所谓的人物 prompt，本质上只是风格贴皮。&lt;/p&gt;
&lt;p&gt;它们通常会要求模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用某个人的语气说话&lt;/li&gt;
&lt;li&gt;多引用这个人的经典句式&lt;/li&gt;
&lt;li&gt;尽量模仿他公开表达里的措辞&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做在演示里很抓眼球，但一到真实任务就很容易露馅。原因也很简单：语气是表层，判断结构才是核心。一个人物之所以有辨识度，不是因为他爱说哪几个词，而是因为他在面对问题时，总会用某些稳定的方法切入。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 的方向更像是把这种“稳定的方法”提取出来。换句话说，它关心的不是“怎么说得像”，而是“怎么想得像”。&lt;/p&gt;
&lt;h2 id=&#34;一个更完整的工作流&#34;&gt;一个更完整的工作流
&lt;/h2&gt;&lt;p&gt;从仓库说明来看，&lt;code&gt;nuwa-skill&lt;/code&gt; 想做的是一套端到端流程：输入一个人名，然后自动完成调研、提炼、验证，再把结果组织成能在 Claude Code 里调用的 skill。&lt;/p&gt;
&lt;p&gt;这背后有几个很关键的变化。&lt;/p&gt;
&lt;p&gt;第一，它默认蒸馏对象可以不是你团队里的同事。很多人第一次接触这类能力，会先想到“把优秀同事的方法论沉淀下来”。这当然有价值，但边界也很明显：可学习样本有限，而且往往只覆盖团队内部经验。&lt;code&gt;nuwa-skill&lt;/code&gt; 直接把对象扩展到更广的人群，比如创业者、投资人、科学家、产品经理、写作者。&lt;/p&gt;
&lt;p&gt;第二，它强调的是“自动完成”，而不是让用户手工拼 prompt。真正让这类能力能落地的，不是 prompt 文案写得多华丽，而是你能不能稳定完成资料搜集、观点归纳、模式抽取和结果校验。只要其中某一步完全依赖手工，复用成本就会快速上升。&lt;/p&gt;
&lt;p&gt;第三，它试图把产物变成一个 skill，而不是一段一次性对话。前者可以被多次调用、组合、迭代；后者往往只在当前上下文里有效，过几轮就散了。&lt;/p&gt;
&lt;h2 id=&#34;为什么这种方向值得关注&#34;&gt;为什么这种方向值得关注
&lt;/h2&gt;&lt;p&gt;如果把 AI 当成问答机，最自然的用法是“给我一个答案”。但如果把 AI 当成工作台，问题就会变成“给我一个看问题的方法”。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 的价值，更偏向后者。&lt;/p&gt;
&lt;p&gt;比如你面对一个产品决策，想要的未必是一个标准答案，而是几种截然不同的分析框架：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有人会先看长期复利&lt;/li&gt;
&lt;li&gt;有人会先看资源约束&lt;/li&gt;
&lt;li&gt;有人会先看用户体验的一致性&lt;/li&gt;
&lt;li&gt;有人会先看市场进入时机&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些框架能被稳定封装出来，AI 的角色就会从“替你写一段话”变成“帮你快速切换视角”。这比单纯模仿名人语录有用得多，因为它直接作用在决策质量上。&lt;/p&gt;
&lt;h2 id=&#34;它最打动人的地方把隐性知识变成可调用资产&#34;&gt;它最打动人的地方：把隐性知识变成可调用资产
&lt;/h2&gt;&lt;p&gt;很多高价值能力本来就很难写成 SOP。&lt;/p&gt;
&lt;p&gt;一个人为什么判断比别人准，往往不是因为他掌握了更多显性规则，而是因为他在长期实践里形成了一套隐性的筛选机制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么信号值得优先关注&lt;/li&gt;
&lt;li&gt;什么噪音应该直接忽略&lt;/li&gt;
&lt;li&gt;哪些问题要拆开看&lt;/li&gt;
&lt;li&gt;哪些问题要反过来问&lt;/li&gt;
&lt;li&gt;哪些结论必须等待更多证据&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类能力平时很难沉淀，因为它不总能被本人完整说清楚。也正因为如此，一旦能被结构化提取，价值会很高。&lt;code&gt;nuwa-skill&lt;/code&gt; 吸引人的地方就在这里：它想处理的不是表面知识搬运，而是认知习惯的再组织。&lt;/p&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;我觉得这类 skill 最适合以下几种场景。&lt;/p&gt;
&lt;h3 id=&#34;1-决策前的多视角审视&#34;&gt;1. 决策前的多视角审视
&lt;/h3&gt;&lt;p&gt;当你已经有一个方案，但担心自己只是在顺着熟悉的路径思考时，切换到不同“人物视角”去审视同一问题，会比让模型继续顺着你的原话扩写更有价值。&lt;/p&gt;
&lt;h3 id=&#34;2-学习某类高手的判断框架&#34;&gt;2. 学习某类高手的判断框架
&lt;/h3&gt;&lt;p&gt;很多人学习高手，习惯收藏语录、看访谈、抄摘要，但最后往往只记住了几句漂亮话。把思维模式做成 skill 之后，学习方式会更接近“带着问题反复调用”，而不是“做一堆静态摘抄”。&lt;/p&gt;
&lt;h3 id=&#34;3-让团队共享一种分析方式&#34;&gt;3. 让团队共享一种分析方式
&lt;/h3&gt;&lt;p&gt;团队里真正稀缺的，不只是知识文档，而是“我们遇到问题时通常怎样想”。如果未来这套流程成熟，它也可以反过来用于沉淀组织内部高手的方法论，只是它显然不打算把这个能力局限在组织内部。&lt;/p&gt;
&lt;h2 id=&#34;这类项目真正难的地方&#34;&gt;这类项目真正难的地方
&lt;/h2&gt;&lt;p&gt;当然，方向有吸引力，不代表问题已经解决。&lt;/p&gt;
&lt;p&gt;这类项目最难的，从来不是安装一个 skill，而是下面几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;资料源是否足够可靠&lt;/li&gt;
&lt;li&gt;提炼出的模式是不是稳定，而不是偶然语料带来的错觉&lt;/li&gt;
&lt;li&gt;模型是在使用人物框架分析，还是只是在复述常见印象&lt;/li&gt;
&lt;li&gt;不同人物之间的边界会不会被模型自动抹平&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，最关键的不是“能不能生成一段像样的话”，而是“这个 skill 产出的认知框架是否经得起多任务复用”。如果未来它在验证环节继续做深，这类项目的可信度会明显提高。&lt;/p&gt;
&lt;h2 id=&#34;为什么它比提示词模板库更进一步&#34;&gt;为什么它比“提示词模板库”更进一步
&lt;/h2&gt;&lt;p&gt;过去不少项目会把这类能力做成模板库：一个人物对应一段 prompt，用户复制进去就用。问题是模板库本质上还是静态资产，更新慢、验证弱，而且很难形成完整的生产流程。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 更进一步的地方，是它把“人物蒸馏”从一个模板问题，推进成一个流程问题。&lt;/p&gt;
&lt;p&gt;一旦工作重心从“写一段 prompt”转到“如何系统生成、校验、迭代一个人物 skill”，这件事就更像工程，而不是灵感。对真正想长期使用的人来说，后者显然更重要。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 有意思，不是因为它把 AI 变成了名人模仿秀，而是因为它把“如何学习一个人的思考方式”这件事，往可执行、可复用、可迭代的方向推进了一步。&lt;/p&gt;
&lt;p&gt;如果说很多人物 prompt 解决的是“像谁说话”，那它想解决的，是“像谁那样看问题”。前者适合演示，后者才更接近生产力工具。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 仓库：&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/alchaincyf/nuwa-skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;项目说明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/alchaincyf/nuwa-skill/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skill 定义：&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill/blob/main/SKILL.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/alchaincyf/nuwa-skill/blob/main/SKILL.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 发布 ChatGPT Images 2.0：图像生成开始走向可直接交付</title>
        <link>https://knightli.com/2026/04/22/openai-chatgpt-images-2-0-deliverable-image-generation/</link>
        <pubDate>Wed, 22 Apr 2026 14:19:53 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/22/openai-chatgpt-images-2-0-deliverable-image-generation/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 4 月 21 日发布了 &lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-chatgpt-images-2-0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing ChatGPT Images 2.0&lt;/a&gt;。从官方页面来看，这次更新想强调的并不只是“图片更好看了”，而是图像生成正在往“更可控、可排版、可直接交付”的方向走。&lt;/p&gt;
&lt;p&gt;如果只看这篇发布页，它更像一组高密度能力展示，而不是传统意义上的技术说明。页面几乎没有展开模型结构、训练细节或基准测试，而是用大量示例图直接回答一个问题：现在的 ChatGPT 图像生成，能不能把过去还要靠设计师反复修图、补字、调版式的活，进一步前移到生成阶段。&lt;/p&gt;
&lt;h2 id=&#34;01-这次更新最明显的信号&#34;&gt;01 这次更新最明显的信号
&lt;/h2&gt;&lt;p&gt;官方页面里最醒目的几个关键词，其实已经把重点说得很清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Greater precision and control&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Stronger across languages&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Stylistic sophistication and realism&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这三点放在一起看，含义很明确。&lt;/p&gt;
&lt;p&gt;第一，不再只强调“想象力”，而是强调控制力。页面里出现了大量海报、杂志页、宣传页、信息图、角色设定页、分镜漫画、印刷书签这类示例。它们的共同点不是单张视觉冲击力，而是需要同时处理文字、层级、留白、构图、风格统一和输出比例。这说明 OpenAI 在刻意把产品定位从“生成一张图”往“生成一份可以拿去用的视觉成品”推进。&lt;/p&gt;
&lt;p&gt;第二，多语言文字能力被单独拎出来做展示。页面里不仅有多语种海报、书籍封面、韩文旅宿宣传页、日文漫画，还有专门强调 typography 的示例。这很关键，因为过去图像模型最容易翻车的地方之一，就是一旦涉及长文本、复杂版式或非英语文字，稳定性会明显下降。现在 OpenAI 把它放到发布页核心位置，本身就是在传递一个信号：文字渲染和跨语言排版，已经成为它们认为值得正面展示的能力。&lt;/p&gt;
&lt;p&gt;第三，风格覆盖面被拉得很宽。官方示例同时覆盖了写实摄影、复古拼贴、Bauhaus 海报、时尚大片、黑白纪实、儿童绘本、日漫、青年漫画、教育信息图、产品网格图、角色设定页等多种形式。这里想表达的不是“模型能模仿很多画风”这么简单，而是它正在尝试从单一美术风格输出，走向更完整的视觉任务适配。&lt;/p&gt;
&lt;h2 id=&#34;02-为什么说它在走向可直接交付&#34;&gt;02 为什么说它在走向“可直接交付”
&lt;/h2&gt;&lt;p&gt;从这页内容来看，ChatGPT Images 2.0 更像一个“图像制作工作台”能力升级，而不只是更强的文生图模型。&lt;/p&gt;
&lt;p&gt;过去很多模型虽然也能生成漂亮图片，但一旦用户需求变成下面这些任务，体验就会迅速下降：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做一张带完整标题、副标题和说明文字的海报&lt;/li&gt;
&lt;li&gt;做一页信息密度较高的杂志或宣传页&lt;/li&gt;
&lt;li&gt;做带连续角色和连续叙事的漫画页&lt;/li&gt;
&lt;li&gt;做需要固定比例、特定版式和明确品牌感的营销物料&lt;/li&gt;
&lt;li&gt;做包含多语言文字的正式视觉内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 OpenAI 这次展示的例子，几乎都在正面回应这些老问题。&lt;/p&gt;
&lt;p&gt;例如页面里有教育信息图、设计趋势海报、书签印刷稿、咖啡店开业海报、旅游宣传页、产品周边展示图、论文海报重制图。这类内容有一个共同特征：它们不是“给人看一眼觉得不错”就结束，而是更接近真实工作流里的半成品甚至成品。&lt;/p&gt;
&lt;p&gt;换句话说，这次更新真正重要的地方，可能不是单张图质量又提升了多少，而是模型开始更像一套可用于内容生产、品牌物料、教育传播和轻量设计工作的生成系统。&lt;/p&gt;
&lt;h2 id=&#34;03-这对-chatgpt-产品定位意味着什么&#34;&gt;03 这对 ChatGPT 产品定位意味着什么
&lt;/h2&gt;&lt;p&gt;从发布页组织方式也能看出一些产品层面的变化。&lt;/p&gt;
&lt;p&gt;OpenAI 没有把 ChatGPT Images 2.0 包装成一个只服务创意圈的图像模型，而是不断用“研究、推理、资料转化、版面整理、知识表达、营销输出”这些场景去展示它。页面里甚至还有把数学证明、设计趋势、历史笔记、学术论文可视化的例子。&lt;/p&gt;
&lt;p&gt;这意味着图像生成在 ChatGPT 里的角色，已经不只是“给聊天配图”或“生成一张插画”，而是在向更通用的表达层靠拢。它想做的是：当用户已经在 ChatGPT 里思考、查资料、整理内容、写文案之后，最后一步连视觉产出也一起完成。&lt;/p&gt;
&lt;p&gt;如果这个方向继续推进，图像功能的竞争点就不再只是审美和写实程度，而会越来越依赖下面这些能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否能稳定处理复杂文字&lt;/li&gt;
&lt;li&gt;是否能维持跨页面或多面板的一致性&lt;/li&gt;
&lt;li&gt;是否能生成更接近真实工作物料的版式&lt;/li&gt;
&lt;li&gt;是否能在研究、写作、营销、教学这些任务里自然接上前面的上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;04-这篇发布页没有说什么&#34;&gt;04 这篇发布页没有说什么
&lt;/h2&gt;&lt;p&gt;当然，发布页的写法也决定了它更适合“看方向”，不太适合“看细节”。&lt;/p&gt;
&lt;p&gt;截至官方页面 2026 年 4 月 21 日的内容，它主要展示的是结果，而不是方法。页面没有详细展开：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型与上一代相比的量化提升&lt;/li&gt;
&lt;li&gt;文字准确率或多语言渲染的明确指标&lt;/li&gt;
&lt;li&gt;复杂版式任务的失败边界&lt;/li&gt;
&lt;li&gt;API、价格、调用方式或企业侧接入细节&lt;/li&gt;
&lt;li&gt;安全策略和生成限制的具体更新&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更准确地说，这篇文章传递的是产品信号，而不是完整技术规格。&lt;/p&gt;
&lt;h2 id=&#34;05-简单结论&#34;&gt;05 简单结论
&lt;/h2&gt;&lt;p&gt;如果只用一句话概括 ChatGPT Images 2.0，这次更新最值得注意的不是“更会画”，而是“更会做成品”。&lt;/p&gt;
&lt;p&gt;OpenAI 显然希望把图像生成从灵感型工具，往可执行、可排版、可沟通、可交付的生产工具推进。文字控制、多语言、版式、风格跨度、长页面内容组织，这些原本最容易暴露短板的地方，现在反而成了它主动展示的卖点。&lt;/p&gt;
&lt;p&gt;这不代表图像生成已经完全解决了设计工作里的所有问题，但至少从这次发布页可以看出，竞争重心正在变化。未来谁更强，可能不只是看谁能出一张更惊艳的图，而是看谁能更稳定地做出一份真的能拿去用的视觉内容。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-chatgpt-images-2-0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing ChatGPT Images 2.0 - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Karpathy 的 65 行 CLAUDE.md：让 AI 编程少犯三类错误</title>
        <link>https://knightli.com/2026/04/19/karpathy-claude-md-ai-coding-rules/</link>
        <pubDate>Sun, 19 Apr 2026 18:27:23 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/19/karpathy-claude-md-ai-coding-rules/</guid>
        <description>&lt;p&gt;最近 GitHub 上有一个围绕 AI 编程的项目很火，核心其实只是一个大约 65 行的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件。它之所以能拿到大量 star，不是因为技术实现复杂，而是因为它抓住了很多人使用 AI 写代码时反复遇到的问题。&lt;/p&gt;
&lt;p&gt;这个项目的背景，要从 Andrej Karpathy 对 AI 编程的观察说起。Karpathy 是 AI 领域很有影响力的教育者和工程师：斯坦福博士，参与过 OpenAI 早期工作，也曾在 Tesla 负责 Autopilot 视觉系统。后来他持续分享对大模型、教育和 AI 工具的理解，所以他对编程方式变化的判断，总会引起很多开发者关注。&lt;/p&gt;
&lt;p&gt;他在一次分享中提到，自己使用 Claude Code 几周后，编程方式发生了明显变化：过去大概是 80% 手写代码、20% AI 辅助，现在更接近 80% 让 AI 写代码，自己做 20% 修改。他形容这像是“用英语编程”，通过自然语言告诉 LLM 要写什么。&lt;/p&gt;
&lt;p&gt;但他也指出了 AI 编程的几个典型问题。&lt;/p&gt;
&lt;h2 id=&#34;01-错误假设&#34;&gt;01 错误假设
&lt;/h2&gt;&lt;p&gt;第一个问题是模型很容易替用户做假设，然后沿着这个假设一路写下去。它不一定会主动管理自己的困惑，也不一定会在需求含糊时停下来追问。&lt;/p&gt;
&lt;p&gt;比如用户只说“添加用户导出功能”，模型可能会默认导出全部用户，默认输出 JSON，默认写成本地文件，默认权限和字段都不需要再确认。等代码写完，用户才发现它理解的需求和真实场景并不一致。&lt;/p&gt;
&lt;p&gt;更好的做法应该是先把不确定点列出来：导出全部用户还是筛选结果？是浏览器下载还是后台任务？需要哪些字段？数据量大不大？是否有权限限制？这些问题不问清楚，后面写得越快，偏得也越远。&lt;/p&gt;
&lt;h2 id=&#34;02-过度复杂化&#34;&gt;02 过度复杂化
&lt;/h2&gt;&lt;p&gt;第二个问题是模型很容易把简单问题写复杂。一个函数能解决的问题，它可能加上抽象类、策略模式、工厂模式、配置层和一堆“未来可能有用”的扩展点。&lt;/p&gt;
&lt;p&gt;这类代码看起来很工程化，实际却增加了维护负担。AI 尤其擅长快速生成大量结构，但并不总能判断这些结构是否真的必要。结果就是一百行能解决的任务，被膨胀成一千行。&lt;/p&gt;
&lt;p&gt;判断标准其实很直接：一个资深工程师看到这段改动，会不会觉得它过度设计？如果答案是会，就应该删掉多余层次，用最少的代码解决当前问题。&lt;/p&gt;
&lt;h2 id=&#34;03-附带伤害&#34;&gt;03 附带伤害
&lt;/h2&gt;&lt;p&gt;第三个问题是模型有时会修改或删除自己没有充分理解的代码。它可能在修一个小 bug 的时候顺手改注释、重排格式、清理看似无用的 import，甚至动到和当前任务无关的逻辑。&lt;/p&gt;
&lt;p&gt;这类“顺手优化”很危险，因为它扩大了变更范围，也让 review 变得更困难。用户本来只想修复一个空邮件导致验证器崩溃的问题，结果模型顺便增强了邮件验证、加了用户名校验、改了文档字符串，最后很难判断到底哪一行影响了行为。&lt;/p&gt;
&lt;p&gt;更稳妥的原则是：只动必须动的代码，只清理自己造成的问题。原本就存在的死代码、格式问题或历史包袱，除非任务明确要求处理，否则最多提醒一句，不要直接改。&lt;/p&gt;
&lt;h2 id=&#34;04-把吐槽变成-claudemd&#34;&gt;04 把吐槽变成 CLAUDE.md
&lt;/h2&gt;&lt;p&gt;在 Karpathy 的观点被大量传播后，开发者 Forrest Cheung 做了一件很聪明的事：他把这些吐槽整理成可以执行的行为准则，写进一个 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件。&lt;/p&gt;
&lt;p&gt;这个项目没有复杂代码，关键就是把 AI 编程中最容易出问题的地方，转成明确的工作规则。大致可以概括为四条。&lt;/p&gt;
&lt;p&gt;第一条是先想再写。不要默默假设，不要隐藏困惑；如果需求有多种理解，就把它们列出来；如果存在更简单的方案，也要说出来；该追问时追问，该反驳时反驳。&lt;/p&gt;
&lt;p&gt;第二条是简单优先。不添加没被要求的功能，不为一次性代码做抽象，不加入多余配置，也不为极小概率场景写大量防御代码。如果 50 行能解决，就不要写成 200 行。&lt;/p&gt;
&lt;p&gt;第三条是精准修改。每一行改动都应该能直接追溯到用户请求。不要顺手改善邻近代码，不要重构没坏的东西，尽量匹配项目既有风格。&lt;/p&gt;
&lt;p&gt;第四条是目标驱动。不要只给模型一个模糊指令，而是给它可验证的成功标准。比如“修复 bug”可以变成“先写一个能复现 bug 的测试，再让测试通过”；“添加校验”可以变成“写无效输入测试并通过”。成功标准越清楚，模型越容易自己循环到完成。&lt;/p&gt;
&lt;h2 id=&#34;05-为什么它会火&#34;&gt;05 为什么它会火
&lt;/h2&gt;&lt;p&gt;这个项目能火，不是因为内容很玄，而是因为它足够贴近真实开发。&lt;/p&gt;
&lt;p&gt;很多人用 AI 编程时都经历过类似场景：模型自信地误解需求，代码越写越复杂，或者在不该动的地方动手。&lt;code&gt;CLAUDE.md&lt;/code&gt; 的价值，是把这些经验变成可以放进项目里的协作规则。&lt;/p&gt;
&lt;p&gt;它的门槛也很低：一个文件就能开始生效，不需要复杂接入。再加上 Karpathy 本人的影响力，以及项目里有实战对比案例，它很自然会在 Claude Code 用户和 AI 编程社区里传播开来。&lt;/p&gt;
&lt;p&gt;更重要的是，这类规则不是只适用于 Claude Code。无论使用哪种 AI 编程工具，本质问题都很相似：模型需要知道什么时候该问、什么时候该简化、什么时候该停手、怎样判断任务已经完成。&lt;/p&gt;
&lt;h2 id=&#34;06-对普通开发者的启发&#34;&gt;06 对普通开发者的启发
&lt;/h2&gt;&lt;p&gt;这件事给普通开发者的启发很简单：AI 编程不是把一句需求丢给模型，然后等待奇迹发生。真正有效的方式，是给模型建立边界。&lt;/p&gt;
&lt;p&gt;需求不清楚时，让它先暴露假设。实现方案变复杂时，让它主动回到最小可行解。修改代码时，让它只围绕任务目标行动。完成任务时，用测试、命令或明确检查点来验证结果。&lt;/p&gt;
&lt;p&gt;AI 写代码的能力已经很强，但它仍然需要好的协作约束。一个短小的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 能获得大量关注，说明开发者真正需要的并不只是更聪明的模型，也包括更可靠的工作方式。&lt;/p&gt;
&lt;p&gt;简单总结：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先想再写，减少错误假设。&lt;/li&gt;
&lt;li&gt;简单优先，避免过度设计。&lt;/li&gt;
&lt;li&gt;精准修改，控制变更范围。&lt;/li&gt;
&lt;li&gt;目标驱动，用可验证标准推动完成。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这四条并不复杂，却很实用。AI 编程真正提升效率的前提，不是让模型写得更多，而是让它写得更准、更少、更可控。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code 额度省着用：模型选择、上下文、缓存与 /compact</title>
        <link>https://knightli.com/2026/04/19/claude-code-usage-context-compact-notes/</link>
        <pubDate>Sun, 19 Apr 2026 15:26:56 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/19/claude-code-usage-context-compact-notes/</guid>
        <description>&lt;p&gt;最近很多人在用 Claude Code 或 Claude Max 时会遇到一个问题：明明买了 Pro、Max 5x，甚至 Max 20x，结果没跑多久就提示额度快满，或者直接需要等重置。尤其是在大项目里让 Claude Code 读很多文件、修复杂 bug、跑长任务时，这种感觉会更明显。&lt;/p&gt;
&lt;p&gt;这里先说结论：额度不是按“时间”线性扣的，而是和模型、上下文长度、附件、代码库规模、对话历史、工具调用和当前容量都有关系。同样 5 小时窗口，有的人能用很久，有的人十几分钟就耗尽，通常不是账号坏了，而是每次请求都太重。&lt;/p&gt;
&lt;p&gt;这篇整理一套比较实用的省额度习惯。&lt;/p&gt;
&lt;h2 id=&#34;01-先理解-claude-的用量窗口&#34;&gt;01 先理解 Claude 的用量窗口
&lt;/h2&gt;&lt;p&gt;Claude Pro 和 Max 都有使用限制，Claude Code 的使用量会和 Claude 网页、桌面、移动端共享同一套订阅额度。官方说明里提到，消息数量会受到消息长度、附件大小、当前对话长度、所用模型或功能影响；Claude Code 还会受到项目复杂度、代码库大小、自动接受设置等影响。&lt;/p&gt;
&lt;p&gt;大致可以这样理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pro：适合轻量使用和小项目。&lt;/li&gt;
&lt;li&gt;Max 5x：适合更频繁使用和较大的代码库。&lt;/li&gt;
&lt;li&gt;Max 20x：适合更重度、日常高频协作。&lt;/li&gt;
&lt;li&gt;用量窗口按 5 小时会话重置。&lt;/li&gt;
&lt;li&gt;长消息、长对话、大文件、复杂任务会更快消耗额度。&lt;/li&gt;
&lt;li&gt;Opus 这类更强模型会比 Sonnet 更快触发限制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以“我只用了 20 分钟”这个说法不一定能说明问题。真正重要的是这 20 分钟里 Claude 读了多少上下文、用了什么模型、是否反复处理大文件、是否在同一个长对话里继续加任务。&lt;/p&gt;
&lt;h2 id=&#34;02-第一件事不要默认一直用最贵模型&#34;&gt;02 第一件事：不要默认一直用最贵模型
&lt;/h2&gt;&lt;p&gt;Claude 系列里常见的定位是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Opus&lt;/code&gt;：能力最强，适合复杂推理、架构决策、疑难 bug。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sonnet&lt;/code&gt;：能力和成本比较均衡，适合大部分日常编码任务。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Haiku&lt;/code&gt;：更轻量，适合简单分类、摘要、格式转换等任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日常写脚本、改小 bug、整理文档、解释代码，大多数时候 Sonnet 已经够用。Opus 更适合留给这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复杂架构设计。&lt;/li&gt;
&lt;li&gt;多文件深度重构。&lt;/li&gt;
&lt;li&gt;难复现的 bug。&lt;/li&gt;
&lt;li&gt;需要长链路推理的排障。&lt;/li&gt;
&lt;li&gt;普通模型明显卡住的任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code 里可以用 &lt;code&gt;/model&lt;/code&gt; 切换模型，也可以在 &lt;code&gt;/config&lt;/code&gt; 里设置默认模型。比较稳的习惯是：默认 Sonnet，关键节点再切 Opus，而不是整场任务都用 Opus 扛。&lt;/p&gt;
&lt;h2 id=&#34;03-第二件事控制上下文不要让旧任务拖着走&#34;&gt;03 第二件事：控制上下文，不要让旧任务拖着走
&lt;/h2&gt;&lt;p&gt;上下文越长，Claude 每次处理要看的内容越多，额度消耗也越高。Claude Code 官方文档明确建议主动管理上下文：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;换到不相关任务时，用 &lt;code&gt;/clear&lt;/code&gt; 清空历史。&lt;/li&gt;
&lt;li&gt;当前任务做完一个阶段但还要保留重点时，用 &lt;code&gt;/compact&lt;/code&gt; 压缩。&lt;/li&gt;
&lt;li&gt;想知道上下文里什么占空间，用 &lt;code&gt;/context&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;想持续看到状态，可以配置 status line。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个好用的节奏是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;小阶段完成：/compact
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;大任务结束：/clear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;切换无关项目：/clear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;上下文接近很高占用：提前 /compact
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;/compact&lt;/code&gt; 会把前面的对话压成摘要，保留关键任务状态、结论、文件路径、待办事项，但减少后续每次请求要携带的历史。你也可以给它补一句重点：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact 保留已修改文件、测试结果、剩余待办和关键设计决策
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要等自动压缩才处理。官方文档提到，Claude Code 会在上下文接近容量上限时自动压缩，但手动在阶段边界压缩，通常更可控。&lt;/p&gt;
&lt;h2 id=&#34;04-第三件事长对话和大文件会让每次请求变贵&#34;&gt;04 第三件事：长对话和大文件会让每次请求变贵
&lt;/h2&gt;&lt;p&gt;很多人以为“我只是继续问一句”，应该很便宜。但在长对话里，这一句背后可能带着大量历史、文件摘要、工具定义和系统规则。&lt;/p&gt;
&lt;p&gt;特别容易涨上下文的东西包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一直不清理的长对话。&lt;/li&gt;
&lt;li&gt;让 Claude 读完整大文件。&lt;/li&gt;
&lt;li&gt;贴很长日志、构建输出、测试输出。&lt;/li&gt;
&lt;li&gt;一次性塞很多截图或图片。&lt;/li&gt;
&lt;li&gt;让它反复扫描整个仓库。&lt;/li&gt;
&lt;li&gt;过长的 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;开了很多 MCP server。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比较省的做法是：日志只贴关键报错，测试输出只给失败部分，大文件让它先用 &lt;code&gt;rg&lt;/code&gt;、&lt;code&gt;head&lt;/code&gt;、&lt;code&gt;tail&lt;/code&gt;、符号搜索定位，再读必要片段。能用命令行过滤的内容，不要整包塞进上下文。&lt;/p&gt;
&lt;h2 id=&#34;05-第四件事理解缓存但不要迷信缓存&#34;&gt;05 第四件事：理解缓存，但不要迷信缓存
&lt;/h2&gt;&lt;p&gt;Anthropic 的 Prompt Caching 会缓存重复的 prompt 前缀。默认缓存生命周期是 5 分钟，也支持 1 小时缓存。缓存命中时，重复的大段上下文不需要完整重新处理，有助于降低成本和改善额度利用。&lt;/p&gt;
&lt;p&gt;但缓存有几个限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要内容完全匹配，文字和图片都要一致。&lt;/li&gt;
&lt;li&gt;默认缓存是短生命周期。&lt;/li&gt;
&lt;li&gt;改模型、改工具、改系统提示、改上下文结构，都可能降低命中。&lt;/li&gt;
&lt;li&gt;输出 token 不会因为缓存而消失，该生成的回答仍然要生成。&lt;/li&gt;
&lt;li&gt;Claude Code 具体如何利用缓存，是产品层实现细节，不要把它当成永远稳定的“免费记忆”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实际使用里，最重要的不是研究缓存细节，而是保持会话稳定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一阶段尽量别频繁切模型。&lt;/li&gt;
&lt;li&gt;不要中途反复改大量规则。&lt;/li&gt;
&lt;li&gt;不要在同一任务里不停贴新图片。&lt;/li&gt;
&lt;li&gt;长任务中间不要闲置太久后又继续塞大请求。&lt;/li&gt;
&lt;li&gt;阶段结束主动 &lt;code&gt;/compact&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样更容易让重复上下文保持可复用，也能降低后续请求负担。&lt;/p&gt;
&lt;h2 id=&#34;06-关于高峰时段能避开就避开但不要当固定公式&#34;&gt;06 关于高峰时段：能避开就避开，但不要当固定公式
&lt;/h2&gt;&lt;p&gt;网上常有人说某些时段额度会更紧。官方帮助中心的表述更谨慎：可发送数量会受到 Claude 当前容量、对话长度、附件、模型和功能影响。也就是说，高峰容量确实可能影响体验，但不要把某个地区的某个时间段当成永久固定规则。&lt;/p&gt;
&lt;p&gt;实用建议是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大重构、大批量分析尽量放到自己网络和服务都稳定的时段。&lt;/li&gt;
&lt;li&gt;不要在快到休息时开启一个超长任务。&lt;/li&gt;
&lt;li&gt;预计会离开很久时，先 &lt;code&gt;/compact&lt;/code&gt; 或 &lt;code&gt;/clear&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果只是小改动，不要开 Opus 加长上下文硬跑。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比记一个固定“几点到几点不能用”的规则更可靠。&lt;/p&gt;
&lt;h2 id=&#34;07-精简-claudemdrulesmcp-和-skills&#34;&gt;07 精简 CLAUDE.md、rules、MCP 和 skills
&lt;/h2&gt;&lt;p&gt;Claude Code 会在会话中加载项目规则、工具信息和一部分环境上下文。官方文档也建议把通用规则和专用规则分开，避免每次启动都带着一大包不相关内容。&lt;/p&gt;
&lt;p&gt;比较推荐的拆法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;：只放全局都适用的核心规则。&lt;/li&gt;
&lt;li&gt;rules：放特定路径、特定文件类型才需要的规则。&lt;/li&gt;
&lt;li&gt;skills：放特定工作流，例如发文章、部署、生成图片、提交代码。&lt;/li&gt;
&lt;li&gt;MCP：只启用当前任务真的会用到的 server。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 &lt;code&gt;CLAUDE.md&lt;/code&gt; 写了几百上千行，每次会话都要带进去。更好的方式是把“偶尔才用”的流程移到 skill 里，需要时再调用。&lt;/p&gt;
&lt;p&gt;MCP 也是一样。工具多不等于效率高。Claude Code 文档提到可以用 &lt;code&gt;/mcp&lt;/code&gt; 查看并禁用不需要的 server，也可以用 &lt;code&gt;/context&lt;/code&gt; 看是什么占用了上下文空间。&lt;/p&gt;
&lt;h2 id=&#34;08-实用指令清单&#34;&gt;08 实用指令清单
&lt;/h2&gt;&lt;p&gt;日常最常用的是这几个：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/model
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;切换模型。默认建议用 Sonnet，复杂推理再用 Opus。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;清空当前上下文。换无关任务时用，最省。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;压缩历史上下文。一个阶段完成但还要继续同一任务时用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/context
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看上下文占用，排查是什么吃掉空间。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看当前订阅或额度相关状态。官方帮助中心也建议用它监控剩余额度。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看和管理 MCP server，关闭当前不用的工具。&lt;/p&gt;
&lt;p&gt;如果你用 API 计费模式，还可以关注 &lt;code&gt;/cost&lt;/code&gt;；但如果是 Pro/Max 订阅，官方文档说明 &lt;code&gt;/cost&lt;/code&gt; 的美元估算不适合作为订阅账单依据，订阅用户更应该看 &lt;code&gt;/stats&lt;/code&gt; 和 &lt;code&gt;/status&lt;/code&gt; 这类使用信息。&lt;/p&gt;
&lt;h2 id=&#34;09-一套省额度工作流&#34;&gt;09 一套省额度工作流
&lt;/h2&gt;&lt;p&gt;比较顺手的流程可以是这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新任务开始前先 &lt;code&gt;/clear&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;默认用 Sonnet。&lt;/li&gt;
&lt;li&gt;先让 Claude 读项目结构和关键文件，不要一口气读全仓库。&lt;/li&gt;
&lt;li&gt;每做完一个小阶段就 &lt;code&gt;/compact&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;复杂卡点再切 Opus。&lt;/li&gt;
&lt;li&gt;日志、报错、测试输出先过滤再给。&lt;/li&gt;
&lt;li&gt;任务完成后 &lt;code&gt;/clear&lt;/code&gt;，不要拖着旧上下文开新活。&lt;/li&gt;
&lt;li&gt;定期检查 &lt;code&gt;CLAUDE.md&lt;/code&gt;、MCP 和 skills，把常驻上下文压小。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个流程的核心是：让 Claude 每次只看当前真正需要看的东西。&lt;/p&gt;
&lt;h2 id=&#34;10-小结&#34;&gt;10 小结
&lt;/h2&gt;&lt;p&gt;Claude Code 额度快速耗尽，通常不是单一原因，而是几个因素叠加：用了高成本模型、长对话一直不清、文件和日志塞太多、MCP 和规则常驻过重、缓存命中变差，再加上高峰容量波动。&lt;/p&gt;
&lt;p&gt;省额度的核心也很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常任务优先 Sonnet。&lt;/li&gt;
&lt;li&gt;Opus 留给真正复杂的问题。&lt;/li&gt;
&lt;li&gt;阶段完成用 &lt;code&gt;/compact&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;换任务用 &lt;code&gt;/clear&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;/context&lt;/code&gt; 找上下文占用来源。&lt;/li&gt;
&lt;li&gt;精简 &lt;code&gt;CLAUDE.md&lt;/code&gt;、rules、MCP 和 skills。&lt;/li&gt;
&lt;li&gt;不要把整仓库、整日志、整图片包都丢进去。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同样的 Pro 或 Max 方案，能做多少事，很大程度取决于你怎么管理上下文。把上下文变小、任务边界变清楚，Claude Code 的可用时间和稳定性都会明显好很多。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Claude Help Center：Using Claude Code with your Pro or Max plan：&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/en/articles/11145838-using-claude-code-with-your-pro-or-max-plan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.claude.com/en/articles/11145838-using-claude-code-with-your-pro-or-max-plan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Help Center：About Claude&amp;rsquo;s Max Plan Usage：&lt;a class=&#34;link&#34; href=&#34;https://support.anthropic.com/en/articles/11014257-about-claude-s-max-plan-usage/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.anthropic.com/en/articles/11014257-about-claude-s-max-plan-usage/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code Docs：Manage costs effectively：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/costs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/costs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anthropic Docs：Prompt caching：&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>rembg 项目整理：本地图片背景移除工具</title>
        <link>https://knightli.com/2026/04/19/rembg-background-removal-notes/</link>
        <pubDate>Sun, 19 Apr 2026 08:51:45 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/19/rembg-background-removal-notes/</guid>
        <description>&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 是一个图片背景移除工具，可以作为命令行工具、Python 库、HTTP 服务或 Docker 容器使用。它的定位很直接：输入一张图，输出带透明通道的前景图，适合产品图、头像、素材批处理和自动化图片处理流程。&lt;/p&gt;
&lt;p&gt;这类工具最大的好处是可以本地跑。对于不想把原图上传到在线抠图服务、需要批量处理图片，或者想把背景移除接进脚本和业务系统的人来说，&lt;code&gt;rembg&lt;/code&gt; 比网页工具更容易自动化。&lt;/p&gt;
&lt;h2 id=&#34;01-安装方式&#34;&gt;01 安装方式
&lt;/h2&gt;&lt;p&gt;当前版本要求 Python &lt;code&gt;&amp;gt;=3.11,&amp;lt;3.14&lt;/code&gt;。安装时需要按硬件选择后端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果需要命令行工具，加上 &lt;code&gt;cli&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;NVIDIA CUDA 环境可以安装 GPU 版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[gpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AMD ROCm 环境则需要先按 ROCm 官方方式装好 &lt;code&gt;onnxruntime-rocm&lt;/code&gt;，再安装：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[rocm,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;GPU 版本的坑通常不在 &lt;code&gt;rembg&lt;/code&gt; 本身，而在 &lt;code&gt;onnxruntime-gpu&lt;/code&gt;、CUDA、cuDNN 和驱动版本是否匹配。装不起来时，先用 CPU 版本确认流程可用，再处理 GPU 环境，会少走很多弯路。&lt;/p&gt;
&lt;h2 id=&#34;02-cli-子命令&#34;&gt;02 CLI 子命令
&lt;/h2&gt;&lt;p&gt;安装 CLI 后，终端里可以直接使用 &lt;code&gt;rembg&lt;/code&gt;。它主要有 4 个子命令：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt;：处理单个文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt;：处理整个文件夹。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt;：启动 HTTP 服务。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt;：处理 RGB24 像素二进制流，常用于配合 FFmpeg。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;查看帮助：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg --help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;处理单张本地图片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;从远程图片管道输入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s http://input.png &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; rembg i &amp;gt; output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;指定模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -m u2netp input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只输出 mask：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -om input.png mask.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;开启 alpha matting：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -a input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-a&lt;/code&gt; 对头发、毛边、半透明边缘有时更自然，但速度会慢一些，也不是所有图片都能明显改善。&lt;/p&gt;
&lt;h2 id=&#34;03-批量处理文件夹&#34;&gt;03 批量处理文件夹
&lt;/h2&gt;&lt;p&gt;批处理是 &lt;code&gt;rembg&lt;/code&gt; 很实用的地方。把原图放到一个目录，输出到另一个目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg p path/to/input path/to/output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;监听目录变化，自动处理新增或修改的图片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg p -w path/to/input path/to/output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个模式适合和下载脚本、商品图整理、素材文件夹配合使用。比如把待处理图片丢进 &lt;code&gt;input&lt;/code&gt;，由 &lt;code&gt;rembg&lt;/code&gt; 自动生成透明 PNG 到 &lt;code&gt;output&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;04-作为-python-库调用&#34;&gt;04 作为 Python 库调用
&lt;/h2&gt;&lt;p&gt;如果要接入自己的脚本，最简单的方式是用 &lt;code&gt;remove&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;input_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;output_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接处理 PIL 图片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;PIL&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;input_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;批量处理时建议复用 session，避免每张图片都重新初始化模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new_session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;session&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new_session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;glob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.out.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你要做一个长期运行的图片处理服务，session 复用比反复调用命令行更合适。&lt;/p&gt;
&lt;h2 id=&#34;05-启动-http-服务&#34;&gt;05 启动 HTTP 服务
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 也可以直接启动 HTTP 服务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg s --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;7000&lt;/span&gt; --log_level info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后可以访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:7000/api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通过 URL 移除背景：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:7000/api/remove?url=http://input.png&amp;#34;&lt;/span&gt; -o output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;上传本地图片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s -F &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;@input.jpg &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:7000/api/remove&amp;#34;&lt;/span&gt; -o output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只需要 API，不需要 Gradio UI，可以关闭 UI 以降低空闲 CPU 占用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg s --no-ui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;服务模式适合给内网工具、自动化流程或其他应用调用。但它不是完整的图片资产管理系统，鉴权、限流、队列、文件清理这些仍然需要自己在外层补。&lt;/p&gt;
&lt;h2 id=&#34;06-docker-运行&#34;&gt;06 Docker 运行
&lt;/h2&gt;&lt;p&gt;CPU 版本可以直接用官方镜像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v .:/data danielgatis/rembg i /data/input.png /data/output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CUDA 加速需要主机安装 NVIDIA Container Toolkit，并且通常需要自己基于项目里的 &lt;code&gt;Dockerfile_nvidia_cuda_cudnn_gpu&lt;/code&gt; 构建镜像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t rembg-nvidia-cuda-cudnn-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;运行示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -it --gpus all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v /dev/dri:/dev/dri &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;nv&#34;&gt;$PWD&lt;/span&gt;:/data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  rembg-nvidia-cuda-cudnn-gpu &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  i -m birefnet-general /data/input.png /data/output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方 README 提醒，GPU 镜像体积会明显大于 CPU 镜像，而且模型文件不包含在镜像里。为了避免重复下载模型，可以把模型目录挂载出来：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v /path/to/models:/root/.u2net ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;07-模型选择&#34;&gt;07 模型选择
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 首次使用模型时，会自动下载到 &lt;code&gt;~/.u2net/&lt;/code&gt;。常见模型包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;u2net&lt;/code&gt;：通用模型，适合一般场景。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2netp&lt;/code&gt;：轻量版本，速度和体积更友好。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_human_seg&lt;/code&gt;：偏人物分割。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_cloth_seg&lt;/code&gt;：偏服装解析。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;silueta&lt;/code&gt;：类似 &lt;code&gt;u2net&lt;/code&gt;，但体积更小。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-general-use&lt;/code&gt;：通用场景的新模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-anime&lt;/code&gt;：偏动漫角色分割。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;birefnet-general&lt;/code&gt;：README 示例中用于通用图片的模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sam&lt;/code&gt;：可配合提示点等额外参数使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实际使用时，不建议只看模型名字。产品图、人物、二次元图、复杂背景、透明物体，对模型的要求都不一样。比较稳的做法是选一批代表性图片，用几个模型跑一轮，看边缘、漏抠、误抠和速度，再决定默认模型。&lt;/p&gt;
&lt;p&gt;如果要使用自定义 &lt;code&gt;.onnx&lt;/code&gt; 模型，可以把文件放到默认模型目录 &lt;code&gt;~/.u2net/&lt;/code&gt;，并在需要时设置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MODEL_CHECKSUM_DISABLED&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样可以避免 &lt;code&gt;rembg&lt;/code&gt; 因校验逻辑覆盖你放进去的模型文件。&lt;/p&gt;
&lt;h2 id=&#34;08-适合哪些场景&#34;&gt;08 适合哪些场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 很适合这些任务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批量生成透明背景产品图。&lt;/li&gt;
&lt;li&gt;给头像、证件照、素材图做前景提取。&lt;/li&gt;
&lt;li&gt;把抠图接入 Python 脚本或后端服务。&lt;/li&gt;
&lt;li&gt;在内网部署一个简单的背景移除 API。&lt;/li&gt;
&lt;li&gt;用 FFmpeg 管道处理视频帧或序列帧。&lt;/li&gt;
&lt;li&gt;对隐私或素材版权敏感，不想上传到第三方在线服务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不太适合这些情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要人工级精修边缘和复杂透明材质。&lt;/li&gt;
&lt;li&gt;对每张图都要稳定商业摄影级质量。&lt;/li&gt;
&lt;li&gt;想要完整在线设计工具，而不是抠图能力。&lt;/li&gt;
&lt;li&gt;没有 Python / Docker 环境维护能力。&lt;/li&gt;
&lt;li&gt;GPU 驱动、CUDA、ROCm 环境已经很混乱，又急着上线。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;09-使用建议&#34;&gt;09 使用建议
&lt;/h2&gt;&lt;p&gt;如果只是偶尔处理图片，CPU 版本就够了：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要批量处理几千张图，优先考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复用 Python session。&lt;/li&gt;
&lt;li&gt;固定模型目录，避免重复下载。&lt;/li&gt;
&lt;li&gt;用 SSD 存放输入输出和模型文件。&lt;/li&gt;
&lt;li&gt;先小批量测试模型效果。&lt;/li&gt;
&lt;li&gt;再决定是否折腾 GPU 加速。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GPU 的价值主要在批量吞吐。单张图片偶尔处理时，环境安装成本可能比省下的时间更贵。尤其是 Windows、CUDA、cuDNN、&lt;code&gt;onnxruntime-gpu&lt;/code&gt; 版本不匹配时，CPU 版本反而更省心。&lt;/p&gt;
&lt;h2 id=&#34;10-简短判断&#34;&gt;10 简短判断
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 的优点是简单、开源、形态灵活：命令行能跑，Python 能接，HTTP 能调，Docker 能封装。它很适合做“本地自动抠图”的基础组件。&lt;/p&gt;
&lt;p&gt;但它不是魔法橡皮擦。背景复杂、主体边缘细碎、透明材质、阴影保留、商业级精修，都可能需要人工或更专门的流程补充。把它放在批量自动化里时，最好预留人工复检或失败样本回收机制。&lt;/p&gt;
&lt;p&gt;如果目标是快速给一批图片去背景，并且希望流程留在本地，&lt;code&gt;rembg&lt;/code&gt; 值得放进工具箱。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README：&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Releases：&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg/releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ONNX Runtime 安装矩阵：&lt;a class=&#34;link&#34; href=&#34;https://onnxruntime.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://onnxruntime.ai/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Ollama 多显卡使用笔记：显存叠加、GPU 选择和常见误区</title>
        <link>https://knightli.com/2026/04/19/ollama-multiple-gpu-notes/</link>
        <pubDate>Sun, 19 Apr 2026 00:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/19/ollama-multiple-gpu-notes/</guid>
        <description>&lt;p&gt;折腾 Ollama 本地推理时，经常会遇到类似问题：我现在有一张显卡，主板还有空 PCIe 槽，再加几张 GPU 对 Ollama 有帮助吗？多显卡是否必须同型号？显存能不能叠加？会不会像训练框架那样多卡并行加速？&lt;/p&gt;
&lt;p&gt;这篇整理一下 Ollama 多显卡的实际行为。重点先说结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama 支持多 GPU。&lt;/li&gt;
&lt;li&gt;多 GPU 最大价值通常是让更大的模型放进总显存，而不是线性提升 token/s。&lt;/li&gt;
&lt;li&gt;默认策略下，如果模型能完整放进某一张 GPU，Ollama 倾向于放在单卡上。&lt;/li&gt;
&lt;li&gt;如果模型无法完整放进单张 GPU，Ollama 会把模型分布到可用 GPU 上。&lt;/li&gt;
&lt;li&gt;不同型号 GPU 可以被 Ollama 看到并使用，但性能和分配效果不一定理想。&lt;/li&gt;
&lt;li&gt;不需要 SLI / NVLink 才能用多卡。&lt;/li&gt;
&lt;li&gt;想限制 Ollama 使用哪些 GPU，需要用 &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt;、&lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; 或 &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;官方行为先单卡放不下再多卡&#34;&gt;官方行为：先单卡，放不下再多卡
&lt;/h2&gt;&lt;p&gt;Ollama FAQ 里对多 GPU 加载逻辑说得比较直接：加载新模型时，Ollama 会估算模型所需 VRAM，并和当前可用显存比较。如果模型能完整放进某一张 GPU，它会加载到那张 GPU 上；如果单张 GPU 放不下，才会分布到所有可用 GPU 上。&lt;/p&gt;
&lt;p&gt;这个策略的原因是性能。单卡加载通常能减少推理时跨 PCIe 总线的数据传输，因此往往更快。&lt;/p&gt;
&lt;p&gt;所以不要把 Ollama 的多 GPU 理解成“有几张卡就自动几倍加速”。更准确的理解是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小模型能进单卡：通常单卡跑。&lt;/li&gt;
&lt;li&gt;大模型单卡放不下：跨多卡分层加载。&lt;/li&gt;
&lt;li&gt;显存仍不够：一部分会落到系统内存，速度会明显下降。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以用下面命令确认模型到底加载到了哪里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出里的 &lt;code&gt;PROCESSOR&lt;/code&gt; 会显示类似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;100% GPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;48%/52% CPU/GPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;100% CPU
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果看到 &lt;code&gt;48%/52% CPU/GPU&lt;/code&gt;，说明已经有一部分在系统内存里了。此时多加 GPU 或换更大显存的卡，通常比继续依赖 CPU/RAM 更有意义。&lt;/p&gt;
&lt;h2 id=&#34;多-gpu-不是简单叠算力&#34;&gt;多 GPU 不是简单叠算力
&lt;/h2&gt;&lt;p&gt;本地大模型推理和游戏里的 SLI 不是一回事。Ollama 多卡时，更常见的是把模型的不同层或张量放到不同设备上。这样可以用多张卡的显存装下更大的模型，但推理过程中仍然可能需要设备之间传递数据。&lt;/p&gt;
&lt;p&gt;因此，多 GPU 带来的收益通常分两种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显存收益：更容易装下大模型，或者避免落到 CPU/RAM。&lt;/li&gt;
&lt;li&gt;性能收益：只有在原本单卡装不下或严重混 CPU 时，提升才会很明显。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一个 8B 或 14B 模型本来就能完整放进单张 3090，强行拆到两张卡不一定更快，甚至可能因为跨卡传输变慢。Ollama 官方默认“能单卡就单卡”的策略，就是为了避免这类不必要的跨 PCIe 开销。&lt;/p&gt;
&lt;h2 id=&#34;不需要-sli-或-nvlink&#34;&gt;不需要 SLI 或 NVLink
&lt;/h2&gt;&lt;p&gt;Ollama 多 GPU 不依赖 SLI。多张普通 PCIe GPU 只要驱动和 Ollama 能识别，就可以被调度。&lt;/p&gt;
&lt;p&gt;NVLink 或更高 PCIe 带宽可能对某些跨卡场景有帮助，但它不是 Ollama 多 GPU 的前提条件。很多二手 GPU 服务器或工作站，靠普通 PCIe 多卡也能跑。&lt;/p&gt;
&lt;p&gt;真正要注意的是 PCIe 带宽。&lt;code&gt;x1&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;、&lt;code&gt;x8&lt;/code&gt;、&lt;code&gt;x16&lt;/code&gt; 的差异会影响模型加载到显存的速度；如果频繁切换大模型，PCIe 链路会更容易成为瓶颈。模型加载完成后，生成阶段受 PCIe 的影响通常会小一些，但跨卡分层仍然可能带来额外开销。&lt;/p&gt;
&lt;p&gt;比较稳的建议是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能用 x16 / x8 就不要用矿卡 x1 转接。&lt;/li&gt;
&lt;li&gt;大模型频繁切换时，PCIe 带宽更重要。&lt;/li&gt;
&lt;li&gt;如果模型长期常驻显存，PCIe 带宽瓶颈会相对不明显。&lt;/li&gt;
&lt;li&gt;多卡机器要重点看主板 PCIe 拓扑和 CPU 直连通道。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;如何限制-ollama-使用哪些-nvidia-gpu&#34;&gt;如何限制 Ollama 使用哪些 NVIDIA GPU
&lt;/h2&gt;&lt;p&gt;NVIDIA 多卡环境下，用 &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt; 控制 Ollama 能看到哪些卡。&lt;/p&gt;
&lt;p&gt;临时运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只让 Ollama 用第二张卡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;强制不用 NVIDIA GPU，可以给一个无效 ID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方文档提醒，数字 ID 的顺序可能变化，更可靠的是用 GPU UUID。先查看 UUID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi -L
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出类似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU 0: NVIDIA GeForce RTX 3090 (UUID: GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU 1: NVIDIA GeForce RTX 3070 (UUID: GPU-yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后指定 UUID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 Ollama 是 Linux systemd 服务安装的，需要写到服务环境变量里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl edit ollama.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;加入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;CUDA_VISIBLE_DEVICES=0,1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后重载并重启：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;amd-和-vulkan-的选择变量&#34;&gt;AMD 和 Vulkan 的选择变量
&lt;/h2&gt;&lt;p&gt;AMD ROCm 环境下，用 &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; 控制可见 GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ROCR_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要强制不用 ROCm GPU，也可以用无效 ID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ROCR_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ollama 官方 GPU 文档还提到，如果用实验性的 Vulkan 支持，可以通过 &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt; 选择 Vulkan GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_VULKAN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;GGML_VK_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 Vulkan 设备有问题，可以禁用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;GGML_VK_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AMD 多卡比 NVIDIA 更容易遇到驱动、ROCm 版本、GFX 版本支持的问题。官方文档中也提到 Linux 下 ROCm 驱动版本、&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; 等兼容性处理。多张不同代 AMD 卡混用时，先确认每张卡是否单独可用，再考虑多卡。&lt;/p&gt;
&lt;h2 id=&#34;docker-里怎么暴露多张-gpu&#34;&gt;Docker 里怎么暴露多张 GPU
&lt;/h2&gt;&lt;p&gt;如果用 Docker 跑 Ollama，NVIDIA 环境通常需要先安装 &lt;code&gt;nvidia-container-toolkit&lt;/code&gt;，然后用 &lt;code&gt;--gpus&lt;/code&gt; 暴露设备。&lt;/p&gt;
&lt;p&gt;暴露全部 GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只暴露指定 GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;device=0,1&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以结合环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果容器里 &lt;code&gt;nvidia-smi&lt;/code&gt; 看不到卡，Ollama 也不可能用到 GPU。先排查 Docker GPU passthrough，再排查 Ollama。&lt;/p&gt;
&lt;h2 id=&#34;ollama_sched_spread-是什么&#34;&gt;&lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt; 是什么
&lt;/h2&gt;&lt;p&gt;在一些多 GPU 配置讨论里，会看到 &lt;code&gt;OLLAMA_SCHED_SPREAD=1&lt;/code&gt; 或 &lt;code&gt;OLLAMA_SCHED_SPREAD=true&lt;/code&gt;。它和 Ollama 的调度策略有关，常被用于希望模型或请求更分散地利用多张 GPU 的场景。&lt;/p&gt;
&lt;p&gt;可以这样设置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_SCHED_SPREAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者 systemd：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;OLLAMA_SCHED_SPREAD=true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不过它不是万能开关。开启后并不等于 token/s 线性增长，也可能因为多个模型同时加载、显存估算、上下文长度和 KV cache 增长导致 OOM。官方 FAQ 的核心策略仍然是：如果单 GPU 能完整容纳模型，单 GPU 通常更高效；单 GPU 放不下时才跨多 GPU。&lt;/p&gt;
&lt;p&gt;所以建议把 &lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt; 当成高级调度实验项，而不是多卡必开项。先理解默认行为，再根据实际 &lt;code&gt;ollama ps&lt;/code&gt;、日志和 &lt;code&gt;nvidia-smi&lt;/code&gt; 观察结果调整。&lt;/p&gt;
&lt;h2 id=&#34;怎么观察多卡是否真的用上&#34;&gt;怎么观察多卡是否真的用上
&lt;/h2&gt;&lt;p&gt;常用观察命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;watch -n 0.5 nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看 Ollama 服务日志：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;journalctl -u ollama -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 Docker：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs -f ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你需要关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama 是否发现兼容 GPU。&lt;/li&gt;
&lt;li&gt;模型是否显示 &lt;code&gt;100% GPU&lt;/code&gt; 或 CPU/GPU 混合。&lt;/li&gt;
&lt;li&gt;每张卡显存是否有占用。&lt;/li&gt;
&lt;li&gt;加载模型时是否多卡显存同时增长。&lt;/li&gt;
&lt;li&gt;生成时 token/s 是否比 CPU/RAM 混跑明显改善。&lt;/li&gt;
&lt;li&gt;是否频繁 OOM 或卸载模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只看 GPU 利用率，很容易误判。LLM 推理时 GPU 利用率不一定长期满载，尤其是多卡、低 batch、小上下文、慢 CPU 或慢 PCIe 环境下。&lt;/p&gt;
&lt;h2 id=&#34;常见误区&#34;&gt;常见误区
&lt;/h2&gt;&lt;h3 id=&#34;误区-1两张-12gb-显卡等于一张-24gb-显卡&#34;&gt;误区 1：两张 12GB 显卡等于一张 24GB 显卡
&lt;/h3&gt;&lt;p&gt;不完全等价。多卡可以让模型跨设备放置，但跨卡访问有额外开销。它能解决“放不下”的问题，不一定等价于单张大显存卡的速度和稳定性。&lt;/p&gt;
&lt;h3 id=&#34;误区-2不同型号显卡不能混用&#34;&gt;误区 2：不同型号显卡不能混用
&lt;/h3&gt;&lt;p&gt;不一定。只要驱动、计算能力和运行库都支持，Ollama 可以看到多张 GPU。但混用时，速度通常受较慢卡、较小显存和 PCIe 拓扑影响。最稳的多卡配置仍然是同型号、同显存、同代驱动支持良好的卡。&lt;/p&gt;
&lt;h3 id=&#34;误区-3多卡一定比单卡快&#34;&gt;误区 3：多卡一定比单卡快
&lt;/h3&gt;&lt;p&gt;不一定。如果模型能完整放进单张快卡，单卡可能更快。多卡主要适合大模型、长上下文、单卡显存不够的情况。&lt;/p&gt;
&lt;h3 id=&#34;误区-4必须有-nvlink--sli&#34;&gt;误区 4：必须有 NVLink / SLI
&lt;/h3&gt;&lt;p&gt;不需要。普通 PCIe 多卡也能被 Ollama 使用。NVLink 不是前提。&lt;/p&gt;
&lt;h3 id=&#34;误区-5加-gpu-后不用重启服务&#34;&gt;误区 5：加 GPU 后不用重启服务
&lt;/h3&gt;&lt;p&gt;不一定。Linux systemd 服务、Windows 后台应用、Docker 容器都可能需要重启，才能重新识别设备和环境变量。&lt;/p&gt;
&lt;h2 id=&#34;选卡建议&#34;&gt;选卡建议
&lt;/h2&gt;&lt;p&gt;如果目标是 Ollama 本地推理，优先级大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;单卡显存越大越省心。&lt;/li&gt;
&lt;li&gt;同型号多卡比混合多卡更容易排错。&lt;/li&gt;
&lt;li&gt;PCIe 通道越完整，加载大模型越舒服。&lt;/li&gt;
&lt;li&gt;老卡要先确认 CUDA compute capability 或 ROCm 支持。&lt;/li&gt;
&lt;li&gt;多卡电源、散热和机箱风道要提前算清楚。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对于预算有限的二手平台：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;双 3090 仍然是很常见的大显存方案。&lt;/li&gt;
&lt;li&gt;P40 / M40 这类老 Tesla 显存大，但功耗、散热、驱动和性能都要权衡。&lt;/li&gt;
&lt;li&gt;4070 / 4070 Ti 这类新卡能效好，但单卡显存容量限制更明显。&lt;/li&gt;
&lt;li&gt;多张 8GB 老卡能折腾，但不建议为了大模型长期使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Ollama 多显卡支持可以理解成“显存扩展优先，性能加速其次”。如果模型能完整放进一张 GPU，默认单卡通常更快；如果单卡放不下，多卡可以把模型分布到多张 GPU 上，避免大量落到 CPU/RAM，从而让大模型变得可用。&lt;/p&gt;
&lt;p&gt;实际配置时，先用 &lt;code&gt;ollama ps&lt;/code&gt; 看模型加载位置，再用 &lt;code&gt;nvidia-smi&lt;/code&gt; 或 ROCm 工具观察显存占用。需要限制 GPU 时，NVIDIA 用 &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt;，AMD ROCm 用 &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt;，Vulkan 用 &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt;。如果在 Docker 中运行，先确保容器层面能看到 GPU。&lt;/p&gt;
&lt;p&gt;多卡不是魔法。它能帮你装下更大的模型，但不保证线性加速。真正稳定好用的路线，仍然是尽量选大显存单卡或同型号多卡，并把驱动、PCIe、电源、散热和模型量化一起考虑。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ollama FAQ：How does Ollama load models on multiple GPUs?：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama/blob/main/docs/faq.mdx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ollama/ollama/blob/main/docs/faq.mdx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ollama GPU 文档：Hardware support / GPU Selection：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama/blob/main/docs/gpu.mdx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ollama/ollama/blob/main/docs/gpu.mdx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ollama Docker Hub：&lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/ollama/ollama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hub.docker.com/r/ollama/ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;NVIDIA Container Toolkit：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvidia-container-toolkit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvidia-container-toolkit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Google App 桌面版体验：把 AI 搜索放进 Windows</title>
        <link>https://knightli.com/2026/04/18/google-app-desktop-ai-search-windows/</link>
        <pubDate>Sat, 18 Apr 2026 11:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/18/google-app-desktop-ai-search-windows/</guid>
        <description>&lt;p&gt;Google 把一个更轻量的搜索入口放到了 Windows 桌面上：不用每次先打开浏览器，只要按下快捷键，就能直接调出一个搜索框，输入问题、上传图片、分析文件、圈选屏幕内容，甚至继续追问。&lt;/p&gt;
&lt;p&gt;这款工具的官方名称是 &lt;strong&gt;Google app for desktop&lt;/strong&gt;。它的定位不是再做一个传统浏览器，而是把 Google Search、AI Mode、Google Lens、屏幕共享、电脑文件搜索和 Google Drive 搜索整合到一个桌面入口里。&lt;/p&gt;
&lt;p&gt;如果你平时经常查资料、总结文档、识别截图内容，或者希望像调用启动器一样快速搜索电脑里的东西，这个桌面版 Google App 会比较适合尝试。&lt;/p&gt;
&lt;h2 id=&#34;支持条件&#34;&gt;支持条件
&lt;/h2&gt;&lt;p&gt;根据 Google 官方页面，目前桌面版 Google App 的要求如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户需年满 13 周岁。&lt;/li&gt;
&lt;li&gt;设备需要运行 Windows 10 或更高版本。&lt;/li&gt;
&lt;li&gt;当前应用仅支持英文。&lt;/li&gt;
&lt;li&gt;Google Search 的 AI Mode 并非支持所有账号、国家和语言。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，如果你使用的是 Windows 10 或 Windows 11，可以先安装测试。官方页面当前明确写的是 &lt;strong&gt;Now available on Windows&lt;/strong&gt;，所以这里以 Windows 版为准介绍。&lt;/p&gt;
&lt;h2 id=&#34;主要功能&#34;&gt;主要功能
&lt;/h2&gt;&lt;h3 id=&#34;1-快捷键调出搜索框&#34;&gt;1. 快捷键调出搜索框
&lt;/h3&gt;&lt;p&gt;安装完成后，可以通过：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Alt + Space
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;快速调出 Google 桌面搜索框。再按一次可以隐藏。&lt;/p&gt;
&lt;p&gt;这个体验有点像系统启动器：无论你正在写文档、看网页、整理文件，还是打开了其他应用，都可以直接唤出搜索入口，不需要切回浏览器。&lt;/p&gt;
&lt;h3 id=&#34;2-ai-mode-搜索与连续追问&#34;&gt;2. AI Mode 搜索与连续追问
&lt;/h3&gt;&lt;p&gt;普通搜索通常是给你一组网页链接，而 AI Mode 更像是把搜索结果先整理成答案。你可以直接问一个问题，它会给出较完整的说明，并附带可继续查看的链接。&lt;/p&gt;
&lt;p&gt;更实用的是，它支持继续追问。比如你先问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这款工具适合用来做什么？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;得到答案后，可以继续问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;如果我是内容创作者，应该怎么用它提升效率？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样就不用反复更换关键词，也不用在多个网页之间来回跳。&lt;/p&gt;
&lt;h3 id=&#34;3-上传图片进行识别和搜索&#34;&gt;3. 上传图片进行识别和搜索
&lt;/h3&gt;&lt;p&gt;桌面版 Google App 支持上传图片后提问。常见用法包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;识别图片里的人物、地点、商品或物体。&lt;/li&gt;
&lt;li&gt;查找相似图片和相关资料。&lt;/li&gt;
&lt;li&gt;根据图片内容提取描述。&lt;/li&gt;
&lt;li&gt;让 AI 基于图片继续生成创意提示词。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如上传一张人物图片后，可以问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片中的人物是谁？请提供相关介绍和参考资料。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只是日常查图、找出处、识别物品，这会比手动打开网页再上传图片更顺手。&lt;/p&gt;
&lt;h3 id=&#34;4-google-lens-圈选屏幕内容&#34;&gt;4. Google Lens 圈选屏幕内容
&lt;/h3&gt;&lt;p&gt;Google Lens 是这款桌面应用里很实用的一部分。你可以直接圈选屏幕上的某一块内容，让它识别并搜索。&lt;/p&gt;
&lt;p&gt;适合这些场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;圈选网页里的商品，查找同款或相关信息。&lt;/li&gt;
&lt;li&gt;圈选截图中的文字，让它解释含义。&lt;/li&gt;
&lt;li&gt;圈选软件界面，让它判断这是什么工具。&lt;/li&gt;
&lt;li&gt;圈选报错信息，让它帮你定位问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的核心价值是“看到什么，搜什么”。以前你可能需要截图、保存、上传，现在可以直接在屏幕上选中目标。&lt;/p&gt;
&lt;h3 id=&#34;5-屏幕共享搜索&#34;&gt;5. 屏幕共享搜索
&lt;/h3&gt;&lt;p&gt;除了圈选某一部分内容，它还支持屏幕共享。开启后，可以让 AI 看到当前窗口或整个屏幕，然后围绕屏幕内容提问。&lt;/p&gt;
&lt;p&gt;例如你正在打开一篇博客，可以问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请总结当前页面的重点内容。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;你觉得这个页面有哪些可以优化的地方？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在阅读网页、检查设计稿、分析代码片段、总结长页面时，这个功能会比较省时间。开启屏幕共享时，系统通常会有明显的边框提示，方便确认当前是否正在共享。&lt;/p&gt;
&lt;h3 id=&#34;6-搜索电脑文件和-google-drive&#34;&gt;6. 搜索电脑文件和 Google Drive
&lt;/h3&gt;&lt;p&gt;官方介绍中还提到，它可以从同一个搜索框里查找电脑上的应用和文件，也可以搜索 Google Drive。&lt;/p&gt;
&lt;p&gt;这类功能更像是把桌面搜索和云端搜索放在一起。比如你记得某个文件的大概名字、内容关键词，或者想快速找到 Google Drive 里的资料，就不必分别打开资源管理器和云盘页面。&lt;/p&gt;
&lt;p&gt;首次使用时，如果页面提示开启 Google Drive 搜索或本地文件搜索，可以按自己的需求授权。涉及本地文件和云端数据时，建议只开启自己确实需要的范围。&lt;/p&gt;
&lt;h2 id=&#34;安装与使用步骤&#34;&gt;安装与使用步骤
&lt;/h2&gt;&lt;h3 id=&#34;1-打开官方下载页面&#34;&gt;1. 打开官方下载页面
&lt;/h3&gt;&lt;p&gt;访问官方页面：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://search.google/google-app/desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://search.google/google-app/desktop/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击页面上的 &lt;strong&gt;Download app&lt;/strong&gt; 下载应用。&lt;/p&gt;
&lt;h3 id=&#34;2-安装桌面应用&#34;&gt;2. 安装桌面应用
&lt;/h3&gt;&lt;p&gt;下载完成后，运行安装程序，按提示完成安装即可。&lt;/p&gt;
&lt;p&gt;安装后可以选择登录 Google 账号。登录后更方便使用 Google Drive 搜索、个性化搜索以及部分 AI 能力；如果只是做基础搜索，也可以先按页面提示体验。&lt;/p&gt;
&lt;h3 id=&#34;3-调出搜索框&#34;&gt;3. 调出搜索框
&lt;/h3&gt;&lt;p&gt;按下快捷键：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Alt + Space
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;桌面上会出现 Google 搜索框。你可以直接输入问题，也可以使用上传、Lens、屏幕共享等功能。&lt;/p&gt;
&lt;h3 id=&#34;4-开启需要的搜索范围&#34;&gt;4. 开启需要的搜索范围
&lt;/h3&gt;&lt;p&gt;如果你希望搜索 Google Drive 或本机文件，可以根据提示开启相关权限。&lt;/p&gt;
&lt;p&gt;建议做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先开启 Google Drive 搜索，测试云端资料查找效果。&lt;/li&gt;
&lt;li&gt;再按需开启本地文件搜索。&lt;/li&gt;
&lt;li&gt;不需要搜索的范围就先不要授权。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样既能体验完整功能，也能更清楚它访问了哪些数据。&lt;/p&gt;
&lt;h2 id=&#34;常见使用场景&#34;&gt;常见使用场景
&lt;/h2&gt;&lt;h3 id=&#34;分析-pdf-和文档&#34;&gt;分析 PDF 和文档
&lt;/h3&gt;&lt;p&gt;可以把 PDF、表格或文档拖进去，让它帮你总结重点。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请总结这份 PDF 的核心内容，并列出需要注意的事项。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果是表格、流水、申请表、说明书这类信息密度高的文件，可以继续追问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请按类别整理其中的关键信息。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这类场景比自己逐页翻文档更高效。&lt;/p&gt;
&lt;h3 id=&#34;总结网页内容&#34;&gt;总结网页内容
&lt;/h3&gt;&lt;p&gt;开启屏幕共享后，可以让它直接总结当前页面。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请提炼这个页面的主要观点，并用 5 条要点总结。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;适合快速浏览长文章、产品页面、说明文档或新闻内容。&lt;/p&gt;
&lt;h3 id=&#34;识别截图和界面&#34;&gt;识别截图和界面
&lt;/h3&gt;&lt;p&gt;用 Google Lens 圈选屏幕上的软件界面、代码片段、错误提示或图片内容，可以让它解释当前看到的信息。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请解释这段报错是什么意思，并给出排查思路。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请判断这个截图里展示的是什么工具，它可能用于什么场景。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;辅助内容创作&#34;&gt;辅助内容创作
&lt;/h3&gt;&lt;p&gt;它也可以用来写标题、生成大纲、整理卖点。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我写 10 个关于 AI 工具推荐的文章标题，分别偏向干货、效率工具和职场办公方向。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;得到初稿后，还可以继续要求它按平台风格优化：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;把这些标题改得更适合科技博客。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种连续追问的体验，比一次性让搜索引擎给结果更自然。&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;p&gt;如果只是日常查资料，可以把它当成一个更快的 Google Search 入口；如果你经常处理图片、PDF、网页和截图，就可以重点尝试 Lens、文件上传和屏幕共享。&lt;/p&gt;
&lt;p&gt;使用时也建议注意三点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当前官方页面写明仅英文可用，中文提问的效果可能会因账号和地区而不同。&lt;/li&gt;
&lt;li&gt;AI Mode 不一定对所有账号开放，如果看不到相关能力，可以先确认账号、地区和语言设置。&lt;/li&gt;
&lt;li&gt;本地文件、Google Drive、屏幕共享都涉及隐私权限，开启前先确认自己要让它访问哪些内容。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;快速总结&#34;&gt;快速总结
&lt;/h2&gt;&lt;p&gt;Google App 桌面版最大的价值，是把搜索入口从浏览器里抽出来，变成一个随时可以呼出的桌面 AI 搜索框。&lt;/p&gt;
&lt;p&gt;它能做的事情可以概括为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Alt + Space&lt;/code&gt; 快速呼出搜索。&lt;/li&gt;
&lt;li&gt;用 AI Mode 直接获得整理后的答案。&lt;/li&gt;
&lt;li&gt;上传图片或文件进行分析。&lt;/li&gt;
&lt;li&gt;用 Google Lens 圈选屏幕内容搜索。&lt;/li&gt;
&lt;li&gt;通过屏幕共享理解当前窗口或整个屏幕。&lt;/li&gt;
&lt;li&gt;搜索电脑文件、应用和 Google Drive 内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你本来就依赖 Google 搜索，又希望搜索过程更接近“问一个助手”，这款桌面版 Google App 值得试一下。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Google App 桌面版官方页面：&lt;a class=&#34;link&#34; href=&#34;https://search.google/google-app/desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://search.google/google-app/desktop/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemma 4 E4B 越狱版和官方普通版有什么区别</title>
        <link>https://knightli.com/2026/04/18/gemma-4-e4b-uncensored-vs-official/</link>
        <pubDate>Sat, 18 Apr 2026 10:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/18/gemma-4-e4b-uncensored-vs-official/</guid>
        <description>&lt;p&gt;如果你看到 &lt;code&gt;HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&lt;/code&gt; 这种模型，最关键的一点是：它&lt;strong&gt;不是 Google 新发的另一套 Gemma 4&lt;/strong&gt;，而是建立在官方 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt; 之上的一个非官方衍生版本，重点是把模型行为调到“更少拒答”。&lt;/p&gt;
&lt;p&gt;所以它和普通版真正拉开的，通常不是底层架构，而是&lt;strong&gt;对齐策略和输出风格&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;这个衍生版模型卡自己说了什么&#34;&gt;这个衍生版模型卡自己说了什么
&lt;/h2&gt;&lt;p&gt;Hugging Face 模型卡里，这个 HauhauCS 版本明确写了几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它基于 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;它声称“没有改数据集或能力”&lt;/li&gt;
&lt;li&gt;它声称变化只是“去掉拒答”&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Aggressive&lt;/code&gt; 版本被描述为“完全解锁，不会拒绝提示词”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些是作者自己的表述，不是独立第三方测评结果。但从定位上已经很清楚：这就是一个以“减少安全拒答”为目标的非官方衍生版。&lt;/p&gt;
&lt;h2 id=&#34;官方版-vs-所谓越狱版&#34;&gt;官方版 vs 所谓“越狱版”
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;官方 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&lt;/code&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;来源&lt;/td&gt;
          &lt;td&gt;Google 官方发布&lt;/td&gt;
          &lt;td&gt;Hugging Face 第三方衍生版&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;基础模型&lt;/td&gt;
          &lt;td&gt;Gemma 4 E4B 指令微调版&lt;/td&gt;
          &lt;td&gt;同一模型家族，且模型卡明确写明基于 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;核心目标&lt;/td&gt;
          &lt;td&gt;通用助理能力 + 负责任使用框架&lt;/td&gt;
          &lt;td&gt;尽量减少拒答，让模型继续输出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安全取向&lt;/td&gt;
          &lt;td&gt;与 Gemma 家族的安全文档、禁止用途政策一致&lt;/td&gt;
          &lt;td&gt;明确削弱拒答与护栏行为&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;回答风格&lt;/td&gt;
          &lt;td&gt;更可能拒绝、转向或保守回答敏感请求&lt;/td&gt;
          &lt;td&gt;更可能直接继续回答原本会被拦下的问题&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;风险水平&lt;/td&gt;
          &lt;td&gt;默认风险更低，但仍不代表绝对安全&lt;/td&gt;
          &lt;td&gt;默认风险更高，更容易输出不安全或不合规内容&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;用于产品/团队&lt;/td&gt;
          &lt;td&gt;更容易通过评审和落地&lt;/td&gt;
          &lt;td&gt;更难用于公开产品、企业环境或合规场景&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;额外防护需求&lt;/td&gt;
          &lt;td&gt;仍需要应用层防护&lt;/td&gt;
          &lt;td&gt;更依赖你自己做额外的审核、过滤和限制&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;核心区别是对齐方式变了不是能力等级突然变高&#34;&gt;核心区别是“对齐方式”变了，不是“能力等级”突然变高
&lt;/h2&gt;&lt;p&gt;很多人会把“uncensored”理解成“更强”，这个判断通常并不准确。&lt;/p&gt;
&lt;p&gt;对这种衍生版来说，最先变化的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拒答频率&lt;/li&gt;
&lt;li&gt;对敏感请求的服从程度&lt;/li&gt;
&lt;li&gt;最终答案里剩下多少安全过滤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而不会因为名字里写了 &lt;code&gt;Uncensored&lt;/code&gt;，就自动意味着下面这些也一起升级：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型架构突然更强&lt;/li&gt;
&lt;li&gt;上下文窗口突然更大&lt;/li&gt;
&lt;li&gt;多模态能力突然更完整&lt;/li&gt;
&lt;li&gt;推理上限明显更高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更准确的理解是：它通常只是&lt;strong&gt;同一模型家族里，行为调校不同的一版&lt;/strong&gt;，而不是更高档的新模型。&lt;/p&gt;
&lt;h2 id=&#34;为什么官方普通版会更保守&#34;&gt;为什么官方普通版会更保守
&lt;/h2&gt;&lt;p&gt;Google 的 Gemma 官方资料一直把这个系列放在“负责任 AI 开发”的框架里。Gemma 模型卡会明确谈到误用、有害内容、隐私和偏见等风险；Gemma Prohibited Use Policy 也明确禁止把 Gemma 或其衍生模型用于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;危险、违法或恶意活动&lt;/li&gt;
&lt;li&gt;生成有害、误导、欺骗性内容&lt;/li&gt;
&lt;li&gt;覆盖或绕过安全过滤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以官方版并不是“碰巧更保守”，而是它从文档、许可和部署定位上，本来就是那样设计的。&lt;/p&gt;
&lt;h2 id=&#34;什么情况下普通版更合适&#34;&gt;什么情况下普通版更合适
&lt;/h2&gt;&lt;p&gt;如果你更在意下面这些，优先用官方 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;产品部署&lt;/li&gt;
&lt;li&gt;团队协作&lt;/li&gt;
&lt;li&gt;企业或对外场景&lt;/li&gt;
&lt;li&gt;较低的政策与法律风险&lt;/li&gt;
&lt;li&gt;更容易解释和审查的输出行为&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对大多数正常应用来说，这通常才是默认优先项。&lt;/p&gt;
&lt;h2 id=&#34;什么情况下有人会去试越狱版&#34;&gt;什么情况下有人会去试越狱版
&lt;/h2&gt;&lt;p&gt;选择这类 uncensored 衍生版的人，常见目的通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地私人实验&lt;/li&gt;
&lt;li&gt;测试官方版是否“过早拒答”&lt;/li&gt;
&lt;li&gt;角色扮演或更开放的创作场景&lt;/li&gt;
&lt;li&gt;对比不同对齐版本的行为差异&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但对应的代价也很明确：模型提供方少做的那部分安全约束，需要你自己补回来。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;所谓 Gemma 4 E4B “越狱版”和官方普通版，最本质的区别其实是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方版追求的是“有护栏的可用能力”&lt;/li&gt;
&lt;li&gt;越狱版追求的是“更少拒答的可输出性”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它&lt;strong&gt;不自动等于更强&lt;/strong&gt;，更多只是&lt;strong&gt;更放开&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果你的目标是稳定、可解释、适合部署，先用官方版更合理。&lt;br&gt;
如果你的目标是本地实验，并且你清楚知道安全、合规和输出风险都要自己承担，那这类 uncensored 衍生版可以当成“行为差异版本”来测试，但不应该直接理解成普通版的全面升级替代品。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hugging Face: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hugging Face: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E4B-it&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E4B-it&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google AI for Developers: &lt;a class=&#34;link&#34; href=&#34;https://ai.google.dev/gemma/prohibited_use_policy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemma Prohibited Use Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google AI for Developers: &lt;a class=&#34;link&#34; href=&#34;https://ai.google.dev/gemma/docs/core/model_card&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemma model card&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Windows 用 WSL &#43; Ollama 本地部署 Hermes Agent，并接入 Telegram</title>
        <link>https://knightli.com/2026/04/18/windows-wsl-ollama-hermes-agent-telegram/</link>
        <pubDate>Sat, 18 Apr 2026 00:48:22 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/18/windows-wsl-ollama-hermes-agent-telegram/</guid>
        <description>&lt;p&gt;如果你想在 &lt;code&gt;Windows&lt;/code&gt; 上尽量低门槛地跑 &lt;code&gt;Hermes Agent&lt;/code&gt;，一个比较顺手的路径是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宿主系统继续用 Windows&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;WSL&lt;/code&gt; 里跑 &lt;code&gt;Ubuntu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;Ollama&lt;/code&gt; 提供本地模型&lt;/li&gt;
&lt;li&gt;让 &lt;code&gt;Hermes Agent&lt;/code&gt; 直接连接本地 Ollama 接口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做的好处是环境相对干净，命令大多按 Linux 方式执行，同时又不需要单独准备一台 Linux 机器。&lt;/p&gt;
&lt;h2 id=&#34;整体流程&#34;&gt;整体流程
&lt;/h2&gt;&lt;p&gt;这套部署可以拆成 5 步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;启用 &lt;code&gt;WSL&lt;/code&gt; 并安装 &lt;code&gt;Ubuntu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在 Ubuntu 里补齐 Python、Node.js、Git 等运行环境&lt;/li&gt;
&lt;li&gt;安装 &lt;code&gt;Ollama&lt;/code&gt; 并拉取本地模型&lt;/li&gt;
&lt;li&gt;安装 &lt;code&gt;Hermes Agent&lt;/code&gt;，再接入 &lt;code&gt;Telegram&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你只想先把 Hermes Agent 跑起来，其实做到第 4 步就已经接近完成了。&lt;/p&gt;
&lt;h2 id=&#34;1-安装-wsl-和-ubuntu&#34;&gt;1. 安装 WSL 和 Ubuntu
&lt;/h2&gt;&lt;p&gt;在管理员权限的 PowerShell 里执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后重启电脑，然后继续安装 Ubuntu：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-d&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后打开 &lt;code&gt;Windows Terminal&lt;/code&gt;，切到 Ubuntu 环境，后续命令基本都在这里执行。&lt;/p&gt;
&lt;h2 id=&#34;2-更新-ubuntu并安装基础环境&#34;&gt;2. 更新 Ubuntu，并安装基础环境
&lt;/h2&gt;&lt;p&gt;先更新系统：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后安装 Python、解压工具、Node.js 和 Git。&lt;/p&gt;
&lt;h3 id=&#34;安装-python&#34;&gt;安装 Python
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install python3-pip python3-venv -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;安装-zstd&#34;&gt;安装 zstd
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y zstd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;安装-nodejs&#34;&gt;安装 Node.js
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://deb.nodesource.com/setup_22.x &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo -E bash -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y nodejs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;安装-git&#34;&gt;安装 Git
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后可以顺手检查一下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-安装-ollama并拉取-gemma-4&#34;&gt;3. 安装 Ollama，并拉取 Gemma 4
&lt;/h2&gt;&lt;p&gt;安装 Ollama：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://ollama.com/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你打算给 Hermes Agent 配一个本地模型，可以直接从 &lt;code&gt;Gemma 4&lt;/code&gt; 开始。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:e4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果机器资源更弱，也可以试：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:e2b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更大的版本还有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:31b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;对大多数 Windows + WSL 的普通机器来说，&lt;code&gt;gemma4:e4b&lt;/code&gt; 通常是一个更实际的起点。&lt;/p&gt;
&lt;h2 id=&#34;4-安装并配置-hermes-agent&#34;&gt;4. 安装并配置 Hermes Agent
&lt;/h2&gt;&lt;p&gt;安装命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后，给它指定 Ollama 的本地接口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:11434
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型名填你本地实际在用的那个，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:e4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果安装脚本要求刷新 shell，可以执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;hermes-agent-常用命令&#34;&gt;Hermes Agent 常用命令
&lt;/h2&gt;&lt;p&gt;平时最常用的是下面几个：&lt;/p&gt;
&lt;h3 id=&#34;启动&#34;&gt;启动
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;重新进入配置&#34;&gt;重新进入配置
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;配置聊天平台网关&#34;&gt;配置聊天平台网关
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup gateway
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;更新&#34;&gt;更新
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;接入-telegram-的基础步骤&#34;&gt;接入 Telegram 的基础步骤
&lt;/h2&gt;&lt;p&gt;如果你要让 Hermes Agent 通过 Telegram 收发消息，核心还是先跑一遍：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup gateway
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后准备 Telegram 侧需要的两个东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;BotFather&lt;/code&gt; 创建机器人&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;@userinfobot&lt;/code&gt; 获取你的 &lt;code&gt;User ID&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;拿到这些基础信息后，再按 Hermes Agent 的网关配置继续填入即可。&lt;/p&gt;
&lt;h2 id=&#34;这一套方案适合什么人&#34;&gt;这一套方案适合什么人
&lt;/h2&gt;&lt;p&gt;这套方式比较适合下面几类用户：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;平时主力系统就是 Windows&lt;/li&gt;
&lt;li&gt;不想单独折腾完整 Linux 主机&lt;/li&gt;
&lt;li&gt;想先把本地 Agent 跑通，再慢慢扩展聊天平台接入&lt;/li&gt;
&lt;li&gt;希望优先用本地模型，不依赖云端 API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想本地体验一个 Agent，而不是一开始就做复杂生产部署，这条路线已经足够实用。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的几个点&#34;&gt;需要注意的几个点
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;WSL&lt;/code&gt; 本质上还是一层兼容环境，极端场景下稳定性未必和原生 Linux 完全一样&lt;/li&gt;
&lt;li&gt;大模型能不能跑得顺，最终还是取决于你的内存、显存和 CPU / GPU 条件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gemma4:e4b&lt;/code&gt; 虽然是比较现实的起点，但具体体验还是要看机器配置&lt;/li&gt;
&lt;li&gt;Hermes Agent 的聊天平台接入属于“能力扩展”，先把本地模型链路跑通，再加 Telegram，会更稳&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;如果你想在 Windows 上尽量简单地本地部署 Hermes Agent，比较顺的顺序就是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;WSL -&amp;gt; Ubuntu -&amp;gt; Ollama -&amp;gt; Gemma 4 -&amp;gt; Hermes Agent -&amp;gt; Telegram&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;先把本地模型跑通，再做网关接入，成功率会高很多。&lt;br&gt;
对大多数用户来说，这比一上来就堆很多组件更容易排错，也更适合后续继续扩展。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama-cli -hf 下载 Hugging Face 模型默认保存在哪里</title>
        <link>https://knightli.com/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/2026/04/17/llama-cli-hf-download-default-cache-path/</guid>
        <description>&lt;p&gt;如果你使用的是 &lt;code&gt;llama-cli&lt;/code&gt; 直接从 Hugging Face 下载并运行模型，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这是 &lt;code&gt;llama.cpp&lt;/code&gt; 自带的 Hugging Face 下载能力。新版 &lt;code&gt;llama.cpp&lt;/code&gt; 会把 &lt;code&gt;-hf&lt;/code&gt; 下载的模型放进标准 Hugging Face Hub 缓存目录。&lt;/p&gt;
&lt;h2 id=&#34;默认缓存位置&#34;&gt;默认缓存位置
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama-cli -hf&lt;/code&gt; 下载的模型缓存位置优先由 &lt;code&gt;LLAMA_CACHE&lt;/code&gt; 环境变量控制。如果没有设置 &lt;code&gt;LLAMA_CACHE&lt;/code&gt;，则会继续检查 Hugging Face 相关缓存变量，例如 &lt;code&gt;HF_HUB_CACHE&lt;/code&gt;、&lt;code&gt;HUGGINGFACE_HUB_CACHE&lt;/code&gt; 和 &lt;code&gt;HF_HOME&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果这些变量都没有设置，常见默认路径如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;系统&lt;/th&gt;
          &lt;th&gt;默认缓存目录&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;%USERPROFILE%\.cache\huggingface\hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 Windows 上，&lt;code&gt;%USERPROFILE%&lt;/code&gt; 通常对应：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\用户名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;所以默认缓存目录大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\用户名\.cache\huggingface\hub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;想修改-llama-cli-的缓存目录怎么办&#34;&gt;想修改 llama-cli 的缓存目录怎么办
&lt;/h2&gt;&lt;p&gt;可以设置 &lt;code&gt;LLAMA_CACHE&lt;/code&gt;，把模型缓存放到指定磁盘或目录。也可以按 Hugging Face 的习惯设置 &lt;code&gt;HF_HOME&lt;/code&gt;，此时实际 Hub 缓存目录会是 &lt;code&gt;$HF_HOME/hub&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Windows 临时设置示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set LLAMA_CACHE=D:\models\llama-cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;PowerShell 临时设置示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:LLAMA_CACHE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\models\llama-cache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-cli&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-hf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unsloth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gemma&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-E4B-it-GGUF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux / macOS 临时设置示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LLAMA_CACHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/data/models/llama-cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;llama-cli -hf ...&lt;/code&gt; 使用的是 &lt;code&gt;llama.cpp&lt;/code&gt; 下载逻辑，但新版默认落到 Hugging Face Hub 缓存。&lt;/li&gt;
&lt;li&gt;Linux / macOS 默认：&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows 默认：&lt;code&gt;%USERPROFILE%\.cache\huggingface\hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想换目录：设置 &lt;code&gt;LLAMA_CACHE&lt;/code&gt;，或设置 &lt;code&gt;HF_HOME&lt;/code&gt; / &lt;code&gt;HF_HUB_CACHE&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Windows 下 llama-cli 直连 Hugging Face 报 SSL 证书验证失败怎么办</title>
        <link>https://knightli.com/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/2026/04/17/llama-cli-hugging-face-ssl-certificate-failed-on-windows/</guid>
        <description>&lt;p&gt;如果你在 Windows 下运行下面这条命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;并看到类似报错：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get_repo_commit: error: HTTPLIB failed: SSL server verification failed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;error: failed to download model from Hugging Face
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通常不是 CUDA 或 &lt;code&gt;llama.cpp&lt;/code&gt; 本身有问题，而是程序在当前环境里没有正确拿到系统证书链，导致 HTTPS 校验失败。&lt;/p&gt;
&lt;p&gt;从报错来看，&lt;code&gt;ggml-rpc.dll&lt;/code&gt; 和 &lt;code&gt;ggml-cpu-alderlake.dll&lt;/code&gt; 都已经正常加载，说明运行环境本身大体可用，问题主要集中在模型下载阶段。&lt;/p&gt;
&lt;h2 id=&#34;最省事的办法先手动下载模型&#34;&gt;最省事的办法：先手动下载模型
&lt;/h2&gt;&lt;p&gt;如果你只是想尽快跑起来，本地手动下载通常最稳。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开对应的 Hugging Face 仓库页面。&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;Files and versions&lt;/code&gt; 里下载需要的 &lt;code&gt;.gguf&lt;/code&gt; 文件。&lt;/li&gt;
&lt;li&gt;下载完成后，直接用本地文件路径运行：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;llama&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cli&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;knightli&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Downloads&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;gemma&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e4b&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gguf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样可以绕过 &lt;code&gt;-hf&lt;/code&gt; 下载阶段的 SSL 校验问题，适合先验证模型能不能正常推理。&lt;/p&gt;
&lt;h2 id=&#34;如果还想继续用--hf-自动下载&#34;&gt;如果还想继续用 &lt;code&gt;-hf&lt;/code&gt; 自动下载
&lt;/h2&gt;&lt;p&gt;可以手动指定证书文件路径，让程序在当前会话里找到可用的 CA 证书。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cacert.pem&lt;/code&gt; 可以从 curl 官方维护的 CA Extract 页面获取：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;页面地址：&lt;a class=&#34;link&#34; href=&#34;https://curl.se/docs/caextract.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://curl.se/docs/caextract.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;直接下载：&lt;a class=&#34;link&#34; href=&#34;https://curl.se/ca/cacert.pem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://curl.se/ca/cacert.pem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果用浏览器下载，打开上面的直接下载地址后保存为 &lt;code&gt;cacert.pem&lt;/code&gt; 即可。也可以在 PowerShell 里下载到固定目录，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ItemType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Force&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-WebRequest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Uri&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;curl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;se&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ca&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cacert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pem&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-OutFile&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cacert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下载完成后，在命令行里设置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set SSL_CERT_FILE=C:\certs\cacert.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set CURL_CA_BUNDLE=C:\certs\cacert.pem
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再重新执行原命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果问题确实来自证书链，这种方式通常能直接解决。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ChatGPT Codex 配额使用情况查询面板：codex-quota的使用方法</title>
        <link>https://knightli.com/2026/04/16/codex-quota-cli-web-docker-guide/</link>
        <pubDate>Thu, 16 Apr 2026 18:13:04 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/16/codex-quota-cli-web-docker-guide/</guid>
        <description>&lt;h2 id=&#34;这个项目做什么&#34;&gt;这个项目做什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;codex-quota&lt;/code&gt; 是一个轻量工具，能查询 ChatGPT Codex 配额使用情况，数据来源是 &lt;code&gt;https://chatgpt.com/backend-api/wham/usage&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;主要功能：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;支持单账号或多账号（&lt;code&gt;account/*.auth.json&lt;/code&gt;）查询。&lt;/li&gt;
&lt;li&gt;输出 &lt;code&gt;five_hour%&lt;/code&gt;、&lt;code&gt;weekly%&lt;/code&gt;、&lt;code&gt;weekly_reset&lt;/code&gt;，并标记来源（&lt;code&gt;network&lt;/code&gt; 或 &lt;code&gt;cache&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;对临时失败（&lt;code&gt;408&lt;/code&gt;、&lt;code&gt;429&lt;/code&gt;、&lt;code&gt;5xx&lt;/code&gt;）做指数退避重试。&lt;/li&gt;
&lt;li&gt;内置本地缓存，减少已耗尽配额时的重复请求。&lt;/li&gt;
&lt;li&gt;提供 Web Dashboard、JSON API、auth 文件管理页面。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;轻量：单脚本可跑，依赖简单。&lt;/li&gt;
&lt;li&gt;实用：CLI 和 Web 两种入口都能用。&lt;/li&gt;
&lt;li&gt;可部署：支持 Docker 和 Docker Compose。&lt;/li&gt;
&lt;li&gt;易运维：支持重试、缓存和定时刷新。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;先准备好账号凭证&#34;&gt;先准备好账号凭证
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;account/&amp;lt;name&amp;gt;.auth.json&lt;/code&gt; 创建凭证文件，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;eyJ...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user-xxxxxxxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt; 和 &lt;code&gt;account_id&lt;/code&gt; 是查询接口所需字段。&lt;/li&gt;
&lt;li&gt;文件名里的 &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; 会作为账号名显示在结果中。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;本地-cli-用法保留原命令&#34;&gt;本地 CLI 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;安装依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：安装项目运行依赖。&lt;/p&gt;
&lt;p&gt;查询全部账号：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：读取 &lt;code&gt;account/*.auth.json&lt;/code&gt;，汇总输出所有账号配额。&lt;/p&gt;
&lt;p&gt;查询单个账号：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py your_account_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：只查询 &lt;code&gt;account/your_account_name.auth.json&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;强制刷新（跳过缓存）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py --refresh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：忽略本地缓存，直接请求最新接口数据。&lt;/p&gt;
&lt;h2 id=&#34;cli-参数说明readme-对齐&#34;&gt;CLI 参数说明（README 对齐）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;account_name&lt;/code&gt;：可选账号名（不带 &lt;code&gt;.auth.json&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;：凭证目录，默认 &lt;code&gt;account&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;：配额接口地址。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-json&lt;/code&gt;：输出完整 JSON 响应体。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-headers&lt;/code&gt;：输出响应头。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;：忽略缓存。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;：重试次数，默认 &lt;code&gt;3&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;：基础重试间隔秒数，默认 &lt;code&gt;2.0&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;web-dashboard-用法保留原命令&#34;&gt;Web Dashboard 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;启动服务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota_service.py --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;8081&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：启动 HTTP 服务并监听 &lt;code&gt;8081&lt;/code&gt; 端口。&lt;/p&gt;
&lt;p&gt;访问地址：&lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Service 参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--host&lt;/code&gt;：监听地址，默认 &lt;code&gt;0.0.0.0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port&lt;/code&gt;：端口，默认 &lt;code&gt;8081&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--interval-seconds&lt;/code&gt;：调度刷新间隔，默认 &lt;code&gt;3600&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;：凭证目录，默认 &lt;code&gt;account&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--state-file&lt;/code&gt;：状态文件路径，默认 &lt;code&gt;&amp;lt;account-dir&amp;gt;/codex_quota_web_results.json&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-name&lt;/code&gt;：可选，单账号模式。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;：配额接口地址。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;：重试次数。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;：基础重试延迟。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;：调度刷新时忽略 CLI 缓存。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;http-接口方便接自动化&#34;&gt;HTTP 接口（方便接自动化）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /&lt;/code&gt;：Dashboard 页面。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/results&lt;/code&gt;：最新结果 JSON。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /refresh&lt;/code&gt;：立即刷新并跳回 &lt;code&gt;/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth&lt;/code&gt;：列出 auth 文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/new&lt;/code&gt;：新建 auth 文件表单。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/edit?name=&amp;lt;account&amp;gt;&lt;/code&gt;：编辑 auth 文件表单。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/save&lt;/code&gt;：创建/更新 auth 文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/delete&lt;/code&gt;：删除 auth 文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docker-用法保留原命令&#34;&gt;Docker 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;构建镜像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t codex-quota .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：把当前项目打包成 &lt;code&gt;codex-quota&lt;/code&gt; 镜像。&lt;/p&gt;
&lt;p&gt;运行容器（映射 8081）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -p 8081:8081 -v ./account:/app/account codex-quota
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--rm&lt;/code&gt;：容器退出自动删除。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p 8081:8081&lt;/code&gt;：主机端口映射到容器端口。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v ./account:/app/account&lt;/code&gt;：把本地凭证目录挂载进容器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;访问地址：&lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;docker-compose-用法保留原命令&#34;&gt;Docker Compose 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up --build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;解释：按 &lt;code&gt;docker-compose.yml&lt;/code&gt; 构建并启动服务。&lt;/p&gt;
&lt;p&gt;访问地址：&lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;使用建议&#34;&gt;使用建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;多账号场景优先走 Dashboard，便于统一查看和管理 auth 文件。&lt;/li&gt;
&lt;li&gt;告警或自动化集成优先用 &lt;code&gt;GET /api/results&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;公开仓库不要提交真实 &lt;code&gt;access_token&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果你看到大量临时错误，可调大 &lt;code&gt;--retries&lt;/code&gt; 与 &lt;code&gt;--retry-delay&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>在 VS Code 里接入 Claude：从 API 配置到网页生成</title>
        <link>https://knightli.com/2026/04/16/vscode-claude-api-coding-workflow/</link>
        <pubDate>Thu, 16 Apr 2026 17:47:17 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/16/vscode-claude-api-coding-workflow/</guid>
        <description>&lt;p&gt;如果你已经开始把大模型带进日常开发，最直接的感受通常不是“会不会写代码”，而是“能不能把很多零碎工作一次性推进起来”。&lt;/p&gt;
&lt;p&gt;这类工具真正有价值的地方，不只是补全几行代码，而是能在编辑器里同时完成对话、改文件、预览结果和继续迭代。对于简单页面、原型验证、样式调整和功能补齐，这种工作方式往往比传统的手动来回切换更顺手。&lt;/p&gt;
&lt;p&gt;这篇就整理一下，一个比较实用的思路：在 &lt;code&gt;VS Code&lt;/code&gt; 里接入 &lt;code&gt;Claude&lt;/code&gt; 一类模型之后，怎么把它用在真实的页面生成和小功能迭代上。&lt;/p&gt;
&lt;h2 id=&#34;一先把工具链接通&#34;&gt;一、先把工具链接通
&lt;/h2&gt;&lt;p&gt;这类 AI 编程插件的核心流程其实都差不多：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 &lt;code&gt;VS Code&lt;/code&gt; 里安装支持对话式改代码的插件&lt;/li&gt;
&lt;li&gt;在插件设置里填入模型服务的 &lt;code&gt;Base URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;配置自己的 &lt;code&gt;API Key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;选择要使用的模型名称&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;完成这几步之后，编辑器里的 AI 能力才算真正可用。后面的体验差异，大多不在“能不能用”，而在“模型质量怎么样、插件交互是否顺手、生成结果是否稳定”。&lt;/p&gt;
&lt;p&gt;如果你之前没有配过这类插件，可以把它理解成这样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;插件负责把你的自然语言请求变成编辑器里的操作流程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;API&lt;/code&gt; 负责把请求发送给模型服务&lt;/li&gt;
&lt;li&gt;模型负责理解你的需求并返回代码、修改建议或结构化结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以真正要配对的，其实就是三件事：插件、接口地址、模型名。&lt;/p&gt;
&lt;h2 id=&#34;二适合先从小任务开始&#34;&gt;二、适合先从小任务开始
&lt;/h2&gt;&lt;p&gt;很多人第一次上手，会希望它直接帮自己“做一个完整项目”。这不是不行，但对新手来说，最容易建立正确预期的方式，反而是先从非常小的任务开始。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成一个简单的前端页面&lt;/li&gt;
&lt;li&gt;给现有页面补一个公告区域&lt;/li&gt;
&lt;li&gt;增加注册表单&lt;/li&gt;
&lt;li&gt;调整界面，让样式更正式一些&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种任务有几个好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指令足够清楚，模型更容易理解&lt;/li&gt;
&lt;li&gt;结果可以立刻预览，反馈很快&lt;/li&gt;
&lt;li&gt;你能明显看到“对话”和“改代码”是如何联动的&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当需求比较明确时，插件通常会一边在侧边栏里和你对话，一边直接修改右侧文件。等到任务完成之后，你再看生成结果、预览页面、决定要不要继续追加需求，这个节奏会比纯聊天自然很多。&lt;/p&gt;
&lt;h2 id=&#34;三真正提效的不是一次生成而是连续迭代&#34;&gt;三、真正提效的不是一次生成，而是连续迭代
&lt;/h2&gt;&lt;p&gt;AI 编程最容易被误解的一点，是大家总把注意力放在“第一次生成得像不像”。&lt;/p&gt;
&lt;p&gt;但在实际使用里，更重要的往往是第二轮、第三轮还能不能顺着改下去。&lt;/p&gt;
&lt;p&gt;一个比较常见的过程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先让它快速生成一个能跑的页面骨架&lt;/li&gt;
&lt;li&gt;再追加一两个明确功能&lt;/li&gt;
&lt;li&gt;然后观察代码和界面是否一起变得更完整&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果工具体验比较顺，整个过程会很像你在带一个执行速度很快的初级开发同事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你提需求&lt;/li&gt;
&lt;li&gt;它先做出一版&lt;/li&gt;
&lt;li&gt;你指出哪里不够&lt;/li&gt;
&lt;li&gt;它继续修改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种“连续对话式迭代”比单次生成更接近日常开发场景，也是它最容易拉开效率差距的地方。&lt;/p&gt;
&lt;h2 id=&#34;四要学会区分适合交给-ai-的部分和自己顺手改更快的部分&#34;&gt;四、要学会区分“适合交给 AI 的部分”和“自己顺手改更快的部分”
&lt;/h2&gt;&lt;p&gt;这也是非常关键的一点。&lt;/p&gt;
&lt;p&gt;像页面布局、组件初稿、表单骨架、样式润色、文案占位、重复性代码补齐，这些通常都很适合交给 AI 先做。&lt;/p&gt;
&lt;p&gt;但如果只是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改一行按钮文字&lt;/li&gt;
&lt;li&gt;调整一个页脚说明&lt;/li&gt;
&lt;li&gt;换一个很小的样式细节&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多时候自己直接改会更快。因为这种修改的成本已经低到，不值得再发起一次完整的模型交互。&lt;/p&gt;
&lt;p&gt;真正高效的使用方式，不是“什么都交给 AI”，而是知道什么时候该让它一口气做完大块工作，什么时候自己收尾更省时间。&lt;/p&gt;
&lt;h2 id=&#34;五api-配置是门槛但不是难点&#34;&gt;五、API 配置是门槛，但不是难点
&lt;/h2&gt;&lt;p&gt;不少人卡住，其实不是卡在写代码，而是卡在插件配置。&lt;/p&gt;
&lt;p&gt;常见需要确认的内容通常包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接口地址是不是填对了&lt;/li&gt;
&lt;li&gt;密钥是不是有效&lt;/li&gt;
&lt;li&gt;模型名称是不是和服务端一致&lt;/li&gt;
&lt;li&gt;插件是否要求特定格式的 &lt;code&gt;Base URL&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要这几项有一项不对，插件表面上可能还能打开，但真正发请求时就会失败。&lt;/p&gt;
&lt;p&gt;所以如果你发现插件没有正常工作，排查顺序通常可以很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先看接口地址&lt;/li&gt;
&lt;li&gt;再看密钥&lt;/li&gt;
&lt;li&gt;最后看模型名和插件要求的格式&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把这三项核对清楚，大多数接入问题都能快速定位。&lt;/p&gt;
&lt;h2 id=&#34;六怎么看生成结果值不值得继续用&#34;&gt;六、怎么看生成结果值不值得继续用
&lt;/h2&gt;&lt;p&gt;一个比较实用的判断标准，不是看它“惊不惊艳”，而是看下面这几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成出来的页面能不能直接跑起来&lt;/li&gt;
&lt;li&gt;结构是不是基本清楚&lt;/li&gt;
&lt;li&gt;追加需求后有没有明显跑偏&lt;/li&gt;
&lt;li&gt;改动量变大时，是否还能保持一致性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一两轮对话之后，它已经能把页面从空白推进到一个可继续修改的状态，那这个工具基本就有实用价值了。&lt;/p&gt;
&lt;p&gt;反过来说，如果每次生成都需要你大面积返工，那它带来的就不是提效，而只是把“写代码”换成了“审代码”。&lt;/p&gt;
&lt;h2 id=&#34;结语&#34;&gt;结语
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;VS Code&lt;/code&gt; 里接入 &lt;code&gt;Claude&lt;/code&gt; 一类模型，最值得期待的不是“从此不写代码了”，而是很多原本零散、重复、容易打断思路的工作，可以被一次性打包推进。&lt;/p&gt;
&lt;p&gt;更现实的用法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让它先搭页面和功能骨架&lt;/li&gt;
&lt;li&gt;用连续对话完成两三轮迭代&lt;/li&gt;
&lt;li&gt;自己处理最后那些细小但确定的修改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样配合下来，AI 更像一个加速器，而不是一个必须完全接管开发流程的替代者。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude 身份验证说明：为什么要验证、需要什么材料、数据如何处理</title>
        <link>https://knightli.com/2026/04/16/claude-identity-verification-guide/</link>
        <pubDate>Thu, 16 Apr 2026 09:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/16/claude-identity-verification-guide/</guid>
        <description>&lt;p&gt;Anthropic 最近在 Claude 上逐步推出身份验证。按照官方说明，这不是单纯为了增加使用门槛，而是平台完整性、安全合规和防滥用机制的一部分。&lt;/p&gt;
&lt;p&gt;简单说，Claude 的身份验证主要解决三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确认正在使用强大 AI 工具的人是谁。&lt;/li&gt;
&lt;li&gt;帮助执行使用政策，降低滥用风险。&lt;/li&gt;
&lt;li&gt;满足必要的法律和合规义务。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你在访问 Claude 的某些功能时看到身份验证提示，一般可以理解为平台在做例行的安全与合规检查。Anthropic 也明确说明，验证数据只用于确认身份，不会用于其它目的。&lt;/p&gt;
&lt;h2 id=&#34;01-什么时候会要求身份验证&#34;&gt;01 什么时候会要求身份验证
&lt;/h2&gt;&lt;p&gt;官方文档没有把所有触发条件列成完整清单，只说明身份验证正在面向部分用例推出，并且可能在访问某些功能时出现。&lt;/p&gt;
&lt;p&gt;这意味着，看到验证提示并不一定代表账号有问题。更常见的情况是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你正在使用某些需要更高信任级别的功能。&lt;/li&gt;
&lt;li&gt;平台正在进行完整性检查。&lt;/li&gt;
&lt;li&gt;你的账号或使用场景触发了安全与合规流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从用户角度看，最重要的是提前知道验证流程需要什么材料，避免临时卡住。&lt;/p&gt;
&lt;h2 id=&#34;02-验证由谁处理&#34;&gt;02 验证由谁处理
&lt;/h2&gt;&lt;p&gt;Claude 的身份验证由 Anthropic 与第三方验证服务商 &lt;code&gt;Persona Identities&lt;/code&gt; 配合完成。&lt;/p&gt;
&lt;p&gt;官方说明中，Anthropic 选择 Persona 的原因包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技术能力&lt;/li&gt;
&lt;li&gt;隐私控制&lt;/li&gt;
&lt;li&gt;安全保障&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里可以理解为：Anthropic 负责制定验证数据的使用和保留规则，Persona 按 Anthropic 的指示处理具体验证流程。&lt;/p&gt;
&lt;h2 id=&#34;03-需要准备什么&#34;&gt;03 需要准备什么
&lt;/h2&gt;&lt;p&gt;开始验证前，最好提前准备三样东西：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;材料&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;有效的政府签发带照片身份证件&lt;/td&gt;
          &lt;td&gt;必须是实体证件，并且在手边&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;带摄像头的手机或电脑&lt;/td&gt;
          &lt;td&gt;可能需要拍摄实时自拍照，或使用电脑摄像头&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;几分钟时间&lt;/td&gt;
          &lt;td&gt;官方说明验证通常不到 5 分钟&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果证件不在身边，或者电脑没有摄像头，验证流程很可能会中断。&lt;/p&gt;
&lt;h2 id=&#34;04-接受哪些身份证件&#34;&gt;04 接受哪些身份证件
&lt;/h2&gt;&lt;p&gt;官方接受大多数国家和地区的原始、实体、政府签发的带照片身份证件。常见类型包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;护照&lt;/li&gt;
&lt;li&gt;驾驶执照&lt;/li&gt;
&lt;li&gt;州、省或地区身份证&lt;/li&gt;
&lt;li&gt;国家身份证&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;证件需要满足几个基本条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;由政府签发&lt;/li&gt;
&lt;li&gt;包含本人照片&lt;/li&gt;
&lt;li&gt;清晰可读&lt;/li&gt;
&lt;li&gt;完好无损&lt;/li&gt;
&lt;li&gt;不是复印件或截图&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;05-不接受哪些材料&#34;&gt;05 不接受哪些材料
&lt;/h2&gt;&lt;p&gt;下面这些材料通常不能用于 Claude 身份验证：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复印件&lt;/li&gt;
&lt;li&gt;截图&lt;/li&gt;
&lt;li&gt;扫描件&lt;/li&gt;
&lt;li&gt;对证件照片再次拍摄的照片&lt;/li&gt;
&lt;li&gt;数字或移动身份证件，例如移动驾驶执照&lt;/li&gt;
&lt;li&gt;非政府证件，例如学生证、员工证、图书卡、银行卡&lt;/li&gt;
&lt;li&gt;临时纸质身份证件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一点很容易踩坑。很多人以为“能看清就行”，但官方要求的是原始、实体、政府签发的证件。&lt;/p&gt;
&lt;h2 id=&#34;06-数据如何被保护&#34;&gt;06 数据如何被保护
&lt;/h2&gt;&lt;p&gt;这部分是文档里最值得关注的地方。&lt;/p&gt;
&lt;p&gt;Anthropic 的说明可以概括为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Anthropic 是验证数据的数据控制者，负责制定如何使用和保留数据的规则。&lt;/li&gt;
&lt;li&gt;Persona 是处理方，代表 Anthropic 执行验证流程。&lt;/li&gt;
&lt;li&gt;身份证件和自拍照由 Persona 收集并保存，不直接存放在 Anthropic 系统里。&lt;/li&gt;
&lt;li&gt;Anthropic 在必要时可以通过 Persona 平台访问验证记录，例如处理申诉。&lt;/li&gt;
&lt;li&gt;Persona 只能按合同约定使用这些数据，主要用于提供和支持验证，以及改进防欺诈能力。&lt;/li&gt;
&lt;li&gt;传输给 Persona 的数据会在传输中和静止时加密。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;换句话说，用户提交的证件和自拍照不是被 Claude 拿去当普通账号资料随意使用，而是被限制在身份验证和合规流程中。&lt;/p&gt;
&lt;h2 id=&#34;07-anthropic-明确说不会做什么&#34;&gt;07 Anthropic 明确说不会做什么
&lt;/h2&gt;&lt;p&gt;官方文档专门列出了几件“不会做”的事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不使用身份验证数据训练模型。&lt;/li&gt;
&lt;li&gt;不收集超过验证身份所需的信息。&lt;/li&gt;
&lt;li&gt;不把身份数据用于营销、广告或与验证无关的目的。&lt;/li&gt;
&lt;li&gt;除非法律要求响应有效法律程序，否则不会与无关第三方共享验证数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这几点对用户很关键。身份验证最敏感的地方不是“拍一次证件照”本身，而是数据之后会不会被拿去做其它用途。Anthropic 在这篇文档里给出的口径是：验证数据只服务于身份确认、法律义务和安全合规。&lt;/p&gt;
&lt;h2 id=&#34;08-验证失败怎么办&#34;&gt;08 验证失败怎么办
&lt;/h2&gt;&lt;p&gt;验证失败不一定代表账号异常，常见原因包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;照片模糊&lt;/li&gt;
&lt;li&gt;光线太差&lt;/li&gt;
&lt;li&gt;证件信息不清楚&lt;/li&gt;
&lt;li&gt;证件过期&lt;/li&gt;
&lt;li&gt;技术问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方建议按这个顺序处理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重试。验证流程通常会提供多次尝试机会。&lt;/li&gt;
&lt;li&gt;换更好的光线重新拍摄。&lt;/li&gt;
&lt;li&gt;检查证件是否清晰、完整、未过期。&lt;/li&gt;
&lt;li&gt;如果有其它政府签发的带照片证件，可以尝试更换证件。&lt;/li&gt;
&lt;li&gt;如果尝试次数用完仍无法通过，通过官方表单联系支持。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;实际操作时，最常见的解决办法就是换一个光线更好的环境，并确保摄像头对焦清楚。&lt;/p&gt;
&lt;h2 id=&#34;09-为什么验证后账号还可能被禁用&#34;&gt;09 为什么验证后账号还可能被禁用
&lt;/h2&gt;&lt;p&gt;身份验证通过不等于账号一定不会被限制。Anthropic 说明，账号仍可能因为安全流程中的其它原因被禁用，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重复违反使用政策&lt;/li&gt;
&lt;li&gt;从不支持的位置创建账号&lt;/li&gt;
&lt;li&gt;违反服务条款&lt;/li&gt;
&lt;li&gt;18 岁以下使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你认为账号被错误禁用，可以填写官方申诉表，并提供账号信息，让安全团队进一步调查。&lt;/p&gt;
&lt;h2 id=&#34;10-用户应该怎么准备&#34;&gt;10 用户应该怎么准备
&lt;/h2&gt;&lt;p&gt;如果你准备继续使用 Claude，尤其是使用更高阶功能，可以提前做好几件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;准备有效、未过期、实体的政府签发带照片证件。&lt;/li&gt;
&lt;li&gt;确保摄像头可用，最好手机和电脑都能访问验证页面。&lt;/li&gt;
&lt;li&gt;在光线充足的环境下验证。&lt;/li&gt;
&lt;li&gt;不要上传截图、扫描件或证件照片的翻拍图。&lt;/li&gt;
&lt;li&gt;如果验证失败，先检查证件清晰度和光线，再联系支持。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对大多数用户来说，Claude 身份验证不是复杂流程，但它对材料真实性要求比较严格。只要证件类型正确、拍摄清楚，通常几分钟内就能完成。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/zh-CN/articles/14328960-claude-%E4%B8%8A%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude 上的身份验证 - Anthropic Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/legal/privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 隐私政策&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 额度怎么算：5 小时限额、周限额和 Credit 消耗</title>
        <link>https://knightli.com/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/2026/04/15/codex-usage-limits-five-hour-weekly-credits/</guid>
        <description>&lt;p&gt;很多人第一次看 Codex 额度时，会以为 &lt;code&gt;5 小时限额&lt;/code&gt; 是一个短期余额池，只有它用完之后才开始扣 &lt;code&gt;周限额&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;实际不是这样。Codex 更像是同时检查多个额度窗口：短窗口防止短时间爆量，周窗口限制一周总量。一次 Codex 使用通常会同时计入这两个窗口。&lt;/p&gt;
&lt;p&gt;所以你看到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5 小时额度还剩很多
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;但 weekly 额度已经下降
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通常是正常现象。&lt;/p&gt;
&lt;h2 id=&#34;01-先记住结论&#34;&gt;01 先记住结论
&lt;/h2&gt;&lt;p&gt;Codex 额度可以先按下面三句话理解：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;5 小时限额&lt;/code&gt; 和 &lt;code&gt;周限额&lt;/code&gt; 是同时生效，不是先后扣除。&lt;/li&gt;
&lt;li&gt;周限额用完后，即使 5 小时额度还有，通常也不能继续用同一个订阅额度池。&lt;/li&gt;
&lt;li&gt;Codex 不是简单按消息条数计费，而是和模型、tokens、任务复杂度、上下文、执行位置有关。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;用伪代码表示就是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;can_use_codex =
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    five_hour_remaining &amp;gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;amp;&amp;amp; weekly_remaining &amp;gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;amp;&amp;amp; 没有触发其它产品策略限制
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;5 小时窗口重置，只恢复 5 小时额度；不会恢复 weekly 额度。weekly 额度要等自己的 reset，或者在支持的计划里购买额外 credits。&lt;/p&gt;
&lt;h2 id=&#34;02-为什么会同时扣两个窗口&#34;&gt;02 为什么会同时扣两个窗口
&lt;/h2&gt;&lt;p&gt;可以把 Codex 的额度想成两个闸门：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;窗口&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;5 小时窗口&lt;/td&gt;
          &lt;td&gt;防止短时间高频使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;周窗口&lt;/td&gt;
          &lt;td&gt;控制一周总使用量&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;每次 Codex 任务都会产生一次实际消耗。这个消耗会反映到当前相关的 rate limit 窗口里。&lt;/p&gt;
&lt;p&gt;因此不是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先扣 5 小时额度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5 小时额度用完后
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;再扣周额度
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;而更像是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一次 Codex 请求
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 计入 5 小时窗口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 同时计入周窗口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这就是“5 小时额度没用完，但 weekly 也在下降”的核心原因。&lt;/p&gt;
&lt;h2 id=&#34;03-当前更应该看-token-based-credits&#34;&gt;03 当前更应该看 token-based credits
&lt;/h2&gt;&lt;p&gt;OpenAI 没有公开一个用户可以完全复算的 Codex 扣费公式。官方公开的是 rate card、影响因素和不同模型的 credit 单价。&lt;/p&gt;
&lt;p&gt;截至 2026-04-15，Codex rate card 的主口径已经是 &lt;code&gt;token-based credits&lt;/code&gt;。也就是根据输入 tokens、缓存输入 tokens、输出 tokens 折算 credits。&lt;/p&gt;
&lt;p&gt;官方给出的示例价格如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;输入 / 1M tokens&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;缓存输入 / 1M tokens&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;输出 / 1M tokens&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.50 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6.250 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;375 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4-Mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.75 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.875 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;113 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.3-Codex&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.75 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.375 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;350 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.2-Codex&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.75 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.375 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;350 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.1-Codex-Max&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;31.25 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.125 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;250 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.1-Codex-mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6.25 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;0.625 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50 credits&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以一个粗略估算公式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;本次消耗
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;≈ 输入 tokens / 1,000,000 × 模型输入单价
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 缓存输入 tokens / 1,000,000 × 模型缓存输入单价
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 输出 tokens / 1,000,000 × 模型输出单价
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这不是精确账单公式，但足够解释趋势：输出很贵，长上下文很贵，高能力模型更贵。官方还说明 &lt;code&gt;Fast mode&lt;/code&gt; 会消耗 2 倍 credits，&lt;code&gt;Code review&lt;/code&gt; 使用 GPT-5.3-Codex 的价格。&lt;/p&gt;
&lt;h2 id=&#34;04-不要再只看消息条数&#34;&gt;04 不要再只看“消息条数”
&lt;/h2&gt;&lt;p&gt;同样发 10 次 Codex，消耗可能完全不同。&lt;/p&gt;
&lt;p&gt;轻量任务通常更省：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改一个小函数&lt;/li&gt;
&lt;li&gt;解释一段短代码&lt;/li&gt;
&lt;li&gt;写一小段文案&lt;/li&gt;
&lt;li&gt;在明确文件里做局部修改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重任务会更贵：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;扫描大型代码库&lt;/li&gt;
&lt;li&gt;长时间运行 agent&lt;/li&gt;
&lt;li&gt;多轮读取、编辑、测试、修复&lt;/li&gt;
&lt;li&gt;生成大量代码或长报告&lt;/li&gt;
&lt;li&gt;使用 cloud task&lt;/li&gt;
&lt;li&gt;开启 fast mode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，&lt;code&gt;消息数量&lt;/code&gt; 只能作为很粗的感觉，不能用来判断真实消耗。&lt;/p&gt;
&lt;h2 id=&#34;05-local-task-和-cloud-task-的差别&#34;&gt;05 local task 和 cloud task 的差别
&lt;/h2&gt;&lt;p&gt;Codex 里很容易拉开消耗差距的是执行位置。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;local task&lt;/code&gt; 更像是在你的本地工作区里读文件、改代码、跑命令。&lt;code&gt;cloud task&lt;/code&gt; 则把任务交给云端环境托管执行，适合更长、更自动化的流程。&lt;/p&gt;
&lt;p&gt;从额度角度看，cloud task 往往更贵。原因也很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要云端执行环境&lt;/li&gt;
&lt;li&gt;任务通常更长&lt;/li&gt;
&lt;li&gt;工具调用更多&lt;/li&gt;
&lt;li&gt;上下文更大&lt;/li&gt;
&lt;li&gt;自动化链路更完整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是普通代码编辑、文章整理、局部修复，优先 local task 会更省。cloud task 更适合确实需要云端托管的任务。&lt;/p&gt;
&lt;h2 id=&#34;06-为什么-weekly-掉得特别快&#34;&gt;06 为什么 weekly 掉得特别快
&lt;/h2&gt;&lt;p&gt;如果你觉得“5 小时额度没怎么动，但 weekly 掉很多”，常见原因有这些：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用了 cloud task。&lt;/li&gt;
&lt;li&gt;使用了更贵的模型。&lt;/li&gt;
&lt;li&gt;开启了 fast mode。&lt;/li&gt;
&lt;li&gt;上下文很大，Codex 读了很多文件或保留了很长对话。&lt;/li&gt;
&lt;li&gt;输出很长，比如大量代码、长报告、长日志分析。&lt;/li&gt;
&lt;li&gt;任务链很长，比如搜索、编辑、测试、修复、再测试。&lt;/li&gt;
&lt;li&gt;自己的额度脚本把窗口标签解析错了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你是用脚本读 &lt;code&gt;/backend-api/wham/usage&lt;/code&gt; 之类的字段，不要只看加工后的 &lt;code&gt;five_hour%&lt;/code&gt;、&lt;code&gt;weekly%&lt;/code&gt;。最好先看 raw JSON 里的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;limit_window_seconds&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;percent_left&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reset_at&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;bucket / feature 名称&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;常见窗口长度可以这样判断：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;limit_window_seconds = 18000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 约 5 小时窗口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;limit_window_seconds = 604800
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 约 7 天窗口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果脚本把两个窗口标反，就会误判额度变化。&lt;/p&gt;
&lt;h2 id=&#34;07-更省额度的使用方式&#34;&gt;07 更省额度的使用方式
&lt;/h2&gt;&lt;p&gt;想让 weekly 撑得久一点，可以这样用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把大任务拆成小任务。先处理一个文件、一个 bug、一个功能点。&lt;/li&gt;
&lt;li&gt;能 local 就 local，谨慎使用 cloud task。&lt;/li&gt;
&lt;li&gt;明确告诉 Codex 相关路径，减少无关扫描。&lt;/li&gt;
&lt;li&gt;避免一次塞入巨大日志、长文件、无关上下文。&lt;/li&gt;
&lt;li&gt;轻量任务可以用更便宜的 mini 模型。&lt;/li&gt;
&lt;li&gt;长任务前先让 Codex 出计划，再进入执行。&lt;/li&gt;
&lt;li&gt;不需要长报告时，明确要求“简短回答”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最实用的记忆方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;是否能继续用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 短窗口还有额度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;amp;&amp;amp; 周窗口还有额度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;消耗快不快
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 模型价格
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× 输出长度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× 任务复杂度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× 执行位置
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个模型不能精确对账，但足够解释大多数 Codex 额度现象。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Codex with your ChatGPT plan - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11481834&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ChatGPT Rate Card - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/zh-hans-cn/articles/20001106-codex-rate-card&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex rate card - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/12642688-using-credits-for-flexible-usage-in-chatgpt-pluspro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Credits for Flexible Usage in ChatGPT - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>RAGFlow 项目整理：开源 RAG 引擎的功能与使用方法</title>
        <link>https://knightli.com/2026/04/15/ragflow-rag-engine-guide/</link>
        <pubDate>Wed, 15 Apr 2026 22:09:25 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/15/ragflow-rag-engine-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;RAGFlow&lt;/code&gt; 是 &lt;code&gt;infiniflow&lt;/code&gt; 开源的 RAG（Retrieval-Augmented Generation，检索增强生成）引擎。它的目标不是只做一个“上传文件然后问答”的知识库外壳，而是把文档解析、切分、检索、重排、引用溯源、模型配置、Agent 能力和 API 集成放进一套完整工作流里。&lt;/p&gt;
&lt;p&gt;如果你正在做企业知识库、文档问答、客服助手、内部资料检索，或者想给 LLM 加一层更可靠的上下文来源，RAGFlow 属于值得重点看的开源方案。&lt;/p&gt;
&lt;h2 id=&#34;01-ragflow-解决什么问题&#34;&gt;01 RAGFlow 解决什么问题
&lt;/h2&gt;&lt;p&gt;普通 RAG 系统最容易遇到的问题有三个：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;文档解析质量不稳定，尤其是 PDF、扫描件、表格、图片、复杂排版文档。&lt;/li&gt;
&lt;li&gt;切分策略不透明，命中结果看起来像“搜到了”，但上下文并不完整。&lt;/li&gt;
&lt;li&gt;回答缺少可靠引用，用户很难判断答案来自哪里。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;RAGFlow 的重点正好放在这些地方。项目 README 里强调了 &lt;code&gt;Deep document understanding&lt;/code&gt;、模板化切分、可视化 chunk、引用溯源和多路召回加重排。换句话说，它更关注“高质量数据进入，高质量答案出来”，而不是只把向量数据库和聊天框接起来。&lt;/p&gt;
&lt;h2 id=&#34;02-核心功能&#34;&gt;02 核心功能
&lt;/h2&gt;&lt;h3 id=&#34;1-深度文档理解&#34;&gt;1. 深度文档理解
&lt;/h3&gt;&lt;p&gt;RAGFlow 支持从复杂格式的非结构化数据中抽取知识。README 中列出的数据类型包括 Word、PPT、Excel、TXT、图片、扫描件、结构化数据、网页等。&lt;/p&gt;
&lt;p&gt;这对企业知识库很关键。真实资料通常不是干净的 Markdown，而是合同、报告、表格、扫描 PDF、产品手册、截图和网页混在一起。如果解析质量不够，后面的向量检索和 LLM 回答都会被拖垮。&lt;/p&gt;
&lt;h3 id=&#34;2-模板化切分&#34;&gt;2. 模板化切分
&lt;/h3&gt;&lt;p&gt;RAGFlow 提供模板化 chunking。它的价值在于：切分策略不是黑盒，可以根据文档类型选择更合适的方式。&lt;/p&gt;
&lt;p&gt;例如普通文章、论文、表格、问答文档、图片说明、合同条款，对 chunk 的粒度和边界要求都不一样。模板化切分可以减少“句子被切碎”“表格上下文丢失”“标题和正文分离”这类问题。&lt;/p&gt;
&lt;h3 id=&#34;3-可追溯引用&#34;&gt;3. 可追溯引用
&lt;/h3&gt;&lt;p&gt;RAGFlow 强调 grounded citations，也就是回答要能追溯到来源片段。它还提供 chunk 可视化，方便人工干预解析和切分结果。&lt;/p&gt;
&lt;p&gt;这点对生产环境尤其重要。企业内部问答不是只要“看起来像答案”，还要能查证来源。对于政策、合规、财务、技术文档、客户支持资料来说，引用和溯源几乎是刚需。&lt;/p&gt;
&lt;h3 id=&#34;4-自动化-rag-工作流&#34;&gt;4. 自动化 RAG 工作流
&lt;/h3&gt;&lt;p&gt;RAGFlow 把 RAG 流程做成相对完整的链路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建知识库&lt;/li&gt;
&lt;li&gt;上传或同步数据&lt;/li&gt;
&lt;li&gt;解析文档&lt;/li&gt;
&lt;li&gt;查看和干预 chunk&lt;/li&gt;
&lt;li&gt;配置 LLM 与 embedding 模型&lt;/li&gt;
&lt;li&gt;执行多路召回与重排&lt;/li&gt;
&lt;li&gt;构建聊天助手&lt;/li&gt;
&lt;li&gt;通过 API 集成到业务系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让它更像一个 RAG 平台，而不是一个单点库。对于团队来说，UI、可视化和 API 都有价值：非研发人员可以维护知识库，研发人员可以把能力接入已有系统。&lt;/p&gt;
&lt;h3 id=&#34;5-agentmcp-与工作流能力&#34;&gt;5. Agent、MCP 与工作流能力
&lt;/h3&gt;&lt;p&gt;RAGFlow 的近期更新里已经包含 Agentic workflow、MCP、Agent Memory、代码执行组件等内容。这说明它不只想做传统知识库问答，也在向 Agent 场景延伸。&lt;/p&gt;
&lt;p&gt;典型方向是：Agent 在执行任务时，可以把 RAGFlow 作为可靠的企业知识上下文层；需要查资料时从知识库召回，生成回答时保留引用，必要时再组合工具调用或工作流。&lt;/p&gt;
&lt;h2 id=&#34;03-基本使用流程&#34;&gt;03 基本使用流程
&lt;/h2&gt;&lt;p&gt;按照官方快速开始文档，RAGFlow 的常见使用路径可以概括为下面几步。&lt;/p&gt;
&lt;h3 id=&#34;1-准备运行环境&#34;&gt;1. 准备运行环境
&lt;/h3&gt;&lt;p&gt;官方 README 给出的基础要求是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU &amp;gt;= 4 cores&lt;/li&gt;
&lt;li&gt;RAM &amp;gt;= 16 GB&lt;/li&gt;
&lt;li&gt;Disk &amp;gt;= 50 GB&lt;/li&gt;
&lt;li&gt;Docker &amp;gt;= 24.0.0&lt;/li&gt;
&lt;li&gt;Docker Compose &amp;gt;= v2.26.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果要使用代码执行器的沙箱功能，还需要 &lt;code&gt;gVisor&lt;/code&gt;。另外要注意，官方 Docker 镜像主要面向 x86 平台；如果是 ARM64，需要按官方说明自行构建镜像。&lt;/p&gt;
&lt;h3 id=&#34;2-拉取项目&#34;&gt;2. 拉取项目
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/infiniflow/ragflow.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ragflow/docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-检查-vmmax_map_count&#34;&gt;3. 检查 &lt;code&gt;vm.max_map_count&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;RAGFlow 部署会依赖 Elasticsearch / OpenSearch 这类组件，因此 Linux 上通常需要确认：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl vm.max_map_count
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果数值低于 &lt;code&gt;262144&lt;/code&gt;，可以临时设置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w vm.max_map_count&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;262144&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果希望重启后仍然生效，需要写入 &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;4-使用-docker-compose-启动&#34;&gt;4. 使用 Docker Compose 启动
&lt;/h3&gt;&lt;p&gt;CPU 模式可以直接启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要用 GPU 加速 DeepDoc 任务，README 中给出的方式是在 &lt;code&gt;.env&lt;/code&gt; 中启用 &lt;code&gt;DEVICE=gpu&lt;/code&gt; 后再启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;1i DEVICE=gpu&amp;#39;&lt;/span&gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动后查看日志：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs -f docker-ragflow-cpu-1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看到服务启动完成后，再通过浏览器访问服务器地址。默认配置下，通常可以直接访问：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP_OF_YOUR_MACHINE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;5-配置模型-api-key&#34;&gt;5. 配置模型 API Key
&lt;/h3&gt;&lt;p&gt;RAGFlow 需要配置 LLM 和 embedding 模型。README 提到可以在 &lt;code&gt;service_conf.yaml.template&lt;/code&gt; 中选择默认 LLM factory，并更新对应的 &lt;code&gt;API_KEY&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;实际使用时，你需要根据自己的模型供应商配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;聊天模型&lt;/li&gt;
&lt;li&gt;embedding 模型&lt;/li&gt;
&lt;li&gt;rerank 模型&lt;/li&gt;
&lt;li&gt;多模态模型（如果要理解 PDF / DOCX 中的图片）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;6-创建知识库并上传文档&#34;&gt;6. 创建知识库并上传文档
&lt;/h3&gt;&lt;p&gt;服务启动后，典型操作是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录 Web UI。&lt;/li&gt;
&lt;li&gt;创建 dataset / knowledge base。&lt;/li&gt;
&lt;li&gt;上传文档或配置数据源同步。&lt;/li&gt;
&lt;li&gt;等待解析完成。&lt;/li&gt;
&lt;li&gt;查看 chunk 结果，必要时人工调整。&lt;/li&gt;
&lt;li&gt;创建聊天助手，选择知识库。&lt;/li&gt;
&lt;li&gt;测试问答效果和引用来源。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果要接入业务系统，可以继续使用 RAGFlow 的 API 或 SDK，把知识库检索和聊天能力接到自己的应用里。&lt;/p&gt;
&lt;h2 id=&#34;04-适合哪些场景&#34;&gt;04 适合哪些场景
&lt;/h2&gt;&lt;p&gt;RAGFlow 适合这些需求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企业内部知识库问答&lt;/li&gt;
&lt;li&gt;产品手册、技术文档、FAQ 检索&lt;/li&gt;
&lt;li&gt;客服助手和售前支持助手&lt;/li&gt;
&lt;li&gt;合同、报告、制度文件的可追溯问答&lt;/li&gt;
&lt;li&gt;多格式资料统一整理&lt;/li&gt;
&lt;li&gt;需要 UI 维护知识库，同时又要 API 集成的团队&lt;/li&gt;
&lt;li&gt;想把 RAG 能力作为 Agent 上下文层的系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它尤其适合文档格式复杂、需要引用溯源、希望人工干预解析结果的场景。&lt;/p&gt;
&lt;h2 id=&#34;05-使用时要注意什么&#34;&gt;05 使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，RAGFlow 不是轻量脚本。它对机器资源有要求，官方建议至少 4 核 CPU、16GB 内存和 50GB 磁盘。如果只是给少量 Markdown 做问答，可能没必要上这么完整的平台。&lt;/p&gt;
&lt;p&gt;第二，文档质量仍然重要。RAGFlow 能改善解析和切分，但不能让低质量、过期、互相矛盾的资料自动变得可靠。真正上线前，知识库治理仍然要做。&lt;/p&gt;
&lt;p&gt;第三，模型配置会直接影响效果。embedding、rerank、聊天模型、多模态模型的选择，都会影响召回和回答质量。RAGFlow 提供了工作流，但效果仍然要靠数据、模型和参数一起调。&lt;/p&gt;
&lt;p&gt;第四，生产环境要关注权限和数据安全。企业知识库里往往有内部资料，部署方式、访问控制、日志、API Key、模型供应商数据策略都要提前设计。&lt;/p&gt;
&lt;h2 id=&#34;06-简短判断&#34;&gt;06 简短判断
&lt;/h2&gt;&lt;p&gt;RAGFlow 的优势在于把 RAG 里最麻烦的部分做成了平台化能力：复杂文档解析、可解释切分、引用溯源、多路召回、重排、模型配置、Web UI、API 和 Agent 扩展。&lt;/p&gt;
&lt;p&gt;如果你要做的是可验证、可维护、可接入业务系统的企业知识库，RAGFlow 比“向量库 + 简单聊天 UI”的方案更完整。反过来，如果只是个人小规模资料问答，或者数据格式非常简单，轻量 RAG 框架可能更省资源。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/infiniflow/ragflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;官方文档：&lt;a class=&#34;link&#34; href=&#34;https://ragflow.io/docs/dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ragflow.io/docs/dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在线 Demo：&lt;a class=&#34;link&#34; href=&#34;https://cloud.ragflow.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cloud.ragflow.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Firecrawl 项目整理：给 AI Agent 用的网页搜索、抓取与交互 API</title>
        <link>https://knightli.com/2026/04/15/firecrawl-ai-web-data-api/</link>
        <pubDate>Wed, 15 Apr 2026 13:45:03 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/15/firecrawl-ai-web-data-api/</guid>
        <description>&lt;p&gt;&lt;code&gt;Firecrawl&lt;/code&gt; 的定位很明确：把网页变成 AI Agent 更容易消费的数据。它不是单纯的爬虫脚本，而是把搜索、单页抓取、整站遍历、页面交互、结构化抽取和 Agent 工作流封装成 API，让模型或自动化系统少处理网页里的噪声。&lt;/p&gt;
&lt;h2 id=&#34;01-它解决什么问题&#34;&gt;01 它解决什么问题
&lt;/h2&gt;&lt;p&gt;很多 AI 应用需要读网页，但真实网页并不友好：页面有 JavaScript 渲染、弹窗、分页、登录态、反爬限制、PDF 或 DOCX 等非 HTML 内容，还有大量和正文无关的导航、广告、脚本和样式。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Firecrawl&lt;/code&gt; 想解决的是中间层问题：应用只提出“我要这个页面/这个站点/这个主题的数据”，它负责把网页打开、抓取、清洗，再输出成更适合 LLM 使用的 Markdown、HTML、截图或 JSON。&lt;/p&gt;
&lt;p&gt;这类工具的价值不在于“能不能请求一个 URL”，而在于能不能稳定地把复杂网页处理成可用数据。对于 RAG、AI 搜索、竞品调研、自动化资料收集、网页内容监控来说，这一层很容易成为工程里的脏活。&lt;/p&gt;
&lt;h2 id=&#34;02-核心功能&#34;&gt;02 核心功能
&lt;/h2&gt;&lt;p&gt;Firecrawl README 里把能力分成几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Search&lt;/code&gt;：搜索网页，并返回结果页的完整内容。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Scrape&lt;/code&gt;：把单个 URL 转换成 Markdown、HTML、截图或结构化 JSON。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Interact&lt;/code&gt;：先抓取页面，再通过提示词或代码执行点击、滚动、输入、等待等操作。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent&lt;/code&gt;：直接描述你要找什么，由 Agent 自动搜索、导航并返回结果。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Crawl&lt;/code&gt;：抓取一个网站下的多页内容。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Map&lt;/code&gt;：快速发现一个网站中的 URL。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Batch Scrape&lt;/code&gt;：异步批量抓取大量 URL。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只看名字，它像是“爬虫服务”。但从功能组合看，它更接近 AI 应用的数据入口：搜索负责发现，抓取负责清洗，交互负责处理动态页面，Agent 负责把“找资料”这件事进一步自动化。&lt;/p&gt;
&lt;h2 id=&#34;03-为什么适合-ai-agent&#34;&gt;03 为什么适合 AI Agent
&lt;/h2&gt;&lt;p&gt;传统爬虫通常假设你已经知道 URL，也知道页面结构。但 Agent 场景经常不是这样：用户只会问一个任务，比如“找出某家公司最新价格页里的套餐差异”，系统需要自己搜索、打开页面、比较内容，再把来源带回来。&lt;/p&gt;
&lt;p&gt;Firecrawl 的 &lt;code&gt;Agent&lt;/code&gt; 接口正是为这类任务设计的。它可以只接收自然语言提示，也可以限制在指定 URL 范围内工作；如果需要结构化结果，还可以配合 schema 输出固定字段。&lt;/p&gt;
&lt;p&gt;这对应用层有两个好处：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不必为每个网站单独写解析器。&lt;/li&gt;
&lt;li&gt;返回结果更容易进入 LLM、数据库或后续自动化流程。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然，这并不意味着它能替代所有定制爬虫。对于强约束、高频、大规模、字段非常稳定的抓取任务，专门写解析逻辑仍然可能更便宜、更可控。Firecrawl 更适合网页来源多、页面结构变化大、需要快速接入 AI 工作流的场景。&lt;/p&gt;
&lt;h2 id=&#34;04-mcpcli-与集成&#34;&gt;04 MCP、CLI 与集成
&lt;/h2&gt;&lt;p&gt;Firecrawl 也明显在向 Agent 工具链靠拢。README 中提供了 MCP Server 的接入方式，也提供了面向 AI coding agent 的 Skill/CLI 初始化命令。&lt;/p&gt;
&lt;p&gt;这说明它不只是给后端服务调用，也希望直接进入 Claude Code、OpenCode、Antigravity、MCP 客户端等工作流。对于经常让 Agent 查资料、抓网页、整理内容的人来说，这种集成方式比手写 API 调用更轻。&lt;/p&gt;
&lt;p&gt;它还列出了 Zapier、n8n、Lovable 等平台集成。这个方向很实用：网页数据不一定只进代码，也可能进入自动化表格、低代码流程、内容生产系统或内部知识库。&lt;/p&gt;
&lt;h2 id=&#34;05-开源自托管与许可边界&#34;&gt;05 开源、自托管与许可边界
&lt;/h2&gt;&lt;p&gt;Firecrawl 是开源项目，主仓库以 &lt;code&gt;AGPL-3.0&lt;/code&gt; 为主；README 也说明 SDK 和部分 UI 组件使用 &lt;code&gt;MIT&lt;/code&gt; 许可，具体要看对应目录里的 LICENSE 文件。&lt;/p&gt;
&lt;p&gt;这点需要注意：如果只是使用它的云服务，主要关心 API 成本、稳定性和合规边界；如果准备自托管并对外提供服务，&lt;code&gt;AGPL-3.0&lt;/code&gt; 的义务就需要认真评估。&lt;/p&gt;
&lt;p&gt;README 还提醒用户要尊重网站政策、隐私政策和使用条款，并说明默认会遵守 &lt;code&gt;robots.txt&lt;/code&gt;。这类工具越强，越需要把合规和抓取边界写进系统设计里，而不是等上线后再补。&lt;/p&gt;
&lt;h2 id=&#34;06-适合哪些场景&#34;&gt;06 适合哪些场景
&lt;/h2&gt;&lt;p&gt;我会把 Firecrawl 放在这些场景里优先考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;给 RAG 系统抓取网页资料，并希望直接得到干净 Markdown。&lt;/li&gt;
&lt;li&gt;做 AI 搜索或研究助手，需要搜索后读取完整页面。&lt;/li&gt;
&lt;li&gt;抓取 JavaScript 较重的网站，不想自己维护浏览器集群。&lt;/li&gt;
&lt;li&gt;做竞品、价格、文档、新闻、招聘页等公开信息监控。&lt;/li&gt;
&lt;li&gt;给 MCP 客户端或 AI coding agent 增加实时网页读取能力。&lt;/li&gt;
&lt;li&gt;需要快速验证一个网页数据产品，而不是先搭一套爬虫基础设施。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合的情况也很清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目标网站字段极少、结构稳定，用简单脚本就能完成。&lt;/li&gt;
&lt;li&gt;抓取量巨大，成本比开发维护成本更敏感。&lt;/li&gt;
&lt;li&gt;业务对数据来源、重试策略、反爬行为和审计要求非常细。&lt;/li&gt;
&lt;li&gt;许可或合规要求不允许引入 AGPL 组件或外部云服务。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;07-简短判断&#34;&gt;07 简短判断
&lt;/h2&gt;&lt;p&gt;Firecrawl 的核心价值，是把“网页到 AI 可用数据”这段麻烦流程产品化。它把搜索、抓取、清洗、交互、批处理和 Agent 式资料收集放在同一套接口里，对 AI 应用开发者很省心。&lt;/p&gt;
&lt;p&gt;如果你的项目经常需要让模型读取真实网页，尤其是页面来源分散、结构不稳定、还要接入 MCP 或 Agent 工作流，Firecrawl 值得放进工具箱。反过来，如果任务只是固定网站的低成本批量采集，传统爬虫或专用解析器仍然更合适。&lt;/p&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 项目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/firecrawl/firecrawl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/firecrawl/firecrawl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI 视频录制：录屏、章节标记、Overlay 与调试对比</title>
        <link>https://knightli.com/2026/04/15/playwright-cli-video-recording/</link>
        <pubDate>Wed, 15 Apr 2026 08:22:45 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/15/playwright-cli-video-recording/</guid>
        <description>&lt;p&gt;如果你想把浏览器自动化过程录成视频，用来做调试、文档演示，或者作为执行结果留档，&lt;code&gt;Playwright CLI&lt;/code&gt; 已经提供了比较直接的方案。它输出的是 WebM 视频，编码为 VP8/VP9。&lt;/p&gt;
&lt;p&gt;这篇按官方 &lt;code&gt;video-recording&lt;/code&gt; 参考文档整理，重点包括基础录制流程、章节标记、整段 hero script 录制、Overlay API，以及 video 与 tracing 的区别。文中的命令行、代码片段与参数说明均按参考内容保留。&lt;/p&gt;
&lt;h2 id=&#34;01-基础录制流程&#34;&gt;01 基础录制流程
&lt;/h2&gt;&lt;p&gt;最基础的流程就是：先打开浏览器，再开始录制，执行操作，最后停止并保存。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open browser first&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Start recording&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-start demo.webm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add a chapter marker for section transitions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-chapter &lt;span class=&#34;s2&#34;&gt;&amp;#34;Getting Started&amp;#34;&lt;/span&gt; --description&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Opening the homepage&amp;#34;&lt;/span&gt; --duration&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Navigate and perform actions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli goto https://example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli click e1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add another chapter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-chapter &lt;span class=&#34;s2&#34;&gt;&amp;#34;Filling Form&amp;#34;&lt;/span&gt; --description&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Entering test data&amp;#34;&lt;/span&gt; --duration&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli fill e2 &lt;span class=&#34;s2&#34;&gt;&amp;#34;test input&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop and save&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这组命令已经覆盖了最常见的录制路径。&lt;code&gt;video-chapter&lt;/code&gt; 适合在不同阶段之间插入章节卡片，让录出来的视频更容易看懂。&lt;/p&gt;
&lt;h2 id=&#34;02-最佳实践&#34;&gt;02 最佳实践
&lt;/h2&gt;&lt;h3 id=&#34;1-使用更清晰的文件名&#34;&gt;1. 使用更清晰的文件名
&lt;/h3&gt;&lt;p&gt;如果视频是给别人看，或者后面还要回查，文件名最好直接带上场景和上下文。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Include context in filename&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-start recordings/login-flow-2024-01-15.webm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-start recordings/checkout-test-run-42.webm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-录制完整-hero-script&#34;&gt;2. 录制完整 hero script
&lt;/h3&gt;&lt;p&gt;官方建议：如果视频是要交付给用户，或者要作为 proof of work，最好把场景整理成一段代码，然后用 &lt;code&gt;run-code&lt;/code&gt; 执行。这样更容易控制动作节奏、停顿时机，以及视频里的标注效果。参考文档也特别提到，Playwright 新增了一些适合录制场景的 API。&lt;/p&gt;
&lt;p&gt;推荐流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 CLI 走一遍场景，并记下所有 locator 和 action。后面如果要做高亮，需要用这些 locator 去请求它们的 bounding box。&lt;/li&gt;
&lt;li&gt;为视频单独创建一个脚本文件，并按下面的方式编写。输入内容时用 &lt;code&gt;pressSequentially&lt;/code&gt; 配合 &lt;code&gt;delay&lt;/code&gt;，停顿时间也尽量安排得自然。&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;playwright-cli run-code --filename your-script.js&lt;/code&gt; 执行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Important: Overlays are &lt;code&gt;pointer-events: none&lt;/code&gt; — they do not interfere with page interactions. You can safely keep sticky overlays visible while clicking, filling, or performing any actions on the page.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;video.webm&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1280&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;800&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://demo.playwright.dev/todomvc&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Show a chapter card — blurs the page and shows a dialog.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Blocks until duration expires, then auto-removes.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Use this for simple use cases, but always feel free to hand-craft your own beautiful
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// overlay via await page.screencast.showOverlay().
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showChapter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Adding Todo Items&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;We will add several items to the todo list.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Perform action
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pressSequentially&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Walk the dog&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;press&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Enter&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForTimeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Show next chapter
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showChapter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Verifying Results&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Checking the item appeared in the list.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Add a sticky annotation that stays while you perform actions.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Overlays are pointer-events: none, so they won&amp;#39;t block clicks.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;annotation&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showOverlay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;div style=&amp;#34;position: absolute; top: 8px; right: 8px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      padding: 6px 12px; background: rgba(0,0,0,0.7);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      border-radius: 8px; font-size: 13px; color: white;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      ✓ Item added successfully
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;  `&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Perform more actions while the annotation is visible
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pressSequentially&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Buy groceries&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;press&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Enter&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForTimeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1500&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Remove the annotation when done
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;annotation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dispose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// You can also highlight relevant locators and provide contextual annotations.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Walk the dog&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;boundingBox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showOverlay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;div style=&amp;#34;position: absolute;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      top: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      left: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      width: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      height: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      border: 1px solid red;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;div style=&amp;#34;position: absolute;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      top: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      left: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      transform: translateX(-50%);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      padding: 6px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      background: #808080;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      border-radius: 10px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      font-size: 14px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      color: white;&amp;#34;&amp;gt;Check it out, it is right above this text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;  `&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这一段代码的重点不只是“录下来”，而是把视频做得更清楚：章节卡片负责分段，&lt;code&gt;pressSequentially&lt;/code&gt; 让输入动作更自然，&lt;code&gt;showOverlay&lt;/code&gt; 则可以做提示、高亮和说明。&lt;/p&gt;
&lt;p&gt;文档最后还补了一句：Embrace creativity, overlays are powerful.&lt;/p&gt;
&lt;h2 id=&#34;03-overlay-api-速览&#34;&gt;03 Overlay API 速览
&lt;/h2&gt;&lt;p&gt;录制视频时，Overlay API 很适合做章节切换、局部提示和持续注释。官方给出的摘要如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Method&lt;/th&gt;
          &lt;th&gt;Use Case&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;page.screencast.showChapter(title, { description?, duration?, styleSheet? })&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Full-screen chapter card with blurred backdrop — ideal for section transitions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;page.screencast.showOverlay(html, { duration? })&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Custom HTML overlay — use for callouts, labels, highlights&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;disposable.dispose()&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Remove a sticky overlay added without duration&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;page.screencast.hideOverlays()&lt;/code&gt; / &lt;code&gt;page.screencast.showOverlays()&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Temporarily hide/show all overlays&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的目标是把自动化过程做成“可观看的视频”，这一组 API 基本就是最值得优先掌握的部分。&lt;/p&gt;
&lt;h2 id=&#34;04-tracing-和-video-的区别&#34;&gt;04 Tracing 和 Video 的区别
&lt;/h2&gt;&lt;p&gt;官方文档把两者的定位区分得很清楚：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Feature&lt;/th&gt;
          &lt;th&gt;Video&lt;/th&gt;
          &lt;th&gt;Tracing&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Output&lt;/td&gt;
          &lt;td&gt;WebM file&lt;/td&gt;
          &lt;td&gt;Trace file (viewable in Trace Viewer)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Shows&lt;/td&gt;
          &lt;td&gt;Visual recording&lt;/td&gt;
          &lt;td&gt;DOM snapshots, network, console, actions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Use case&lt;/td&gt;
          &lt;td&gt;Demos, documentation&lt;/td&gt;
          &lt;td&gt;Debugging, analysis&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Size&lt;/td&gt;
          &lt;td&gt;Larger&lt;/td&gt;
          &lt;td&gt;Smaller&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;简单理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;video&lt;/code&gt; 更适合演示、交付和复盘“用户看到的过程”&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tracing&lt;/code&gt; 更适合排查问题、分析动作细节和查看执行上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两者并不是互相替代，而是各自服务于不同目标。&lt;/p&gt;
&lt;h2 id=&#34;05-使用限制&#34;&gt;05 使用限制
&lt;/h2&gt;&lt;p&gt;文档里也提醒了两个很实际的限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recording adds slight overhead to automation&lt;/li&gt;
&lt;li&gt;Large recordings can consume significant disk space&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，录制功能虽然很实用，但会给自动化流程增加一些开销；如果视频很长，磁盘占用也会明显上升。&lt;/p&gt;
&lt;h2 id=&#34;06-快速总结&#34;&gt;06 快速总结
&lt;/h2&gt;&lt;p&gt;如果只抓重点，可以记住下面几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;video-start&lt;/code&gt; / &lt;code&gt;video-stop&lt;/code&gt; 对应最基本的视频录制流程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;video-chapter&lt;/code&gt; 可以给视频加章节过渡，适合让演示更清晰&lt;/li&gt;
&lt;li&gt;更复杂的视频场景，适合写成脚本后用 &lt;code&gt;run-code&lt;/code&gt; 执行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;showOverlay&lt;/code&gt; 和 &lt;code&gt;showChapter&lt;/code&gt; 可以显著提升视频的可读性&lt;/li&gt;
&lt;li&gt;&lt;code&gt;video&lt;/code&gt; 适合演示，&lt;code&gt;tracing&lt;/code&gt; 适合调试，两者最好按目标选择&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你已经在用 &lt;code&gt;Playwright CLI&lt;/code&gt; 做自动化演示、验收留档或 proof of work，那么 &lt;code&gt;video recording&lt;/code&gt; 会是一块非常值得补上的能力。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI video-recording 参考文档：https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/video-recording.md&lt;/li&gt;
&lt;li&gt;Playwright CLI 项目主页：https://github.com/microsoft/playwright-cli&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI 会话管理：多浏览器会话、隔离、持久化与清理</title>
        <link>https://knightli.com/2026/04/15/playwright-cli-session-management/</link>
        <pubDate>Wed, 15 Apr 2026 08:15:12 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/15/playwright-cli-session-management/</guid>
        <description>&lt;p&gt;如果你在用 &lt;code&gt;Playwright CLI&lt;/code&gt; 做自动化，很快就会碰到一个实际问题：同一时间里，能不能开多个互不干扰的浏览器会话？答案是可以，而且 &lt;code&gt;Playwright CLI&lt;/code&gt; 已经把这套机制做得很直接。&lt;/p&gt;
&lt;p&gt;这篇就按照官方 &lt;code&gt;session-management&lt;/code&gt; 参考文档，整理它最实用的几部分：命名会话、会话隔离、持久化 profile、并发模式，以及常见清理命令。文中的命令行与命令块说明均按参考内容保留。&lt;/p&gt;
&lt;h2 id=&#34;01-命名浏览器会话&#34;&gt;01 命名浏览器会话
&lt;/h2&gt;&lt;p&gt;官方建议用 &lt;code&gt;-s&lt;/code&gt; 参数隔离不同浏览器上下文：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Browser 1: Authentication flow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;auth open https://app.example.com/login
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Browser 2: Public browsing (separate cookies, storage)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;public open https://example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Commands are isolated by browser session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;auth fill e1 &lt;span class=&#34;s2&#34;&gt;&amp;#34;user@example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;public snapshot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的重点是：不同 &lt;code&gt;session&lt;/code&gt; 名称对应不同浏览器上下文。你可以把 &lt;code&gt;auth&lt;/code&gt; 用在登录流程，把 &lt;code&gt;public&lt;/code&gt; 用在匿名访问，它们之间不会共用 cookies 或本地状态。&lt;/p&gt;
&lt;h2 id=&#34;02-浏览器会话隔离了什么&#34;&gt;02 浏览器会话隔离了什么
&lt;/h2&gt;&lt;p&gt;每个浏览器会话都会独立维护下面这些内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cookies&lt;/li&gt;
&lt;li&gt;LocalStorage / SessionStorage&lt;/li&gt;
&lt;li&gt;IndexedDB&lt;/li&gt;
&lt;li&gt;Cache&lt;/li&gt;
&lt;li&gt;Browsing history&lt;/li&gt;
&lt;li&gt;Open tabs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着如果你在 &lt;code&gt;auth&lt;/code&gt; 会话里登录了某个网站，并不会自动影响 &lt;code&gt;public&lt;/code&gt; 会话。做多账号测试、登录态验证、匿名对比时，这一点尤其重要。&lt;/p&gt;
&lt;h2 id=&#34;03-浏览器会话相关命令&#34;&gt;03 浏览器会话相关命令
&lt;/h2&gt;&lt;p&gt;官方文档把会话管理里最常用的一组命令放在了一起：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# List all browser sessions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop a browser session (close the browser)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close                 &lt;span class=&#34;c1&#34;&gt;# stop the default browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mysession close   &lt;span class=&#34;c1&#34;&gt;# stop a named browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop all browser sessions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Forcefully kill all daemon processes (for stale/zombie processes)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli kill-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Delete browser session user data (profile directory)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli delete-data              &lt;span class=&#34;c1&#34;&gt;# delete default browser data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mysession delete-data &lt;span class=&#34;c1&#34;&gt;# delete named browser data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以把它们理解成三类操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;list&lt;/code&gt;：看当前有哪些会话&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close&lt;/code&gt; / &lt;code&gt;close-all&lt;/code&gt; / &lt;code&gt;kill-all&lt;/code&gt;：结束会话或清理卡住的浏览器进程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete-data&lt;/code&gt;：删除某个会话对应的用户数据目录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是结束浏览器，通常先用 &lt;code&gt;close&lt;/code&gt;；如果已经出现残留进程或僵尸进程，再用 &lt;code&gt;kill-all&lt;/code&gt; 会更合适。&lt;/p&gt;
&lt;h2 id=&#34;04-用环境变量设置默认会话&#34;&gt;04 用环境变量设置默认会话
&lt;/h2&gt;&lt;p&gt;如果你不想每条命令都重复写 &lt;code&gt;-s=mysession&lt;/code&gt;，官方还提供了环境变量方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PLAYWRIGHT_CLI_SESSION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mysession&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open example.com  &lt;span class=&#34;c1&#34;&gt;# Uses &amp;#34;mysession&amp;#34; automatically&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样之后不显式指定 &lt;code&gt;-s&lt;/code&gt; 时，命令就会默认使用 &lt;code&gt;mysession&lt;/code&gt; 这个浏览器会话。&lt;/p&gt;
&lt;h2 id=&#34;05-常见模式并发抓取&#34;&gt;05 常见模式：并发抓取
&lt;/h2&gt;&lt;p&gt;参考文档给了一个很典型的并发抓取例子：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Scrape multiple sites concurrently&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Start all browsers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site1 open https://site1.com &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site2 open https://site2.com &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site3 open https://site3.com &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;wait&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Take snapshots from each&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site1 snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site2 snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site3 snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Cleanup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个模式适合同时打开多个站点，各自抓取页面状态，再统一清理。因为每个站点都跑在独立会话里，所以不会互相污染本地状态。&lt;/p&gt;
&lt;h2 id=&#34;06-常见模式ab-测试会话&#34;&gt;06 常见模式：A/B 测试会话
&lt;/h2&gt;&lt;p&gt;另一个常见场景，是同时对比不同实验版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Test different user experiences&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-a open &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://app.com?variant=a&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-b open &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://app.com?variant=b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Compare&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-a screenshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-b screenshot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种写法很适合做 A/B 页面差异对比，因为两个版本在独立会话里运行，截图和状态检查也更容易分开管理。&lt;/p&gt;
&lt;h2 id=&#34;07-持久化浏览器-profile&#34;&gt;07 持久化浏览器 profile
&lt;/h2&gt;&lt;p&gt;官方文档特别说明：默认情况下，浏览器 profile 只保存在内存里。&lt;/p&gt;
&lt;p&gt;如果你希望把浏览器 profile 持久化到磁盘，需要在 &lt;code&gt;open&lt;/code&gt; 时加上 &lt;code&gt;--persistent&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Use persistent profile (auto-generated location)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --persistent
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Use persistent profile with custom directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --profile&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/path/to/profile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个能力适合需要长期复用登录态、本地缓存或扩展调试环境的场景。尤其在反复调试同一站点时，持久化 profile 往往会比每次从零开始更高效。&lt;/p&gt;
&lt;h2 id=&#34;08-默认浏览器会话&#34;&gt;08 默认浏览器会话
&lt;/h2&gt;&lt;p&gt;如果没有显式传入 &lt;code&gt;-s&lt;/code&gt;，那么命令会使用默认浏览器会话：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# These use the same default browser session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close  &lt;span class=&#34;c1&#34;&gt;# Stops default browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是说，不带 &lt;code&gt;-s&lt;/code&gt; 的几条命令默认是在同一个默认会话里连续执行的。&lt;/p&gt;
&lt;h2 id=&#34;09-打开时附带会话配置&#34;&gt;09 打开时附带会话配置
&lt;/h2&gt;&lt;p&gt;除了会话名，官方也给出了几种常见的启动配置方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open with config file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --config&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;.playwright/my-cli.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open with specific browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --browser&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;firefox
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open in headed mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --headed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open with persistent profile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --persistent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些参数可以和会话管理一起配合使用。比如你可以让某个命名会话固定跑在 &lt;code&gt;firefox&lt;/code&gt;，或者让某个会话始终以 &lt;code&gt;headed&lt;/code&gt; 模式启动，方便人工观察。&lt;/p&gt;
&lt;h2 id=&#34;10-官方给出的最佳实践&#34;&gt;10 官方给出的最佳实践
&lt;/h2&gt;&lt;p&gt;参考文档列了三条很实用的最佳实践。&lt;/p&gt;
&lt;h3 id=&#34;1-用有语义的会话名&#34;&gt;1. 用有语义的会话名
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# GOOD: Clear purpose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;github-auth open https://github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;docs-scrape open https://docs.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# AVOID: Generic names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s1 open https://github.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;会话名最好能直接表达用途。像 &lt;code&gt;github-auth&lt;/code&gt;、&lt;code&gt;docs-scrape&lt;/code&gt; 这种名字，后面维护脚本时会清楚很多。&lt;/p&gt;
&lt;h3 id=&#34;2-用完及时清理&#34;&gt;2. 用完及时清理
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop browsers when done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;auth close
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;scrape close
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Or stop all at once&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# If browsers become unresponsive or zombie processes remain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli kill-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果任务结束后不关浏览器，会话和后台进程会一直留着。短期看问题不大，但任务一多，很容易把环境弄乱。&lt;/p&gt;
&lt;h3 id=&#34;3-删除陈旧浏览器数据&#34;&gt;3. 删除陈旧浏览器数据
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Remove old browser data to free disk space&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;oldsession delete-data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;当某些旧会话已经不用时，删除对应数据目录可以节省磁盘空间，也能避免后面误用过期状态。&lt;/p&gt;
&lt;h2 id=&#34;11-快速总结&#34;&gt;11 快速总结
&lt;/h2&gt;&lt;p&gt;如果只抓重点，可以记住下面这几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-s=&amp;lt;name&amp;gt;&lt;/code&gt; 用来创建并使用独立浏览器会话&lt;/li&gt;
&lt;li&gt;不同会话之间会隔离 cookies、各种存储、缓存、历史记录和标签页&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close-all&lt;/code&gt; 适合统一关闭，&lt;code&gt;kill-all&lt;/code&gt; 适合处理异常残留进程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--persistent&lt;/code&gt; 用来把 profile 落盘，适合长期复用状态&lt;/li&gt;
&lt;li&gt;会话名尽量语义化，旧数据定期清理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的工作流里已经有登录态复用、多账号并行、A/B 对比或批量抓取需求，那么 &lt;code&gt;session management&lt;/code&gt; 基本就是 &lt;code&gt;Playwright CLI&lt;/code&gt; 里最值得先掌握的一块能力。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI session-management 参考文档：https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/session-management.md&lt;/li&gt;
&lt;li&gt;Playwright CLI 项目主页：https://github.com/microsoft/playwright-cli&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI storage state 用法：保存登录态、读取 Cookies 与本地存储</title>
        <link>https://knightli.com/2026/04/14/playwright-cli-storage-state-commands/</link>
        <pubDate>Tue, 14 Apr 2026 22:19:55 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/14/playwright-cli-storage-state-commands/</guid>
        <description>&lt;p&gt;如果你用 &lt;code&gt;Playwright CLI&lt;/code&gt; 做浏览器自动化，&lt;code&gt;storage state&lt;/code&gt; 基本就是最常用的能力之一。它的作用很直接：把当前浏览器里的登录态和本地状态保存下来，后面继续复用，避免每次都重新登录。&lt;/p&gt;
&lt;h2 id=&#34;01-保存当前-storage-state&#34;&gt;01 保存当前 storage state
&lt;/h2&gt;&lt;p&gt;最常见的场景，就是先登录一次，再把当前状态导出到文件。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli storage-state save auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这条命令会把当前浏览器上下文中的状态保存到 &lt;code&gt;auth.json&lt;/code&gt;。后面如果想复用登录态，通常就是从这一步开始。&lt;/p&gt;
&lt;h2 id=&#34;02-加载已有-storage-state&#34;&gt;02 加载已有 storage state
&lt;/h2&gt;&lt;p&gt;已经有状态文件后，可以在启动时直接加载。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --storage-state auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它会用 &lt;code&gt;auth.json&lt;/code&gt; 里的状态启动浏览器上下文。常见用途就是跳过重复登录，直接进入已登录环境。&lt;/p&gt;
&lt;h2 id=&#34;03-查看当前-cookies&#34;&gt;03 查看当前 cookies
&lt;/h2&gt;&lt;p&gt;如果你只是想确认当前会话里到底有哪些 cookies，可以直接查看。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli cookies
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这条命令会列出当前上下文中的 cookies。适合排查登录态是否存在、cookie 是否写入成功。&lt;/p&gt;
&lt;h2 id=&#34;04-设置-cookies&#34;&gt;04 设置 cookies
&lt;/h2&gt;&lt;p&gt;如果你已经有 cookie 数据，也可以直接写入。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli cookies &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;[{&amp;#34;name&amp;#34;:&amp;#34;session&amp;#34;,&amp;#34;value&amp;#34;:&amp;#34;abc&amp;#34;,&amp;#34;domain&amp;#34;:&amp;#34;example.com&amp;#34;,&amp;#34;path&amp;#34;:&amp;#34;/&amp;#34;}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个用法适合调试鉴权、复现特定会话，或者在脚本前手动注入 cookie 条件。&lt;/p&gt;
&lt;h2 id=&#34;05-读取-localstorage&#34;&gt;05 读取 localStorage
&lt;/h2&gt;&lt;p&gt;有些站点的登录态或前端状态不只在 cookies 里，也会放在 &lt;code&gt;localStorage&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli local-storage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这条命令用于查看当前页面的 &lt;code&gt;localStorage&lt;/code&gt; 内容。排查“明明像是登录了，但页面行为不对”时，这一步很有用。&lt;/p&gt;
&lt;h2 id=&#34;06-写入-localstorage&#34;&gt;06 写入 localStorage
&lt;/h2&gt;&lt;p&gt;如果需要模拟某些前端状态，也可以直接设置。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli local-storage &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; token abc123
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它会把指定键值写入 &lt;code&gt;localStorage&lt;/code&gt;。常见用途是注入 token、偏好配置或某些前端开关。&lt;/p&gt;
&lt;h2 id=&#34;07-读取-sessionstorage&#34;&gt;07 读取 sessionStorage
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sessionStorage&lt;/code&gt; 适合看当前会话里的临时状态。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli session-storage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这条命令会输出当前页面的 &lt;code&gt;sessionStorage&lt;/code&gt;。如果某个页面逻辑依赖一次性会话数据，可以从这里检查。&lt;/p&gt;
&lt;h2 id=&#34;08-写入-sessionstorage&#34;&gt;08 写入 sessionStorage
&lt;/h2&gt;&lt;p&gt;需要时，也可以手动设置 &lt;code&gt;sessionStorage&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli session-storage &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; key value
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它适合复现某些依赖临时状态的页面行为，或者补齐初始化步骤需要的字段。&lt;/p&gt;
&lt;h2 id=&#34;09-查看-indexeddb&#34;&gt;09 查看 IndexedDB
&lt;/h2&gt;&lt;p&gt;对于更重的 Web 应用，真正关键的数据可能在 &lt;code&gt;IndexedDB&lt;/code&gt; 里。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli indexed-db
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这条命令用于查看当前页面的 &lt;code&gt;IndexedDB&lt;/code&gt; 数据。遇到复杂单页应用、离线缓存或本地数据库式状态时，可以优先检查这里。&lt;/p&gt;
&lt;h2 id=&#34;10-一个最实用的工作流&#34;&gt;10 一个最实用的工作流
&lt;/h2&gt;&lt;p&gt;如果你只是想稳定复用登录态，最简单的流程通常是这样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先打开站点并手动完成登录。&lt;/li&gt;
&lt;li&gt;执行下面这条命令保存状态：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli storage-state save auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;后续运行时直接加载：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --storage-state auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果加载后页面还是异常，再继续检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;playwright-cli cookies&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playwright-cli local-storage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playwright-cli session-storage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playwright-cli indexed-db&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个顺序已经能覆盖大部分“状态没恢复完整”的问题。&lt;/p&gt;
&lt;h2 id=&#34;11-使用时要注意什么&#34;&gt;11 使用时要注意什么
&lt;/h2&gt;&lt;p&gt;有三点最值得注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;storage state&lt;/code&gt; 文件本质上是敏感数据，里面可能包含登录 cookie 或 token，不要随便提交到仓库。&lt;/li&gt;
&lt;li&gt;只恢复 cookies 不一定够，很多现代站点还依赖 &lt;code&gt;localStorage&lt;/code&gt;、&lt;code&gt;sessionStorage&lt;/code&gt; 或 &lt;code&gt;IndexedDB&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;状态文件不是永久有效，cookie 过期、账户变更或环境切换后，通常都要重新生成。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;12-快速总结&#34;&gt;12 快速总结
&lt;/h2&gt;&lt;p&gt;如果只记一句话：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;Playwright CLI&lt;/code&gt; 的 &lt;code&gt;storage state&lt;/code&gt;，就是把浏览器当前状态保存下来，再在后续任务里继续用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而在实际排查里，最常用的一组命令就是这些：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli storage-state save auth.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --storage-state auth.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli cookies
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli local-storage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli session-storage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli indexed-db
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;先保存，再加载；如果不对，再分层检查 cookies 和各类本地存储，基本就是这份参考文档最实用的部分。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI storage-state 参考文档：https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/storage-state.md&lt;/li&gt;
&lt;li&gt;Playwright CLI 项目主页：https://github.com/microsoft/playwright-cli&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenHarness 是什么：这个开源 Agent Harness 能做什么</title>
        <link>https://knightli.com/2026/04/12/openharness-basic-functions/</link>
        <pubDate>Sun, 12 Apr 2026 23:45:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/12/openharness-basic-functions/</guid>
        <description>&lt;p&gt;如果你最近在关注开源 AI Agent 工具，&lt;code&gt;HKUDS/OpenHarness&lt;/code&gt; 是一个很值得留意的新项目。它不是单纯再做一个“会聊天的外壳”，而是把一个可运行、可扩展、可治理的 Agent 基础设施单独抽出来，做成了一个开源的 &lt;strong&gt;Agent Harness&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;按照官方 README 的说法，OpenHarness 主要提供的是一整套轻量级 Agent 基础能力，包括工具调用、技能加载、记忆机制、权限治理和多 Agent 协调；而它附带的 &lt;code&gt;ohmo&lt;/code&gt;，则是建立在这套基础设施之上的个人 AI 助手应用。&lt;/p&gt;
&lt;h2 id=&#34;01-openharness-是什么&#34;&gt;01 OpenHarness 是什么
&lt;/h2&gt;&lt;p&gt;可以把 OpenHarness 理解成“给大模型装上手脚、记忆和边界”的运行层。&lt;/p&gt;
&lt;p&gt;大模型本身擅长推理和生成，但如果你想让它真正成为一个可以长期工作的 Agent，通常还需要这些外围能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;调工具，而不是只输出文字&lt;/li&gt;
&lt;li&gt;读写文件、执行命令、访问搜索和网页能力&lt;/li&gt;
&lt;li&gt;在长会话里保留上下文和记忆&lt;/li&gt;
&lt;li&gt;对危险操作做权限控制&lt;/li&gt;
&lt;li&gt;把大任务拆给多个子 Agent 并行处理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenHarness 的目标，就是把这部分“围绕模型的工程层”做成一个清晰、开源、可检查的 Python 实现。它更像一个 Agent 操作底座，而不是单独强调某一种模型或某一个聊天界面。&lt;/p&gt;
&lt;h2 id=&#34;02-这个项目的基本功能&#34;&gt;02 这个项目的基本功能
&lt;/h2&gt;&lt;p&gt;从当前 GitHub 首页和 README 来看，OpenHarness 的核心能力主要集中在下面几块。&lt;/p&gt;
&lt;h3 id=&#34;1-agent-loop&#34;&gt;1. Agent Loop
&lt;/h3&gt;&lt;p&gt;这是 Agent 能连续工作的核心执行循环。官方列出的重点包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;流式工具调用循环&lt;/li&gt;
&lt;li&gt;API 重试和指数退避&lt;/li&gt;
&lt;li&gt;并行工具执行&lt;/li&gt;
&lt;li&gt;Token 统计和成本追踪&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这部分的意义在于，Agent 不只是“一问一答”，而是可以在一次任务里连续观察、思考、调用工具、读取结果、再继续下一步。&lt;/p&gt;
&lt;h3 id=&#34;2-工具skills-和插件体系&#34;&gt;2. 工具、Skills 和插件体系
&lt;/h3&gt;&lt;p&gt;OpenHarness 把工具层做得比较完整。项目主页提到它已经内置了文件、Shell、搜索、网页、MCP 等多类工具，并支持按需加载 Markdown 技能文件。&lt;/p&gt;
&lt;p&gt;它的价值不只是“工具多”，更重要的是组合方式比较开放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以直接使用内置工具&lt;/li&gt;
&lt;li&gt;可以按任务加载 skills&lt;/li&gt;
&lt;li&gt;可以通过插件扩展 hooks、skills 和 agents&lt;/li&gt;
&lt;li&gt;兼容 &lt;code&gt;anthropics/skills&lt;/code&gt; 与相关插件生态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你希望把某些固定流程沉淀成可复用能力，而不是每次都靠 prompt 临时描述，这一层会很有用。&lt;/p&gt;
&lt;h3 id=&#34;3-上下文与记忆&#34;&gt;3. 上下文与记忆
&lt;/h3&gt;&lt;p&gt;这部分是 OpenHarness 很重要的差异点。官方给出的关键词包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 发现与注入&lt;/li&gt;
&lt;li&gt;自动上下文压缩&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MEMORY.md&lt;/code&gt; 持久记忆&lt;/li&gt;
&lt;li&gt;会话恢复与历史延续&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着它不只是处理当前这一轮输入，而是会尽量把“项目约定”“历史任务”“长期偏好”保留下来，让 Agent 更适合持续工作，而不是每次从零开始。&lt;/p&gt;
&lt;h3 id=&#34;4-权限治理与安全边界&#34;&gt;4. 权限治理与安全边界
&lt;/h3&gt;&lt;p&gt;Agent 真正进入文件系统、终端和网络之后，治理就非常关键。OpenHarness 在这部分提供了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多级权限模式&lt;/li&gt;
&lt;li&gt;基于路径和命令的规则控制&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PreToolUse&lt;/code&gt; / &lt;code&gt;PostToolUse&lt;/code&gt; hooks&lt;/li&gt;
&lt;li&gt;交互式审批弹窗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，它不只是让 Agent “能做事”，也考虑了“哪些事能直接做，哪些事必须先经过确认”。&lt;/p&gt;
&lt;h3 id=&#34;5-多-agent-协调&#34;&gt;5. 多 Agent 协调
&lt;/h3&gt;&lt;p&gt;OpenHarness 还支持把任务拆给子 Agent 处理。当前公开资料里提到的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;子 Agent 创建与委派&lt;/li&gt;
&lt;li&gt;团队注册与任务管理&lt;/li&gt;
&lt;li&gt;后台任务生命周期管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对复杂任务来说，这意味着它可以不只靠一个 Agent 串行推进，而是尝试做并行协作。&lt;/p&gt;
&lt;h3 id=&#34;6-多-provider-工作流&#34;&gt;6. 多 Provider 工作流
&lt;/h3&gt;&lt;p&gt;OpenHarness 当前并不把 provider 只当成一个底层 API 名称，而是抽象成 workflow + profile。根据 README，当前支持的方向包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude / Anthropic-compatible&lt;/li&gt;
&lt;li&gt;OpenAI-compatible&lt;/li&gt;
&lt;li&gt;Codex Subscription&lt;/li&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Moonshot(Kimi)、GLM、MiniMax 等兼容后端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让它更像一个“多模型、多入口”的 Agent 运行框架，而不是绑定某一家服务商。&lt;/p&gt;
&lt;h3 id=&#34;7-react-tui-与非交互模式&#34;&gt;7. React TUI 与非交互模式
&lt;/h3&gt;&lt;p&gt;OpenHarness 自带终端交互界面，运行 &lt;code&gt;oh&lt;/code&gt; 后可以进入 React/Ink TUI。官方 README 提到它支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;命令选择器&lt;/li&gt;
&lt;li&gt;权限确认&lt;/li&gt;
&lt;li&gt;模型切换&lt;/li&gt;
&lt;li&gt;Provider 切换&lt;/li&gt;
&lt;li&gt;会话恢复&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你不想进入交互界面，也可以用非交互模式直接执行单次任务，例如把结果输出到标准输出、JSON 或流式 JSON，适合脚本化和自动化场景。&lt;/p&gt;
&lt;h2 id=&#34;03-ohmo-是什么&#34;&gt;03 &lt;code&gt;ohmo&lt;/code&gt; 是什么
&lt;/h2&gt;&lt;p&gt;如果说 OpenHarness 是底层基础设施，&lt;code&gt;ohmo&lt;/code&gt; 就是建立在这套基础设施之上的“个人 Agent 应用”。&lt;/p&gt;
&lt;p&gt;项目首页对 &lt;code&gt;ohmo&lt;/code&gt; 的定位很明确：它不是普通聊天机器人，而是一个可以在长会话里持续工作的个人助手。官方描述里提到，它可以在 Feishu、Slack、Telegram、Discord 等渠道里与你交互，并执行诸如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fork 分支&lt;/li&gt;
&lt;li&gt;写代码&lt;/li&gt;
&lt;li&gt;跑测试&lt;/li&gt;
&lt;li&gt;发起 PR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外，README 还特别强调：&lt;code&gt;ohmo&lt;/code&gt; 可以运行在你现有的 Claude Code 或 Codex 订阅之上，不一定要求额外申请新的 API key。对已经在使用这些订阅工具的人来说，这一点门槛比较低。&lt;/p&gt;
&lt;h2 id=&#34;04-它适合什么场景&#34;&gt;04 它适合什么场景
&lt;/h2&gt;&lt;p&gt;从这个项目当前公开出来的能力看，OpenHarness 比较适合下面几类人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究生产级 Agent 到底由哪些基础模块组成&lt;/li&gt;
&lt;li&gt;想自己搭建一个可扩展的开源 Agent 运行层&lt;/li&gt;
&lt;li&gt;想把工具、技能、记忆、权限、多 Agent 协调放到同一个框架里&lt;/li&gt;
&lt;li&gt;不希望被单一模型厂商或单一客户端形态绑定&lt;/li&gt;
&lt;li&gt;想基于现成架构继续做垂直领域 Agent 或个人助手&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目标只是“找一个能直接聊天的成品助手”，那 OpenHarness 本体可能不是最轻量的选择；但如果你更关心 Agent 基础设施、工程可控性和后续扩展，这个项目就很值得研究。&lt;/p&gt;
&lt;h2 id=&#34;05-快速理解它的定位&#34;&gt;05 快速理解它的定位
&lt;/h2&gt;&lt;p&gt;一句话总结：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenHarness 负责把大模型变成真正可执行任务的 Agent，&lt;code&gt;ohmo&lt;/code&gt; 负责把这套能力包装成一个可以长期陪你工作的个人助手。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;也可以把它拆成两层来看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenHarness：开源 Agent Harness，本质是基础设施&lt;/li&gt;
&lt;li&gt;ohmo：基于这套基础设施构建的 personal-agent app&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;截至 &lt;strong&gt;2026 年 4 月 12 日&lt;/strong&gt;，项目 GitHub 首页显示它的更新已经推进到 &lt;strong&gt;v0.1.6（2026 年 4 月 10 日）&lt;/strong&gt;，重点继续放在自动上下文压缩、MCP 传输能力、React TUI 和多 Agent 运行稳定性上。这说明它目前仍处于快速演进阶段，但方向已经非常清晰。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 项目主页：https://github.com/HKUDS/OpenHarness&lt;/li&gt;
&lt;li&gt;英文 README：https://github.com/HKUDS/OpenHarness/blob/main/README.md&lt;/li&gt;
&lt;li&gt;中文 README：https://github.com/HKUDS/OpenHarness/blob/main/README.zh-CN.md&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI 使用入门：安装、Skills、会话管理与常用命令</title>
        <link>https://knightli.com/2026/04/12/playwright-cli-getting-started/</link>
        <pubDate>Sun, 12 Apr 2026 14:36:58 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/12/playwright-cli-getting-started/</guid>
        <description>&lt;p&gt;如果你最近在用 Claude Code、GitHub Copilot 或其他 coding agent 做浏览器自动化，&lt;code&gt;microsoft/playwright-cli&lt;/code&gt; 是一个很值得关注的新工具。它不是传统意义上那个“给人手动敲命令用”的浏览器小工具，而是一个面向 coding agent 的 Playwright CLI，强调的是更低 token 开销、更轻量的命令接口，以及和 Skills 工作流的结合。&lt;/p&gt;
&lt;p&gt;从官方 README 来看，Playwright CLI 的核心思路很明确：相比 MCP 把大量工具 schema 和页面结构塞进模型上下文，CLI 命令方式更紧凑，更适合在大代码库、测试任务和浏览器自动化之间来回切换的 agent 工作流。&lt;/p&gt;
&lt;h2 id=&#34;01-playwright-cli-是什么&#34;&gt;01 Playwright CLI 是什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;playwright-cli&lt;/code&gt; 是微软开源的一个 Playwright 命令行工具，官方描述是 “CLI for common Playwright actions”。它主要用来完成这些事情：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开页面并驱动浏览器&lt;/li&gt;
&lt;li&gt;记录和生成 Playwright 代码&lt;/li&gt;
&lt;li&gt;抓取页面快照，获取元素引用&lt;/li&gt;
&lt;li&gt;截图、导出 PDF&lt;/li&gt;
&lt;li&gt;配合 coding agent 进行自动化测试和网页操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当前 GitHub README 里把它定位得非常明确：如果你正在使用 coding agents，CLI 往往比 Playwright MCP 更合适；如果你更需要持久状态、丰富 introspection 和长时间 agentic loop，MCP 仍然有它的价值。&lt;/p&gt;
&lt;p&gt;换句话说，Playwright CLI 更像“给 AI 编码助手准备的浏览器自动化接口”，而不只是给人类工程师手动点击网页的工具。&lt;/p&gt;
&lt;h2 id=&#34;02-它的优点在哪里&#34;&gt;02 它的优点在哪里
&lt;/h2&gt;&lt;h3 id=&#34;1-更适合-agent-工作流&#34;&gt;1. 更适合 agent 工作流
&lt;/h3&gt;&lt;p&gt;官方 README 把第一优点直接写成了 &lt;code&gt;Token-efficient&lt;/code&gt;。它不会强制把整页数据都塞进 LLM 上下文，而是通过更短、更专用的命令让 agent 操作浏览器。&lt;/p&gt;
&lt;p&gt;这对 coding agent 很重要。因为在真实项目里，agent 不只是跑浏览器，还要看代码、改文件、跑测试、读日志。如果浏览器工具本身就很“吃上下文”，整体效率会明显下降。&lt;/p&gt;
&lt;h3 id=&#34;2-能和-skills-一起工作&#34;&gt;2. 能和 Skills 一起工作
&lt;/h3&gt;&lt;p&gt;README 里专门强调了 &lt;code&gt;playwright-cli install --skills&lt;/code&gt;。这说明官方不是把它当单纯的 shell 工具来做，而是把它设计成可以被 Claude Code、GitHub Copilot 等 agent 直接消费的技能入口。&lt;/p&gt;
&lt;p&gt;如果你的工作流本身就建立在 Skills 之上，那 Playwright CLI 的接入会更自然。&lt;/p&gt;
&lt;h3 id=&#34;3-会话管理做得比较完整&#34;&gt;3. 会话管理做得比较完整
&lt;/h3&gt;&lt;p&gt;Playwright CLI 支持 session。默认情况下，浏览器 profile 保存在内存里，同一个 session 里的 cookies 和 storage 会在多次 CLI 调用之间保留；如果加上 &lt;code&gt;--persistent&lt;/code&gt;，还可以把 profile 落到磁盘，跨浏览器重启继续使用。&lt;/p&gt;
&lt;p&gt;这让它比“一条命令打开浏览器，跑完就丢”的玩具型工具更实用，也更适合持续调试和 agent 长流程执行。&lt;/p&gt;
&lt;h3 id=&#34;4-自带可视化监控面板&#34;&gt;4. 自带可视化监控面板
&lt;/h3&gt;&lt;p&gt;README 里提供了 &lt;code&gt;playwright-cli show&lt;/code&gt;，用于打开一个 dashboard，观察和控制所有运行中的浏览器 session。对于 agent 在后台跑自动化任务的场景，这一点很有价值，因为你可以随时接管、观察、排错，而不是只能盲跑。&lt;/p&gt;
&lt;h2 id=&#34;03-安装与环境要求&#34;&gt;03 安装与环境要求
&lt;/h2&gt;&lt;p&gt;根据当前 GitHub README，Playwright CLI 的基本要求是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18 或更高版本&lt;/li&gt;
&lt;li&gt;Claude Code、GitHub Copilot 或其他 coding agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装命令如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @playwright/cli@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里有个很容易踩坑的地方要特别注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方当前推荐安装的是 &lt;code&gt;@playwright/cli&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不要把它和 npm 上历史遗留、已废弃的旧包 &lt;code&gt;playwright-cli&lt;/code&gt; 混为一谈&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，真正应该装的是 scoped package，而不是旧时代的同名历史包。&lt;/p&gt;
&lt;h2 id=&#34;04-如何开始用&#34;&gt;04 如何开始用
&lt;/h2&gt;&lt;h3 id=&#34;1-安装-skills&#34;&gt;1. 安装 skills
&lt;/h3&gt;&lt;p&gt;如果你希望让 coding agent 直接使用 Playwright CLI，官方建议先安装 skills：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli install --skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;README 里明确写到，Claude Code、GitHub Copilot 等工具会使用本地安装的 skills。&lt;/p&gt;
&lt;h3 id=&#34;2-直接让-agent-调用-cli&#34;&gt;2. 直接让 agent 调用 CLI
&lt;/h3&gt;&lt;p&gt;如果你不想先处理 skills，也可以直接让 agent 读取 CLI 帮助信息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Test the &amp;#34;add todo&amp;#34; flow on https://demo.playwright.dev/todomvc using playwright-cli.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Check playwright-cli --help for available commands.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方把这种方式叫做 “Skills-less operation”。意思是即使不预先装 skill，也可以通过 CLI 自描述能力来驱动 agent。&lt;/p&gt;
&lt;h3 id=&#34;3-手动体验一遍最小流程&#34;&gt;3. 手动体验一遍最小流程
&lt;/h3&gt;&lt;p&gt;README 里给了一组很适合上手的 TodoMVC 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://demo.playwright.dev/todomvc/ --headed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Buy groceries&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli press Enter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Water flowers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli press Enter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli check e21
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli check e35
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli screenshot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这组命令的价值在于，它能让你很快理解 Playwright CLI 的交互方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;open&lt;/code&gt; 负责打开页面&lt;/li&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt; 和 &lt;code&gt;press&lt;/code&gt; 负责输入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;check&lt;/code&gt; 用元素引用操作复选框&lt;/li&gt;
&lt;li&gt;&lt;code&gt;screenshot&lt;/code&gt; 保存结果&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;05---headedsession-和监控面板&#34;&gt;05 &lt;code&gt;--headed&lt;/code&gt;、session 和监控面板
&lt;/h2&gt;&lt;h3 id=&#34;--headed&#34;&gt;&lt;code&gt;--headed&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Playwright CLI 默认是 headless 的。如果你想直接看到浏览器窗口，需要在 &lt;code&gt;open&lt;/code&gt; 时显式加上 &lt;code&gt;--headed&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://playwright.dev --headed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这对于调试选择器、登录流程、验证码前后的交互观察会更方便。&lt;/p&gt;
&lt;h3 id=&#34;session&#34;&gt;session
&lt;/h3&gt;&lt;p&gt;官方 README 里强调了 session 的用法。你可以用不同 session 把不同项目或网站隔离开来：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://playwright.dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;example open https://example.com --persistent
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你是让 agent 长时间工作，还可以直接给它指定环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PLAYWRIGHT_CLI_SESSION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;todo-app claude .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常用的 session 管理命令包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli kill-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;list&lt;/code&gt; 用来列出所有 session&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close-all&lt;/code&gt; 用来正常关闭所有浏览器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kill-all&lt;/code&gt; 用来强制杀掉所有浏览器进程&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;监控面板&#34;&gt;监控面板
&lt;/h3&gt;&lt;p&gt;如果你想看 agent 当前到底在浏览器里做了什么，可以运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli show
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按照 README 的说明，这个 dashboard 主要有两种视图：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Session grid：按 workspace 查看所有活动 session，带实时画面、URL 和页面标题&lt;/li&gt;
&lt;li&gt;Session detail：查看单个 session 的实时界面，还能接管鼠标和键盘&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这让 Playwright CLI 不只是“命令行可用”，而是具备了比较成熟的可观测性。&lt;/p&gt;
&lt;h2 id=&#34;06-常用命令先记住哪些&#34;&gt;06 常用命令先记住哪些
&lt;/h2&gt;&lt;p&gt;如果你第一次接触 Playwright CLI，不需要一开始就把所有命令背下来。先记下面这些最核心的就够了：&lt;/p&gt;
&lt;h3 id=&#34;页面与交互&#34;&gt;页面与交互
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;url&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli goto &amp;lt;url&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli click &amp;lt;ref&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli fill &amp;lt;ref&amp;gt; &amp;lt;text&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; &amp;lt;text&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli hover &amp;lt;ref&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli press &amp;lt;key&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;获取页面结构&#34;&gt;获取页面结构
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot &amp;lt;ref&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot --depth&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;N
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt; &amp;lt;func&amp;gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ref&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;snapshot&lt;/code&gt; 很关键，因为很多后续操作都依赖元素引用 &lt;code&gt;ref&lt;/code&gt;。你通常会先抓一次快照，再用返回的元素编号去点、填、勾选或截图。&lt;/p&gt;
&lt;h3 id=&#34;输出结果&#34;&gt;输出结果
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli screenshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;标签页&#34;&gt;标签页
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-new &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;url&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-close &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;index&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-select &amp;lt;index&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;07-它适合谁&#34;&gt;07 它适合谁
&lt;/h2&gt;&lt;p&gt;如果你属于下面这些场景，Playwright CLI 会很值得试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你在用 Claude Code、Copilot 或其他 coding agent 做 E2E 测试&lt;/li&gt;
&lt;li&gt;你希望浏览器自动化接口更轻量，不想把大量页面结构塞进上下文&lt;/li&gt;
&lt;li&gt;你希望同一个浏览器 session 能跨多次命令持续存在&lt;/li&gt;
&lt;li&gt;你想在 agent 自动跑网页任务时，随时打开监控面板观察进度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的工作重点是“浏览器自动化如何与 coding agent 高效配合”，Playwright CLI 很可能会比传统的人类手动调试方式更顺手。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/microsoft/playwright-cli&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/microsoft/playwright-cli/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent 是什么：简介、优点、快速上手与 OpenClaw 对比</title>
        <link>https://knightli.com/2026/04/12/hermes-agent-intro-guide-vs-openclaw/</link>
        <pubDate>Sun, 12 Apr 2026 14:07:58 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/12/hermes-agent-intro-guide-vs-openclaw/</guid>
        <description>&lt;p&gt;如果你最近在关注开源 AI Agent，&lt;code&gt;Hermes Agent&lt;/code&gt; 是一个很值得看一眼的新项目。它由 Nous Research 推出，核心卖点不是“再做一个聊天壳子”，而是把长期记忆、技能沉淀、上下文文件、MCP 扩展、消息网关和子代理并行这些能力，尽量收敛进一个统一的 agent 运行环境里。&lt;/p&gt;
&lt;p&gt;从官方 README 的表述看，Hermes Agent 的目标很明确：它既可以像本地 CLI 助手一样在终端里工作，也可以像一个常驻云端的个人助理一样，通过 Telegram、Discord、Slack、WhatsApp、Signal 等渠道和你持续对话。对于希望把“代码助手”“自动化助手”“个人 AI 工作台”合并到一个系统里的用户来说，这个定位是很有吸引力的。&lt;/p&gt;
&lt;h2 id=&#34;01-hermes-agent-简介&#34;&gt;01 Hermes Agent 简介
&lt;/h2&gt;&lt;p&gt;Hermes Agent 是 Nous Research 开源的自改进型 AI Agent。它支持多种模型提供方，包括 Nous Portal、OpenRouter、OpenAI 以及自定义兼容 OpenAI 的端点；也支持在本地终端、Docker、SSH、Daytona、Modal 等不同执行后端上运行。&lt;/p&gt;
&lt;p&gt;它和很多“会调用工具的聊天机器人”最大的区别在于，Hermes 不是只强调一次会话里的工具调用，而是强调跨会话的持续能力建设。官方文档里把这种思路拆成几块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持久记忆：通过 &lt;code&gt;MEMORY.md&lt;/code&gt; 和 &lt;code&gt;USER.md&lt;/code&gt; 保存关于环境、项目、用户偏好的关键信息。&lt;/li&gt;
&lt;li&gt;技能系统：把复杂任务里学到的流程沉淀成技能，后续按需加载。&lt;/li&gt;
&lt;li&gt;上下文文件：自动读取 &lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;SOUL.md&lt;/code&gt;、&lt;code&gt;.cursorrules&lt;/code&gt; 等文件，把项目约定直接注入会话。&lt;/li&gt;
&lt;li&gt;MCP 集成：可以接入任何兼容 MCP 的工具服务器，扩展数据库、GitHub、文件系统、抓取等能力。&lt;/li&gt;
&lt;li&gt;消息网关：除了 CLI，还能通过 Telegram、Discord、Slack、WhatsApp、Signal、Email 等入口使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只用一句话概括，Hermes Agent 更像是一个“带记忆、带技能、可扩展、可多端接入的通用 Agent 操作层”。&lt;/p&gt;
&lt;h2 id=&#34;02-它的优点在哪里&#34;&gt;02 它的优点在哪里
&lt;/h2&gt;&lt;h3 id=&#34;1-同时覆盖-cli-工作流和消息工作流&#34;&gt;1. 同时覆盖 CLI 工作流和消息工作流
&lt;/h3&gt;&lt;p&gt;很多 agent 项目要么偏“终端内开发助手”，要么偏“聊天平台机器人”。Hermes 想做的是把这两件事合并起来。你可以直接在终端里运行 &lt;code&gt;hermes&lt;/code&gt;，也可以启动 gateway 后从 Telegram 或 Discord 上继续同一个助手。&lt;/p&gt;
&lt;p&gt;这种设计的好处是，Hermes 不局限于“坐在电脑前时才有用”。如果你把它部署在云端或者 VPS 上，它可以变成一个持续在线的个人 AI 助理。&lt;/p&gt;
&lt;h3 id=&#34;2-对长期使用考虑得比较完整&#34;&gt;2. 对“长期使用”考虑得比较完整
&lt;/h3&gt;&lt;p&gt;Hermes 不只是会聊天和调工具，它还强调长期积累：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有边界的持久记忆，而不是无限堆上下文。&lt;/li&gt;
&lt;li&gt;有技能系统，可以把成功流程保存下来复用。&lt;/li&gt;
&lt;li&gt;能搜索过去会话，做跨会话召回。&lt;/li&gt;
&lt;li&gt;能读取项目里的上下文文件，减少每次重复解释项目背景。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于经常在固定代码库、固定工作流、固定团队规范里反复工作的用户，这一点很重要。它意味着 agent 不只是“这次帮你做点事”，而是会逐渐更懂你的环境。&lt;/p&gt;
&lt;h3 id=&#34;3-mcp-支持让扩展性很强&#34;&gt;3. MCP 支持让扩展性很强
&lt;/h3&gt;&lt;p&gt;Hermes 官方文档明确支持 MCP，并且说明了 stdio 和 HTTP 两类接入方式。也就是说，只要某个外部系统已经有 MCP server，Hermes 理论上就可以较低成本接进去。&lt;/p&gt;
&lt;p&gt;这比每次为单个系统单独写插件更灵活。对于已经在 MCP 生态里积累了一批工具的人，Hermes 的接入成本会低很多。&lt;/p&gt;
&lt;h3 id=&#34;4-对-openclaw-用户很友好&#34;&gt;4. 对 OpenClaw 用户很友好
&lt;/h3&gt;&lt;p&gt;这一点很有意思。Hermes README 里直接提供了 &lt;code&gt;hermes claw migrate&lt;/code&gt;，并写明可以从 OpenClaw 导入配置、记忆、技能、API key、消息平台设置等内容。&lt;/p&gt;
&lt;p&gt;这说明它并不是完全无视既有生态重新造轮子，而是明确把一部分 OpenClaw 用户视为潜在迁移对象。&lt;/p&gt;
&lt;h2 id=&#34;03-怎么快速上手&#34;&gt;03 怎么快速上手
&lt;/h2&gt;&lt;p&gt;Hermes Agent 官方推荐的安装方式非常直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方说明支持 Linux、macOS、WSL2，以及 Android 的 Termux。需要注意的是，README 里明确写了原生 Windows 暂不支持，Windows 用户建议走 WSL2。&lt;/p&gt;
&lt;p&gt;安装完成后，通常先刷新 shell：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后就可以直接启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你想一步一步完成完整初始化，最省心的命令是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;根据官方文档和 README，首次上手可以按下面这个顺序来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运行 &lt;code&gt;hermes setup&lt;/code&gt;，完成基础配置。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;hermes model&lt;/code&gt; 选择模型提供方和模型。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;hermes tools&lt;/code&gt; 开关需要的工具集。&lt;/li&gt;
&lt;li&gt;直接执行 &lt;code&gt;hermes&lt;/code&gt;，进入交互式 CLI。&lt;/li&gt;
&lt;li&gt;如果你想接 Telegram、Discord 之类的渠道，再继续配置 &lt;code&gt;hermes gateway&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你本来就是 OpenClaw 用户，还可以先看一眼迁移命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes claw migrate --dry-run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它会先预览可迁移的内容，再决定要不要正式导入。&lt;/p&gt;
&lt;h2 id=&#34;04-和-openclaw-怎么看&#34;&gt;04 和 OpenClaw 怎么看
&lt;/h2&gt;&lt;p&gt;从官方文档和 README 来看，Hermes Agent 与 OpenClaw 并不是简单的“谁替代谁”，而是定位有明显重叠，但侧重点不同。&lt;/p&gt;
&lt;h3 id=&#34;hermes-agent-更像什么&#34;&gt;Hermes Agent 更像什么
&lt;/h3&gt;&lt;p&gt;Hermes 更像一个偏 agent 内核和工作流系统的产品。它强调的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 体验&lt;/li&gt;
&lt;li&gt;记忆与技能沉淀&lt;/li&gt;
&lt;li&gt;项目上下文文件&lt;/li&gt;
&lt;li&gt;MCP 扩展&lt;/li&gt;
&lt;li&gt;子代理并行&lt;/li&gt;
&lt;li&gt;在本地、容器、远端、serverless 环境之间切换执行后端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的主要诉求是“让 agent 更懂项目、更能持续复用能力、更方便接 MCP 和开发工作流”，Hermes 的方向会更顺手。&lt;/p&gt;
&lt;h3 id=&#34;openclaw-更像什么&#34;&gt;OpenClaw 更像什么
&lt;/h3&gt;&lt;p&gt;OpenClaw 则更像一个以个人 AI 助手和消息网关为中心的平台。它强调：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;非常丰富的消息渠道接入&lt;/li&gt;
&lt;li&gt;常驻运行的 Gateway&lt;/li&gt;
&lt;li&gt;浏览器里的 Control UI&lt;/li&gt;
&lt;li&gt;设备配对、远程访问、状态管理&lt;/li&gt;
&lt;li&gt;语音、移动端、Canvas 等更强的助手形态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的核心需求是“把一个个人 AI 助手稳定地挂在各种聊天渠道和设备上”，并且希望用控制面板统一管理，OpenClaw 的产品感会更强。&lt;/p&gt;
&lt;h3 id=&#34;一个更实用的选择建议&#34;&gt;一个更实用的选择建议
&lt;/h3&gt;&lt;p&gt;可以把两者简单理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hermes Agent：更偏“会成长的通用 agent 工作台”&lt;/li&gt;
&lt;li&gt;OpenClaw：更偏“多渠道常驻型个人 AI 助手平台”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当然，这个区分不是绝对的，因为两边都在继续扩展能力，而且 Hermes 还提供了从 OpenClaw 迁移的路径。但至少从当前公开资料看，Hermes 在“记忆、技能、上下文、MCP、开发工作流”这条线上更突出；OpenClaw 在“网关、多渠道、控制 UI、设备接入”这条线上更成熟。&lt;/p&gt;
&lt;h2 id=&#34;05-适合谁尝试&#34;&gt;05 适合谁尝试
&lt;/h2&gt;&lt;p&gt;如果你属于下面几类人，Hermes Agent 值得优先试一下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你已经在终端里大量使用 AI 工具，希望 agent 更懂代码库和项目规则。&lt;/li&gt;
&lt;li&gt;你想把 &lt;code&gt;AGENTS.md&lt;/code&gt;、技能、记忆、MCP 这些能力组合到一起。&lt;/li&gt;
&lt;li&gt;你不想被单一模型厂商锁死，希望可以灵活切换 provider。&lt;/li&gt;
&lt;li&gt;你原来就在用 OpenClaw，现在想试试一个更偏 agent 工作流的方向。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你更看重的是移动端触达、各种 IM 平台接入、浏览器控制台和“始终在线的个人助理感”，那 OpenClaw 仍然很有吸引力。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hermes Agent GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes Agent 文档: &lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hermes-agent.nousresearch.com/docs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes Features Overview: &lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hermes-agent.nousresearch.com/docs/user-guide/features/overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes MCP: &lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/openclaw/openclaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw Getting Started: &lt;a class=&#34;link&#34; href=&#34;https://docs.openclaw.ai/start/quickstart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.openclaw.ai/start/quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw Control UI: &lt;a class=&#34;link&#34; href=&#34;https://docs.openclaw.ai/web/control-ui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.openclaw.ai/web/control-ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 类脑记忆算法 Dreaming：机器开始做梦，人类却在失眠</title>
        <link>https://knightli.com/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/2026/04/12/openclaw-dreaming-machine-dreams-humans-lose-sleep/</guid>
        <description>&lt;p&gt;大模型的长期记忆一直是个老问题。上下文越积越多，信息越容易混乱。智能体看似什么都记得，实际上却越来越难判断什么重要、什么该忘。&lt;/p&gt;
&lt;p&gt;4 月 5 日，OpenClaw 在新版本里上线了一项实验功能：Dreaming。它不是一个花哨名字，而是一套模仿人类睡眠过程的后台记忆整理机制，目标很直接，就是让智能体醒来后记得更准。&lt;/p&gt;
&lt;h2 id=&#34;01-睡眠算法把记忆整理拆成三个阶段&#34;&gt;01 睡眠算法：把记忆整理拆成三个阶段
&lt;/h2&gt;&lt;p&gt;Dreaming 并不是简单做索引，而是把记忆整理拆成三个逻辑阶段，对应人类睡眠中的不同功能。&lt;/p&gt;
&lt;p&gt;浅睡阶段（Light Sleep）：系统先扫描近期对话和召回记录，做去重和初步筛选，生成候选内容。这个阶段只做暂存，不会直接改动核心记忆文件 &lt;code&gt;MEMORY.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;深睡阶段（Deep Sleep）：系统开始按规则筛选高价值信息。只有同时达到最低评分、最低召回次数和最低独特查询次数的信息，才会进入下一步。写入前还会重新比对最新日志，剔除过时内容，最后把结果追加到 &lt;code&gt;MEMORY.md&lt;/code&gt;，并在 &lt;code&gt;DREAMS.md&lt;/code&gt; 中留下深睡摘要。&lt;/p&gt;
&lt;p&gt;快速眼动阶段（REM）：在记忆固化之后，系统进一步分析短期行为痕迹，寻找不同信息之间的潜在联系，生成模式总结和反思内容。这部分会写入专门的 REM 区块，帮助智能体在处理复杂任务时更容易抓住全局。&lt;/p&gt;
&lt;p&gt;除了给机器自己用的记忆整理机制，Dreaming 还会顺手生成一份更适合人类阅读的“梦境日记”。当素材积累到一定程度，后台子智能体会调用默认模型，在 &lt;code&gt;DREAMS.md&lt;/code&gt; 中追加一段简洁说明。&lt;/p&gt;
&lt;h2 id=&#34;02-评分机制决定什么该留下什么该被忘掉&#34;&gt;02 评分机制：决定什么该留下，什么该被忘掉
&lt;/h2&gt;&lt;p&gt;Dreaming 的关键不只是“整理”，更是“筛选”。OpenClaw 没有继续沿用粗放式的全量保存，而是用一套加权评分机制判断哪些信息值得进入长期记忆。&lt;/p&gt;
&lt;p&gt;这套机制主要看六个维度：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;相关性权重（30%）：衡量信息在被检索时到底有没有用。&lt;/li&gt;
&lt;li&gt;频率权重（24%）：统计某条信息被反复提及的次数。&lt;/li&gt;
&lt;li&gt;查询多样性（15%）：看它是否在不同问题和场景中都出现过。&lt;/li&gt;
&lt;li&gt;时效性权重（15%）：让新近信息拥有更高优先级。&lt;/li&gt;
&lt;li&gt;整合度权重（10%）：看信息是否能跨多天稳定出现。&lt;/li&gt;
&lt;li&gt;概念丰富度（6%）：判断它背后的关联概念是否足够丰富。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着系统不是把所有内容一股脑塞进长期记忆，而是优先保留那些反复出现、能解决问题、又不过时的信息。&lt;/p&gt;
&lt;h2 id=&#34;03-它为什么让人联想到-claude-的做梦思路&#34;&gt;03 它为什么让人联想到 Claude 的“做梦”思路
&lt;/h2&gt;&lt;p&gt;有开发者认为，OpenClaw 这次 Dreaming 升级的思路，很像 Claude Code 泄露代码中出现过的 KAIROS 自动做梦机制。过去那种反复读写整个 &lt;code&gt;MEMORY.md&lt;/code&gt; 的方式，到了后期很容易让记忆系统越来越臃肿；而 Dreaming 把过程拆成浅睡整合、深睡固化、REM 关联，逻辑明显更清晰，也更接近“先整理、再沉淀、再提炼”的思路。&lt;/p&gt;
&lt;p&gt;也有人从神经科学角度肯定这套设计。因为 Dreaming、浅睡、深睡和 REM 这些概念并不是随便取的名字，而是明确借用了人类睡眠巩固记忆的模型。&lt;/p&gt;
&lt;p&gt;OpenClaw 现有的 &lt;code&gt;IDENTITY.md&lt;/code&gt;、&lt;code&gt;USER.md&lt;/code&gt; 和 &lt;code&gt;HEARTBEAT.md&lt;/code&gt; 已经给了智能体人设、用户上下文和运行连续性，而 &lt;code&gt;DREAMS.md&lt;/code&gt; 补上的，正是“哪些记忆该留下”的能力。&lt;/p&gt;
&lt;h2 id=&#34;04-最讽刺的一幕机器学会做梦人却睡不着&#34;&gt;04 最讽刺的一幕：机器学会做梦，人却睡不着
&lt;/h2&gt;&lt;p&gt;Dreaming 的真正价值，不是让 AI 什么都记住，而是让它学会复盘短期记忆、提取底层模式、过滤噪音。一个真正好用的智能体，不应该像移动硬盘一样死记硬背，而应该越来越懂用户的偏好、目标和背景。&lt;/p&gt;
&lt;p&gt;从工程角度看，这套机制最值得注意的地方在于它并不神秘。它不是黑盒魔法，而是一套有阶段、有阈值、有反思、也有遗忘规则的后台流程。这种设计让 AI 的记忆机制第一次显得更像“可控的系统”，而不只是“无限堆上下文”。&lt;/p&gt;
&lt;p&gt;但也正因为如此，整件事才显得有点讽刺：我们正在投入大量资源，教机器如何像人一样做梦；与此同时，许多人却因为担心被这些越来越聪明的系统取代而失眠。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama-quantize 怎么用：GGUF 模型量化入门</title>
        <link>https://knightli.com/2026/04/12/llama-quantize-gguf-guide/</link>
        <pubDate>Sun, 12 Apr 2026 09:42:36 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/12/llama-quantize-gguf-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama-quantize&lt;/code&gt; 是 &lt;code&gt;llama.cpp&lt;/code&gt; 里的量化工具，用来把高精度的 &lt;code&gt;GGUF&lt;/code&gt; 模型转换成更小的量化版本。&lt;/p&gt;
&lt;p&gt;它最常见的用途，是把类似 &lt;code&gt;F32&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt; 或 &lt;code&gt;FP16&lt;/code&gt; 这样的高精度模型，转换成 &lt;code&gt;Q4_K_M&lt;/code&gt;、&lt;code&gt;Q5_K_M&lt;/code&gt;、&lt;code&gt;Q8_0&lt;/code&gt; 等更适合本地运行的格式。量化后模型体积会明显变小，推理通常也会更快，但精度会有一定损失。&lt;/p&gt;
&lt;h2 id=&#34;基本用法&#34;&gt;基本用法
&lt;/h2&gt;&lt;p&gt;一个典型流程通常是先准备原始模型，再转换为 GGUF，最后执行量化。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install Python dependencies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 -m pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# convert the model to ggml FP16 format&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 convert_hf_to_gguf.py ./models/mymodel/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# quantize the model to 4-bits (using Q4_K_M method)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;量化完成后，就可以直接用 &lt;code&gt;llama-cli&lt;/code&gt; 加载新的 GGUF 文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# start inference on a gguf model&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-cli -m ./models/mymodel/ggml-model-Q4_K_M.gguf -cnv -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;You are a helpful assistant&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;常见参数&#34;&gt;常见参数
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--allow-requantize&lt;/code&gt;：允许对已经量化过的模型再次量化，但通常不推荐，质量可能掉得比较明显&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--leave-output-tensor&lt;/code&gt;：保留输出层不量化，体积会更大，但有时能换来更好的质量&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--pure&lt;/code&gt;：关闭混合量化，让更多张量使用同一量化类型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--imatrix&lt;/code&gt;：使用重要性矩阵优化量化效果，通常值得优先考虑&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--keep-split&lt;/code&gt;：保留输入模型的分片结构，而不是合并成单个文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是想先跑起来，最实用的起点还是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;量化怎么选&#34;&gt;量化怎么选
&lt;/h2&gt;&lt;p&gt;可以先把不同量化等级理解成“体积、速度和质量之间的交换”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q8_0&lt;/code&gt;：体积较大，但质量通常更稳&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K&lt;/code&gt; / &lt;code&gt;Q5_K_M&lt;/code&gt;：常见的平衡型选择&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;：很常见的默认档，体积和效果通常比较均衡&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt; / &lt;code&gt;Q2&lt;/code&gt;：适合资源非常紧张的场景，但质量下降会更明显&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从给出的示例数据看，量化等级越低，模型通常越小；而在实际推理里，更高精度并不一定总是更快，所以选型重点通常不是“越大越好”，而是“在你的硬件上够稳、够省、效果也能接受”。&lt;/p&gt;
&lt;h2 id=&#34;实用建议&#34;&gt;实用建议
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;优先从 &lt;code&gt;Q4_K_M&lt;/code&gt; 或 &lt;code&gt;Q5_K_M&lt;/code&gt; 开始试&lt;/li&gt;
&lt;li&gt;如果更看重质量，再往 &lt;code&gt;Q6_K&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt; 提升&lt;/li&gt;
&lt;li&gt;如果机器资源比较紧，再尝试 &lt;code&gt;Q3&lt;/code&gt; 或 &lt;code&gt;Q2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;最好始终用同一批测试问题比较不同量化版本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句话总结：&lt;code&gt;llama-quantize&lt;/code&gt; 的核心价值，不是单纯把模型变小，而是让 GGUF 模型在本地设备上更容易跑起来。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp 如何从 Hugging Face 获取 GGUF 模型</title>
        <link>https://knightli.com/2026/04/12/llama-cpp-hugging-face-gguf-models/</link>
        <pubDate>Sun, 12 Apr 2026 09:31:38 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/12/llama-cpp-hugging-face-gguf-models/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 可以直接配合 Hugging Face 上的 GGUF 模型使用，不一定要先手动把文件下载到本地。&lt;/p&gt;
&lt;p&gt;如果模型仓库本身已经提供了 GGUF 文件，可以直接在命令行里使用 &lt;code&gt;-hf&lt;/code&gt; 参数，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认情况下，这个参数会从 Hugging Face 下载模型。&lt;br&gt;
如果你使用的是其他兼容 Hugging Face API 的模型托管服务，也可以通过环境变量 &lt;code&gt;MODEL_ENDPOINT&lt;/code&gt; 切换下载端点。&lt;/p&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;llama.cpp&lt;/code&gt; 只能直接使用 &lt;code&gt;GGUF&lt;/code&gt; 格式。&lt;br&gt;
如果拿到的是其他格式的模型文件，就需要先用仓库里的 &lt;code&gt;convert_*.py&lt;/code&gt; 脚本转换成 &lt;code&gt;GGUF&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Hugging Face 还提供了一些和 &lt;code&gt;llama.cpp&lt;/code&gt; 相关的在线工具，常见用途包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把模型转换为 &lt;code&gt;GGUF&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;对模型做量化，减小体积&lt;/li&gt;
&lt;li&gt;转换 LoRA 适配器&lt;/li&gt;
&lt;li&gt;在线编辑 GGUF 元数据&lt;/li&gt;
&lt;li&gt;直接托管 &lt;code&gt;llama.cpp&lt;/code&gt; 推理服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只想记住一个最实用的结论：优先找已经提供 &lt;code&gt;GGUF&lt;/code&gt; 的模型仓库，然后直接用 &lt;code&gt;llama-cli -hf &amp;lt;user&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt;，通常是最省事的做法。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 额度用量统计</title>
        <link>https://knightli.com/2026/04/12/codex-usage-quota-check/</link>
        <pubDate>Sun, 12 Apr 2026 00:01:33 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/12/codex-usage-quota-check/</guid>
        <description>&lt;p&gt;如果你想查看 Codex 当前账号的额度剩余情况，可以直接写一个小脚本去请求 ChatGPT 的 &lt;code&gt;/backend-api/wham/usage&lt;/code&gt; 接口。&lt;/p&gt;
&lt;p&gt;这类脚本的思路很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从 &lt;code&gt;auth.json&lt;/code&gt; 里读取 &lt;code&gt;tokens.access_token&lt;/code&gt; 和 &lt;code&gt;tokens.account_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;请求 &lt;code&gt;https://chatgpt.com/backend-api/wham/usage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在请求头里带上 &lt;code&gt;Authorization: Bearer ...&lt;/code&gt; 和 &lt;code&gt;ChatGPT-Account-Id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;解析返回结果里的五小时窗口和周窗口额度&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;适合做什么&#34;&gt;适合做什么
&lt;/h2&gt;&lt;p&gt;这个方法适合你在本地快速确认：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;五小时额度还剩多少&lt;/li&gt;
&lt;li&gt;周额度还剩多少&lt;/li&gt;
&lt;li&gt;额度会在什么时候重置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你有多个账号，也可以让脚本批量读取 &lt;code&gt;account/*.auth.json&lt;/code&gt;，统一输出一张摘要表。
auth.json文件可以从 ~/.codex/ 目录下找到, 对应你当前登录的chatgpt账户。&lt;/p&gt;
&lt;h2 id=&#34;最关键的输入&#34;&gt;最关键的输入
&lt;/h2&gt;&lt;p&gt;脚本通常只依赖两项凭证：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;account_id&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它们一般都可以从本地 &lt;code&gt;auth.json&lt;/code&gt; 中拿到。只要这两个值有效，请求头就能按下面的形式组织：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Accept&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;ChatGPT-Account-Id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Origin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Referer&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;User-Agent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Mozilla/5.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;返回结果怎么看&#34;&gt;返回结果怎么看
&lt;/h2&gt;&lt;p&gt;接口返回后，重点看的是两类窗口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;five_hour&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weekly&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;脚本可以把它们统一整理成下面几项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;剩余额度百分比&lt;/li&gt;
&lt;li&gt;重置时间&lt;/li&gt;
&lt;li&gt;对应的时间窗口长度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果接口字段名有差异，也可以顺手兼容 &lt;code&gt;primary_window&lt;/code&gt;、&lt;code&gt;secondary_window&lt;/code&gt;、&lt;code&gt;five_hour_limit&lt;/code&gt;、&lt;code&gt;weekly_limit&lt;/code&gt; 这些变体。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;p&gt;如果脚本返回 401，通常说明 &lt;code&gt;access_token&lt;/code&gt; 已过期或无效。&lt;/p&gt;
&lt;p&gt;如果返回 403，通常说明当前账号没有权限访问这个接口，或者账号状态异常。&lt;/p&gt;
&lt;p&gt;如果你看到同一个响应里字段命名不一致，也不用太意外。实际处理时最好把不同命名方式统一映射后再输出。&lt;/p&gt;
&lt;h2 id=&#34;参考链接&#34;&gt;参考链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;codex-auth-manager&lt;/code&gt;：&lt;a class=&#34;link&#34; href=&#34;https://github.com/RioArisk/codex-auth-manager&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/RioArisk/codex-auth-manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;代码&#34;&gt;代码
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;151
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;152
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;153
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;154
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;155
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;156
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;157
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;158
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;159
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;160
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;161
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;162
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;163
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;164
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;165
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;166
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;167
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;168
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;169
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;170
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;171
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;172
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;173
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;174
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;175
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;176
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;177
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;178
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;179
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;180
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;181
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;182
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;183
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;184
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;185
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;186
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;187
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;188
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;189
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;190
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;191
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;192
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;193
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;194
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;195
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;196
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;197
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;198
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;199
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;200
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;201
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;202
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;203
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;204
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;205
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;206
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;207
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;208
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;209
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;210
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;211
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;212
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;213
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;214
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;215
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;216
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;217
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;218
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;219
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;220
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;221
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;222
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;223
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;224
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;225
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;226
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;227
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;228
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;229
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;230
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;231
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;232
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;233
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;234
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;235
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;236
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;237
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;238
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;239
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;240
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;241
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;242
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;243
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;244
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;245
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;246
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;247
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;248
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;249
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;250
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;251
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;252
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;253
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;254
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;255
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;256
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;257
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;258
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;259
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;260
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;261
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;262
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;263
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;264
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;265
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;266
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;267
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;268
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;269
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;270
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;271
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;272
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;273
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;274
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;275
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;276
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;277
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;278
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;279
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;280
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;281
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;282
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;283
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;284
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;285
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;286
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;287
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;288
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;289
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;290
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;291
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;292
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;293
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;294
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;295
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;296
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;297
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;298
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;299
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;300
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;301
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;302
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;303
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;304
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;305
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;306
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;307
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;308
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;309
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;310
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;311
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;312
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;313
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;314
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;315
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;316
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;317
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;318
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;319
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;320
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;321
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;322
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;323
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;324
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;325
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;326
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;327
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;328
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;329
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;330
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;331
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;332
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;333
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;334
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;335
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;336
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;337
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;338
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;339
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;340
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;341
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;342
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;343
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;344
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;345
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;346
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;347
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;348
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;349
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;350
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;351
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;352
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;353
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;354
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;355
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;356
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;357
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;358
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;359
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;360
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;361
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;362
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;363
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;364
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;365
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;366
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;367
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;368
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;369
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;370
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;371
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;372
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;373
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;374
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;375
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;376
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;377
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;378
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;379
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;380
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;381
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;382
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;383
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;384
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;385
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;386
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;387
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;388
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;389
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;390
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;391
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;392
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;393
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;394
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;395
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;396
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;397
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;398
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;399
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;400
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;401
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;402
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;403
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;404
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;405
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;406
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;407
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;408
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;409
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;410
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;411
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;412
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;413
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;414
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;415
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;416
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;417
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;418
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;419
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;420
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;421
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;422
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;423
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;424
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;425
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;426
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;427
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;428
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;429
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;430
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;431
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;432
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;433
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;434
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;435
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;436
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;437
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;438
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;439
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;440
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;441
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;442
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;443
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;444
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;445
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;446
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;447
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;448
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;449
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;450
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;451
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;452
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;453
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;454
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;455
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;456
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;457
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;458
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;459
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;460
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;argparse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;base64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timedelta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;typing&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;requests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;utc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;CST&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timedelta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hours&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;CST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArgumentParser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Query ChatGPT Codex usage from /backend-api/wham/usage.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;account_name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;nargs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Account name used to load account/&amp;lt;account_name&amp;gt;.auth.json. If omitted, load all *.auth.json files in account/.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--account-dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Directory containing &amp;lt;account_name&amp;gt;.auth.json files.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--chatgpt-url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com/backend-api/wham/usage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ChatGPT usage endpoint.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--raw-json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Print the full JSON response body.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--raw-headers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Print response headers.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dumps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;indent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ensure_ascii&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;False&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;load_auth_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expanduser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read_text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encoding&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;OSError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDecodeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_nested_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;astimezone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CST&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;strftime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;%Y-%m-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; %H:%M:%S %Z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;format_cst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;epoch_ms_to_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Newer responses sometimes use epoch seconds, older ones use epoch milliseconds.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;timestamp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fromtimestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tz&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;first_dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;decode_jwt_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;=&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;urlsafe_b64decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ascii&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;exp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exp&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fromtimestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tz&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDecodeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_percent_left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;remaining_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;used_percent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;used_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;used_percent&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;used_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;resolve_limit_window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_time_ms&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;primary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;primary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;resolve_limit_window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_percent_left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_time_ms&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;limit_window_seconds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_time_ms&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;epoch_ms_to_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;limit_window_seconds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;infer_limit_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;relabel_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inferred_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;infer_limit_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;limit_window_seconds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inferred_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inferred_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_rate_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;primary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_rate_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;secondary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;secondary_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;primary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;secondary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;relabel_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;format_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;percent_sort_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;numeric_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numeric_value&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;numeric_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;base_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.auth.json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;glob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*.auth.json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_account_name_from_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.auth.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endswith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;build_summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;print_summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sorted_rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;percent_sort_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;percent_sort_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;format_cst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sorted_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_cst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour%&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly%&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;validate_token_inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;startswith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;sess-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: invalid_token_type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;message: --chatgpt-token looks like a session token (sess-...). Use the JWT access_token instead.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;hint: Found tokens.access_token in auth.json; omit --chatgpt-token or pass that value instead.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decode_jwt_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: expired&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message: access_token expired at &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;auth_token_exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decode_jwt_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;hint&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token_exp&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;unknown time&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;hint: auth.json contains a different access_token expiring at &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hint&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;warning: supplied --account-id does not match auth.json tokens.account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;handle_error_response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;401&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: expired&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message: Token 已过期或无效&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;403&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: forbidden&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message: 账号已被封禁或无权访问&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;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;400&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;HTTP &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;fetch_chatgpt_usage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;load_auth_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_account_name_from_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_nested_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_nested_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: auth file not found or invalid&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: missing access_token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: missing account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;validation_error&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;validate_token_inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;validation_error&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;validation_error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Accept&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;ChatGPT-Account-Id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Origin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Referer&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;User-Agent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Mozilla/5.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chatgpt_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RequestException&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Request failed: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;=== Headers ===&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;HTTP &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;error_response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handle_error_response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error_response&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error_response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;=== Raw JSON ===&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rate_limits&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first_dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rate_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rate_limits&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rate_limits&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build_summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build_summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_paths&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;No auth files found.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;current_exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;summary_row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fetch_chatgpt_usage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current_exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;summary_row&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>Gemma-4-31B-it 里的 it 是什么意思</title>
        <link>https://knightli.com/2026/04/11/gemma-4-31b-it-meaning/</link>
        <pubDate>Sat, 11 Apr 2026 20:45:34 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/11/gemma-4-31b-it-meaning/</guid>
        <description>&lt;p&gt;在 &lt;code&gt;gemma-4-31B-it&lt;/code&gt; 这个名字里，&lt;code&gt;it&lt;/code&gt; 是 &lt;code&gt;Instruction Tuned&lt;/code&gt; 的缩写，也就是“指令微调”版本。&lt;/p&gt;
&lt;p&gt;对多数人来说，可以把它理解成：这个模型更适合聊天、问答、写代码和执行明确任务。&lt;/p&gt;
&lt;h2 id=&#34;it-是什么&#34;&gt;&lt;code&gt;it&lt;/code&gt; 是什么
&lt;/h2&gt;&lt;p&gt;模型通常会有两类常见版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Base / Pre-trained：基础模型，更接近原始文本预测器。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;it&lt;/code&gt;：经过指令微调，更擅长理解“请帮我做什么”这类输入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你输入“请翻译这段话”或“帮我写一段 Python 代码”，&lt;code&gt;it&lt;/code&gt; 版本通常会更稳定，也更符合对话式使用习惯。&lt;/p&gt;
&lt;h2 id=&#34;31b-是什么&#34;&gt;&lt;code&gt;31B&lt;/code&gt; 是什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;31B&lt;/code&gt; 表示这个模型大约有 310 亿参数。&lt;/p&gt;
&lt;p&gt;一般来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;参数量越大，模型能力和知识覆盖往往更强&lt;/li&gt;
&lt;li&gt;同时对显存或内存的要求也会更高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;31B&lt;/code&gt; 属于比较大的模型，运行门槛也会更高。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-又表示什么&#34;&gt;&lt;code&gt;Gemma-4&lt;/code&gt; 又表示什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemma-4&lt;/code&gt; 表示模型系列与代际：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Gemma&lt;/code&gt;：Google 的开源模型系列&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;：该系列的第 4 代版本&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;怎么选&#34;&gt;怎么选
&lt;/h2&gt;&lt;p&gt;如果你的目标是聊天、问答、翻译、写代码，通常优先选择带 &lt;code&gt;-it&lt;/code&gt; 的版本。&lt;/p&gt;
&lt;p&gt;如果你做的是更底层的研究、微调或自定义训练任务，才更可能去看基础版。&lt;/p&gt;
&lt;h2 id=&#34;一句话总结&#34;&gt;一句话总结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;gemma-4-31B-it&lt;/code&gt; 可以直接理解成：Gemma 4 系列、310 亿参数、适合对话和指令任务的版本。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hugging Face 选择 Llama 的 GGUF 模型时，量化怎么选：从 Q8 到 Q2 的实用建议</title>
        <link>https://knightli.com/2026/04/11/llama-gguf-quantization-selection/</link>
        <pubDate>Sat, 11 Apr 2026 20:07:29 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/11/llama-gguf-quantization-selection/</guid>
        <description>&lt;p&gt;在 Hugging Face 选择 Llama 的 GGUF 模型时，可以先把量化等级理解成“分辨率”。分辨率越低，占用的 VRAM/RAM 越少，但质量也会逐步下降。&lt;/p&gt;
&lt;h2 id=&#34;先理解-3216-和-q-系列&#34;&gt;先理解 32、16 和 Q 系列
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32&lt;/code&gt;：可理解为原始未压缩版本，质量最高，但硬件要求非常高。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16&lt;/code&gt;：仍接近原始质量，体积约为 &lt;code&gt;32&lt;/code&gt; 的一半，实用性更高。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q8&lt;/code&gt;：从这里开始进入量化版本，通常写作 &lt;code&gt;Q8_0&lt;/code&gt; 或 &lt;code&gt;Q8&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6&lt;/code&gt;、&lt;code&gt;Q5&lt;/code&gt;、&lt;code&gt;Q4&lt;/code&gt;、&lt;code&gt;Q3&lt;/code&gt;、&lt;code&gt;Q2&lt;/code&gt;：数字越小，资源占用越低，质量也越容易出现可见损失。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;k_m--k_s-是什么&#34;&gt;&lt;code&gt;K_M&lt;/code&gt; / &lt;code&gt;K_S&lt;/code&gt; 是什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;K_M&lt;/code&gt; 和 &lt;code&gt;K_S&lt;/code&gt; 表示混合量化策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大部分权重使用当前量化等级&lt;/li&gt;
&lt;li&gt;一些关键部分保留更高精度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此同级别下，&lt;code&gt;Qx_K_M&lt;/code&gt; 或 &lt;code&gt;Qx_K_S&lt;/code&gt; 通常会比纯 &lt;code&gt;Qx&lt;/code&gt; 略好。&lt;/p&gt;
&lt;h2 id=&#34;实用选型建议&#34;&gt;实用选型建议
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;硬件足够：优先 &lt;code&gt;Q8&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;显存或内存紧张：逐级下调到 &lt;code&gt;Q6&lt;/code&gt; / &lt;code&gt;Q5&lt;/code&gt; / &lt;code&gt;Q4&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;下限建议：尽量不要低于 &lt;code&gt;Q4&lt;/code&gt;，优先 &lt;code&gt;Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt; 及以下：质量下降会越来越明显。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;质量梯度高到低&#34;&gt;质量梯度（高到低）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ndash; 在这一点之上，质量是一样的，但是硬件要求太疯狂了 &amp;ndash;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ndash; 这是典型的甜蜜点 &amp;ndash;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ndash; 在这一点之下，质量下降变得可见 &amp;ndash;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q2_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q2_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只想要一个简单结论：多数场景从 &lt;code&gt;Q8&lt;/code&gt; 或 &lt;code&gt;Q6_K_M&lt;/code&gt; 起步，不够再降到 &lt;code&gt;Q5&lt;/code&gt; 或 &lt;code&gt;Q4_K_M&lt;/code&gt;，通常更稳妥。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Windows 局域网访问 Ollama API 设置指南</title>
        <link>https://knightli.com/2026/04/11/ollama-api-lan-access-windows/</link>
        <pubDate>Sat, 11 Apr 2026 16:43:52 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/11/ollama-api-lan-access-windows/</guid>
        <description>&lt;p&gt;如果你希望局域网内其他设备访问本机 Ollama API，可以按下面步骤配置。&lt;/p&gt;
&lt;h2 id=&#34;设置监听端口&#34;&gt;设置监听端口
&lt;/h2&gt;&lt;p&gt;先将 Ollama 监听地址改为所有网卡：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;OLLAMA_HOST=0.0.0.0:11434&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;打开防火墙&#34;&gt;打开防火墙
&lt;/h2&gt;&lt;p&gt;打开防火墙高级设置后，新建一条入站规则并放行目标端口（例如 &lt;code&gt;8080&lt;/code&gt;）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按下 Win + S，搜索并打开“Windows Defender 防火墙”。&lt;/li&gt;
&lt;li&gt;点击“高级设置”。&lt;/li&gt;
&lt;li&gt;选择“入站规则” -&amp;gt; “新建规则&amp;hellip;”。&lt;/li&gt;
&lt;li&gt;规则类型选“端口”，点击“下一步”。&lt;/li&gt;
&lt;li&gt;选择协议（通常是 TCP），在“特定本地端口”输入要开放的端口号（例如 &lt;code&gt;8080&lt;/code&gt;），点击“下一步”。&lt;/li&gt;
&lt;li&gt;选择“允许连接”，点击“下一步”。&lt;/li&gt;
&lt;li&gt;在“配置文件”中勾选“域”“专用”“公用”，点击“下一步”。&lt;/li&gt;
&lt;li&gt;为规则命名（例如 &lt;code&gt;OpenPort8080&lt;/code&gt;），点击“完成”。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;运行-ollama&#34;&gt;运行 Ollama
&lt;/h2&gt;&lt;p&gt;Ollama run 模型&lt;/p&gt;
&lt;h2 id=&#34;通过-api-访问模型&#34;&gt;通过 API 访问模型
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://192.168.x.xxx:11434/api/generate -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;model&amp;#34;: &amp;#34;gemma4&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;prompt&amp;#34;: &amp;#34;这个是什么模型?&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>飞牛 NAS AI 相册用了哪些模型：人脸、物体与语义搜索拆解</title>
        <link>https://knightli.com/2026/04/11/fnos-ai-photo-model-stack/</link>
        <pubDate>Sat, 11 Apr 2026 08:27:57 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/11/fnos-ai-photo-model-stack/</guid>
        <description>&lt;p&gt;飞牛 NAS（fnOS）的 AI 相册并不是从零自研整套算法，而是基于主流开源模型做工程化集成，用于完成人脸识别、场景识别和自然语言搜图。&lt;/p&gt;
&lt;h2 id=&#34;1-人脸识别insightface&#34;&gt;1) 人脸识别：InsightFace
&lt;/h2&gt;&lt;p&gt;在人脸能力上，核心通常是 InsightFace。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常见特征提取方法：ArcFace&lt;/li&gt;
&lt;li&gt;主要作用：检测人脸、提取特征向量、做人脸聚类与人物识别&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-目标检测与场景识别yolo-系列&#34;&gt;2) 目标检测与场景识别：YOLO 系列
&lt;/h2&gt;&lt;p&gt;照片里的物体识别（如猫、狗、车、电脑）和部分场景理解，通常由 YOLO 系列承担（常见为 YOLOv8 或轻量化版本）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;优点：精度与速度平衡较好&lt;/li&gt;
&lt;li&gt;适配场景：NAS 这类边缘设备的有限算力环境&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-语义搜索clip--chinese-clip&#34;&gt;3) 语义搜索：CLIP / Chinese-CLIP
&lt;/h2&gt;&lt;p&gt;飞牛相册支持用自然语言搜图，例如“草地上的小狗”“戴墨镜的男人”。&lt;/p&gt;
&lt;p&gt;常见实现方式是 CLIP：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;图像和文本会映射到同一向量空间&lt;/li&gt;
&lt;li&gt;在中文场景下，通常会结合 Chinese-CLIP 或同类中文增强方案&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;可以把飞牛 AI 相册理解为三层组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;InsightFace 负责人脸&lt;/li&gt;
&lt;li&gt;YOLO 负责物体与场景&lt;/li&gt;
&lt;li&gt;CLIP 负责人类语言到图像语义的对齐&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心竞争力主要在工程集成、本地化能力和硬件加速优化，而不是底层模型从零训练。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Gemma 4 本地调用指南：从一键运行到开发集成</title>
        <link>https://knightli.com/2026/04/10/gemma4-local-runtime-options/</link>
        <pubDate>Fri, 10 Apr 2026 22:54:17 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/10/gemma4-local-runtime-options/</guid>
        <description>&lt;p&gt;如果你想在本地调用 Gemma 4（Google 2026 年发布的新一代开源模型），可以按需求从这四类方案里选。&lt;/p&gt;
&lt;h2 id=&#34;1-最快上手ollama推荐&#34;&gt;1) 最快上手：Ollama（推荐）
&lt;/h2&gt;&lt;p&gt;这是门槛最低的方式，适合快速测试、日常对话和本地 API 调用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Win/Mac/Linux 都可用&lt;/li&gt;
&lt;li&gt;自动处理硬件加速&lt;/li&gt;
&lt;li&gt;提供兼容 OpenAI 风格的本地 API&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-图形界面lm-studio--unsloth-studio&#34;&gt;2) 图形界面：LM Studio / Unsloth Studio
&lt;/h2&gt;&lt;p&gt;如果你更习惯桌面 GUI（类似 ChatGPT），这两类工具更顺手。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LM Studio：可直接搜索和下载 Hugging Face 上的 Gemma 4 量化模型（如 4-bit、8-bit），并查看资源占用。&lt;/li&gt;
&lt;li&gt;Unsloth Studio：除了推理，也支持低显存微调。对 6GB-8GB 显存机器更友好。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-低配与极致控制llamacpp&#34;&gt;3) 低配与极致控制：llama.cpp
&lt;/h2&gt;&lt;p&gt;适合老机器、纯 CPU 场景，或希望深度控制推理参数的用户。&lt;/p&gt;
&lt;p&gt;你可以使用 &lt;code&gt;.gguf&lt;/code&gt; 模型文件配合量化版本，在更低硬件门槛下运行 Gemma 4。&lt;/p&gt;
&lt;h2 id=&#34;4-开发集成transformers--vllm&#34;&gt;4) 开发集成：Transformers / vLLM
&lt;/h2&gt;&lt;p&gt;如果你要把 Gemma 4 接进自己的应用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformers：适合 Python 项目内直接加载模型&lt;/li&gt;
&lt;li&gt;vLLM：适合高性能 GPU 场景和高吞吐推理服务&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;快速选型&#34;&gt;快速选型
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;需求&lt;/th&gt;
          &lt;th&gt;推荐工具&lt;/th&gt;
          &lt;th&gt;硬件门槛&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;我只想马上跑起来&lt;/td&gt;
          &lt;td&gt;Ollama&lt;/td&gt;
          &lt;td&gt;低（自动适配）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;我更喜欢图形界面&lt;/td&gt;
          &lt;td&gt;LM Studio&lt;/td&gt;
          &lt;td&gt;中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;显存很紧张（6GB-8GB）&lt;/td&gt;
          &lt;td&gt;Unsloth / llama.cpp&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;我要做本地 AI 应用开发&lt;/td&gt;
          &lt;td&gt;Ollama / Transformers / vLLM&lt;/td&gt;
          &lt;td&gt;中到高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;我要做微调训练&lt;/td&gt;
          &lt;td&gt;Unsloth Studio&lt;/td&gt;
          &lt;td&gt;中到高&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;模型尺寸建议&#34;&gt;模型尺寸建议
&lt;/h2&gt;&lt;p&gt;Gemma 4 有多种尺寸（如 E2B、E4B、31B）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通办公本优先选量化后的 E2B / E4B&lt;/li&gt;
&lt;li&gt;显存更充足时再尝试更大版本&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>抛弃 MCP？为什么 CLI 正在成为 Agent 的默认工具层</title>
        <link>https://knightli.com/2026/04/10/mcp-vs-cli-for-agents/</link>
        <pubDate>Fri, 10 Apr 2026 21:55:12 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/10/mcp-vs-cli-for-agents/</guid>
        <description>&lt;p&gt;过去一年，关于 Agent 工具链的争论越来越集中在一个问题上：&lt;/p&gt;
&lt;p&gt;MCP（Model Context Protocol）是让工具调用更简单了，还是把原本简单的事情复杂化了？&lt;/p&gt;
&lt;p&gt;在大多数日常开发任务里，CLI 正在成为更实用的默认方案。&lt;/p&gt;
&lt;h2 id=&#34;成本差异不是体验问题是数量级问题&#34;&gt;成本差异不是“体验问题”，是数量级问题
&lt;/h2&gt;&lt;p&gt;MCP 最大的现实压力是 token 开销。&lt;/p&gt;
&lt;p&gt;常见场景里，MCP 在真正执行任务前，需要先加载大量工具 schema。以 GitHub MCP Server 为例，初始化就可能消耗数万 tokens。对于长任务来说，这会直接挤占上下文预算。&lt;/p&gt;
&lt;p&gt;社区基准测试也反复指向同一个结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP 单次调用成本常见是 CLI 的数倍到数十倍&lt;/li&gt;
&lt;li&gt;失败重试成本也更高（要重建连接、重新加载上下文）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是“慢一点”的差距，而是会放大成 API 费用、时延和稳定性问题。&lt;/p&gt;
&lt;h2 id=&#34;为什么模型天然更会用-cli&#34;&gt;为什么模型天然更“会用 CLI”
&lt;/h2&gt;&lt;p&gt;一个常被忽略的事实是训练分布。&lt;/p&gt;
&lt;p&gt;LLM 在训练中看过海量终端文本：命令、输出、报错、脚本、man page。也就是说，CLI 交互模式本来就接近模型的“母语输入”。&lt;/p&gt;
&lt;p&gt;相反，MCP 的 JSON-RPC 与 tool schema 是近两年才大规模出现的新范式。模型当然能学会，但熟悉度和压缩效率通常不如 CLI 这类历史语料。&lt;/p&gt;
&lt;p&gt;这也解释了为什么很多时候：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同样目标，CLI 指令更短&lt;/li&gt;
&lt;li&gt;输出更适合直接继续推理&lt;/li&gt;
&lt;li&gt;错误恢复路径更稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安全与隔离mcp-还有补课空间&#34;&gt;安全与隔离：MCP 还有补课空间
&lt;/h2&gt;&lt;p&gt;MCP 不是不能做安全，而是生态还在早期。&lt;/p&gt;
&lt;p&gt;当前常见担忧包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具描述投毒（Tool Poisoning）&lt;/li&gt;
&lt;li&gt;服务行为漂移（Rug Pull）&lt;/li&gt;
&lt;li&gt;同名工具覆盖（Shadowing）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLI 当然也有安全问题（注入、越权、路径风险），但其进程模型、权限边界、审计链路已经经过几十年工程实践验证。对生产环境而言，这种“可预期性”很重要。&lt;/p&gt;
&lt;h2 id=&#34;这不等于-mcp-没价值&#34;&gt;这不等于 MCP 没价值
&lt;/h2&gt;&lt;p&gt;我不认为 MCP 应该被抛弃。&lt;/p&gt;
&lt;p&gt;更合理的定位是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 负责执行层（本地、低延迟、高频调用）&lt;/li&gt;
&lt;li&gt;MCP 负责连接层（远程服务发现、统一认证、审计与多租户）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是常说的混合架构：&lt;code&gt;CLI + MCP Gateway&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在需要对接大量远程系统、做统一权限治理和合规审计时，MCP 仍然有明显价值；但在“让 Agent 快速完成开发任务”这件事上，CLI-first 往往更符合当前模型能力边界。&lt;/p&gt;
&lt;p&gt;在今天的工程现实里，CLI 更像 Agent 的工作母语；MCP 更适合作为连接协议，而不是唯一执行协议。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>PersonaPlex 上手指南：可控音色与角色的全双工语音对话模型</title>
        <link>https://knightli.com/2026/04/10/personaplex-full-duplex-speech-model-guide/</link>
        <pubDate>Fri, 10 Apr 2026 11:34:38 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/10/personaplex-full-duplex-speech-model-guide/</guid>
        <description>&lt;p&gt;PersonaPlex 是一个实时、全双工（full-duplex）的语音到语音对话模型。它支持两类可控能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过文本角色提示词控制“人设与说话方式”&lt;/li&gt;
&lt;li&gt;通过音频条件控制“音色与声音风格”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它基于 Moshi 架构与权重，目标是以低延迟输出更自然、且 persona 一致的语音交互。&lt;/p&gt;
&lt;h2 id=&#34;你可以用它做什么&#34;&gt;你可以用它做什么
&lt;/h2&gt;&lt;p&gt;PersonaPlex 适合以下场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;实时语音助手&lt;/li&gt;
&lt;li&gt;客服角色对话&lt;/li&gt;
&lt;li&gt;低延迟语音演示与交互系统&lt;/li&gt;
&lt;li&gt;语音角色化实验（人设 + 音色）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;部署前准备&#34;&gt;部署前准备
&lt;/h2&gt;&lt;p&gt;先安装 Opus 开发库：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Ubuntu/Debian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install libopus-dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Fedora/RHEL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dnf install opus-devel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;安装与环境配置&#34;&gt;安装与环境配置
&lt;/h2&gt;&lt;p&gt;安装仓库：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install moshi/.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Blackwell GPU 可额外执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;登录 Hugging Face 并接受 PersonaPlex 模型许可证后，配置令牌：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HF_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;YOUR_HUGGINGFACE_TOKEN&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;启动实时服务&#34;&gt;启动实时服务
&lt;/h2&gt;&lt;p&gt;标准启动（带临时 SSL）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SSL_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;mktemp -d&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; python -m moshi.server --ssl &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SSL_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;显存不足时可启用 CPU offload（需 &lt;code&gt;accelerate&lt;/code&gt;）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install accelerate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SSL_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;mktemp -d&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; python -m moshi.server --ssl &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SSL_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --cpu-offload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本地访问通常为 &lt;code&gt;localhost:8998&lt;/code&gt;；若远程部署，使用脚本输出的访问链接。&lt;/p&gt;
&lt;h2 id=&#34;离线评估&#34;&gt;离线评估
&lt;/h2&gt;&lt;p&gt;离线脚本可输入 wav，输出同长度 wav 结果：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HF_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;TOKEN&amp;gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m moshi.offline &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --voice-prompt &lt;span class=&#34;s2&#34;&gt;&amp;#34;NATF2.pt&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --input-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;assets/test/input_assistant.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --seed &lt;span class=&#34;m&#34;&gt;42424242&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-text &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HF_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;TOKEN&amp;gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m moshi.offline &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --voice-prompt &lt;span class=&#34;s2&#34;&gt;&amp;#34;NATM1.pt&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --text-prompt &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;cat assets/test/prompt_service.txt&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --input-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;assets/test/input_service.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --seed &lt;span class=&#34;m&#34;&gt;42424242&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-text &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;预置音色&#34;&gt;预置音色
&lt;/h2&gt;&lt;p&gt;固定音色标签如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Natural(female): NATF0, NATF1, NATF2, NATF3&lt;/li&gt;
&lt;li&gt;Natural(male): NATM0, NATM1, NATM2, NATM3&lt;/li&gt;
&lt;li&gt;Variety(female): VARF0, VARF1, VARF2, VARF3, VARF4&lt;/li&gt;
&lt;li&gt;Variety(male): VARM0, VARM1, VARM2, VARM3, VARM4&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;提示词使用建议&#34;&gt;提示词使用建议
&lt;/h2&gt;&lt;p&gt;官方训练覆盖三类主要场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Assistant Role（问答助手）&lt;/li&gt;
&lt;li&gt;Customer Service Roles（客服角色）&lt;/li&gt;
&lt;li&gt;Casual Conversations（日常开放对话）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实践建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先固定角色信息，再补充业务上下文&lt;/li&gt;
&lt;li&gt;控制提示词长度，避免角色漂移&lt;/li&gt;
&lt;li&gt;用同一 voice prompt 做可重复对比测试&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;PersonaPlex 的优势不在“单次回答更聪明”，而在“在实时语音交互里更稳定地维持角色与声音一致性”。&lt;/p&gt;
&lt;p&gt;如果你正在做全双工语音 Agent，这个方案值得尽快实测与对比。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Anthropic 的 Harness 思路：Agent 基础设施正在走向 Agent OS</title>
        <link>https://knightli.com/2026/04/10/anthropic-harness-agent-os/</link>
        <pubDate>Fri, 10 Apr 2026 09:22:56 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/10/anthropic-harness-agent-os/</guid>
        <description>&lt;p&gt;Anthropic 最近发布了一篇关于 Harness 的工程实践。表面看是在讲产品实现，实质上回答的是一个更长期的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当模型能力持续变化时，Agent 系统哪些层要稳定，哪些层应该允许快速替换？&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;核心判断&#34;&gt;核心判断
&lt;/h2&gt;&lt;p&gt;我对这篇文章的核心理解是：Agent 基础设施会越来越像一个轻量的 &lt;strong&gt;Agent OS&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;重点不在“把今天的最佳流程写死”，而在“定义长期稳定的系统抽象”。&lt;/p&gt;
&lt;h2 id=&#34;为什么这点重要&#34;&gt;为什么这点重要
&lt;/h2&gt;&lt;p&gt;很多 Agent 框架常见的问题是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把模型的临时短板固化为永久架构&lt;/li&gt;
&lt;li&gt;把 prompt 工程误当成系统边界&lt;/li&gt;
&lt;li&gt;把一次有效的补丁写成长期依赖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型会变强，今天合理的补丁，明天可能就是技术债。&lt;/p&gt;
&lt;h2 id=&#34;anthropic-的解法从具体-harness-到-meta-harness&#34;&gt;Anthropic 的解法：从具体 Harness 到 Meta-Harness
&lt;/h2&gt;&lt;p&gt;这套思路不是承诺某一种固定编排方式，而是抽象出三层稳定接口：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;session&lt;/code&gt;：可恢复的事件与状态历史&lt;/li&gt;
&lt;li&gt;&lt;code&gt;harness&lt;/code&gt;：推理与调度循环（brain）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sandbox&lt;/code&gt;：执行环境与工具能力（hands）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它们分离后，系统更容易替换、恢复和扩展。&lt;/p&gt;
&lt;h2 id=&#34;1-session-不是上下文窗口&#34;&gt;1) Session 不是上下文窗口
&lt;/h2&gt;&lt;p&gt;一个关键观点是：&lt;strong&gt;Session 不等于模型上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Session 应该是可查询、可回放、可恢复的事件日志，而不是直接塞给模型的历史拼接。&lt;/p&gt;
&lt;p&gt;这样做的价值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trimming 不等于历史消失&lt;/li&gt;
&lt;li&gt;compaction 不等于事实丢失&lt;/li&gt;
&lt;li&gt;崩溃恢复可以回到事件层，而不是依赖摘要记忆&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-harness-是可替换的编排层&#34;&gt;2) Harness 是可替换的编排层
&lt;/h2&gt;&lt;p&gt;Harness 应专注于调度，而不是持有业务状态。&lt;/p&gt;
&lt;p&gt;理想接口更接近：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;execute(name, input) -&amp;gt; string&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这意味着模型只关心“我能调用什么能力”，而不强绑定具体设备、容器或操作系统。&lt;/p&gt;
&lt;h2 id=&#34;3-sandbox-是手不是脑&#34;&gt;3) Sandbox 是“手”，不是“脑”
&lt;/h2&gt;&lt;p&gt;当 brain 和 hands 解耦：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具环境可以独立演进&lt;/li&gt;
&lt;li&gt;不同基础设施可以并行接入&lt;/li&gt;
&lt;li&gt;不必每个会话都预热完整执行环境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这直接带来更好的启动与扩展表现。&lt;/p&gt;
&lt;h2 id=&#34;性能与安全启发&#34;&gt;性能与安全启发
&lt;/h2&gt;&lt;p&gt;这种拆分通常会同时改善性能和安全。&lt;/p&gt;
&lt;p&gt;性能上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以先启动 brain，再按需拉起 hands&lt;/li&gt;
&lt;li&gt;降低首 token 延迟（TTFT）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安全上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不把高敏凭证直接暴露给模型&lt;/li&gt;
&lt;li&gt;用受控 proxy / vault 做间接凭证访问&lt;/li&gt;
&lt;li&gt;安全边界建立在系统约束上，而不是“模型应该做不到”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;相关链接&#34;&gt;相关链接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://claude.com/blog/claude-managed-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usage patterns and customer examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/engineering/managed-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The design of Claude Managed Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/managed-agents/quickstart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Onboarding, quickstart, overview of the CLI and SKDs &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 与 Agent Harness：为什么它看起来像 AGI</title>
        <link>https://knightli.com/2026/04/10/openclaw-agent-architecture-enterprise-ai/</link>
        <pubDate>Fri, 10 Apr 2026 09:16:17 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/10/openclaw-agent-architecture-enterprise-ai/</guid>
        <description>&lt;p&gt;很多人第一次接触 OpenClaw，会觉得它“比聊天机器人更像一个会做事的同事”。&lt;/p&gt;
&lt;p&gt;这种感觉并不神秘。关键在于：OpenClaw 不是单一模型能力的跃迁，而是一个完整的 &lt;strong&gt;Agent Harness&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;先给结论&#34;&gt;先给结论
&lt;/h2&gt;&lt;p&gt;OpenClaw 的本质可以概括为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型负责理解与决策&lt;/li&gt;
&lt;li&gt;Harness 负责记忆、工具、触发、执行与输出&lt;/li&gt;
&lt;li&gt;两者通过循环协作，形成“持续行动”的体验&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它“像 AGI”的核心原因，不是模型突然变成全能，而是系统工程把模型的可执行性放大了。&lt;/p&gt;
&lt;h2 id=&#34;什么是-harness&#34;&gt;什么是 Harness
&lt;/h2&gt;&lt;p&gt;可以把 Harness 理解为“给模型穿上的外骨骼”。&lt;/p&gt;
&lt;p&gt;单独的 LLM 通常只能在一次请求里给出回答，而 Harness 会补齐这些能力：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;会话与状态管理：把多轮任务串起来&lt;/li&gt;
&lt;li&gt;记忆机制：保存并按需召回上下文&lt;/li&gt;
&lt;li&gt;工具系统：调用浏览器、终端、文件与外部 API&lt;/li&gt;
&lt;li&gt;触发机制：由定时器或事件唤醒，不必每次都等人提问&lt;/li&gt;
&lt;li&gt;输出通道：把结果写回系统，而不只是回一段文字&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当这些能力被接入同一个循环时，模型就从“回答器”变成“执行器”。&lt;/p&gt;
&lt;h2 id=&#34;openclaw-为什么显得不一样&#34;&gt;OpenClaw 为什么显得不一样
&lt;/h2&gt;&lt;p&gt;传统聊天机器人是“问一次，答一次”。&lt;/p&gt;
&lt;p&gt;OpenClaw 更像“观察 -&amp;gt; 调工具 -&amp;gt; 看结果 -&amp;gt; 再决策”的闭环。闭环一旦成立，就会表现出持续推进任务的能力。&lt;/p&gt;
&lt;p&gt;这也是 OpenClaw 最值得学习的地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它证明了 Agent 体验主要来自架构设计&lt;/li&gt;
&lt;li&gt;它把“自治”拆成了可工程化的模块&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;价值与边界&#34;&gt;价值与边界
&lt;/h2&gt;&lt;p&gt;OpenClaw 的优势是通用、灵活，但代价也明显：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文与工具定义越多，成本越高&lt;/li&gt;
&lt;li&gt;系统越通用，调试和治理越复杂&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在生产场景里，很多团队会选择更小、更专的 Agent，而不是一个“全能智能体”。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>分享一个电商商品图抠图与标准化的 Agent Skill</title>
        <link>https://knightli.com/2026/04/09/product-cutout-normalize-agent-skill-guide/</link>
        <pubDate>Thu, 09 Apr 2026 21:43:50 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/09/product-cutout-normalize-agent-skill-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;product-cutout-normalize&lt;/code&gt; 是一个给商品图使用的 Agent Skill。&lt;/p&gt;
&lt;p&gt;它会把原图处理成统一规格的透明底方图。默认规则是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1024x1024&lt;/code&gt; 画布&lt;/li&gt;
&lt;li&gt;透明背景&lt;/li&gt;
&lt;li&gt;尽量完整保留主体&lt;/li&gt;
&lt;li&gt;竖向主体自动转成横向&lt;/li&gt;
&lt;li&gt;主体居中&lt;/li&gt;
&lt;li&gt;主体可视宽度统一到 &lt;code&gt;820px&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;适合电商素材、商品库和详情页图片预处理。&lt;/p&gt;
&lt;h2 id=&#34;这个-skill-解决什么问题&#34;&gt;这个 skill 解决什么问题
&lt;/h2&gt;&lt;p&gt;很多商品图做完基础抠图后，还会有这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;白边或浅灰背景残留&lt;/li&gt;
&lt;li&gt;主体横竖方向不一致&lt;/li&gt;
&lt;li&gt;画布大小不一致&lt;/li&gt;
&lt;li&gt;主体大小忽大忽小&lt;/li&gt;
&lt;li&gt;透明区域里有小噪点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个 skill 会按固定流程处理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Gemini 抠图&lt;/li&gt;
&lt;li&gt;清理边缘浅色背景&lt;/li&gt;
&lt;li&gt;去掉小碎片噪点&lt;/li&gt;
&lt;li&gt;竖图转横图&lt;/li&gt;
&lt;li&gt;按目标宽度缩放&lt;/li&gt;
&lt;li&gt;放到统一尺寸的透明画布中央&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样导出的图片更整齐，也更适合批量使用。&lt;/p&gt;
&lt;h2 id=&#34;适用场景&#34;&gt;适用场景
&lt;/h2&gt;&lt;p&gt;适合下面这些需求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批量处理商品照片&lt;/li&gt;
&lt;li&gt;统一输出透明底 PNG&lt;/li&gt;
&lt;li&gt;统一主视觉尺寸&lt;/li&gt;
&lt;li&gt;需要稳定、可重复的处理流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只处理少量图片，或者每张图都要单独调整布局，那它未必适合。&lt;/p&gt;
&lt;h2 id=&#34;快速开始&#34;&gt;快速开始
&lt;/h2&gt;&lt;p&gt;最直接的运行方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\.venv\Scripts\python.exe&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.codex\skills\product-cutout-normalize\scripts\run_pipeline.py&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-overwrite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;运行前需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google-genai&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pillow&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.\.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;google-genai&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pillow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;设置环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:GEMINI_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your_api_key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;输出规则&#34;&gt;输出规则
&lt;/h2&gt;&lt;p&gt;默认输出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;透明背景 &lt;code&gt;PNG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1024x1024&lt;/code&gt; 画布&lt;/li&gt;
&lt;li&gt;主体宽度 &lt;code&gt;820px&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;主体居中&lt;/li&gt;
&lt;li&gt;小噪点会被清理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它不只是去背脚本，更像一个商品图整理脚本。&lt;/p&gt;
&lt;h2 id=&#34;主要参数说明&#34;&gt;主要参数说明
&lt;/h2&gt;&lt;p&gt;常用参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--model&lt;/code&gt;
默认 &lt;code&gt;gemini-2.5-flash-image&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--canvas-size&lt;/code&gt;
输出方形画布尺寸，默认 &lt;code&gt;1024&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--target-width&lt;/code&gt;
主体可视宽度，默认 &lt;code&gt;820&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--min-component-pixels&lt;/code&gt;
小于这个像素数的透明碎片会被移除，默认 &lt;code&gt;500&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--overwrite&lt;/code&gt;
输出文件已存在时直接覆盖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\.venv\Scripts\python.exe&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.codex\skills\product-cutout-normalize\scripts\run_pipeline.py&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\input&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\output&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-canvas-size&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1280&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-target-width&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;960&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-overwrite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;处理流程&#34;&gt;处理流程
&lt;/h2&gt;&lt;p&gt;处理流程很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Gemini 抠图&lt;/li&gt;
&lt;li&gt;清理边缘浅色背景&lt;/li&gt;
&lt;li&gt;去掉小碎片噪点&lt;/li&gt;
&lt;li&gt;竖图转横图&lt;/li&gt;
&lt;li&gt;按目标宽度缩放&lt;/li&gt;
&lt;li&gt;放到统一尺寸的透明画布中央&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;和普通抠图脚本的区别&#34;&gt;和普通抠图脚本的区别
&lt;/h2&gt;&lt;p&gt;和普通去背脚本相比，它还会额外处理这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主体方向统一&lt;/li&gt;
&lt;li&gt;主体尺寸统一&lt;/li&gt;
&lt;li&gt;画布尺寸统一&lt;/li&gt;
&lt;li&gt;小碎片噪点清理&lt;/li&gt;
&lt;li&gt;结果更适合直接放进素材库&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skillmd-源码&#34;&gt;SKILL.md 源码
&lt;/h2&gt;&lt;p&gt;下面保留 &lt;code&gt;SKILL.md&lt;/code&gt; 的完整源码，内容不做改动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: Run a reusable Gemini product-image pipeline that removes backgrounds, preserves the full subject, rotates tall products to a horizontal orientation, centers them on a 1024x1024 transparent canvas, and normalizes the visible subject width to 820px. Use when the user wants a repeatable cutout-and-normalize workflow for product photos or asks to batch-process product images into standardized square PNG assets.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# Product Cutout Normalize
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use this skill when product photos need the same deterministic finishing pipeline:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Gemini cutout from the original photo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; border cleanup to transparent
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; preserve the full subject
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; rotate to horizontal when the subject is taller than it is wide
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; center on a &lt;span class=&#34;sb&#34;&gt;`1024x1024`&lt;/span&gt; transparent canvas
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; normalize the visible subject width to &lt;span class=&#34;sb&#34;&gt;`820px`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Quick Start
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Run the bundled script:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\.venv\Scripts\python.exe&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.codex\skills\product-cutout-normalize\scripts\run_pipeline.py&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-overwrite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Required environment:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`GEMINI_API_KEY`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`google-genai`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`Pillow`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Workflow
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; Confirm the request matches this standard pipeline. If the user asks for a different canvas size, subject width, or layout rule, pass explicit flags instead of changing the script.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; Run the bundled script on the input directory.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; If a result looks misaligned, inspect the alpha bounding box and small detached artifacts first; this pipeline already removes tiny alpha components by default.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; Report the exact input and output directories used, plus any non-default flags.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Script
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Primary entry point:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`scripts/run_pipeline.py`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Key flags:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--model`&lt;/span&gt;: Gemini image model, default &lt;span class=&#34;sb&#34;&gt;`gemini-2.5-flash-image`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--canvas-size`&lt;/span&gt;: output square size, default &lt;span class=&#34;sb&#34;&gt;`1024`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--target-width`&lt;/span&gt;: visible subject width after normalization, default &lt;span class=&#34;sb&#34;&gt;`820`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--min-component-pixels`&lt;/span&gt;: remove detached alpha specks smaller than this, default &lt;span class=&#34;sb&#34;&gt;`500`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--overwrite`&lt;/span&gt;: replace existing outputs in the destination directory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Repo Integration
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;If the current project already has [&lt;span class=&#34;nt&#34;&gt;`scripts/nano_banana_cutout.py`&lt;/span&gt;](&lt;span class=&#34;na&#34;&gt;/c:/Work/my_shop/scripts/nano_banana_cutout.py&lt;/span&gt;), prefer that repo script when the user wants the same pipeline inside this repository. Use the bundled skill script when the task is cross-project reuse or when you want the workflow to stay self-contained inside the skill.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;scriptsrun_pipelinepy-源码&#34;&gt;scripts/run_pipeline.py 源码
&lt;/h2&gt;&lt;p&gt;下面保留 &lt;code&gt;scripts/run_pipeline.py&lt;/code&gt; 的完整源码，内容不做改动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;151
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;152
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;153
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;154
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;155
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;156
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;157
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;158
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;159
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;160
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;161
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;162
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;163
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;164
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;165
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;166
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;167
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;168
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;169
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;170
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;171
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;172
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;173
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;174
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;175
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;176
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;177
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;178
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;179
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;180
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;181
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;182
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;183
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;184
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;185
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;186
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;187
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;188
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;189
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;190
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;191
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;192
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;193
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;194
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;195
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;196
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;197
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;198
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;199
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;200
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;201
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;202
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;203
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;204
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;205
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;206
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;207
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;208
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;209
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;210
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;211
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;212
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;213
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;214
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;215
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;216
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;217
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;218
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;219
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;220
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;221
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;222
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;223
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;224
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;225
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;226
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;227
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;228
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;229
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;230
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;231
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;232
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;233
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;234
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;235
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;236
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;237
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;238
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;239
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;240
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;241
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;242
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;243
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;244
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;245
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;246
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;247
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;248
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;249
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;250
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;251
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;252
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;253
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;254
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;255
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;256
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;257
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;258
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;259
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;260
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;261
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;262
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;263
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;264
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;265
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;266
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;267
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;268
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;269
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;270
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;271
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;272
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;273
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;274
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;275
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;276
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;277
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;278
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;279
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;280
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;281
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;282
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;283
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;284
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;285
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;286
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;287
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;288
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;289
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;290
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;291
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;__future__&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;annotations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;argparse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;collections&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;PIL&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ImportError&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# pragma: no cover&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing dependency: google-genai. Install it with &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#39;.\.venv\Scripts\python.exe -m pip install google-genai&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;exc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Remove the entire background from this product photo and return only the product &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;on a fully transparent background as a PNG. Keep the full product intact, preserve &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;thin cable details, clean the inner loops and holes, and do not add any new objects &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;or shadows.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_CANVAS_SIZE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_TARGET_WIDTH&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;820&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_MIN_COMPONENT_PIXELS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;500&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SUPPORTED_EXTENSIONS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpeg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.webp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;170&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Unsupported image object type: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;!r}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;popleft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;remove_small_components&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;alpha&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getchannel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;alpha_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alpha&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alpha_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;popleft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alpha_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;py&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;rgba_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;normalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;bbox&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getchannel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getbbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bbox&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;crop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rotate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expand&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;resample&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Resampling&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BICUBIC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;rotated_bbox&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getchannel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getbbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rotated_bbox&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;crop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rotated_bbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;scale&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;round&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Resampling&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LANCZOS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;offset_x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;//&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;offset_y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;//&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;alpha_composite&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;offset_x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;offset_y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;finalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;transparent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove_small_components&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transparent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;normalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;parts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;candidates&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;candidates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned no content parts.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hasattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;as_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;finalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;finalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with_suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unlink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;missing_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned text only and no edited image.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArgumentParser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Cut out product images with Gemini and normalize them to square transparent PNGs.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-2.5-flash-image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--canvas-size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_CANVAS_SIZE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--target-width&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_TARGET_WIDTH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--min-component-pixels&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_MIN_COMPONENT_PIXELS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--overwrite&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing GEMINI_API_KEY environment variable.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Input directory does not exist: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--canvas-size must be positive.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--target-width must be positive and no larger than --canvas-size.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--min-component-pixels must be &amp;gt;= 0.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iterdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SUPPORTED_EXTENSIONS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;overwrite&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;skip &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下载附件：
&lt;a class=&#34;link&#34; href=&#34;product-cutout-normalize.7z&#34; &gt;product-cutout-normalize.7z&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>如何调用 Google Nano Banana 做图片抠图</title>
        <link>https://knightli.com/2026/04/09/google-nano-banana-cutout-guide/</link>
        <pubDate>Thu, 09 Apr 2026 20:10:48 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/09/google-nano-banana-cutout-guide/</guid>
        <description>&lt;p&gt;这篇文章用一段实际可运行的 Python 脚本，演示如何调用 Google 的 &lt;code&gt;Nano Banana&lt;/code&gt; 图像编辑能力来做商品图抠图。&lt;/p&gt;
&lt;p&gt;当前这份实现的目标很明确：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读取一个目录里的商品图片&lt;/li&gt;
&lt;li&gt;调用 Google 图像模型执行背景移除&lt;/li&gt;
&lt;li&gt;对返回图片再做一次本地透明背景清理&lt;/li&gt;
&lt;li&gt;最终输出为透明底 &lt;code&gt;PNG&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你手里已经有一批白底商品图、耳机图、线材图，想快速生成电商可用的透明背景图，这种方式会很直接。&lt;/p&gt;
&lt;h2 id=&#34;这段代码做了什么&#34;&gt;这段代码做了什么
&lt;/h2&gt;&lt;p&gt;这份脚本主要分成 4 个部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义提示词，让模型知道要执行“去背景、保留主体、不要加阴影”&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;google-genai&lt;/code&gt; 的图像生成接口&lt;/li&gt;
&lt;li&gt;从模型响应中提取图片结果&lt;/li&gt;
&lt;li&gt;再用本地逻辑把边缘浅色背景转成透明，减少残边&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也就是说，它不是单纯把图片丢给模型就结束，而是把“模型编辑 + 本地后处理”串起来了。&lt;/p&gt;
&lt;h2 id=&#34;运行前准备&#34;&gt;运行前准备
&lt;/h2&gt;&lt;p&gt;先安装依赖：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&lt;span class=&#34;se&#34;&gt;\.&lt;/span&gt;venv&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;cripts&lt;span class=&#34;se&#34;&gt;\p&lt;/span&gt;ython.exe -m pip install google-genai pillow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;如何获取-gemini_api_key&#34;&gt;如何获取 GEMINI_API_KEY
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt; 就是调用 Gemini API 时使用的密钥。根据 Google 官方 quickstart，如果你还没有 key，可以直接在 Google AI Studio 创建。&lt;/p&gt;
&lt;p&gt;获取步骤如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 Google AI Studio。&lt;/li&gt;
&lt;li&gt;登录你的 Google 账号。&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;Get API key&lt;/code&gt; 或 &lt;code&gt;API keys&lt;/code&gt; 页面。&lt;/li&gt;
&lt;li&gt;创建一个新的 API key。&lt;/li&gt;
&lt;li&gt;复制生成出来的 key。&lt;/li&gt;
&lt;li&gt;把它配置到本地环境变量里，供脚本读取。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果页面里还没有可用项目，通常需要先完成项目初始化，然后再回到 API Key 页面创建密钥。&lt;/p&gt;
&lt;p&gt;拿到 key 之后，再配置环境变量：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env&lt;/span&gt;:GEMINI_API_KEY&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your_api_key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你用的是 &lt;code&gt;cmd&lt;/code&gt;，可以写成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你同时设置了 &lt;code&gt;GEMINI_API_KEY&lt;/code&gt; 和 &lt;code&gt;GOOGLE_API_KEY&lt;/code&gt;，实际运行时通常会优先读取 &lt;code&gt;GOOGLE_API_KEY&lt;/code&gt;，所以建议只保留一个，避免混淆。&lt;/p&gt;
&lt;h2 id=&#34;目录结构示例&#34;&gt;目录结构示例
&lt;/h2&gt;&lt;p&gt;脚本接收两个参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;input_dir&lt;/code&gt;：输入图片目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;output_dir&lt;/code&gt;：输出图片目录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;images/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  product1.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  product2.png
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;output/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;如何运行&#34;&gt;如何运行
&lt;/h2&gt;&lt;p&gt;假设脚本文件名是 &lt;code&gt;cutout.py&lt;/code&gt;，运行方式如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&lt;span class=&#34;se&#34;&gt;\.&lt;/span&gt;venv&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;cripts&lt;span class=&#34;se&#34;&gt;\p&lt;/span&gt;ython.exe .&lt;span class=&#34;se&#34;&gt;\c&lt;/span&gt;utout.py .&lt;span class=&#34;se&#34;&gt;\i&lt;/span&gt;mages .&lt;span class=&#34;se&#34;&gt;\o&lt;/span&gt;utput
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你想换模型，也可以显式传参：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&lt;span class=&#34;se&#34;&gt;\.&lt;/span&gt;venv&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;cripts&lt;span class=&#34;se&#34;&gt;\p&lt;/span&gt;ython.exe .&lt;span class=&#34;se&#34;&gt;\c&lt;/span&gt;utout.py .&lt;span class=&#34;se&#34;&gt;\i&lt;/span&gt;mages .&lt;span class=&#34;se&#34;&gt;\o&lt;/span&gt;utput --model gemini-2.5-flash-image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;脚本会遍历输入目录中这些格式的文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.jpeg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.webp&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;处理完成后，会在输出目录中生成同名的透明底 &lt;code&gt;PNG&lt;/code&gt; 文件。&lt;/p&gt;
&lt;h2 id=&#34;核心调用流程&#34;&gt;核心调用流程
&lt;/h2&gt;&lt;p&gt;真正调用 Google Nano Banana 的关键代码在这里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里传入了两个内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一段文本提示词 &lt;code&gt;PROMPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;一张 &lt;code&gt;PIL.Image&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提示词内容是让模型把整张商品图背景移除，只保留主体，并强调几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留完整商品&lt;/li&gt;
&lt;li&gt;保留细线和线缆细节&lt;/li&gt;
&lt;li&gt;清理内部空洞和环形区域&lt;/li&gt;
&lt;li&gt;不要新增物体&lt;/li&gt;
&lt;li&gt;不要添加阴影&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类提示词对抠图质量影响很大，尤其是耳机线、透明边缘、空洞区域这类细节。&lt;/p&gt;
&lt;h2 id=&#34;为什么还要做一次本地后处理&#34;&gt;为什么还要做一次本地后处理
&lt;/h2&gt;&lt;p&gt;模型返回结果后，脚本没有直接保存，而是又执行了 &lt;code&gt;make_transparent_from_borders(image)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这一步的思路是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从图片四周边界开始找浅色背景像素&lt;/li&gt;
&lt;li&gt;用广度优先搜索把连通的浅色区域全部标记出来&lt;/li&gt;
&lt;li&gt;最后把这些区域统一改成透明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样做的好处是可以进一步清掉一些残留白边、浅灰背景和不够干净的边缘区域。&lt;/p&gt;
&lt;p&gt;判断“是不是背景”的条件在这里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;170&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;简单理解就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;颜色整体足够亮&lt;/li&gt;
&lt;li&gt;RGB 三通道差异不能太大&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比较适合处理白底、浅灰底、接近纯色的商品图背景。&lt;/p&gt;
&lt;h2 id=&#34;完整源码&#34;&gt;完整源码
&lt;/h2&gt;&lt;p&gt;下面保留当前这份完整源码，方便你直接复用或二次修改：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;__future__&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;annotations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;argparse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;collections&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;PIL&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ImportError&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# pragma: no cover&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing dependency: google-genai. Install it with &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#39;.\.venv\Scripts\python.exe -m pip install google-genai&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;exc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Remove the entire background from this product photo and return only the product &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;on a fully transparent background as a PNG. Keep the full product intact, preserve &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;thin cable details, clean the inner loops and holes, and do not add any new objects &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;or shadows.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;170&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Unsupported image object type: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;!r}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;popleft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;parts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;candidates&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;candidates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned no content parts.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hasattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;as_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;mime_type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mime_type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with_suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unlink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;missing_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned text only and no edited image.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArgumentParser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Use Nano Banana / Gemini image editing to cut out product images.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-2.5-flash-image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing GEMINI_API_KEY environment variable.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;exts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpeg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.webp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iterdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;适合继续优化的地方&#34;&gt;适合继续优化的地方
&lt;/h2&gt;&lt;p&gt;如果你准备把这段脚本继续用于批量生产，后面还可以继续补这些能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;增加失败重试，避免单张图片报错后整批中断&lt;/li&gt;
&lt;li&gt;记录日志，方便定位是哪张图处理失败&lt;/li&gt;
&lt;li&gt;对不同背景阈值做可配置化&lt;/li&gt;
&lt;li&gt;支持递归扫描子目录&lt;/li&gt;
&lt;li&gt;增加原图与结果图的对比预览&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;如果你只想快速理解“怎么调用 Google Nano Banana 做抠图”，其实核心就三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装 &lt;code&gt;google-genai&lt;/code&gt; 和 &lt;code&gt;Pillow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;设置 &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;client.models.generate_content()&lt;/code&gt; 传入提示词和图片&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;而这份代码的价值在于，它不只是调用模型，还补上了透明背景后处理，更适合直接拿去做商品图抠图任务。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ollama 云模型是什么，怎么用</title>
        <link>https://knightli.com/2026/04/09/ollama-cloud-models-guide/</link>
        <pubDate>Thu, 09 Apr 2026 18:42:32 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/09/ollama-cloud-models-guide/</guid>
        <description>&lt;p&gt;如果你平时用 &lt;code&gt;Ollama&lt;/code&gt; 跑本地模型，应该很容易理解云模型。&lt;/p&gt;
&lt;p&gt;区别只有一个核心点：&lt;br&gt;
本地模型是在你的电脑上推理，云模型是在 Ollama 的云端推理，再把结果返回给你。&lt;/p&gt;
&lt;h2 id=&#34;云模型是什么&#34;&gt;云模型是什么
&lt;/h2&gt;&lt;p&gt;Ollama 云模型保留了 Ollama 的调用方式，但把计算位置从本地换到了云端。&lt;/p&gt;
&lt;p&gt;这样做的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地硬件压力更小&lt;/li&gt;
&lt;li&gt;更容易使用本地机器跑不动的大模型&lt;/li&gt;
&lt;li&gt;仍然可以沿用熟悉的 Ollama 工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;和本地模型的区别&#34;&gt;和本地模型的区别
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;对比项&lt;/th&gt;
          &lt;th&gt;本地模型&lt;/th&gt;
          &lt;th&gt;云模型&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;运行位置&lt;/td&gt;
          &lt;td&gt;本机&lt;/td&gt;
          &lt;td&gt;云端&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;硬件要求&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;延迟&lt;/td&gt;
          &lt;td&gt;更低&lt;/td&gt;
          &lt;td&gt;受网络影响&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;隐私性&lt;/td&gt;
          &lt;td&gt;更强&lt;/td&gt;
          &lt;td&gt;请求会发送到云端&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你更在意隐私、低延迟和离线使用，本地模型更合适。&lt;br&gt;
如果你本地硬件不够，但又想体验更大的模型，云模型更方便。&lt;/p&gt;
&lt;h2 id=&#34;怎么识别云模型&#34;&gt;怎么识别云模型
&lt;/h2&gt;&lt;p&gt;当前 Ollama 的云模型一般会带 &lt;code&gt;-cloud&lt;/code&gt; 后缀，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpt-oss:120b-cloud
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可用模型列表可能会变化，实际以 Ollama 官方页面为准。&lt;/p&gt;
&lt;h2 id=&#34;怎么用&#34;&gt;怎么用
&lt;/h2&gt;&lt;p&gt;先登录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama signin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;登录完成后，直接运行云模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gpt-oss:120b-cloud
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你是在代码里调用，也可以配置 API Key：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OLLAMA_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Python 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;ollama&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://ollama.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;OLLAMA_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;为什么天空是蓝色的？&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gpt-oss:120b-cloud&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;flush&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Ollama 云模型可以理解成一句话：&lt;/p&gt;
&lt;p&gt;命令基本没变，只是模型不在你本地跑了。&lt;/p&gt;
&lt;p&gt;如果你的电脑带不动大模型，但你又想继续用 Ollama 的方式调用模型，云模型就是一个很直接的方案。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>从 Hugging Face 下载 GGUF 模型并导入 Ollama</title>
        <link>https://knightli.com/2026/04/09/import-huggingface-gguf-into-ollama/</link>
        <pubDate>Thu, 09 Apr 2026 11:00:07 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/09/import-huggingface-gguf-into-ollama/</guid>
        <description>&lt;p&gt;如果某个模型在 Ollama 官方库里没有现成版本，或者你想使用 Hugging Face 上的特定 &lt;code&gt;GGUF&lt;/code&gt; 文件，可以手动下载后再导入 Ollama。&lt;/p&gt;
&lt;h2 id=&#34;第-1-步从-hugging-face-下载-gguf-文件&#34;&gt;第 1 步：从 Hugging Face 下载 GGUF 文件
&lt;/h2&gt;&lt;p&gt;先在 Hugging Face 上找到目标模型对应的 &lt;code&gt;GGUF&lt;/code&gt; 文件。通常会看到多个量化版本，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选择哪个版本，取决于你的显存、内存和你对速度、质量的取舍。下载后把 &lt;code&gt;.gguf&lt;/code&gt; 文件放到固定目录，后面在 &lt;code&gt;Modelfile&lt;/code&gt; 里直接引用。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步编写-modelfile&#34;&gt;第 2 步：编写 Modelfile
&lt;/h2&gt;&lt;p&gt;在模型文件同目录新建一个 &lt;code&gt;Modelfile&lt;/code&gt;。最基本的写法如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FROM ./model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果文件名不同，就改成实际文件名，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FROM ./gemma-3-12b-it-q4_k_m.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只是先跑起来，通常这一行 &lt;code&gt;FROM&lt;/code&gt; 就够了。&lt;/p&gt;
&lt;h2 id=&#34;第-3-步导入到-ollama&#34;&gt;第 3 步：导入到 Ollama
&lt;/h2&gt;&lt;p&gt;然后执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama create myModelName -f Modelfile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myModelName&lt;/code&gt; 是你希望在 Ollama 里使用的本地模型名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-f Modelfile&lt;/code&gt; 表示从这个配置文件创建模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;创建成功后，这个 GGUF 文件就会成为一个可直接调用的本地模型。&lt;/p&gt;
&lt;h2 id=&#34;第-4-步运行模型&#34;&gt;第 4 步：运行模型
&lt;/h2&gt;&lt;p&gt;创建完成后直接运行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run myModelName
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后它的使用方式就和 &lt;code&gt;ollama pull&lt;/code&gt; 下来的模型基本一致。&lt;/p&gt;
&lt;h2 id=&#34;如何查看现有模型的-modelfile&#34;&gt;如何查看现有模型的 Modelfile
&lt;/h2&gt;&lt;p&gt;如果你不确定 &lt;code&gt;Modelfile&lt;/code&gt; 应该怎么写，可以直接查看现有模型的配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama show --modelfile llama3.2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这条命令会输出 &lt;code&gt;llama3.2&lt;/code&gt; 的 &lt;code&gt;Modelfile&lt;/code&gt; 内容，适合拿来参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FROM&lt;/code&gt; 应该怎么写&lt;/li&gt;
&lt;li&gt;模板和 system prompt 是怎么组织的&lt;/li&gt;
&lt;li&gt;参数是如何声明的&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;什么时候适合用这条路线&#34;&gt;什么时候适合用这条路线
&lt;/h2&gt;&lt;p&gt;下面这些场景适合从 Hugging Face 手动导入：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama 官方库里还没有你要的模型&lt;/li&gt;
&lt;li&gt;你想使用某个特定量化版本&lt;/li&gt;
&lt;li&gt;你已经手动下载好了 &lt;code&gt;GGUF&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;你想更精细地控制模型封装方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果官方库里已经有现成版本，直接 &lt;code&gt;pull&lt;/code&gt; 通常更省事；但当你需要特定量化或自定义封装时，&lt;code&gt;GGUF + Modelfile&lt;/code&gt; 会更灵活。&lt;/p&gt;
&lt;h2 id=&#34;常见注意点&#34;&gt;常见注意点
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FROM&lt;/code&gt; 后面的路径必须和实际 &lt;code&gt;.gguf&lt;/code&gt; 文件位置一致。&lt;/li&gt;
&lt;li&gt;文件名里如果有空格或特殊字符，建议先改成更简单的名字。&lt;/li&gt;
&lt;li&gt;不同 &lt;code&gt;GGUF&lt;/code&gt; 量化版本对内存和速度影响很大，导入成功不代表运行一定流畅。&lt;/li&gt;
&lt;li&gt;如果模型是聊天模型，后续通常还需要根据其格式调整 prompt 模板，效果才会更稳定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;从 Hugging Face 下载 &lt;code&gt;GGUF&lt;/code&gt; 文件再导入 Ollama 并不复杂。准备好模型文件，写一个最小可用的 &lt;code&gt;Modelfile&lt;/code&gt;，再执行 &lt;code&gt;ollama create&lt;/code&gt;，就可以把第三方 &lt;code&gt;GGUF&lt;/code&gt; 模型接入 Ollama。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ollama 下载模型 pull 速度很慢的排查和解决办法</title>
        <link>https://knightli.com/2026/04/09/ollama-download-slow-troubleshooting/</link>
        <pubDate>Thu, 09 Apr 2026 10:42:39 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/09/ollama-download-slow-troubleshooting/</guid>
        <description>&lt;p&gt;&lt;code&gt;ollama pull model_name:tag&lt;/code&gt; 在有些地区下载速度会很慢，而且过程并不稳定。&lt;/p&gt;
&lt;p&gt;如果你遇到的是大模型下载到一半反复中断、报错 &lt;code&gt;TLS handshake timeout&lt;/code&gt; 或 &lt;code&gt;unexpected EOF&lt;/code&gt;，那么问题很可能不只是 &lt;code&gt;registry.ollama.ai&lt;/code&gt; 本身，而是后续跳转到的实际下载链路。&lt;/p&gt;
&lt;p&gt;这篇文章记录一次简单直接的排查思路：先拿到模型文件的真实下载地址，再确认最终流量落到哪里，最后只针对关键域名做网络优化。&lt;/p&gt;
&lt;h2 id=&#34;获取模型文件的下载地址&#34;&gt;获取模型文件的下载地址
&lt;/h2&gt;&lt;p&gt;可以借助下面这个项目，把 Ollama 模型对应的 manifest 和 blob 下载地址直接提取出来：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Gholamrezadar/ollama-direct-downloader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Gholamrezadar/ollama-direct-downloader&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以 &lt;code&gt;gemma4:latest&lt;/code&gt; 为例，可以提取出类似下面这些链接。&lt;/p&gt;
&lt;h3 id=&#34;manifest-地址&#34;&gt;Manifest 地址
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/manifests/latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;blob-地址&#34;&gt;Blob 地址
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:56380ca2ab89f1f68c283f4d50863c0bcab52ae3f1b9a88e4ab5617b176f71a3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你只是想快速验证，也可以直接用 &lt;code&gt;curl&lt;/code&gt; 下载 manifest 和 blob：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/manifests/latest&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;sha256-f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;sha256-4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;sha256-7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;跳转后的真实下载地址&#34;&gt;跳转后的真实下载地址
&lt;/h2&gt;&lt;p&gt;尝试用 &lt;code&gt;wget&lt;/code&gt; 下载其中一个 blob，会发现请求并不是一直停留在 &lt;code&gt;registry.ollama.ai&lt;/code&gt;，而是会继续跳转到一个 &lt;code&gt;Cloudflare R2&lt;/code&gt; 对象存储地址：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&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;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 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;registry.ollama.ai&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;... 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 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;registry.ollama.ai&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;104.21.75.227&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;: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... &lt;span class=&#34;m&#34;&gt;307&lt;/span&gt; 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?... &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;following&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;--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 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;... 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&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;172.64.66.1&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;: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... &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; OK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Length: &lt;span class=&#34;m&#34;&gt;9608338848&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;8.9G&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;application/octet-stream&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;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;registry.ollama.ai&lt;/code&gt; 返回了 &lt;code&gt;307 Temporary Redirect&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;最终下载地址落在 &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;真正承载大文件传输的，实际上是后面的对象存储域名&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步很重要，因为它说明如果你的代理或分流规则只覆盖了 &lt;code&gt;registry.ollama.ai&lt;/code&gt;，但没有处理 &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;，那下载仍然可能很慢，甚至反复中断。&lt;/p&gt;
&lt;h2 id=&#34;调整网络设置&#34;&gt;调整网络设置
&lt;/h2&gt;&lt;p&gt;确认真实下载链路之后，排查方向就会清晰很多。&lt;/p&gt;
&lt;p&gt;如果你正在使用代理、分流或自定义 DNS，建议优先检查下面几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;registry.ollama.ai&lt;/code&gt; 和 &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt; 是否走了同一条稳定线路&lt;/li&gt;
&lt;li&gt;代理规则是否只覆盖了前者，而漏掉了后者&lt;/li&gt;
&lt;li&gt;当前出口是否适合持续下载数 GB 到数十 GB 的大文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类问题的关键并不是“能不能打开官网”，而是“跳转后的对象存储链路是否稳定、是否能长时间持续传输”。很多时候，真正需要优化的是 &lt;code&gt;Cloudflare R2&lt;/code&gt; 这一层，而不是前面的 registry 域名。&lt;/p&gt;
&lt;h2 id=&#34;调整前后的对比&#34;&gt;调整前后的对比
&lt;/h2&gt;&lt;p&gt;下面是一次实际下载 &lt;code&gt;gemma4:31b-it-q8_0&lt;/code&gt; 时的表现。&lt;/p&gt;
&lt;p&gt;调整前，下载速度较慢，而且会在中途报错：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS C:\Users\knightli&amp;gt; ollama run gemma4:31b-it-q8_0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling manifest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling a0feadb736f5:  38% ▕██████████████████████                                    ▏  12 GB/ 33 GB  1.2 MB/s   4h40m
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error: max retries exceeded: unexpected EOF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;调整后，再次下载同一个模型时，速度和稳定性都有明显改善：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS C:\Users\knightli&amp;gt; ollama run gemma4:31b-it-q8_0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling manifest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling a0feadb736f5:  46% ▕████████████████████████████████████████████████████████████████▏ 15 GB/ 33 GB  8.5 MB/s  35m23s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这并不意味着所有网络环境都能得到同样结果，但至少说明了一点：瓶颈很可能不在 Ollama 客户端本身，而在实际的大文件下载链路。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>树莓派 5 跑 Gemma 4 实测：可行，但响应较慢</title>
        <link>https://knightli.com/2026/04/08/gemma4-on-raspberry-pi5-benchmark/</link>
        <pubDate>Wed, 08 Apr 2026 18:42:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/08/gemma4-on-raspberry-pi5-benchmark/</guid>
        <description>&lt;p&gt;一次偏极限的尝试：在 &lt;code&gt;Raspberry Pi 5（8GB RAM）&lt;/code&gt; 上运行 Gemma 4。目标不是大模型版本，而是最小体量的 &lt;code&gt;E2B&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;结论先说：能跑、能用，但更适合低交互频率场景，不适合高实时要求的对话体验。&lt;/p&gt;
&lt;h2 id=&#34;测试环境&#34;&gt;测试环境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;设备：Raspberry Pi 5（4 核 CPU，8GB RAM）&lt;/li&gt;
&lt;li&gt;系统：Ubuntu Server（无图形界面）&lt;/li&gt;
&lt;li&gt;访问方式：SSH&lt;/li&gt;
&lt;li&gt;模型运行方式：LM Studio CLI（仅命令行模式）&lt;/li&gt;
&lt;li&gt;模型：Gemma 4 E2B（约 4.5GB）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第-1-步安装并启动-lm-studio-cli&#34;&gt;第 1 步：安装并启动 LM Studio CLI
&lt;/h2&gt;&lt;p&gt;安装 LM Studio 的 CLI 版本，然后启动服务并查看可用命令。&lt;/p&gt;
&lt;p&gt;由于是纯命令行环境，这种仅命令行部署方式非常适合树莓派。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步把模型存储切到-ssd&#34;&gt;第 2 步：把模型存储切到 SSD
&lt;/h2&gt;&lt;p&gt;为了避免频繁读写 SD 卡，我将模型下载目录改到了外接 SSD。&lt;/p&gt;
&lt;p&gt;树莓派 5 接 SSD 的体验明显比早期机型更实用，长期运行本地模型建议优先使用 SSD。&lt;/p&gt;
&lt;h2 id=&#34;第-3-步下载并加载-gemma-4-e2b&#34;&gt;第 3 步：下载并加载 Gemma 4 E2B
&lt;/h2&gt;&lt;p&gt;下载完成后，模型可以正常加载进内存。&lt;/p&gt;
&lt;p&gt;按官方信息，Gemma 4 系列具备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;面向 Agent 场景的工具调用能力（function calling）&lt;/li&gt;
&lt;li&gt;多模态能力（含图像/视频；小模型也具备语音相关能力）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128K&lt;/code&gt; 上下文窗口&lt;/li&gt;
&lt;li&gt;Apache 2.0 许可（可商用）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从树莓派的硬件条件看，E2B 这一档更适合先试起来。&lt;/p&gt;
&lt;h2 id=&#34;第-4-步启动-api-并开放局域网访问&#34;&gt;第 4 步：启动 API 并开放局域网访问
&lt;/h2&gt;&lt;p&gt;模型加载后，我先在本机端口启动 API（&lt;code&gt;4000&lt;/code&gt;），并通过 HTTP 请求确认模型列表可返回。&lt;/p&gt;
&lt;p&gt;问题在于：默认只监听本机，局域网其他设备无法直接访问。&lt;/p&gt;
&lt;p&gt;因为启动参数里不能直接设置 host，我用了 &lt;code&gt;socat&lt;/code&gt; 做端口转发，把树莓派外部端口请求桥接到 LM Studio 内部端口，实现局域网访问。&lt;/p&gt;
&lt;p&gt;结果是可行的：我在同一局域网的 MacBook 上能成功请求并拿到模型列表。&lt;/p&gt;
&lt;h2 id=&#34;第-5-步接入编辑器zed&#34;&gt;第 5 步：接入编辑器（Zed）
&lt;/h2&gt;&lt;p&gt;LM Studio 的本地服务兼容 OpenAI API 形态，因此多数支持自定义 &lt;code&gt;base_url&lt;/code&gt; 的工具都可以直接接入。&lt;/p&gt;
&lt;p&gt;我在 Zed 里新增了一个 LLM provider，指向树莓派上的 Gemma 4 实例，随后在编辑器内聊天测试通过。&lt;/p&gt;
&lt;h2 id=&#34;实际可用性判断&#34;&gt;实际可用性判断
&lt;/h2&gt;&lt;p&gt;这套方案适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地自动化脚本&lt;/li&gt;
&lt;li&gt;低并发、低实时性要求的辅助任务&lt;/li&gt;
&lt;li&gt;个人学习和边缘设备实验&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频交互聊天&lt;/li&gt;
&lt;li&gt;对响应延迟敏感的开发协作场景&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;Raspberry Pi 5&lt;/code&gt; 上运行 Gemma 4（E2B）是可行的，而且实际效果比预期更好。&lt;/p&gt;
&lt;p&gt;如果你的目标是“能离线跑、能接工具、能完成轻中量任务”，这条路线值得尝试；如果目标是流畅实时交互，仍建议上更强硬件。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 对接本地 Gemma 4：完整配置指南</title>
        <link>https://knightli.com/2026/04/08/openclaw-connect-gemma4-local/</link>
        <pubDate>Wed, 08 Apr 2026 18:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/08/openclaw-connect-gemma4-local/</guid>
        <description>&lt;p&gt;这篇文章演示如何把 &lt;code&gt;OpenClaw&lt;/code&gt; 对接到本地 &lt;code&gt;Gemma 4&lt;/code&gt; 模型（通过 &lt;code&gt;Ollama&lt;/code&gt; 提供接口）。&lt;/p&gt;
&lt;p&gt;如果你还没完成本地部署，可先参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/2026/04/08/run-gemma4-on-laptop/&#34; &gt;如何在笔记本电脑上运行 Gemma 4：5 分钟本地部署指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第-1-步启动-ollama-api-服务&#34;&gt;第 1 步：启动 Ollama API 服务
&lt;/h2&gt;&lt;p&gt;先启动 Ollama 服务：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你可以用下面的命令快速测试 API 是否正常：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://localhost:11434/api/generate -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;model&amp;#34;: &amp;#34;gemma4:12b&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;prompt&amp;#34;: &amp;#34;你好&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果能返回模型输出，说明本地 API 已可用。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步配置-openclaw-接入-ollama&#34;&gt;第 2 步：配置 OpenClaw 接入 Ollama
&lt;/h2&gt;&lt;p&gt;OpenClaw 配置文件路径通常为：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.openclaw/config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;编辑 &lt;code&gt;config.yaml&lt;/code&gt;，在 &lt;code&gt;models&lt;/code&gt; 中新增一个本地模型条目：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 你已有的模型配置...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;gemma4-local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;provider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ollama&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;base_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;http://localhost:11434&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemma4:12b&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;120s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;第-3-步设置默认模型可选&#34;&gt;第 3 步：设置默认模型（可选）
&lt;/h2&gt;&lt;p&gt;如果你希望默认走 Gemma 4，可添加：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;default_model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemma4-local&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;第-4-步重启并验证-openclaw&#34;&gt;第 4 步：重启并验证 OpenClaw
&lt;/h2&gt;&lt;p&gt;重启 OpenClaw：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看模型列表：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw models list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;发起一次对话测试：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw chat --model gemma4-local &lt;span class=&#34;s2&#34;&gt;&amp;#34;你好&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果对话返回正常，说明 OpenClaw 已成功接入本地 Gemma 4。&lt;/p&gt;
&lt;h2 id=&#34;常见排查&#34;&gt;常见排查
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;connection refused&lt;/code&gt;：先确认 &lt;code&gt;ollama serve&lt;/code&gt; 是否在运行。&lt;/li&gt;
&lt;li&gt;模型找不到：检查模型名是否与 &lt;code&gt;ollama list&lt;/code&gt; 一致（例如 &lt;code&gt;gemma4:12b&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;响应超时：可适当提高 &lt;code&gt;timeout&lt;/code&gt;，并优先测试较小模型。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>如何在笔记本电脑上运行 Gemma 4：5 分钟本地部署指南</title>
        <link>https://knightli.com/2026/04/08/run-gemma4-on-laptop/</link>
        <pubDate>Wed, 08 Apr 2026 18:06:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/08/run-gemma4-on-laptop/</guid>
        <description>&lt;p&gt;如果你想在笔记本上本地运行 Gemma 4，&lt;code&gt;Ollama&lt;/code&gt; 是目前最省事的方式之一。即使不折腾复杂环境，通常 5 分钟左右也能跑起来。&lt;/p&gt;
&lt;h2 id=&#34;第-1-步安装-ollama&#34;&gt;第 1 步：安装 Ollama
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;打开 &lt;code&gt;https://ollama.com&lt;/code&gt;，下载对应系统的安装包。&lt;/li&gt;
&lt;li&gt;按系统完成安装：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;macOS：拖到 &lt;code&gt;Applications&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Windows：运行 &lt;code&gt;.exe&lt;/code&gt; 安装程序。&lt;/li&gt;
&lt;li&gt;Linux：使用官网提供的安装脚本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装完成后，Ollama 会以后台服务形式运行。除初次安装外，日常可以只用简单命令。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步下载-gemma-4-模型&#34;&gt;第 2 步：下载 Gemma 4 模型
&lt;/h2&gt;&lt;p&gt;打开终端，执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull gemma4:4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你的机器性能更强，可以改成 &lt;code&gt;12b&lt;/code&gt; 或 &lt;code&gt;27b&lt;/code&gt;。下载完成后，模型会保存在本地。&lt;/p&gt;
&lt;p&gt;查看已下载模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;第-3-步启动模型&#34;&gt;第 3 步：启动模型
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这会在终端打开交互式对话。输入问题后回车即可；结束会话可输入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/bye
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你更喜欢网页聊天界面，可以配合 &lt;code&gt;Open WebUI&lt;/code&gt; 使用。它可以把 Ollama 包装成浏览器端 UI，通常通过 Docker 几分钟即可完成配置。&lt;/p&gt;
&lt;h2 id=&#34;笔记本性能优化建议&#34;&gt;笔记本性能优化建议
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Apple Silicon（M2/M3/M4）：默认走 Metal，加速效果通常很好，&lt;code&gt;12B&lt;/code&gt; 也有不错体验。&lt;/li&gt;
&lt;li&gt;NVIDIA 显卡：检测到兼容 GPU 时会自动使用 CUDA，建议提前更新驱动。&lt;/li&gt;
&lt;li&gt;仅 CPU 推理：可以运行，但大模型会明显变慢；多数 CPU-only 场景建议优先 &lt;code&gt;4B&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;释放内存：加载大模型前尽量关闭占内存应用。经验上每 10 亿参数大约需要 &lt;code&gt;0.5GB 到 1GB&lt;/code&gt; 内存。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;模型怎么选&#34;&gt;模型怎么选
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 1B&lt;/code&gt;：适合轻量问答、基础摘要、快速查询；复杂推理能力有限。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 4B&lt;/code&gt;：适合多数日常任务（写作辅助、代码辅助、资料总结），速度和质量平衡较好。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 12B&lt;/code&gt;：适合更长上下文和更复杂任务，在代码与推理场景更稳。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 27B&lt;/code&gt;：适合高要求任务，效果更接近云端大模型，但对硬件要求明显更高。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Android 上安装并运行 Gemma 4：完整上手指南</title>
        <link>https://knightli.com/2026/04/08/android-gemma4-install-run-guide/</link>
        <pubDate>Wed, 08 Apr 2026 17:55:53 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/08/android-gemma4-install-run-guide/</guid>
        <description>&lt;p&gt;如果你想在手机上离线体验 Gemma 4，这篇文章会带你从安装到实用功能一步步跑通。&lt;/p&gt;
&lt;h2 id=&#34;第-1-步获取应用&#34;&gt;第 1 步：获取应用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Google AI Edge Gallery&lt;/code&gt; 目前不在 Google Play 上架，需要通过 APK 侧载安装。&lt;/p&gt;
&lt;p&gt;在 Android 设备上依次进入：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;设置 -&amp;gt; 应用 -&amp;gt; 特殊应用权限 -&amp;gt; 安装未知应用&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然后：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;找到你使用的浏览器（例如 Chrome 或 Firefox），开启“允许来自此来源”。&lt;/li&gt;
&lt;li&gt;在手机浏览器打开 &lt;code&gt;Google AI Edge Gallery&lt;/code&gt; 的 GitHub Releases 页面。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;地址：https://github.com/google-ai-edge/gallery/releases&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;下载最新的 &lt;code&gt;.apk&lt;/code&gt; 安装包。&lt;/li&gt;
&lt;li&gt;下载完成后，在通知栏或文件管理器中点开安装包，按提示完成安装。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;网络正常时，这一步通常约 2 分钟可完成。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步首次打开并授权&#34;&gt;第 2 步：首次打开并授权
&lt;/h2&gt;&lt;p&gt;首次打开 &lt;code&gt;AI Edge Gallery&lt;/code&gt; 时，应用会请求存储权限，用于保存模型文件。建议直接允许，否则应用无法下载或加载模型。&lt;/p&gt;
&lt;p&gt;首页一般会看到这些入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ask Image&lt;/code&gt;：图像理解任务（描述图片、回答图片相关问题）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AI Chat&lt;/code&gt;：常规文本对话&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Summarize&lt;/code&gt;：粘贴文本并生成摘要&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Smart Reply&lt;/code&gt;：生成回复建议&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大多数用户最常用的是 &lt;code&gt;AI Chat&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;第-3-步下载-gemma-4-模型&#34;&gt;第 3 步：下载 Gemma 4 模型
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;进入 &lt;code&gt;AI Chat&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;按提示点击 &lt;code&gt;Get Models&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在模型列表中选择 Gemma 4 版本（会显示对应体积）。&lt;/li&gt;
&lt;li&gt;按设备性能选择模型；如果手机是 &lt;code&gt;8GB RAM&lt;/code&gt;，可先从 &lt;code&gt;Gemma 4 4B&lt;/code&gt; 开始。&lt;/li&gt;
&lt;li&gt;点击 &lt;code&gt;Download&lt;/code&gt;，后台开始下载。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意：模型越大，下载时间越长。你也可以下载多个模型，后续按需切换，已下载模型会保存在本机，不必重复下载。&lt;/p&gt;
&lt;h2 id=&#34;第-4-步开始对话&#34;&gt;第 4 步：开始对话
&lt;/h2&gt;&lt;p&gt;模型下载完成后：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击模型名称进行加载（首次加载通常需要 10 到 30 秒，取决于模型大小和设备性能）。&lt;/li&gt;
&lt;li&gt;在聊天框输入问题并发送。&lt;/li&gt;
&lt;li&gt;模型会在本地生成回复，数据不会上传到云端。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一般第一条回复会稍慢，这是模型预热的正常现象；同一会话后续回复通常更快。&lt;/p&gt;
&lt;h2 id=&#34;第-5-步体验视觉能力gemma-4-多模态&#34;&gt;第 5 步：体验视觉能力（Gemma 4 多模态）
&lt;/h2&gt;&lt;p&gt;如果你下载的是 Gemma 4 多模态版本：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;返回主菜单，进入 &lt;code&gt;Ask Image&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;选择一张图片，或直接拍照。&lt;/li&gt;
&lt;li&gt;输入你想问的问题（例如“这张图里有什么？”或“图里有哪些文字需要注意？”）。&lt;/li&gt;
&lt;li&gt;等待模型在本地分析并返回结果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这项功能可以离线使用，图片内容也不会发送到外部服务器。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>使用 Agent Skills 取代 VS Code 中 Copilot 的“生成提交消息”的功能</title>
        <link>https://knightli.com/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/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/</guid>
        <description>&lt;p&gt;VS Code 的 GitHub Copilot “生成提交消息” 是一个非常实用的功能。配额用尽以后重置周期会非常长。
本文是使用本地 Agent Skills，取代这个功能的一个尝试。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1.png&#34;
	width=&#34;645&#34;
	height=&#34;194&#34;
	srcset=&#34;https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1_hu_6b81e604b29d8606.png 480w, https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1_hu_5f11e2ea13cbceb8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成提交消息&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;332&#34;
		data-flex-basis=&#34;797px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;问题与目标&#34;&gt;问题与目标
&lt;/h2&gt;&lt;p&gt;本文目标是提供一套可直接落地的替代方案：使用 &lt;code&gt;git-commit-push-zh&lt;/code&gt; skill agents 完成标准化提交与推送。&lt;/p&gt;
&lt;h2 id=&#34;替代方案git-commit-push-zh&#34;&gt;替代方案：&lt;code&gt;git-commit-push-zh&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;该 skill 将“当前改动”收敛为固定流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查看变更状态。&lt;/li&gt;
&lt;li&gt;确认当前分支。&lt;/li&gt;
&lt;li&gt;暂存改动。&lt;/li&gt;
&lt;li&gt;生成中文提交信息。&lt;/li&gt;
&lt;li&gt;执行 commit。&lt;/li&gt;
&lt;li&gt;推送到远端分支。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对应命令如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git status --short
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch --show-current
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add -A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;中文提交信息&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin &amp;lt;当前分支&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;提交信息建议规范&#34;&gt;提交信息建议规范
&lt;/h2&gt;&lt;p&gt;建议统一格式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;类型&amp;gt;(&amp;lt;范围&amp;gt;): &amp;lt;中文摘要&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;类型示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat&lt;/code&gt;：新增功能&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix&lt;/code&gt;：修复问题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs&lt;/code&gt;：文档更新&lt;/li&gt;
&lt;li&gt;&lt;code&gt;refactor&lt;/code&gt;：代码重构&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore&lt;/code&gt;：维护性改动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat(site): 新增全站 head 广告脚本注入&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix(i18n): 修正 relref 相关文章链接路径&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore(content): 合并 AI 工作流分类到 AI工具&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;常见失败场景&#34;&gt;常见失败场景
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nothing to commit&lt;/code&gt;：当前无可提交改动，停止推送即可。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;push&lt;/code&gt; 失败：优先检查权限、远端分支状态、冲突。&lt;/li&gt;
&lt;li&gt;SSH/权限异常：确认凭据与权限后再重试。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;附录原始-skillmd&#34;&gt;附录：原始 &lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;以下内容为 &lt;code&gt;git-commit-push-zh&lt;/code&gt; 的原始文档，原样保留，便于后续复用与维护。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: git-commit-push-zh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 在当前 Git 仓库中将“当前更改”完成一次标准提交流程：检查状态、暂存变更、生成中文提交信息、执行 commit 并 push 到当前分支对应远端。用户提出“提交代码”“提交当前更改”“生成中文提交信息并推送”“git commit push 中文说明”等请求时使用。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 中文提交并推送
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;使用此技能将当前仓库改动一次性提交并推送到远端。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 查看变更状态：&lt;span class=&#34;sb&#34;&gt;`git status --short`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 确认当前分支：&lt;span class=&#34;sb&#34;&gt;`git branch --show-current`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 暂存当前变更：&lt;span class=&#34;sb&#34;&gt;`git add -A`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 生成中文提交信息（简洁、可检索）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;5.&lt;/span&gt; 执行提交：&lt;span class=&#34;sb&#34;&gt;`git commit -m &amp;#34;&amp;lt;中文提交信息&amp;gt;&amp;#34;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;6.&lt;/span&gt; 执行推送：&lt;span class=&#34;sb&#34;&gt;`git push origin &amp;lt;当前分支&amp;gt;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 提交信息规范（中文）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 建议格式：&lt;span class=&#34;sb&#34;&gt;`&amp;lt;类型&amp;gt;(&amp;lt;范围&amp;gt;): &amp;lt;中文摘要&amp;gt;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 类型示例：&lt;span class=&#34;sb&#34;&gt;`feat`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`fix`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`chore`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`docs`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`refactor`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 摘要要求：准确描述本次改动，不写空话。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 若仅少量变更，也保持可读性与可检索性。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;示例：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`feat(site): 新增全站 head 广告脚本注入`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`fix(i18n): 修正 relref 相关文章链接路径`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`chore(content): 合并 AI 工作流分类到 AI工具`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 错误处理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 若无可提交变更（nothing to commit），明确告知并停止 push。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 若 push 失败，先回报关键错误（权限、远端不存在、冲突等）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 常见 SSH/权限问题可在用户确认后重试高权限环境。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 输出约定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 汇报提交哈希、分支名、提交信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 汇报 push 结果（成功或失败原因）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 仅在确有失败时提供下一步最小操作建议。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>如何判断 Ollama 模型是否已加载到 GPU</title>
        <link>https://knightli.com/2026/04/06/check-ollama-model-loaded-on-gpu/</link>
        <pubDate>Mon, 06 Apr 2026 10:15:18 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/06/check-ollama-model-loaded-on-gpu/</guid>
        <description>&lt;p&gt;想确认 Ollama 模型有没有真正跑在 GPU 上，最直接的方法是查看当前已加载模型的处理器占用信息。&lt;/p&gt;
&lt;h2 id=&#34;使用命令&#34;&gt;使用命令
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;示例输出&#34;&gt;示例输出
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAME        ID            SIZE    PROCESSOR   UNTIL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama3:70b  bcfb190ca3a7  42 GB   100% GPU    4 minutes from now
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;如何解读-processor-列&#34;&gt;如何解读 &lt;code&gt;PROCESSOR&lt;/code&gt; 列
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100% GPU&lt;/code&gt;：模型完全加载在 GPU 显存中。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;：模型完全加载在系统内存中（未使用 GPU 推理）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;48%/52% CPU/GPU&lt;/code&gt;：模型部分在内存、部分在显存中，属于混合加载。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;实用建议&#34;&gt;实用建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;如果你预期使用 GPU，但看到 &lt;code&gt;100% CPU&lt;/code&gt;，先检查显卡驱动、CUDA/ROCm 环境和 Ollama 运行参数。&lt;/li&gt;
&lt;li&gt;模型参数量较大、显存不足时，通常会出现 CPU/GPU 混合加载。&lt;/li&gt;
&lt;li&gt;排查性能问题时，先执行 &lt;code&gt;ollama ps&lt;/code&gt; 再看速度数据，能更快定位瓶颈。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ollama ps&lt;/code&gt; 是判断模型是否真正使用 GPU 的第一步。重点看 &lt;code&gt;PROCESSOR&lt;/code&gt; 列即可快速确认当前加载位置，并据此决定后续优化方向。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>使用AI维护Hugo多语言博客的Agent Skill</title>
        <link>https://knightli.com/2026/04/06/agent-skill-sync-post-translations-guide/</link>
        <pubDate>Mon, 06 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/06/agent-skill-sync-post-translations-guide/</guid>
        <description>&lt;p&gt;如果你在维护 Hugo 多语言博客，经常会遇到一个高频痛点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文写完后，需要同步生成英文和繁体版本&lt;/li&gt;
&lt;li&gt;三个语言文件要保持结构一致&lt;/li&gt;
&lt;li&gt;front matter 既要翻译又要遵守 Hugo 格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;sync-post-translations&lt;/code&gt; 就是为这个场景设计的 Agent Skill。&lt;/p&gt;
&lt;h2 id=&#34;这个技能解决什么问题&#34;&gt;这个技能解决什么问题
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sync-post-translations&lt;/code&gt; 的定位很清晰：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;以 &lt;code&gt;index.zh-cn.md&lt;/code&gt; 为源文件&lt;/li&gt;
&lt;li&gt;在同目录生成或更新 &lt;code&gt;index.en.md&lt;/code&gt;、&lt;code&gt;index.zh-tw.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;保持 Markdown 结构一致&lt;/li&gt;
&lt;li&gt;对 front matter 执行明确规则（尤其是 &lt;code&gt;date&lt;/code&gt;、&lt;code&gt;slug&lt;/code&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;适用触发词示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“同步翻译英文繁体”&lt;/li&gt;
&lt;li&gt;“把这篇文章同步成英文和繁体”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;技能目录结构&#34;&gt;技能目录结构
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.\sync-post-translations\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─ SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─ agents\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   └─ openai.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;核心代码一skillmd&#34;&gt;核心代码一：SKILL.md
&lt;/h2&gt;&lt;p&gt;下面是该技能的核心规则文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: sync-post-translations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 将 Hugo 文章从简体中文源文件（&lt;span class=&#34;sb&#34;&gt;`index.zh-cn.md`&lt;/span&gt;）同步翻译为英文（&lt;span class=&#34;sb&#34;&gt;`index.en.md`&lt;/span&gt;）和繁体中文（&lt;span class=&#34;sb&#34;&gt;`index.zh-tw.md`&lt;/span&gt;）。当用户提出“en 繁体”“同步翻译英文繁体”或要求同时生成/更新两种语言版本且需保持 front matter 与 Markdown 结构一致时使用。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 同步文章翻译
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;使用此技能为同一篇文章生成或更新多语言版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 在目标文章目录中定位源文件 &lt;span class=&#34;sb&#34;&gt;`index.zh-cn.md`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 读取完整 front matter 与正文内容。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 在同目录创建或更新 &lt;span class=&#34;sb&#34;&gt;`index.en.md`&lt;/span&gt; 与 &lt;span class=&#34;sb&#34;&gt;`index.zh-tw.md`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 确保三语结构对齐后执行 Hugo 构建检查。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 翻译规则
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 严格保留 &lt;span class=&#34;sb&#34;&gt;`slug`&lt;/span&gt; 原值。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`date`&lt;/span&gt; 统一规范为 Hugo 常用带时间格式（RFC3339），示例：&lt;span class=&#34;sb&#34;&gt;`2026-04-05T10:00:00+08:00`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 自然翻译以下 front matter 字段：&lt;span class=&#34;sb&#34;&gt;`title`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`description`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`tags`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`categories`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 保持 Markdown 结构不变：标题层级、列表形态、代码块、链接与命令行示例。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;5.&lt;/span&gt; 技术标识符保持原样：文件名、CLI 参数、模型名、设备名、URL、包名等。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;6.&lt;/span&gt; 若 YAML 的 &lt;span class=&#34;sb&#34;&gt;`title`&lt;/span&gt; 含有 &lt;span class=&#34;sb&#34;&gt;`:`&lt;/span&gt;，必须加引号，避免解析报错。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;7.&lt;/span&gt; 在不改变语义前提下，使用目标语言自然标点与表达习惯（&lt;span class=&#34;sb&#34;&gt;`en`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`zh-tw`&lt;/span&gt;）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 输出约定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 仅在源文章同目录写入目标文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 汇报变更的文件路径。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 条件允许时执行 &lt;span class=&#34;sb&#34;&gt;`hugo --source . --destination public`&lt;/span&gt;，并反馈通过/失败；失败时给出关键报错行。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 质量标准
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 全文术语前后一致。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 避免机器直译感，优先可发布文风。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 章节内容完整，不省略示例、注意点与总结。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;核心代码二agentsopenaiyaml&#34;&gt;核心代码二：agents/openai.yaml
&lt;/h2&gt;&lt;p&gt;这个文件定义了技能在 Agent 侧的展示和默认提示词：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;interface&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;display_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;同步文章翻译&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;short_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;生成或更新 EN + ZH-TW 翻译稿&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;default_prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;使用该技能在同一 Hugo 文章目录中，从 `index.zh-cn.md` 生成或同步 `index.en.md` 与 `index.zh-tw.md`，保留 `date` 与 `slug`，保持 Markdown 结构一致，并执行 Hugo 构建校验。&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;实战调用示例&#34;&gt;实战调用示例
&lt;/h2&gt;&lt;h3 id=&#34;1-面向人的自然语言触发&#34;&gt;1) 面向人的自然语言触发
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请把 content/post/2026/04/06/index.zh-cn.md 同步翻译成英文和繁体，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求 date 用 RFC3339，slug 不变，最后跑 hugo 校验。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-你应当期待的输出结果&#34;&gt;2) 你应当期待的输出结果
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;已更新：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- content/post/2026/04/06/index.en.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- content/post/2026/04/06/index.zh-tw.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;构建校验：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- hugo --source . --destination public
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 结果：PASS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;为什么这些规则很关键&#34;&gt;为什么这些规则很关键
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;slug&lt;/code&gt; 保持不变，能稳定 URL 与历史外链。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;date&lt;/code&gt; 统一 RFC3339（带时区）可避免 Hugo/主题在时间解析上的歧义。&lt;/li&gt;
&lt;li&gt;Markdown 结构不变，能避免翻译后目录、代码块、短代码渲染错位。&lt;/li&gt;
&lt;li&gt;技术标识符不翻译，可显著降低“命令不可用/文件名不匹配”问题。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;常见坑位与规避&#34;&gt;常见坑位与规避
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt; 里有 &lt;code&gt;:&lt;/code&gt; 却没加引号，YAML 会解析失败。&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;--flag&lt;/code&gt;、URL、包名翻译了，示例命令会直接失效。&lt;/li&gt;
&lt;li&gt;三语标题层级不一致（如中文 &lt;code&gt;##&lt;/code&gt; 变成英文 &lt;code&gt;###&lt;/code&gt;），目录锚点会错位。&lt;/li&gt;
&lt;li&gt;只翻译正文不处理 front matter，页面列表与 SEO 信息会异常。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>Ollama 模型默认存储位置与迁移方法（防止 C 盘爆满）</title>
        <link>https://knightli.com/2026/04/06/ollama-model-storage-path-and-migration/</link>
        <pubDate>Mon, 06 Apr 2026 09:38:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/06/ollama-model-storage-path-and-migration/</guid>
        <description>&lt;p&gt;本地跑大模型时，最容易先爆掉的往往是系统盘。Ollama 默认会把模型下载到用户目录或系统目录，如果不提前规划路径，C 盘很快就会吃满。&lt;/p&gt;
&lt;h2 id=&#34;ollama-常见默认模型目录&#34;&gt;Ollama 常见默认模型目录
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Windows：&lt;code&gt;C:\Users\&amp;lt;用户名&amp;gt;\.ollama\models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS：&lt;code&gt;~/.ollama/models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux：&lt;code&gt;/usr/share/ollama/.ollama/models&lt;/code&gt;（部分安装方式可能不同）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;windows把模型目录迁移到非系统盘&#34;&gt;Windows：把模型目录迁移到非系统盘
&lt;/h2&gt;&lt;p&gt;建议把模型目录迁移到例如 &lt;code&gt;D:\OllamaModels&lt;/code&gt;，核心方法是设置系统环境变量 &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;1-新建目标目录&#34;&gt;1. 新建目标目录
&lt;/h2&gt;&lt;p&gt;例如先创建：&lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;2-配置系统环境变量&#34;&gt;2. 配置系统环境变量
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;变量名：&lt;code&gt;OLLAMA_MODELS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;变量值：&lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可在“系统属性 -&amp;gt; 高级 -&amp;gt; 环境变量”中添加，也可用命令行设置（管理员 PowerShell）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetEnvironmentVariable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;OLLAMA_MODELS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\OllamaModels&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Machine&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-重启-ollama或重启系统&#34;&gt;3. 重启 Ollama（或重启系统）
&lt;/h2&gt;&lt;p&gt;环境变量生效后，重新启动 Ollama 服务/应用。若不确定是否已生效，直接重启电脑最稳妥。&lt;/p&gt;
&lt;h2 id=&#34;4-验证新目录是否生效&#34;&gt;4. 验证新目录是否生效
&lt;/h2&gt;&lt;p&gt;下载或拉取任意模型后，检查 &lt;code&gt;D:\OllamaModels&lt;/code&gt; 下是否出现新文件。&lt;/p&gt;
&lt;h2 id=&#34;5-清理旧目录确认无误后&#34;&gt;5. 清理旧目录（确认无误后）
&lt;/h2&gt;&lt;p&gt;确认模型已在新目录正常工作，再删除旧目录内容，回收 C 盘空间。&lt;/p&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题
&lt;/h2&gt;&lt;h3 id=&#34;设置后仍写入-c-盘怎么办&#34;&gt;设置后仍写入 C 盘怎么办
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;先确认环境变量是“系统变量”而不是“当前会话临时变量”。&lt;/li&gt;
&lt;li&gt;确认 Ollama 进程已重启。&lt;/li&gt;
&lt;li&gt;检查变量名是否准确：必须是 &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;是否需要迁移旧模型文件&#34;&gt;是否需要迁移旧模型文件
&lt;/h3&gt;&lt;p&gt;如果你不想重复下载，可在停止 Ollama 后手动复制旧模型到新目录，再启动 Ollama 验证。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>在 Linux 上彻底卸载 Ollama（含残留清理）</title>
        <link>https://knightli.com/2026/04/06/uninstall-ollama-on-linux/</link>
        <pubDate>Mon, 06 Apr 2026 09:16:29 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/06/uninstall-ollama-on-linux/</guid>
        <description>&lt;p&gt;如果你需要在 Linux 上彻底移除 Ollama，可以按下面顺序执行。本文会清理服务、可执行文件、模型目录，以及 &lt;code&gt;ollama&lt;/code&gt; 用户和用户组。&lt;/p&gt;
&lt;h2 id=&#34;卸载前提醒&#34;&gt;卸载前提醒
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;以下命令会删除本机 Ollama 模型文件（通常在 &lt;code&gt;/usr/share/ollama&lt;/code&gt;），请先确认是否需要备份。&lt;/li&gt;
&lt;li&gt;命令默认使用 &lt;code&gt;sudo&lt;/code&gt;，请确保当前账号有管理员权限。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-停止并移除-systemd-服务&#34;&gt;1. 停止并移除 systemd 服务
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl stop ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl disable ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -f /etc/systemd/system/ollama.service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;2-删除-ollama-可执行文件&#34;&gt;2. 删除 Ollama 可执行文件
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  sudo rm -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-删除-ollama-相关库目录如存在&#34;&gt;3. 删除 Ollama 相关库目录（如存在）
&lt;/h2&gt;&lt;p&gt;如果你的安装方式在 &lt;code&gt;lib&lt;/code&gt; 目录写入了 Ollama 文件，可按下面方式清理：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; d in /usr/local/lib/ollama /usr/lib/ollama /lib/ollama&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo rm -rf &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;4-删除模型与数据目录&#34;&gt;4. 删除模型与数据目录
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -rf /usr/share/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;5-删除系统用户与组如存在&#34;&gt;5. 删除系统用户与组（如存在）
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;id -u ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo userdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;getent group ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo groupdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;6-验证是否已卸载完成&#34;&gt;6. 验证是否已卸载完成
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ollama binary not found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果以上检查没有再找到 &lt;code&gt;ollama&lt;/code&gt;，说明已经卸载完成。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>大模型量化详解：FP16、Q8、Q5、Q4 到 Q2 怎么选？</title>
        <link>https://knightli.com/2026/04/05/llm-quantization-guide-fp16-q4-q2/</link>
        <pubDate>Sun, 05 Apr 2026 22:09:11 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/05/llm-quantization-guide-fp16-q4-q2/</guid>
        <description>&lt;p&gt;量化的核心目标很简单：用少量精度损失，换取更小体积、更低显存占用和更快推理速度。&lt;br&gt;
对本地部署用户来说，选对量化版本，往往比盲目追求大参数更重要。&lt;/p&gt;
&lt;h2 id=&#34;什么是量化&#34;&gt;什么是量化
&lt;/h2&gt;&lt;p&gt;量化是指把模型参数从高精度格式（如 &lt;code&gt;FP16&lt;/code&gt;）压缩为更低位宽格式（如 &lt;code&gt;Q8&lt;/code&gt;、&lt;code&gt;Q4&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;可以把它理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原始模型：像高精度照片，清晰但文件大。&lt;/li&gt;
&lt;li&gt;量化模型：像压缩照片，细节略损但更轻更快。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;常见量化版本对比&#34;&gt;常见量化版本对比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th&gt;精度/位宽&lt;/th&gt;
          &lt;th&gt;体积&lt;/th&gt;
          &lt;th&gt;质量损失&lt;/th&gt;
          &lt;th&gt;推荐场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;FP16&lt;/td&gt;
          &lt;td&gt;16 位浮点&lt;/td&gt;
          &lt;td&gt;最大&lt;/td&gt;
          &lt;td&gt;几乎无损&lt;/td&gt;
          &lt;td&gt;研究、评测、追求极致质量&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q8_0&lt;/td&gt;
          &lt;td&gt;8 位整数&lt;/td&gt;
          &lt;td&gt;较大&lt;/td&gt;
          &lt;td&gt;几乎无损&lt;/td&gt;
          &lt;td&gt;高配电脑，兼顾质量与性能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q5_K_M&lt;/td&gt;
          &lt;td&gt;5 位混合&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;轻微损失&lt;/td&gt;
          &lt;td&gt;日常主力，平衡方案&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
          &lt;td&gt;4 位混合&lt;/td&gt;
          &lt;td&gt;较小&lt;/td&gt;
          &lt;td&gt;可接受损失&lt;/td&gt;
          &lt;td&gt;通用默认，性价比高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q3_K_M&lt;/td&gt;
          &lt;td&gt;3 位混合&lt;/td&gt;
          &lt;td&gt;很小&lt;/td&gt;
          &lt;td&gt;明显损失&lt;/td&gt;
          &lt;td&gt;低配设备，能跑优先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q2_K&lt;/td&gt;
          &lt;td&gt;2 位混合&lt;/td&gt;
          &lt;td&gt;最小&lt;/td&gt;
          &lt;td&gt;较大损失&lt;/td&gt;
          &lt;td&gt;极限资源场景，临时可用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;量化命名规则&#34;&gt;量化命名规则
&lt;/h2&gt;&lt;p&gt;以 &lt;code&gt;gemma-4:4b-q4_k_m&lt;/code&gt; 为例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gemma-4:4b&lt;/code&gt;：模型名称与参数规模。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;q4&lt;/code&gt;：4 位量化。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k&lt;/code&gt;：K-quants（改进量化方法）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;m&lt;/code&gt;：medium（中等级别，常见还有 &lt;code&gt;s&lt;/code&gt;/small、&lt;code&gt;l&lt;/code&gt;/large）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;如何按显存快速选型&#34;&gt;如何按显存快速选型
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;内存/显存&lt;/th&gt;
          &lt;th&gt;推荐量化&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;4 GB&lt;/td&gt;
          &lt;td&gt;Q3_K_M / Q2_K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8 GB&lt;/td&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16 GB&lt;/td&gt;
          &lt;td&gt;Q5_K_M / Q8_0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32 GB+&lt;/td&gt;
          &lt;td&gt;FP16 / Q8_0&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;建议先从能稳定跑起来的版本开始用，再逐步提高精度，而不是一上来就追求最大模型。&lt;/p&gt;
&lt;h2 id=&#34;实战建议&#34;&gt;实战建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;默认从 &lt;code&gt;Q4_K_M&lt;/code&gt; 开始，先验证真实任务效果。&lt;/li&gt;
&lt;li&gt;如果答案质量不够，再升到 &lt;code&gt;Q5_K_M&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果主要瓶颈是显存或速度，再降到 &lt;code&gt;Q3_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;每次切换量化版本，都用同一批测试问题做对比。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;质量优先：&lt;code&gt;FP16&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;平衡优先：&lt;code&gt;Q5_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;通用默认：&lt;code&gt;Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;低配兜底：&lt;code&gt;Q3_K_M&lt;/code&gt; 或 &lt;code&gt;Q2_K&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选型的本质不是“越大越好”，而是“在你的硬件条件下，达到最稳定可用的效果”。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>谷歌 Gemma 4 模型对比：2B/4B/26B/31B 怎么选？</title>
        <link>https://knightli.com/2026/04/05/google-gemma-4-model-comparison/</link>
        <pubDate>Sun, 05 Apr 2026 08:30:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/05/google-gemma-4-model-comparison/</guid>
        <description>&lt;p&gt;Gemma 4 主打 &lt;code&gt;多模态&lt;/code&gt; 与 &lt;code&gt;本地离线运行&lt;/code&gt;，并提供从轻量端到高性能端的完整模型梯度。对大多数本地部署用户来说，关键不是“选最大”，而是“选最匹配硬件与任务的版本”。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-各模型对比&#34;&gt;Gemma 4 各模型对比
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;下表用于快速选型参考；具体性能与资源占用请以实际部署环境测试为准。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;参数规模&lt;/th&gt;
          &lt;th&gt;定位&lt;/th&gt;
          &lt;th&gt;主要优势&lt;/th&gt;
          &lt;th&gt;主要限制&lt;/th&gt;
          &lt;th&gt;推荐场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 2B&lt;/td&gt;
          &lt;td&gt;20 亿&lt;/td&gt;
          &lt;td&gt;超轻量&lt;/td&gt;
          &lt;td&gt;延迟低、资源占用小、部署门槛最低&lt;/td&gt;
          &lt;td&gt;复杂推理与长链路任务能力有限&lt;/td&gt;
          &lt;td&gt;移动端、IoT、轻量问答、简单自动化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 4B&lt;/td&gt;
          &lt;td&gt;40 亿&lt;/td&gt;
          &lt;td&gt;轻量增强&lt;/td&gt;
          &lt;td&gt;比 2B 更稳的理解与生成能力，仍易本地部署&lt;/td&gt;
          &lt;td&gt;高强度编码/复杂 Agent 任务上限有限&lt;/td&gt;
          &lt;td&gt;本地助手、基础文档处理、多语言日常任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 26B&lt;/td&gt;
          &lt;td&gt;260 亿&lt;/td&gt;
          &lt;td&gt;高性能（专家混合）&lt;/td&gt;
          &lt;td&gt;推理和工具调用能力明显提升，适合生产工作流&lt;/td&gt;
          &lt;td&gt;显存需求显著上升，硬件门槛更高&lt;/td&gt;
          &lt;td&gt;编程助手、复杂工作流、企业内部 Agent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 31B&lt;/td&gt;
          &lt;td&gt;310 亿&lt;/td&gt;
          &lt;td&gt;高性能（稠密）&lt;/td&gt;
          &lt;td&gt;综合能力最强，复杂任务稳定性更好&lt;/td&gt;
          &lt;td&gt;资源消耗最高，部署与调优成本最大&lt;/td&gt;
          &lt;td&gt;高要求推理、复杂代码任务、重度自动化&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;怎么选按硬件和任务倒推&#34;&gt;怎么选：按硬件和任务倒推
&lt;/h2&gt;&lt;p&gt;如果你主要看“能不能跑、跑得顺不顺”，可以按下面选：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;8GB&lt;/code&gt; 显存：优先 &lt;code&gt;2B/4B&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;12GB&lt;/code&gt; 显存：优先 &lt;code&gt;4B&lt;/code&gt; 或更高模型的量化版本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;24GB&lt;/code&gt; 显存：可重点考虑 &lt;code&gt;26B&lt;/code&gt;，并按任务评估 &lt;code&gt;31B&lt;/code&gt; 量化版。&lt;/li&gt;
&lt;li&gt;更高显存或多卡：可尝试 &lt;code&gt;31B&lt;/code&gt; 的高精度配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建议优先保证稳定性和推理速度，再逐步提升模型规模。&lt;/p&gt;
&lt;h2 id=&#34;四类典型使用场景&#34;&gt;四类典型使用场景
&lt;/h2&gt;&lt;h3 id=&#34;1-本地通用助手&#34;&gt;1) 本地通用助手
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;优先模型：&lt;code&gt;4B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：成本和效果平衡好，适合长期常驻运行。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-代码与自动化&#34;&gt;2) 代码与自动化
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;优先模型：&lt;code&gt;26B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：在多步骤任务、工具调用、脚本生成上更稳。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-高难度推理与复杂-agent&#34;&gt;3) 高难度推理与复杂 Agent
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;优先模型：&lt;code&gt;31B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：复杂上下文下的稳定性更高，容错更好。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-边缘设备与轻量离线&#34;&gt;4) 边缘设备与轻量离线
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;优先模型：&lt;code&gt;2B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：最容易在资源受限设备落地。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;部署建议ollama-方向&#34;&gt;部署建议（Ollama 方向）
&lt;/h2&gt;&lt;p&gt;最实用的做法是“小步快跑”：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 &lt;code&gt;4B&lt;/code&gt; 建立可运行基线（速度、内存、效果）。&lt;/li&gt;
&lt;li&gt;把你的真实任务做成固定测试集（例如 20 条常见问题 + 10 个自动化任务）。&lt;/li&gt;
&lt;li&gt;再升级到 &lt;code&gt;26B/31B&lt;/code&gt; 对比准确率、时延和显存成本。&lt;/li&gt;
&lt;li&gt;只在“收益明显”时升级大模型。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样可以避免一上来就追求大参数，结果出现卡顿、吞吐低、维护复杂的问题。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论
&lt;/h2&gt;&lt;p&gt;Gemma 4 的真正价值，不是单纯“参数更大”，而是给了从轻量到高性能的一整套可落地梯度：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想低成本快速上线：从 &lt;code&gt;2B/4B&lt;/code&gt; 开始。&lt;/li&gt;
&lt;li&gt;想把本地 AI 真正接入生产流程：优先 &lt;code&gt;26B&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;想冲复杂推理与重度自动化：再上 &lt;code&gt;31B&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemma 4 的最佳选择通常不是参数最大，而是与硬件条件和任务目标匹配度最高的版本。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>分析 Anthropic 的 Agent Skill docx 功能、代码组成、使用方法与注意事项</title>
        <link>https://knightli.com/2026/04/04/analyze-docx-agent-skill/</link>
        <pubDate>Sat, 04 Apr 2026 11:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/04/analyze-docx-agent-skill/</guid>
        <description>&lt;p&gt;Anthropic 的 &lt;code&gt;skills/docx&lt;/code&gt; 本质上是一套“让 AI 更稳地处理 Word 文档”的工作规范与脚本工具集。&lt;br&gt;
它不是单纯告诉模型“去写一个 &lt;code&gt;.docx&lt;/code&gt;”，而是把 Word 文档处理拆成几条明确路径：新建文档、读取内容、编辑已有文档、处理修订、添加评论、转换格式、校验 OOXML 结构。&lt;/p&gt;
&lt;p&gt;如果只看一句话，可以把它理解为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;让 agent 不再把 &lt;code&gt;.docx&lt;/code&gt; 当黑盒，而是把它当成 ZIP + XML + Office 兼容性问题来处理。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;这个-skill-解决什么问题&#34;&gt;这个 skill 解决什么问题
&lt;/h2&gt;&lt;p&gt;普通文本生成模型在处理 Word 文档时，常见问题有几类：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只会输出文本，不会真正生成结构正确的 &lt;code&gt;.docx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;修改现有文档时容易破坏 OOXML 结构&lt;/li&gt;
&lt;li&gt;遇到批注、修订、评论线程时，不知道该改哪几个 XML&lt;/li&gt;
&lt;li&gt;能生成文档，但在 Word、LibreOffice、Google Docs 之间兼容性不稳定&lt;/li&gt;
&lt;li&gt;不清楚什么时候该用 &lt;code&gt;pandoc&lt;/code&gt;，什么时候该直接解包改 XML&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;docx&lt;/code&gt; skill 的价值就在这里。它把“该怎么做”提前约束好了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读内容时，优先用 &lt;code&gt;pandoc&lt;/code&gt; 或解包&lt;/li&gt;
&lt;li&gt;新建 &lt;code&gt;.docx&lt;/code&gt; 时，优先用 &lt;code&gt;docx-js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;编辑现有 &lt;code&gt;.docx&lt;/code&gt; 时，优先走“解包 -&amp;gt; 修改 XML -&amp;gt; 重新打包 -&amp;gt; 校验”&lt;/li&gt;
&lt;li&gt;处理接受修订、评论、schema 校验这些细节时，用配套脚本而不是让模型硬编&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套思路非常实用，因为 Word 文档问题往往不是“文字写得对不对”，而是“文件结构是否还能被 Office 正常接受”。&lt;/p&gt;
&lt;h2 id=&#34;目录和代码组成&#34;&gt;目录和代码组成
&lt;/h2&gt;&lt;p&gt;这个 skill 大致可以分成四层。&lt;/p&gt;
&lt;h3 id=&#34;1-说明层skillmd&#34;&gt;1. 说明层：&lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 是整个 skill 的入口，主要做两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义触发条件&lt;br&gt;
只要用户需求涉及 Word、&lt;code&gt;.docx&lt;/code&gt;、评论、修订、目录、页码、模板、格式化文档等内容，就应该启用这个 skill。&lt;/li&gt;
&lt;li&gt;规定工作路径&lt;br&gt;
它明确写出不同任务该走哪条技术路线，而不是每次临场发挥。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从内容看，它既是“使用说明”，也是“操作规范”。&lt;br&gt;
尤其有价值的是里面列出的很多 Word 兼容性规则，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docx-js&lt;/code&gt; 默认是 A4，不是 US Letter&lt;/li&gt;
&lt;li&gt;横向页面时宽高参数要按它的内部逻辑传&lt;/li&gt;
&lt;li&gt;列表不能手工插入 Unicode bullet&lt;/li&gt;
&lt;li&gt;表格宽度要同时设置 table 和 cell&lt;/li&gt;
&lt;li&gt;图片插入时 &lt;code&gt;type&lt;/code&gt; 不能省&lt;/li&gt;
&lt;li&gt;生成后要做 &lt;code&gt;validate&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明作者不是只想“能生成”，而是想要“生成后能稳定打开、稳定渲染、稳定兼容”。&lt;/p&gt;
&lt;h2 id=&#34;2-office-包操作层scriptsoffice&#34;&gt;2. Office 包操作层：&lt;code&gt;scripts/office/*&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;这一层负责把 &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt; 当成 Office Open XML 包来处理。&lt;/p&gt;
&lt;h3 id=&#34;unpackpy&#34;&gt;&lt;code&gt;unpack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;作用是把 Office 文件解包到目录中，并做几件辅助工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解压 ZIP 包&lt;/li&gt;
&lt;li&gt;对 XML / &lt;code&gt;.rels&lt;/code&gt; 做 pretty print&lt;/li&gt;
&lt;li&gt;对 &lt;code&gt;.docx&lt;/code&gt; 可选执行 &lt;code&gt;merge_runs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;对 &lt;code&gt;.docx&lt;/code&gt; 可选执行 &lt;code&gt;simplify_redlines&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;把智能引号转成 XML 实体，降低后续处理风险&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的设计重点不是“简单解压”，而是把文件整理成适合 agent 和人类继续编辑的状态。&lt;/p&gt;
&lt;h3 id=&#34;packpy&#34;&gt;&lt;code&gt;pack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;作用是把修改后的目录重新打包成 &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt;。&lt;br&gt;
打包前还会做两件重要的事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可选运行校验与自动修复&lt;/li&gt;
&lt;li&gt;把 XML 重新压缩整理，去掉无意义空白和注释&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果提供 &lt;code&gt;--original&lt;/code&gt;，它会结合 validator 做比对，这一点很关键。&lt;br&gt;
因为很多 Word 修改不是“能压回去就算成功”，而是要确认文档结构和追踪修订语义都还成立。&lt;/p&gt;
&lt;h3 id=&#34;validatepy&#34;&gt;&lt;code&gt;validate.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是整个 skill 的质量闸门。&lt;br&gt;
它支持校验：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XML 是否良构&lt;/li&gt;
&lt;li&gt;namespace 是否正确&lt;/li&gt;
&lt;li&gt;各类 ID 是否唯一&lt;/li&gt;
&lt;li&gt;relationship / content type 是否匹配&lt;/li&gt;
&lt;li&gt;是否符合 XSD schema&lt;/li&gt;
&lt;li&gt;空白保留规则是否正确&lt;/li&gt;
&lt;li&gt;插入、删除、评论标记是否合法&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对 &lt;code&gt;.docx&lt;/code&gt; 来说，这一步几乎是核心能力。&lt;br&gt;
很多看起来“只改了一点 XML”的文档，真正问题都出在这里。&lt;/p&gt;
&lt;h3 id=&#34;sofficepy&#34;&gt;&lt;code&gt;soffice.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是一个很有工程味道的小工具。&lt;br&gt;
它不是简单调用 LibreOffice，而是为受限环境准备了兼容处理，自动设置 &lt;code&gt;SAL_USE_VCLPLUGIN=svp&lt;/code&gt;，在必要时还会构造 shim 解决 AF_UNIX socket 受限的问题。&lt;/p&gt;
&lt;p&gt;这说明 skill 的目标环境并不只是“本地桌面手工操作”，而是考虑了 agent、CI、沙箱等自动化环境。&lt;/p&gt;
&lt;h2 id=&#34;3-word-专项能力层评论修订与-redline&#34;&gt;3. Word 专项能力层：评论、修订与 redline
&lt;/h2&gt;&lt;h3 id=&#34;commentpy&#34;&gt;&lt;code&gt;comment.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这个脚本负责给 DOCX 添加评论。&lt;br&gt;
它做的事情比“写一段 comment XML”复杂得多，因为 Word 评论不是单文件机制，而是一组部件协同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;word/comments.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtended.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsIds.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtensible.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;document.xml&lt;/code&gt; 中的 comment range marker&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[Content_Types].xml&lt;/code&gt; 与 &lt;code&gt;document.xml.rels&lt;/code&gt; 中的关系声明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;脚本里已经把这些依赖关系考虑进去了。&lt;br&gt;
如果是第一次添加评论，它会自动补齐模板文件、relationship 和 content types，这能显著降低手工改 OOXML 时的出错率。&lt;/p&gt;
&lt;h3 id=&#34;accept_changespy&#34;&gt;&lt;code&gt;accept_changes.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这个脚本的目标非常明确：接受所有修订。&lt;br&gt;
实现方式不是自己硬改 XML，而是通过 LibreOffice headless + Basic macro 调 &lt;code&gt;.uno:AcceptAllTrackedChanges&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这个选择很稳妥，因为“接受修订”在 Word 语义里并不只是删掉 &lt;code&gt;&amp;lt;w:ins&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;w:del&amp;gt;&lt;/code&gt; 那么简单，直接改 XML 很容易留下边角问题。&lt;br&gt;
借助 Office 引擎自身完成这一步，兼容性通常更好。&lt;/p&gt;
&lt;h3 id=&#34;validatorsredliningpy&#34;&gt;&lt;code&gt;validators/redlining.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这是 skill 里我觉得最值得注意的一部分。&lt;br&gt;
它会把“某个作者的修订”从原始文档和修改后文档中分别剥离，再比较正文文本是否一致，用来判断修订是否被正确地包裹在 tracked changes 结构里。&lt;/p&gt;
&lt;p&gt;换句话说，它不只是检查 XML 格式，而是在检查“你是不是按修订语义编辑了文档”。&lt;/p&gt;
&lt;p&gt;这对 agent 特别重要，因为 AI 很容易做出这种错误：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接改正文，但没有包进 &lt;code&gt;&amp;lt;w:ins&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;w:del&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在别人的插入或删除结构里改坏层级&lt;/li&gt;
&lt;li&gt;让最终文本变了，但 redline 逻辑不成立&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个 validator 就是在挡这种“表面可用、语义错误”的问题。&lt;/p&gt;
&lt;h2 id=&#34;4-schema-与辅助层schemashelperstemplates&#34;&gt;4. Schema 与辅助层：&lt;code&gt;schemas/&lt;/code&gt;、&lt;code&gt;helpers/&lt;/code&gt;、&lt;code&gt;templates/&lt;/code&gt;
&lt;/h2&gt;&lt;h3 id=&#34;schemas&#34;&gt;&lt;code&gt;schemas/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这里放的是一整套 OOXML / ECMA / Microsoft 扩展相关的 XSD。&lt;br&gt;
这意味着 skill 的校验不是拍脑袋写规则，而是尽量基于正式 schema 约束。&lt;/p&gt;
&lt;h3 id=&#34;helpers&#34;&gt;&lt;code&gt;helpers/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这里主要是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;merge_runs.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;simplify_redlines.py&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;作用是把解包后的 Word XML 做适度清理，让结构更稳定、更容易编辑和比较。&lt;/p&gt;
&lt;h3 id=&#34;templates&#34;&gt;&lt;code&gt;templates/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这里存放评论功能依赖的 XML 模板，如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;comments.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtended.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsIds.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtensible.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;people.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类模板文件很重要，因为很多 Word 部件不是“缺了就自动补”，而是必须按 Office 能接受的格式预置。&lt;/p&gt;
&lt;h2 id=&#34;典型使用方法&#34;&gt;典型使用方法
&lt;/h2&gt;&lt;p&gt;从 &lt;code&gt;SKILL.md&lt;/code&gt; 给出的建议来看，这个 skill 最适合下面几种工作流。&lt;/p&gt;
&lt;h2 id=&#34;场景一读取或分析现有-docx&#34;&gt;场景一：读取或分析现有 DOCX
&lt;/h2&gt;&lt;p&gt;如果目标是提取内容、阅读结构、转成 Markdown，优先用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pandoc --track-changes&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all document.docx -o output.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要看底层 XML，则用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/unpack.py document.docx unpacked/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前者适合读内容，后者适合看结构。&lt;/p&gt;
&lt;h2 id=&#34;场景二新建-docx&#34;&gt;场景二：新建 DOCX
&lt;/h2&gt;&lt;p&gt;skill 的建议不是手搓 OOXML，而是用 &lt;code&gt;docx-js&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;npm install -g docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后生成文档后再校验：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/validate.py doc.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这条路线适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;报告&lt;/li&gt;
&lt;li&gt;memo&lt;/li&gt;
&lt;li&gt;letter&lt;/li&gt;
&lt;li&gt;有标题、目录、页脚、分页、表格的正式文档&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;场景三编辑已有-docx&#34;&gt;场景三：编辑已有 DOCX
&lt;/h2&gt;&lt;p&gt;这是整个 skill 最核心的工作流：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/unpack.py document.docx unpacked/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 修改 unpacked/ 下的 XML&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/pack.py unpacked/ output.docx --original document.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里的关键不是“修改 XML”，而是最后那步 &lt;code&gt;--original&lt;/code&gt;。&lt;br&gt;
它让系统能在回包时做 schema 和 redline 层面的验证，而不是盲目打包。&lt;/p&gt;
&lt;h2 id=&#34;场景四接受所有修订&#34;&gt;场景四：接受所有修订
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/accept_changes.py input.docx output.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这一步依赖 LibreOffice。&lt;br&gt;
适合用于把已审阅文档整理成“干净版本”。&lt;/p&gt;
&lt;h2 id=&#34;场景五添加评论&#34;&gt;场景五：添加评论
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python comment.py unpacked/ &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Comment text&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python comment.py unpacked/ &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Reply text&amp;#34;&lt;/span&gt; --parent &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里要特别注意：脚本只是把评论内容和必要的评论部件加进去，实际还需要按注释说明，在 &lt;code&gt;document.xml&lt;/code&gt; 中加上 comment range marker，才能把评论真正挂到对应文本范围上。&lt;/p&gt;
&lt;h2 id=&#34;这个-skill-最值得注意的几个坑&#34;&gt;这个 skill 最值得注意的几个坑
&lt;/h2&gt;&lt;p&gt;如果只是快速浏览 &lt;code&gt;SKILL.md&lt;/code&gt;，很容易低估其中“兼容性规则”的价值。&lt;br&gt;
下面这些点尤其值得记住。&lt;/p&gt;
&lt;h3 id=&#34;1-docx-不是文本文件而是-office-包&#34;&gt;1. &lt;code&gt;.docx&lt;/code&gt; 不是文本文件，而是 Office 包
&lt;/h3&gt;&lt;p&gt;最危险的误区就是把它当成“一个带格式的文本文件”。&lt;br&gt;
实际上你改的可能同时涉及：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正文 XML&lt;/li&gt;
&lt;li&gt;relationships&lt;/li&gt;
&lt;li&gt;content types&lt;/li&gt;
&lt;li&gt;comments / people / ids&lt;/li&gt;
&lt;li&gt;schema 约束&lt;/li&gt;
&lt;li&gt;修订语义&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以这个 skill 才会强调“解包 - 编辑 - 校验 - 回包”。&lt;/p&gt;
&lt;h3 id=&#34;2-docx-js-能生成文档但不保证默认参数符合你的目标&#34;&gt;2. &lt;code&gt;docx-js&lt;/code&gt; 能生成文档，但不保证默认参数符合你的目标
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 里强调了很多默认值陷阱，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认纸张是 A4&lt;/li&gt;
&lt;li&gt;横向页面宽高处理有内部逻辑&lt;/li&gt;
&lt;li&gt;列表不能直接塞字符 bullet&lt;/li&gt;
&lt;li&gt;表格宽度要双重声明&lt;/li&gt;
&lt;li&gt;Google Docs 对百分比宽度兼容性差&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这说明生成工具只是起点，不是最终质量保证。&lt;/p&gt;
&lt;h3 id=&#34;3-评论和修订都不是单点修改&#34;&gt;3. 评论和修订都不是单点修改
&lt;/h3&gt;&lt;p&gt;无论是 comment 还是 tracked changes，都不是改一处 XML 就完事。&lt;br&gt;
你需要维护多个部件之间的一致性，这也是 skill 把这些动作脚本化的原因。&lt;/p&gt;
&lt;h3 id=&#34;4-能打开不等于改对了&#34;&gt;4. “能打开”不等于“改对了”
&lt;/h3&gt;&lt;p&gt;一个文档能被 Word 打开，不代表结构就是对的。&lt;br&gt;
很多错误只会在这些场景暴露：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;再次编辑时崩&lt;/li&gt;
&lt;li&gt;审阅模式异常&lt;/li&gt;
&lt;li&gt;批注丢失&lt;/li&gt;
&lt;li&gt;Google Docs 打开后布局错乱&lt;/li&gt;
&lt;li&gt;重新接受修订时报错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此 &lt;code&gt;validate.py&lt;/code&gt; 和 &lt;code&gt;pack.py --original&lt;/code&gt; 非常重要。&lt;/p&gt;
&lt;h3 id=&#34;5-依赖外部工具时要提前准备环境&#34;&gt;5. 依赖外部工具时要提前准备环境
&lt;/h3&gt;&lt;p&gt;这个 skill 依赖几类外部工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pandoc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LibreOffice / soffice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docx-js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Python 依赖，如 &lt;code&gt;defusedxml&lt;/code&gt;、&lt;code&gt;lxml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果环境里缺这些工具，agent 即使知道流程，也无法完整执行。&lt;/p&gt;
&lt;h2 id=&#34;这个-skill-适合什么不适合什么&#34;&gt;这个 skill 适合什么，不适合什么
&lt;/h2&gt;&lt;h3 id=&#34;适合&#34;&gt;适合
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;批量生成 Word 报告&lt;/li&gt;
&lt;li&gt;结构化生成正式文档&lt;/li&gt;
&lt;li&gt;自动化修改 &lt;code&gt;.docx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;保留或处理 tracked changes&lt;/li&gt;
&lt;li&gt;自动添加批注&lt;/li&gt;
&lt;li&gt;把 Word 文档纳入脚本或 agent 工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;不太适合&#34;&gt;不太适合
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;单纯导出 PDF 的简单场景&lt;/li&gt;
&lt;li&gt;只需要纯文本内容，不关心 Word 格式&lt;/li&gt;
&lt;li&gt;完全依赖手工可视化编辑的工作方式&lt;/li&gt;
&lt;li&gt;希望零依赖、零环境准备就完成全部 Word 自动化&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;Anthropic 的 &lt;code&gt;skills/docx&lt;/code&gt; 强项不在“会生成 Word”，而在“知道 Word 为什么容易出问题，并提前把问题拆开处理”。&lt;br&gt;
它把文档生成、底层 XML 编辑、修订语义、schema 校验、Office 兼容性这些原本很零散的知识，整理成了一条可执行的工作流。&lt;/p&gt;
&lt;p&gt;如果你只是偶尔导出一份简单文档，它可能显得有点重。&lt;br&gt;
但只要场景涉及现有 &lt;code&gt;.docx&lt;/code&gt; 修改、评论、修订、自动化批处理或兼容性要求，这套 skill 就很有价值，因为它补上的恰恰是 AI 最容易忽略、而 Office 文档最容易翻车的那部分细节。&lt;/p&gt;
&lt;p&gt;简单总结就是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 负责告诉 agent 该走哪条路&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/office/*&lt;/code&gt; 负责解包、回包、校验和 Office 兼容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comment.py&lt;/code&gt; 与 &lt;code&gt;accept_changes.py&lt;/code&gt; 负责 Word 专项能力&lt;/li&gt;
&lt;li&gt;&lt;code&gt;schemas/&lt;/code&gt; 与 validators 负责把“看起来能用”提升到“结构上靠谱”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;代码地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/skills/tree/main/skills/docx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anthropics/skills/tree/main/skills/docx&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
