feat: 65个PS操作工具 + ai_chat拆分 + 开发准则更新 - ps-operations.ts 1361行(图层/变换/选区/蒙版/调色/文字/文档管理) - ai_llm.py 模型调用层独立 - ai_tools.py 65个function calling schema - aiToolExecutor.ts 全量映射 - 开发准则新增AI模块规范

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-07 18:52:34 +08:00
parent dae906aba7
commit 8688422578
22 changed files with 1014 additions and 574 deletions

View File

@@ -218,6 +218,459 @@ PS_TOOLS = [
}
}
},
# ==================== PS 通用操作工具 ====================
{"type": "function", "function": {
"name": "move_layer",
"description": "移动图层。dx 正值向右dy 正值向下(单位像素)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"dx": {"type": "number", "description": "水平位移(像素,正=右)"},
"dy": {"type": "number", "description": "垂直位移(像素,正=下)"}
}, "required": ["name", "dx", "dy"]}
}},
{"type": "function", "function": {
"name": "resize_layer",
"description": "缩放图层百分比。100=不变200=放大2倍50=缩小一半",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"scale_x": {"type": "number", "description": "水平缩放百分比"},
"scale_y": {"type": "number", "description": "垂直缩放百分比(省略则与 scale_x 相同)"}
}, "required": ["name", "scale_x"]}
}},
{"type": "function", "function": {
"name": "rotate_layer",
"description": "旋转图层(角度,正值=顺时针)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"angle": {"type": "number", "description": "旋转角度(正=顺时针)"}
}, "required": ["name", "angle"]}
}},
{"type": "function", "function": {
"name": "flip_layer",
"description": "翻转图层",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"direction": {"type": "string", "enum": ["horizontal", "vertical"], "description": "翻转方向"}
}, "required": ["name", "direction"]}
}},
{"type": "function", "function": {
"name": "set_layer_opacity",
"description": "设置图层透明度0=完全透明100=完全不透明)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"opacity": {"type": "number", "description": "透明度 0-100"}
}, "required": ["name", "opacity"]}
}},
{"type": "function", "function": {
"name": "set_layer_blend_mode",
"description": "设置图层混合模式",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"mode": {"type": "string", "enum": ["normal","multiply","screen","overlay","darken","lighten","color_dodge","color_burn","soft_light","hard_light","difference","exclusion","hue","saturation","color","luminosity"], "description": "混合模式"}
}, "required": ["name", "mode"]}
}},
{"type": "function", "function": {
"name": "set_layer_visible",
"description": "显示或隐藏图层",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"visible": {"type": "boolean", "description": "true=显示false=隐藏"}
}, "required": ["name", "visible"]}
}},
{"type": "function", "function": {
"name": "set_text_content",
"description": "修改文字图层的文本内容",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "文字图层名称"},
"text": {"type": "string", "description": "新的文本内容"}
}, "required": ["name", "text"]}
}},
{"type": "function", "function": {
"name": "set_text_color",
"description": "修改文字图层的颜色",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "文字图层名称"},
"color": {"type": "string", "description": "颜色 hex 值,如 #FF0000"}
}, "required": ["name", "color"]}
}},
{"type": "function", "function": {
"name": "set_text_size",
"description": "修改文字图层的字号(像素)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "文字图层名称"},
"size": {"type": "number", "description": "字号(像素)"}
}, "required": ["name", "size"]}
}},
{"type": "function", "function": {
"name": "group_layers",
"description": "将多个图层编组",
"parameters": {"type": "object", "properties": {
"layer_names": {"type": "array", "items": {"type": "string"}, "description": "要编组的图层名称列表"},
"group_name": {"type": "string", "description": "组名称"}
}, "required": ["layer_names", "group_name"]}
}},
{"type": "function", "function": {
"name": "merge_visible",
"description": "合并所有可见图层",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "flatten_image",
"description": "拼合图像(所有图层合并为背景层)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "resize_canvas",
"description": "调整画布大小(像素)",
"parameters": {"type": "object", "properties": {
"width": {"type": "number", "description": "画布宽度(像素)"},
"height": {"type": "number", "description": "画布高度(像素)"},
"anchor": {"type": "string", "enum": ["top-left","top","top-right","left","center","right","bottom-left","bottom","bottom-right"], "description": "锚点位置(默认 center"}
}, "required": ["width", "height"]}
}},
{"type": "function", "function": {
"name": "adjust_brightness_contrast",
"description": "调整当前图层的亮度和对比度",
"parameters": {"type": "object", "properties": {
"brightness": {"type": "number", "description": "亮度 -150 到 150"},
"contrast": {"type": "number", "description": "对比度 -50 到 100"}
}, "required": ["brightness", "contrast"]}
}},
{"type": "function", "function": {
"name": "desaturate",
"description": "将当前图层去色(变为灰度)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "rasterize_layer",
"description": "栅格化图层(将智能对象/文字/形状转为像素图层)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "align_layers_tool",
"description": "对齐多个图层",
"parameters": {"type": "object", "properties": {
"layer_names": {"type": "array", "items": {"type": "string"}, "description": "要对齐的图层名"},
"alignment": {"type": "string", "enum": ["left","center_h","right","top","center_v","bottom"], "description": "对齐方式"}
}, "required": ["layer_names", "alignment"]}
}},
{"type": "function", "function": {
"name": "distribute_layers",
"description": "等距分布多个图层",
"parameters": {"type": "object", "properties": {
"layer_names": {"type": "array", "items": {"type": "string"}, "description": "要分布的图层名"},
"direction": {"type": "string", "enum": ["horizontal","vertical"], "description": "分布方向"}
}, "required": ["layer_names", "direction"]}
}},
{"type": "function", "function": {
"name": "add_stroke",
"description": "给图层添加描边效果",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"size": {"type": "number", "description": "描边宽度(像素)"},
"color": {"type": "string", "description": "描边颜色 hex如 #FF0000"},
"position": {"type": "string", "enum": ["outside","inside","center"], "description": "描边位置(默认 outside"}
}, "required": ["name", "size", "color"]}
}},
{"type": "function", "function": {
"name": "create_clipping_mask",
"description": "为图层创建剪贴蒙版(裁切到下方图层形状)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "release_clipping_mask",
"description": "释放图层的剪贴蒙版",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "undo",
"description": "撤销操作Ctrl+Z可指定步数",
"parameters": {"type": "object", "properties": {
"steps": {"type": "number", "description": "撤销步数(默认 1"}
}, "required": []}
}},
{"type": "function", "function": {
"name": "get_layer_bounds",
"description": "获取图层的位置和尺寸信息left/top/width/height/center",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "create_document",
"description": "新建 Photoshop 文档",
"parameters": {"type": "object", "properties": {
"width": {"type": "number", "description": "宽度(像素)"},
"height": {"type": "number", "description": "高度(像素)"},
"resolution": {"type": "number", "description": "分辨率 DPI默认 150"},
"name": {"type": "string", "description": "文档名称"}
}, "required": ["width", "height"]}
}},
{"type": "function", "function": {
"name": "save_document",
"description": "保存当前文档Ctrl+S",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "resize_image",
"description": "调整图像大小(像素/分辨率)",
"parameters": {"type": "object", "properties": {
"width": {"type": "number", "description": "新宽度(像素)"},
"height": {"type": "number", "description": "新高度(像素)"},
"resolution": {"type": "number", "description": "新分辨率 DPI可选"}
}, "required": ["width", "height"]}
}},
{"type": "function", "function": {
"name": "gaussian_blur",
"description": "对当前图层应用高斯模糊",
"parameters": {"type": "object", "properties": {
"radius": {"type": "number", "description": "模糊半径(像素)"}
}, "required": ["radius"]}
}},
{"type": "function", "function": {
"name": "auto_levels",
"description": "自动色阶(快速修正色调范围)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "auto_contrast",
"description": "自动对比度",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "invert_colors",
"description": "反相(颜色取反)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "convert_to_rgb",
"description": "转换为 RGB 色彩模式",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "convert_to_cmyk",
"description": "转换为 CMYK 色彩模式(印刷用)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "add_drop_shadow",
"description": "给图层添加投影效果",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"distance": {"type": "number", "description": "投影距离(像素)"},
"size": {"type": "number", "description": "投影大小/模糊(像素)"},
"opacity": {"type": "number", "description": "投影不透明度 0-100默认 75"},
"angle": {"type": "number", "description": "光照角度(默认 120"}
}, "required": ["name", "distance", "size"]}
}},
{"type": "function", "function": {
"name": "clear_layer_effects",
"description": "清除图层的所有图层样式(投影/描边/发光等)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "bring_to_front",
"description": "将图层移到最顶层",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "send_to_back",
"description": "将图层移到最底层",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "crop_document",
"description": "裁切画布到指定区域(像素坐标)",
"parameters": {"type": "object", "properties": {
"left": {"type": "number"}, "top": {"type": "number"},
"right": {"type": "number"}, "bottom": {"type": "number"}
}, "required": ["left", "top", "right", "bottom"]}
}},
{"type": "function", "function": {
"name": "trim_document",
"description": "自动裁切(去除透明或纯色边缘)",
"parameters": {"type": "object", "properties": {
"type": {"type": "string", "enum": ["transparent", "topleft"], "description": "裁切依据(默认 topleft 即左上角颜色)"}
}, "required": []}
}},
{"type": "function", "function": {
"name": "add_guide",
"description": "添加参考线",
"parameters": {"type": "object", "properties": {
"position": {"type": "number", "description": "位置(像素)"},
"direction": {"type": "string", "enum": ["horizontal", "vertical"], "description": "方向"}
}, "required": ["position", "direction"]}
}},
{"type": "function", "function": {
"name": "clear_guides",
"description": "清除所有参考线",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "fill_selection",
"description": "用颜色填充当前选区",
"parameters": {"type": "object", "properties": {
"color": {"type": "string", "description": "填充颜色 hex"},
"opacity": {"type": "number", "description": "填充不透明度 0-100默认 100"}
}, "required": ["color"]}
}},
{"type": "function", "function": {
"name": "inverse_selection",
"description": "反选(选中未选区域)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "feather_selection",
"description": "羽化选区边缘",
"parameters": {"type": "object", "properties": {
"radius": {"type": "number", "description": "羽化半径(像素)"}
}, "required": ["radius"]}
}},
{"type": "function", "function": {
"name": "adjust_levels",
"description": "调整色阶(输入黑点/灰度系数/白点)",
"parameters": {"type": "object", "properties": {
"black": {"type": "number", "description": "输入黑点 0-253默认 0"},
"gamma": {"type": "number", "description": "灰度系数 0.1-9.99(默认 1.0<1变暗 >1变亮"},
"white": {"type": "number", "description": "输入白点 2-255默认 255"}
}, "required": ["black", "gamma", "white"]}
}},
{"type": "function", "function": {
"name": "copy_merged_to_new_layer",
"description": "复制合并所有可见内容到新图层Ctrl+Shift+C + 粘贴)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "lock_layer",
"description": "锁定或解锁图层",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"locked": {"type": "boolean", "description": "true=锁定false=解锁"}
}, "required": ["name", "locked"]}
}},
{"type": "function", "function": {
"name": "set_foreground_color",
"description": "设置前景色",
"parameters": {"type": "object", "properties": {
"color": {"type": "string", "description": "颜色 hex 值"}
}, "required": ["color"]}
}},
{"type": "function", "function": {
"name": "save_document_as",
"description": "文件另存为(支持 PSD/PNG/JPG",
"parameters": {"type": "object", "properties": {
"path": {"type": "string", "description": "保存路径"},
"format": {"type": "string", "enum": ["psd", "png", "jpg"], "description": "文件格式"}
}, "required": ["path"]}
}},
{"type": "function", "function": {
"name": "add_layer_mask",
"description": "为图层添加蒙版(全白=全显示 / 全黑=全隐藏 / 基于当前选区)",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"hide_all": {"type": "boolean", "description": "true=全黑蒙版(隐藏)false=全白蒙版(显示,默认)"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "delete_layer_mask",
"description": "删除图层蒙版",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"apply": {"type": "boolean", "description": "true=应用蒙版后删除false=直接丢弃(默认)"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "convert_to_smart_object",
"description": "将图层转为智能对象",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"}
}, "required": ["name"]}
}},
{"type": "function", "function": {
"name": "adjust_hsl",
"description": "调整色相/饱和度/明度H=-180~180, S=-100~100, L=-100~100",
"parameters": {"type": "object", "properties": {
"hue": {"type": "number", "description": "色相偏移 -180到180"},
"saturation": {"type": "number", "description": "饱和度 -100到100"},
"lightness": {"type": "number", "description": "明度 -100到100"}
}, "required": ["hue", "saturation", "lightness"]}
}},
{"type": "function", "function": {
"name": "create_text_layer",
"description": "创建文字图层",
"parameters": {"type": "object", "properties": {
"text": {"type": "string", "description": "文字内容"},
"x": {"type": "number", "description": "X 坐标(像素)"},
"y": {"type": "number", "description": "Y 坐标(像素)"},
"font_size": {"type": "number", "description": "字号(像素)"},
"color": {"type": "string", "description": "颜色 hex默认黑色"},
"font_name": {"type": "string", "description": "字体名称(可选)"}
}, "required": ["text", "x", "y", "font_size"]}
}},
{"type": "function", "function": {
"name": "get_active_layer_info",
"description": "获取当前选中图层的详细信息(名称/类型/尺寸/位置/透明度/混合模式等)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "list_all_layer_names",
"description": "列出文档中所有图层名称(扁平列表,含类型和可见性)",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "duplicate_layer_to_document",
"description": "复制图层到另一个已打开的文档",
"parameters": {"type": "object", "properties": {
"name": {"type": "string", "description": "图层名称"},
"target_doc": {"type": "string", "description": "目标文档名称"}
}, "required": ["name", "target_doc"]}
}},
{"type": "function", "function": {
"name": "switch_document",
"description": "切换到另一个已打开的文档",
"parameters": {"type": "object", "properties": {
"doc_name": {"type": "string", "description": "文档名称"}
}, "required": ["doc_name"]}
}},
{"type": "function", "function": {
"name": "list_documents",
"description": "列出所有已打开的文档",
"parameters": {"type": "object", "properties": {}, "required": []}
}},
{"type": "function", "function": {
"name": "get_pixel_color",
"description": "获取画布上指定坐标的像素颜色(取色器)",
"parameters": {"type": "object", "properties": {
"x": {"type": "number", "description": "X 坐标"},
"y": {"type": "number", "description": "Y 坐标"}
}, "required": ["x", "y"]}
}},
{"type": "function", "function": {
"name": "trim_document",
"description": "自动裁切(去除透明或纯色边缘)",
"parameters": {"type": "object", "properties": {
"type": {"type": "string", "enum": ["transparent","topleft"], "description": "裁切依据"}
}, "required": []}
}},
{"type": "function", "function": {
"name": "close_document",
"description": "关闭当前文档",
"parameters": {"type": "object", "properties": {
"save": {"type": "boolean", "description": "是否保存(默认不保存)"}
}, "required": []}
}},
]
# 工具名称映射(中文显示用)
@@ -236,4 +689,66 @@ TOOL_DISPLAY_NAMES = {
"generate_garment_preview": "生成花样预览",
"extract_and_apply_all_pieces": "提取并套图",
"verify_pattern_result": "验证套图效果",
# PS 通用操作
"move_layer": "移动图层",
"resize_layer": "缩放图层",
"rotate_layer": "旋转图层",
"flip_layer": "翻转图层",
"set_layer_opacity": "设置透明度",
"set_layer_blend_mode": "设置混合模式",
"set_layer_visible": "显示/隐藏图层",
"set_text_content": "修改文字",
"set_text_color": "修改文字颜色",
"set_text_size": "修改字号",
"group_layers": "编组图层",
"merge_visible": "合并可见",
"flatten_image": "拼合图像",
"resize_canvas": "调整画布",
"adjust_brightness_contrast": "亮度/对比度",
"desaturate": "去色",
"rasterize_layer": "栅格化",
"align_layers_tool": "对齐图层",
"distribute_layers": "分布图层",
"add_stroke": "添加描边",
"create_clipping_mask": "创建剪贴蒙版",
"release_clipping_mask": "释放剪贴蒙版",
"undo": "撤销",
"get_layer_bounds": "获取图层位置",
"create_document": "新建文档",
"save_document": "保存文档",
"resize_image": "调整图像大小",
"gaussian_blur": "高斯模糊",
"auto_levels": "自动色阶",
"auto_contrast": "自动对比度",
"invert_colors": "反相",
"convert_to_rgb": "转RGB",
"convert_to_cmyk": "转CMYK",
"add_drop_shadow": "添加投影",
"clear_layer_effects": "清除图层样式",
"bring_to_front": "置顶图层",
"send_to_back": "置底图层",
"crop_document": "裁切画布",
"trim_document": "自动裁切",
"add_guide": "添加参考线",
"clear_guides": "清除参考线",
"fill_selection": "填充选区",
"inverse_selection": "反选",
"feather_selection": "羽化选区",
"adjust_levels": "色阶",
"copy_merged_to_new_layer": "复制合并",
"lock_layer": "锁定图层",
"set_foreground_color": "设置前景色",
"save_document_as": "另存为",
"add_layer_mask": "添加蒙版",
"delete_layer_mask": "删除蒙版",
"convert_to_smart_object": "转智能对象",
"adjust_hsl": "色相/饱和度",
"create_text_layer": "创建文字",
"get_active_layer_info": "查看当前图层",
"list_all_layer_names": "列出所有图层",
"duplicate_layer_to_document": "复制到文档",
"switch_document": "切换文档",
"list_documents": "列出文档",
"get_pixel_color": "取色",
"close_document": "关闭文档",
}