ワンクリックで
safe-image-reading
BoardGame 安全读图流程。用于 JPG/PNG/WebP、图集裁片、卡图、房间图、规则页、OCR 或截图验收;默认轻量裁图。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
BoardGame 安全读图流程。用于 JPG/PNG/WebP、图集裁片、卡图、房间图、规则页、OCR 或截图验收;默认轻量裁图。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
BoardGame 项目内参考图生成 Three.js 程序化模型流程。用于 img2threejs、图生模型、参考图重建、Three.js 游戏资产原型、书本/棋盘/卡牌/道具 3D 模型任务;在动手写模型前先拆参考图结构并建立“参考图区域到模型部件/材质”的追踪表,禁止把参考图当整面贴图贴皮,也禁止脱离参考图生成泛主题模型。
BoardGame 线上反馈批量收口流程。用于未关闭反馈、排重、真假 bug 分诊、并行修复、状态回写、关闭误报/重复反馈。
BoardGame 规则 bug 修复流程。用于卡牌、技能、Token、状态、阶段、伤害、资源、升级/基础差异、结算顺序和审计漏审。
BoardGame Git 操作入口。用于提交、推送、同步主分支、pre-push 阻塞、PR、worktree、fork、merge 等协作场景。
BoardGame 新游戏创建或资源/data intake 流程。用于新增游戏、只给图片/位置先开工;按现有游戏模式分阶段推进并验收。
BoardGame 截图交付流程。用于打开图、给我看图、看截图、图呢、端到端截图;最终验收图默认走图片预览站。
| name | safe-image-reading |
| description | BoardGame 安全读图流程。用于 JPG/PNG/WebP、图集裁片、卡图、房间图、规则页、OCR 或截图验收;默认轻量裁图。 |
这是 BoardGame 项目专用的需求交接式安全图片处理 workflow。图片只是用户当前需求的输入之一,读图过程本身不构成交付。默认做法不是“禁止看图”,也不是把压缩图当成额外能力待确认;压缩图、轻量预览、局部裁图就是给主线程看的默认输入,目的只是减少后续对话反复携带原图/base64 时触发的上下文膨胀和请求错误。普通单图默认由主线程生成并读取压缩图,然后给出当前任务所需结论;只有大图、批量图、atlas/整页图、SpriteSheet,或用户明确要求“本会话安全读取图片”时,才升级为带目的和验收标准的子代理 / OCR / 外部开图严格链路。主线程必须把用户当前需求、业务对象、图片需要补足的字段/判断点、结果要写回哪里或用于哪个判断一起交给子代理或本地 OCR。子代理不是另接一个新任务,而是补足当前用户需求里依赖图片判断的部分。子代理返回什么,由用户需求决定:
任何返回都必须能推进当前用户需求;不能为了证明“读过图”产出与录入、验收或排障无关的过程文字。
view_image、图片上下文、JPG、base64、context window 卡住或变慢。blocked/disputed/partial,不能把图片过程描述当成主结论。openai/codex#28316 说明历史图片/base64 工具输出可能被后续请求反复携带,导致上下文膨胀、请求超大和 502/524/流中断;openai/codex#28975 仍是 open 状态,只能把压缩/resize/外置证据称为规避或止血,不能说官方根因已修复。采用压缩图的现实原因是避免原图/base64 污染后续上下文并引发请求错误,不是因为模型不能读取图片。blocked,让当前用户需求继续推进。locked 合同和实现对照矩阵时,safe-image-reading 不得作为普通续跑入口。只有合同字段检查已经明确指出缺主真相源、缺完整单对象图/可读裁图、缺对象归属、缺规则原文/原子子句、缺索引入口、来源冲突,或用户明确要求复核图片时,才允许重新读图、OCR、裁图或让子代理看图;否则必须回到审计 skill 消费已锁合同。json/md 结果文件;不得为了证明“读过图”额外造过程文件。passed / failed / blocked / partial 必须按当前用户需求的通过门槛判定;如果使用子代理,必须把目的、验收标准和返回格式传给它。partial/disputed/blocked,不要硬写 passed。对子代理或本地 OCR 的输出,必须使用以下状态定义:
passed:当前验收目标所需字段全部锁定,且可直接进入当前任务的下一步。例如普通手牌反写必须同时锁定中文牌名、牌类、规则效果摘要;军备牌还要锁定军备目标。failed:图片能被明确排除为当前目标之外,或能证明不满足当前目标。例如人物牌、牌背、棋子/图标、单位素材、资源色块、错误页面、错误 UI 状态。只要已经能正向证明“不是本次目标”,就用 failed。blocked:图片本身不给出足够信息,无法判断当前目标字段。例如纯色底块、空白、严重模糊、裁切缺失、文件打不开、文字区缺失。blocked 只阻塞该图片或该字段,不能扩展成整个任务失败。partial:图片属于当前目标类别或仍有合理可能属于当前目标,但只锁定了部分必需字段,缺少另一些必需字段。例如能确认是军备牌但缺军备目标,或能确认牌名和牌类但规则效果不可读。状态边界:
blocked,不是 failed。failed,不是 partial。例如普通手牌验收里,“炮”棋子图标只有一个可见字,但它是图标/棋子资源,不是普通手牌候选,所以应为 failed。partial。交接用户需求与图片判断点
生成轻量输入
按需求读取或委托图片处理
local_image),验收目的和返回格式用文本附件;不要同时传互斥的 message 与 items,也不要把普通文件类型误当图片附件。若参数错误,修正调用形态后只重试一次。blocked,不能整体退回给主线程。failed、blocked、partial 的边界,防止子代理把“识别出一点内容”误写成 partial,或把纯色/空白误写成 failed。通过/不通过/无法判断、命中的用户预期、失败点、最小证据,不要转写无关文字。按需求写回
test-results/evidence-image-validation/<e2e-id>.jsontest-results/evidence-image-validation/<e2e-id>.md<e2e-id> 必须能唯一表达当前验收链路,例如 qidahen-formal-handcard-2.4、qidahen-tutorial-diplomacy、qidahen-board-ui。.json 才作为机器校验主文件,至少包含 objective / criteria / summary / items / verdict;summary.total 必须等于各状态数量之和,items 必须逐项记录 idx/path/status/reason/lockedFields。.md 才作为人读摘要,只写当前链路验收目标、状态统计、关键失败点和裁决。json/md,但不得覆盖其他端到端链路的结果;需要历史留存时再另建 runs/<timestamp>/,不要把历史和当前结果混进一个总文档。partial/blocked/failed。passed / failed / locked / blocked / disputed / partial / not-applicable。图片不可读、裁图缺失或字段模糊只能写成具体字段/判断点的阻塞原因,不得作为独立汇报结论。继续业务任务
locked/passed 项进入实现对照、最小测试补证或缺口登记。blocked/disputed/partial/failed 项只阻塞对应字段或验收点;不得脑补实现,也不得让已锁字段白读。图片链路失败时换真相源
blocked/partial。只有当前需求、既有 E2E 证据链或项目 workflow 明确要求独立图片验收产物时,主线程才把子代理结果整理成每条链路独立的覆盖式产物,不能混进一个总文档:
test-results/evidence-image-validation/<e2e-id>.json
test-results/evidence-image-validation/<e2e-id>.md
.json 最小结构:
{
"id": "<e2e-id>",
"objective": "<本链路图片验收目标>",
"criteria": ["<验收字段或判断点>"],
"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> | <逐字转写> | C1... | <触发/目标/检定/分支/清理> | locked/partial/blocked/disputed |
| 对象 | 用户需求 | 图片判断点 | 结果 | 失败点或证据 | 下一步 |
| --- | --- | --- | --- | --- | --- |
| <中文对象名> | <验收/对比/排障> | <用户预期/图片需回答的问题> | passed/failed/blocked | <最小证据> | <最小动作> |
若无法完整判断,只能补“阻塞字段/阻塞交付点”,不能把需求变成泛泛的视觉 QA。
view_image 原图。