mcpField
C
cowart-image-edit

cowart-image-edit

github.com/zhongerxin创意与媒体6.0k94 次安装3 周前更新
代码仓库

关于 cowart-image-edit

cowart-image-edit 是 Cowart 图像编辑技能,可将用户提供的批注截图转化为修订图像,并放在 Cowart 画布原图旁,供需要按视觉批注修改图片的用户使用。它保留原图和批注,便于对照。

主要功能

  1. 01从截图读取批注及标记位置
  2. 02以截图中的原图内容为生成基础
  3. 03生成不含批注元素的修订位图
  4. 04将新图放在原图旁并保留原内容
  5. 05检查画布中的图像与批注状态

适用场景

  1. 01依据箭头和文字批注修改图像
  2. 02为多个截图分别生成独立修订图
  3. 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。这些路径可能与对话的工作目录不同。在普通项目对话中,继续像以前一样使用当前用户项目。

  1. 阅读用户提供的截图。

    除非用户说明多个截图属于同一张图像,否则将每张截图视为一张输出图像的权威编辑说明。

    如果用户提供多张截图,请分别处理,并将生成的输出分开保存。除非用户明确要求,否则不要合并不同截图中的批注。

  2. 从每张截图中提取编辑要求。

    阅读截图中可见的批注标签、箭头和附近的编辑说明。根据箭头尖端或标记区域判断每条说明适用于何处。

    忽略编辑器界面元素,例如工具栏、蓝色选择框、缩放控制点、光标图标和无关的相邻图像。

  3. 选择用于生成的源图像。

    尽可能使用用户提供的截图中可见的干净底图内容作为视觉基础。

    如果截图裁剪过多、有遮挡或分辨率过低,无法作为良好的图像基础,请用户提供原始图像导出文件,或提供该图像更清晰的截图。

    不要读取当前 Cowart 画布来推断编辑意图。应以截图作为所请求修改的依据。之后可以读取 Cowart 状态,但只能用于放置生成结果,且不得遮盖现有内容。

  4. 准备图像生成输入。

    使用用户提供的截图,以及用户提供的更清晰源图像。

    生成提示词应:

    • 将批注文本作为编辑说明
    • 除非批注另有要求,否则保留原图的主体、构图、纵横比和风格
    • 移除输出中的所有批注痕迹,包括红色箭头、标签、蓝色选择框、控制点和工具界面
    • 仅输出修订后的干净图像
  5. 生成新的位图。

    使用当前环境中内置的图像生成流程。不要覆盖源图像文件。使用带时间戳的文件名保存新位图,例如:

    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 前,请目视检查本地位图,并确认它是针对此截图新生成的修订图片,而非陈旧的生成素材。

  6. 使用 Cowart MCP 在原图旁插入修订后的图片。

    优先使用 Cowart MCP insert_cowart_image 工具。除非 MCP 工具不可用,否则不要手动编写 tldraw asset / 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>"
    }
    
  7. 通过 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
    
  8. 进行视觉验证。

    让 Cowart 小组件从 MCP 支持的存储中刷新,然后确认:

    • 原始图像仍在原处
    • 原始批注箭头和标签仍然可见
    • 新的修订图像显示在原始图像旁边
    • 新图像不包含批注箭头、标签、选区或界面元素

防护措施

  • 除非用户明确要求替换,否则绝不替换原始图像。
  • 绝不删除或移动批注形状;它们是可见的编辑说明。
  • 绝不将修订图像放入原始 AI 图片 框架内,因为这可能遮盖旧图像,让修改前后的对比变得更困难。
  • 绝不自动捕获或扫描当前画布来判断编辑意图;请使用用户提供的截图。
  • 如果批注彼此矛盾,请生成最贴近字面含义的综合解读,并说明其中的歧义。
  • 如果提供的截图显示了选中状态轮廓或工具栏 UI,请仅将其视为上下文,而非要生成的内容。

评论

支持 Markdown