بنقرة واحدة
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 原图。