关于 cowart-image-edit
cowart-image-edit 是 Cowart 图像编辑技能,可将用户提供的批注截图转化为修订图像,并放在 Cowart 画布原图旁,供需要按视觉批注修改图片的用户使用。它保留原图和批注,便于对照。
主要功能
- 01从截图读取批注及标记位置
- 02以截图中的原图内容为生成基础
- 03生成不含批注元素的修订位图
- 04将新图放在原图旁并保留原内容
- 05检查画布中的图像与批注状态
适用场景
- 01依据箭头和文字批注修改图像
- 02为多个截图分别生成独立修订图
- 03将新版本与画布原图并排对照
MCP 相关
通过 Cowart MCP 工具读取和写入画布状态,并插入生成的图像;不通过本地浏览器服务访问 Cowart。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ zhongerxin/ cowart --skill cowart-image-edit安装后在 Claude Code 中输入/cowart-image-edit确认已加载。
附带文件agents/openai.yaml
详细介绍
Cowart 图像编辑
使用此技能,将用户提供的 Cowart 批注截图转换为修订后的 AI 生成位图,并将其放置在对应的原始图像旁边。
前提条件
确保此工作流所需的 cowart_mcp 工具可用。不要将调用 render_cowart_canvas_widget 作为常规前提条件:从 Cowart 小组件发送的批注请求已经有打开的画布,而现有小组件会从 MCP 支持的存储中同步插入的结果。如果用户另行要求打开、重新打开或明确刷新画布,请按画布打开工作流处理一次。
Cowart 状态通过 Cowart MCP 工具读取和写入,而非通过 localhost 浏览器服务。
用户负责提供相关截图。不要自动截取当前画布,也不要扫描整个画布来推断编辑请求;画布上可能有许多带不同批注的图像。
工作流
对于来自 Cowart 侧边栏画布的后续请求,所有 Cowart 工具都使用 Cowart 上下文/消息中的确切 projectDir 和 canvasDir。这些路径可能与对话的工作目录不同。在普通项目对话中,继续像以前一样使用当前用户项目。
-
阅读用户提供的截图。
除非用户说明多个截图属于同一张图像,否则将每张截图视为一张输出图像的权威编辑说明。
如果用户提供多张截图,请分别处理,并将生成的输出分开保存。除非用户明确要求,否则不要合并不同截图中的批注。
-
从每张截图中提取编辑要求。
阅读截图中可见的批注标签、箭头和附近的编辑说明。根据箭头尖端或标记区域判断每条说明适用于何处。
忽略编辑器界面元素,例如工具栏、蓝色选择框、缩放控制点、光标图标和无关的相邻图像。
-
选择用于生成的源图像。
尽可能使用用户提供的截图中可见的干净底图内容作为视觉基础。
如果截图裁剪过多、有遮挡或分辨率过低,无法作为良好的图像基础,请用户提供原始图像导出文件,或提供该图像更清晰的截图。
不要读取当前 Cowart 画布来推断编辑意图。应以截图作为所请求修改的依据。之后可以读取 Cowart 状态,但只能用于放置生成结果,且不得遮盖现有内容。
-
准备图像生成输入。
使用用户提供的截图,以及用户提供的更清晰源图像。
生成提示词应:
- 将批注文本作为编辑说明
- 除非批注另有要求,否则保留原图的主体、构图、纵横比和风格
- 移除输出中的所有批注痕迹,包括红色箭头、标签、蓝色选择框、控制点和工具界面
- 仅输出修订后的干净图像
-
生成新的位图。
使用当前环境中内置的图像生成流程。不要覆盖源图像文件。使用带时间戳的文件名保存新位图,例如:
annotation-edit-20260620-153012.png将图像插入 Cowart 之前,仔细确认实际的本地输出图像。不要假定内置图像生成流程总会在
$CODEX_HOME/generated_images下写入新文件。优先解析顺序:
- 如果当前图像生成工具调用返回了本地图像路径,请使用该路径。
- 如果没有返回新文件路径,请检查当前请求对应的 Codex 会话 JSONL,并从最新的
image_generation_call.result中提取 PNG/base64 载荷,然后将其写入带时间戳的输出文件名。 - 仅当能够证明文件是由当前请求创建时(例如,在此生成步骤后匹配其时间戳),才使用
$CODEX_HOME/generated_images。切勿仅仅因为某张图片是陈旧的 generated_images 目录中最新的文件,就选用它。
将解析出的文件插入 Cowart 前,请目视检查本地位图,并确认它是针对此截图新生成的修订图片,而非陈旧的生成素材。
-
使用 Cowart MCP 在原图旁插入修订后的图片。
优先使用 Cowart MCP
insert_cowart_image工具。除非 MCP 工具不可用,否则不要手动编写 tldrawasset/shape记录或小数index键。该工具会将位图复制到页面本地的 assets 文件夹,创建 tldraw 图片资源和图片形状,生成有效的 tldraw 小数索引,将图片放在锚点旁并避开重叠,并通过项目对应的 Cowart 画布文件保存。添加新的 tldraw 图片资源和新的图片形状。不要更新、移除、隐藏、重新设定父级或重新排序原图、原来的
AI 图片框架或任何标注形状。如果已有明确的放置锚点,请优先使用:
- 如果用户已选择原图,请将其用作锚点。
- 如果用户已选择原来的
AI 图片框架,请将其用作锚点。 - 如果截图清楚显示原图,且当前 Cowart 页面上有唯一匹配的生成图/原图或
AI 图片框架,请使用该对象作为锚点,无需询问用户选择。 - 如果有多张截图/多个输出,且无法唯一确定匹配的锚点,请让用户选择每个对应的锚点,或提供明确的放置顺序。
- 如果锚点不明确,且用户未要求进行特定的并排比较,请将结果放在当前页面附近的空白区域,确保不会遮盖、移动、隐藏或删除原图或标注。
放置规则:
- 如果源图位于
AI 图片框架内,请使用该框架在页面级别的边界作为锚点,并将新图作为该框架的同级对象放置。 - 否则,使用源图自身的边界和父级。
- 如果带标注的源图附近有较早版本的图片,请优先将新修订图放在当前已标注/源图的右侧,因为较早的标注输出可能已放在左侧。
- 将新图放在锚点右侧,间距约为
40个画布单位。 - 使新图的显示宽度和高度与锚点一致,除非用户要求不同尺寸。
- 如果该位置会与现有内容重叠,请每次向右移动
anchor width + 40,直到新图不再与内容重叠。 - 如果使用没有锚点的空白区域备用方案,请将生成图放在带标注源图附近;已知源图尺寸时,采用相近尺寸,并选择不会与现有形状重叠的位置。
建议的形状元数据:
{ "cowartGeneratedFromAnnotationEdit": true, "cowartAnnotationSourceShapeId": "<selected source image or frame id>", "cowartAnnotationScreenshot": "<source screenshot file name when available>" } -
通过 Cowart 保存。
仅在位图生成后访问 Cowart 状态。仅使用此访问来将新图插入锚点旁或附近的空白区域,不要借此推断编辑意图。
首选的 MCP 调用形式:
{ "imagePath": "/absolute/path/to/annotation-edit-20260620-153012.png", "projectDir": "/absolute/path/to/user/codex-project", "anchorShapeId": "<selected source image or frame id>", "placement": "right", "margin": 40, "matchAnchor": true, "fileName": "annotation-edit-20260620-153012.png", "annotationScreenshot": "<source screenshot file name when available>", "shapeMeta": { "cowartGeneratedFromAnnotationEdit": true }, "altText": "Revised image generated from Cowart annotation screenshot" }MCP 工具必须返回新的
assetId、shapeId、已保存资源路径、 页面 ID、边界和生成的index。请确认返回的index是有效的 tldraw 小数索引,而非自定义描述性字符串。 仅当insert_cowart_image不可用时,才使用回退方案:更新必需的 store 快照,并使用save_cowart_canvas_state保存。在回退模式下,使用页面本地的图像资源 URL:
/page-assets/<page-dir>/<filename>Cowart 的 MCP 存储层会按页面保留快照,路径如下:
canvas/pages/<page-id-without-page-prefix>/cowart-canvas.json -
进行视觉验证。
让 Cowart 小组件从 MCP 支持的存储中刷新,然后确认:
- 原始图像仍在原处
- 原始批注箭头和标签仍然可见
- 新的修订图像显示在原始图像旁边
- 新图像不包含批注箭头、标签、选区或界面元素
防护措施
- 除非用户明确要求替换,否则绝不替换原始图像。
- 绝不删除或移动批注形状;它们是可见的编辑说明。
- 绝不将修订图像放入原始
AI 图片框架内,因为这可能遮盖旧图像,让修改前后的对比变得更困难。 - 绝不自动捕获或扫描当前画布来判断编辑意图;请使用用户提供的截图。
- 如果批注彼此矛盾,请生成最贴近字面含义的综合解读,并说明其中的歧义。
- 如果提供的截图显示了选中状态轮廓或工具栏 UI,请仅将其视为上下文,而非要生成的内容。