원클릭으로
safe-image-reading
FantasyWord 安全读图流程。用于 AI 读取 JPG/PNG/WebP、截图、裁图、图集、SpriteSheet、规则页、OCR 图或看图验收;默认先压缩/裁切成轻量图,大图/批量/atlas/整页图再升级为子代理、OCR 或外部开图。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
FantasyWord 安全读图流程。用于 AI 读取 JPG/PNG/WebP、截图、裁图、图集、SpriteSheet、规则页、OCR 图或看图验收;默认先压缩/裁切成轻量图,大图/批量/atlas/整页图再升级为子代理、OCR 或外部开图。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
FantasyWord 换装与坐骑表现工作流。覆盖普通换装、坐骑原版素材直显、骑乘姿态普通装备叠加、动作协议和真实 GameView 完整截图/GIF 验收。
FantasyWord Unity 2D Tilemap 工作流。用于 Grid/Tilemap/Tile Palette、Collider、RuleTile、SetTile/GetTile、瓦片导入和场景验收;适用于俯视角像素地图、地表、碰撞、装饰和运行时地图编辑。
FantasyWord 换装功能工作流。用于 EquipmentSystem、装备工作台、FrameData 帧编辑器、Body/Head UV Map、布衣/帽子/护目镜/手套/武器槽、Idle/Walk/Attack 换装错位、运行时截图验收和截图站发布前核验。
已暂停:FantasyWord 原安全读图/看图前压缩流程已按用户要求停用;不要将其作为当前图片读取入口。
FantasyWord Unity 2D Tilemap 工作流。用于 Grid/Tilemap/Tile Palette、Collider、RuleTile、SetTile/GetTile、瓦片导入和场景验收;适用于俯视角像素地图、地表、碰撞、装饰和运行时地图编辑。
动手前的前提锁定与上下文加载协议;写代码、改配置、改资源、改规范或执行会改变结果的命令前使用。
SOC 직업 분류 기준
| name | safe-image-reading |
| description | FantasyWord 安全读图流程。用于 AI 读取 JPG/PNG/WebP、截图、裁图、图集、SpriteSheet、规则页、OCR 图或看图验收;默认先压缩/裁切成轻量图,大图/批量/atlas/整页图再升级为子代理、OCR 或外部开图。 |
这是 FantasyWord 项目内的安全图片读取 workflow。图片不是独立交付物,读图也不是独立报告;图片只服务用户当前需求,例如素材核对、SpriteSheet 检查、UI 截图验收、OCR 读字、图集裁片定位或 bug 排查。默认做法不是“禁止看图”,也不是把压缩图当成额外能力待确认;压缩图、轻量预览、局部裁图就是给主线程看的默认输入,目的只是减少后续对话反复携带原图/base64 时触发的上下文膨胀和请求错误。普通单图默认由主线程生成并读取压缩图,然后给出当前任务所需结论;只有大图、批量图、atlas/SpriteSheet/整页图,或用户明确要求“本会话安全读取图片”时,才升级为带目的和验收标准的子代理 / OCR / 外部开图严格链路。
openai/codex#28316 说明历史图片/base64 工具输出可能被后续请求反复携带,导致上下文膨胀、请求超大和 502/524/流中断;openai/codex#28975 仍是 open 状态,只能把轻量预览、压缩/resize、OCR、外部开图称为规避或止血,不宣称根因已修复。采用压缩图的现实原因是避免原图/base64 污染后续上下文并引发请求错误,不是因为模型不能读取图片。passed / failed / blocked / partial 必须按当前用户需求的通过门槛判定;如果使用子代理,必须把目的、验收标准和返回格式传给它。partial/disputed/blocked,不要硬写 passed。读取本地图片前先用文件系统或脚本确认:
ceil(width/32) * ceil(height/32) 粗略估算 patch 数;普通素材核对优先控制在约 1024 patches 以内,高密度 UI/图集总览也应优先裁到约 1536 patches 以内。这个估算服务“先控像素”,不是替代真实验收。满足任一条件时,不得直接读取原图:
2500px。8MP。8MB。默认处理方式:
1600px,只用于判断整体布局、行列、区域关系。1400px,用于看局部区域。对子代理、本地 OCR 或主线程轻量读图的输出,必须使用以下状态定义:
passed:当前验收目标所需字段全部锁定,且可直接进入当前任务的下一步。例如 SpriteSheet 验收必须锁定帧布局、方向/动作行列和目标导入判断。failed:图片能被明确排除为当前目标之外,或能证明不满足当前目标。例如错误素材、错误 UI 状态、错误角色、错误图层、非目标 Sprite、占位图标。只要已经能正向证明“不是本次目标”,就用 failed。blocked:图片本身不给出足够信息,无法判断当前目标字段。例如纯色底块、空白、严重模糊、裁切缺失、文件打不开、文字区缺失。blocked 只阻塞该图片或该字段,不能扩展成整个任务失败。partial:图片属于当前目标类别或仍有合理可能属于当前目标,但只锁定了部分必需字段,缺少另一些必需字段。例如能确认是目标角色 SpriteSheet,但无法确认完整动作行;或能确认 UI 页面,但关键失败点被遮挡。状态边界:
blocked,不是 failed。failed,不是 partial。partial。记录判断点
.spec/knowledge/features/project/、作为当轮验收结论、指导代码/资源修改,或仅作为排障证据。生成轻量输入
test-results/evidence-image-validation/<e2e-id>/,按用途命名为 overview.*、crop-<对象>.*、contact-sheet.* 或 ocr.txt。1600px;关键分块或单对象裁图最长边默认不超过 1400px。文字、像素格或帧边界仍看不清时,继续裁更小区域,不放大整张原图重读。读取或交接
local_image),验收目的和返回格式用文本附件;不要同时传互斥的 message 与 items,也不要把普通文件类型误当图片附件。若参数错误,修正调用形态后只重试一次。failed、blocked、partial 的边界,防止把“识别出一点内容”误写成 partial,或把纯色/空白误写成 failed。写回可复用结果
继续主任务
locked/passed 项进入实现、验收或文档。blocked/disputed/partial/failed 只阻塞对应字段或验收点。只有当前需求、既有 E2E 证据链或项目 workflow 明确要求独立图片验收产物时,主线程才把读图结果整理成每条链路独立的覆盖式产物,不能混进一个总文档:
test-results/evidence-image-validation/<e2e-id>/result.json
test-results/evidence-image-validation/<e2e-id>/result.md
test-results/evidence-image-validation/<e2e-id>/overview.<png|webp|jpg>
test-results/evidence-image-validation/<e2e-id>/crop-<对象>.<png|webp|jpg>
test-results/evidence-image-validation/<e2e-id>/contact-sheet.<png|webp|jpg>
<e2e-id> 必须能唯一表达当前验收链路,例如 fantasyword-spritesheet-import、fantasyword-ui-inventory、fantasyword-minifantasy-equipment-layer。同一链路重复跑时允许覆盖同名目录下的 result.json / result.md / 轻量图,但不得覆盖其他端到端链路的结果;需要历史留存时再另建 runs/<timestamp>/。
需要子代理参与时,验收产物必须记录子代理 ID、原始真相源路径、压缩图/轻量图路径、主线程抽样复核结论,以及哪些项升级、哪些项保留 partial/blocked/failed。
.json 最小结构:
{
"id": "<e2e-id>",
"objective": "<本链路图片验收目标>",
"criteria": ["<验收字段或判断点>"],
"sources": {
"truth": ["<原始截图/正式素材/正式 atlas 路径>"],
"lightweightInputs": ["<压缩图/总览图/裁图/contact sheet/OCR 文本路径>"]
},
"summary": {
"total": 0,
"passed": 0,
"failed": 0,
"blocked": 0,
"partial": 0
},
"items": [
{
"idx": 1,
"path": "<图片路径>",
"status": "passed/failed/blocked/partial",
"lockedFields": {},
"reason": "<通过或失败原因>"
}
],
"verdict": "<本链路裁决>"
}
写入后必须做最小校验:summary.total == items.length,且 passed + failed + blocked + partial == total。长期审计文档只引用 <e2e-id>.json/.md 和摘要结论,不复制所有原始行。
| 对象 | 图片路径 | sha256 | 图片判断点 | 结论字段 | 状态 | 备注 |
| --- | --- | --- | --- | --- | --- | --- |
| <对象名> | <路径> | <hash> | <需要图片回答的问题> | <可复用字段> | locked/partial/blocked/disputed | <最小说明> |
| 对象 | 用户需求 | 图片判断点 | 结果 | 失败点或证据 | 下一步 |
| --- | --- | --- | --- | --- | --- |
| <对象名> | <验收/对比/排障> | <图片需回答的问题> | passed/failed/blocked/partial | <最小证据> | <最小动作> |