
最近一直在折腾 Codex 生成 PSD 这件事。不试不知道一试发现只要提示词把“技术路线”说清楚Codex 真的能老老实实给你交出一个带分层的 PSD 文件。很多人觉得这事难实际上卡点从来不在 Codex 能不能写代码而在于提示词里没有给它一张“施工图”。今天就把我反复测试后沉淀下来的提示词思路、实操步骤和踩坑记录全部分享出来。先说明白我假设你已经装好了 Codex CLI 并且能成功调用模型。不同版本的 Codex 可能界面略有差异但核心流程一致——你给它一段任务描述它负责拆解、写代码、执行。如果你还卡在安装和鉴权阶段可以直接去官方仓库看 README这里不展开。真正值得花的精力是在提示词上。1. Codex 要的是“路线图”不是一句空话1.1 PSD 在 Codex 眼里到底是什么先说一个很多人没绕过来的弯PSD 不是一张图片而是一个容器。它内部有图层、图层组、蒙版、通道、路径、字体信息、颜色模式……本质上是一套有严格文件结构的二进制格式。Codex 这类编程智能体并不直接“画图”它做的是写代码、跑代码。所以当你说“帮我生成一个 PSD”Codex 要理解成“帮我写一个程序这个程序能构造出符合 PSD 规范的文件”。它不是魔法它能做的就是调用库、拼装数据、写出文件。我在最初测试时给过一句特别偷懒的提示词“生成一个 PSD 文件”。Codex 犹豫了一下最后真的生成了一个文件但用 Photoshop 打开直接报“无法解析”。后来我打开文件头看了一眼代码把 PSD 的签名写成了 8BIM而正确签名是 8BPS。这种错误就是模型在没给足上下文时最容易出的问题。所以第一步认知要建立起来Codex 眼中的 PSD是一种需要按规范构造的数据结构。你提示词里越早点明这个事实它就越早进入正确的执行状态。1.2 两条路线psd-tools 还是 Photoshop 脚本要让 Codex 生成 PSD实操中其实有两条完全不同的技术路线。第一条是用 Python 的psd-tools库。这个库可以解析和创建基础的 PSD 文件支持文本图层、颜色填充图层、组结构等。优点是不依赖 Photoshop 环境在纯命令行服务器上就能跑缺点是创建能力没有 Photoshop 那么强复杂的图层样式、矢量蒙版支持有限。第二条是让 Codex 生成 Photoshop 的 ExtendScript 脚本.jsx然后交给 Photoshop 执行。这条路能调用 Photoshop 的完整对象模型文本、形状、渐变、图层样式、图层组全都能写生成的 PSD 可编辑性最好。缺点是你的机器上必须装着 Photoshop而且脚本的执行需要有人点击菜单或者用命令行配合启动。我实际测试下来的建议是如果只是批量生成带文字的简单 PSDpsd-tools 足够如果你想要真正“设计感”的分层文件建议让 Codex 直接写 ExtendScript。这也是后续所有提示词设计的核心分岔路。1.3 关键认知提示词需要“自带技术方案”为什么很多人觉得 Codex 生成 PSD 难因为提示词里只有“想要什么”没有“怎么实现”。Codex 不是设计软件它是个写代码的程序员你得在提示词里扮演“技术经理”给它指定实现方式。举个例子你写“生成一个带蓝色背景和标题文字的 PSD”它不是做不到而是会在心里盘算背景要不要做成纯色图层文字图层用什么字体标题在哪个位置最终它极可能给一个“像素层”或者干脆用 Pillow 画完保存成图片再改扩展名。这当然不是你要的结果。正确做法是在提示词里直接声明技术路线比如“使用 Python 的 psd-tools 库创建”或者“请生成一个 Photoshop ExtendScript 脚本脚本需要新建文档并创建图层”。一旦技术路线明确Codex 的思考范围就被框住了输出质量立刻上升。2. 提示词的正确写法把需求说成 Codex 能执行的任务2.1 目标层你要的不是“一张图”而是“可编辑文件”写提示词之前先想清楚为什么非要 PSD绝大多数人的核心诉求是“可编辑”。这意味着图层不能合并字体不能失联尺寸不能锁死。所以提示词第一句就要把这些约束讲清楚。我试过的一个高质量开头是这样的请用 Python 的 psd-tools 库生成一个 800x600 的 PSD 文件 文件路径为 output.psd。 要求必须是可编辑的多图层结构至少包含背景图层和一个文本图层 不允许把文字栅格化成像素。注意几个关键点指定了库指定了尺寸指定了最小图层数量指定了“必须可编辑”还明确表达了“不能栅格化”。这些都是为了让 Codex 的产出可验证。你后续检查时可以直接对着这些条目打勾。如果你自己都没有验收标准Codex 就会随机给你一个它认为“差不多”的东西。这个在提示词工程里叫“验收标准前置”是提升 AI 输出质量最有效的手段之一。2.2 结构层图层顺序、分组、命名都要写明白普通的设计师在给沟通需求时可能会说“我要一张主视觉”但给 Codex 下任务时必须拆到图层级别。因为模型对“主视觉”没有直观视觉。它可以理解“图层组 1 里面有一个名为背景的形状图层”。你描述得越接近代码变量它执行得越准确。我经常用的结构描述模板是这样的画布尺寸和背景颜色图层顺序从上到下分别是什么哪些元素需要单独占一个图层图层命名规则最好和内容语义一致是否需要图层组组名是什么文字图层的内容、字号、字体、颜色和坐标。举个例子新建 1920x1080 文档。 图层结构从上到下依次为 1. 文字图层图层名“主标题”内容“DROP”字号 180白色居中 2. 形状图层图层名“渐变背景”填充从 #1E3C72 到 #2A5298 的线性渐变 3. 背景图层图层名“底色”填充纯色 #0A0A0A。这样写出来Codex 几乎不可能给你合并图层因为每个图层名都是它生成代码时需要直接引用的变量。实践下来这个细节直接决定了 PSD 的可编辑性。2.3 验收层让 Codex 自己定义成功标准提示词里最好再加一句“执行完成后用代码检查结果并汇报”。这会让 Codex 主动打印图层树、文件大小、图层数量等元信息。它就像给自己做了一次自测能提前暴露不少问题。我会在提示词末尾写生成完成后请用 psd-tools 重新读取这个文件 打印所有图层的名称和类型确认分层结构完整。 如果发现问题直接修复并重新生成。这一招极其有用。Codex 会在执行完生成脚本后继续跑一段验证代码相当于自带 QA。很多时候你以为它生成完毕了其实它已经偷偷帮你修过一次。3. 实操演示三段提示词从零生成 PSD3.1 基础版用 Python 做一张带文字的 PSD下面这段提示词是我用来验证“最小可行方案”的直接复制就能跑请用 Python 的 psd-tools 库生成一个 800x600 的 PSD 文件 命名为 demo_basic.psd。 要求 - 背景图层名为“背景”填充浅灰色 #F0F0F0 - 文本图层名为“标题”内容“Codex PSD Demo” 字号 60颜色黑色居中对齐 - 保存前用 psd-tools 读取并打印图层树。Codex 拿到这个任务后会先检测环境里有没有 psd-tools没有就pip install psd-tools然后写生成脚本跑完再读文件打印图层信息。整个过程大概几十秒。如果一切顺利你会看到类似输出Layer(背景, kindsolid_color)、Layer(标题, kindtext)。打开 Photoshop 后文字还是活的能改字、改字号。这就是基础版的意义用最低成本验证路线是否打通。提示如果 Codex 在执行环境里装库失败多半是 Python 环境权限问题。可以提示词里加一句“如果安装失败请在命令前加 --user 重试”。3.2 进阶版用 ExtendScript 做一张“真·分层”海报基础版只是开胃菜。如果你想生成一张像样的海报建议走 ExtendScript 路线。下面这段提示词是我反复打磨后的版本请生成一个 ExtendScript 脚本文件命名为 make_poster.jsx。 脚本执行后需要完成以下操作 1. 新建文档尺寸 1920x1080分辨率 300dpi 2. 创建图层组命名为“背景组” 组内新建一个形状图层“渐变底” 填充从 #1E3C72 到 #2A5298 的线性渐变 3. 在“背景组”上方新建文字图层“主标题” 内容为“Limited Drop”字号 160 字体选择 “Arial-Bold”颜色白色水平居中 4. 再新建一个圆角矩形形状图层“按钮” 颜色 #FF6B35位置在画布右下角 大小 300x80 5. 保存为 output_poster.psd选项为 保留图层和图层组兼容最大界面。 脚本里不要使用任何中文命名变量为什么强调“不要使用任何中文命名变量”因为 ExtendScript 对中文编码处理很麻烦变量名如果是中文在 Photoshop 某些版本里会直接报语法错误。内容文本里的中文没问题但变量名不要用。执行方式很简单打开 Photoshop菜单栏选择“文件 脚本 浏览”选中 make_poster.jsx 运行。几秒后你将得到一张带图层组、渐变形状、文字图层、圆角按钮的完整 PSD。这个结构已经非常接近设计师日常工作的源文件。3.3 校验输出怎么确认 Codex 没偷懒不管生成成功没成功都要做一次独立校验。我的习惯是把生成完的 PSD 拖进 Photoshop 看图层面板同时用 psd-tools 跑一段检查代码from psd_tools import PSDImage psd PSDImage.open(output_poster.psd) print(psd.header.width, psd.header.height) def walk_layers(layers, depth0): for layer in layers: print( * depth f{layer.name} ({layer.kind})) if hasattr(layer, __iter__): walk_layers(layer, depth 1) walk_layers(psd)这段代码能递归输出图层树。你很快就能看出来Codex 有没有把渐变做成独立形状图层按钮是不是真实矢量形状还是说它偷懒搞了一个整图的图层检查完再进 Photoshop 看可编辑性双保险。4. 常见问题与排查笔记4.1 文件打不开、PSD 损坏怎么办这是出现频率最高的问题。Codex 生成完文件后Photoshop 报“无法解析”或者 Windows 预览直接不认。先别急着怪 Codex。用十六进制工具看文件头前四个字节是不是8BPS。PSD 规范的签名必须是8BPS但模型偶尔会写成8BIM因为8BIM是资源块类型的常用标识太容易混淆了。如果你确实看到8BIM提示词里明确加一句“PSD 文件头签名必须是 8BPS”Codex 通常能立刻修正。另一个常见情况是版本问题。Photoshop 老版本打不开新格式PSD 一般没有这个问题但如果你让 Codex 生成了“大型文档格式 PSB”老版本就可能打不开。如果不需要超大画布最好明确“保存为普通 PSD”。4.2 Codex 把图层合并了、生成的是伪 PSD有时候文件能打开但图层面板里只有一张背景图所有内容都渲染成了一张扁平图。这是 Codex 偷懒的典型表现它可能直接用 Pillow 画完再存成了假 PSD。怎么治提示词里把“必须创建独立图层”作为硬性约束并且要求它生成后自我验证。如果它用的是 psd-tools那你还要留意这个库对图层组和文字图层的创建能力在不同版本里有差异。某些版本创建文字图层时不能指定字体需要后续代码修正字体数据块。如果走 ExtendScript基本不会出现合并问题因为脚本里可以精确调用ArtLayer和LayerSet对象。4.3 中文字体“不翼而飞”中文用户最容易踩的坑。生成 PSD 时如果文本图层用了英文字体名比如Arial中文字符会显示成方框如果用中文“微软雅黑”但代码里字体名称写不对也会失败。解决办法是在提示词里明确指定字体平台和名称例如字体名使用“Microsoft YaHei” 并且在脚本中用 app.fonts 检测字体是否存在 若不存在则不改使用系统默认字体。更稳妥的方案是提示词要求“文本图层内容先用英文字符测试中文内容在确认字体名后再填入”。先把流程跑通再处理中文兼容效率更高。4.4 Codex CLI 常见认证与环境问题这部分不是 PSD 本身但你在执行过程中一定会遇到。Codex CLI 如果报codex auth token is unavailable说明没有登录或者环境变量没配上。先执行官方提供的登录命令确认 token 后重试。如果提示模型不支持多半是你配置文件里指向的模型名有误回到默认配置即可。另外运行 Codex 的目录权限也会影响生成。如果它需要写文件但当前目录没有写权限就会中途失败。建议专门建一个工作目录比如~/codex-psd-lab所有测试都在这个目录里做干净又安全。5. 把提示词变成模板批量生产能力5.1 通用提示词框架经过多次测试我总结出一套可以直接套用的框架。以后你接任何“让 Codex 生成 PSD”的需求照着填空就行请使用 [psd-tools / ExtendScript] 生成 PSD 文件。 - 画布宽 [宽度]高 [高度]背景色 [颜色] - 图层结构 [从上到下列出每个图层的名称、类型、内容、坐标/尺寸] - 技术要求 不允许栅格化文字 图层必须是独立可编辑 保存后必须用代码读取并打印图层树验证 若发现问题自行修复后重新生成。 主要输出为[文件名]。这个框架百试百灵。核心在于“图层结构”和“技术要求”写得越死Codex 发挥空间越小最终质量就越稳定。5.2 可编辑性检查清单我每生成一个 PSD 后都会过一遍下面的清单全部满足才算通过检查项通过标准文件可打开Photoshop 无报错图层可编辑文字图层可改内容形状图层可改颜色图层命名图层名与设计语义对应图层顺序与提示词要求一致尺寸正确宽高符合预期颜色模式一般是 RGB8bit字体可用打开后不提示字体缺失如果哪一项失败了就把失败项直接追加进提示词比如“上一次生成的 PSD 图层顺序是反的请重新生成时保证最上层在最前面”。Codex 上下文处理能力很强给它新的修正信息比从零重写更快。5.3 后续还能玩什么当你能稳定生成 PSD 后自然可以做更多自动化批量生成电商主图、根据 Excel 数据自动制作多语言版本海报、把现有 PNG 素材自动替换到 PSD 模板里。甚至可以把这套流程封装成一个函数输入是 JSON 配置输出是成品 PSD变成一个轻量级的“自动排版系统”。我个人在后来的实践中已经把提示词本身也当成代码资产来管理。我会把每次成功的提示词都存成 Markdown 文件分门别类归档。下次遇到类似需求直接拿出来微调比从零开始写快得多。最后分享一点我自己在反复试错里最大的体会是Codex 这种东西你把它当成一个“理解力很强但缺乏行业常识的执行者”所有问题都变得好办了。它不知道 PSD 里图层有多重要你就告诉它它不知道文字不能栅格化你就约束它它不知道验收标准你就给它一个能自己检查的脚本路径。提示词一点也不玄它就是你把脑中的需求翻译成机器能执行指令的过程。翻译得越精确输出的文件越专业。