From a4ebe79c2e902f179b725a3e128d93b290b76ab9 Mon Sep 17 00:00:00 2001 From: hp0912 <809211365@qq.com> Date: Sun, 5 Apr 2026 15:15:27 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=8D=A2=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=8F=91=E9=80=81=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++++++++++ skills/image-to-image/SKILL.md | 9 ++------ .../image-to-image/scripts/image_to_image.py | 21 +++++++++++++++---- skills/text-to-image/SKILL.md | 9 ++------ skills/text-to-image/scripts/text_to_image.py | 21 +++++++++++++++---- 5 files changed, 52 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 4ae5654..29372bf 100644 --- a/README.md +++ b/README.md @@ -29,3 +29,17 @@ MYSQL_PASSWORD=houhou 图片URL3 图片URL4 ``` + +**发送图片的时候也可以调用 Agent 接口** + +``` +[POST] http://127.0.0.1:{ROBOT_WECHAT_CLIENT_PORT}/api/v1//robot/message/send/image/url + +请求体 Body: + +{ + "to_wxid": "{{ROBOT_FROM_WX_ID}}", + "image_urls": ["{{imageurl}}"] +} + +``` diff --git a/skills/image-to-image/SKILL.md b/skills/image-to-image/SKILL.md index a4d1245..238dca6 100644 --- a/skills/image-to-image/SKILL.md +++ b/skills/image-to-image/SKILL.md @@ -94,14 +94,9 @@ argument-hint: "需要 prompt(提示词)和 images(图片链接列表) 1. 当用户发送图片并附带修改、合成、风格转换等描述时触发该技能。 2. 从用户输入中提取 prompt(提示词),不对提示词做总结或修改。提取 images(图片链接列表)。可选提取 model、negative_prompt、ratio、resolution 参数。 3. 将参数组装为 shell 风格命令行参数,在仓库根目录下执行本地脚本,例如:`python3 image-to-image/scripts/image_to_image.py --prompt '把这张图变成油画风格' --images 'https://example.com/img1.jpg' --images 'https://example.com/img2.jpg' --model jimeng-5.0`。 -4. 成功时脚本输出 - -``` -图片URL1 -图片URL2 -``` +4. 脚本生成图片后会自动调用客户端接口 `POST http://127.0.0.1:{ROBOT_WECHAT_CLIENT_PORT}/api/v1/robot/message/send/image/url` 将图片发送给用户,成功时输出「图片发送成功」。 ## 回复要求 -- 成功时,脚本输出 `图片URL1图片URL2` 格式,AI 智能体接收到这种格式内容会自动发送图片。 +- 成功时,脚本输出「图片发送成功」,表示图片已通过客户端接口直接发送,无需 AI 智能体再做额外处理。 - 失败时,返回具体的失败信息。 diff --git a/skills/image-to-image/scripts/image_to_image.py b/skills/image-to-image/scripts/image_to_image.py index c472c37..8b31f24 100644 --- a/skills/image-to-image/scripts/image_to_image.py +++ b/skills/image-to-image/scripts/image_to_image.py @@ -424,11 +424,24 @@ def main() -> int: sys.stdout.write("未生成任何图像\n") return 1 - for url in image_urls: - if url: - sys.stdout.write(f"{url}") + # 通过客户端接口发送图片 + client_port = os.environ.get("ROBOT_WECHAT_CLIENT_PORT", "").strip() + if not client_port: + sys.stdout.write("环境变量 ROBOT_WECHAT_CLIENT_PORT 未配置\n") + return 1 + + send_url = f"http://127.0.0.1:{client_port}/api/v1/robot/message/send/image/url" + send_body = { + "to_wxid": from_wx_id, + "image_urls": [u for u in image_urls if u], + } + try: + _http_post_json(send_url, send_body, {"Content-Type": "application/json"}, timeout=60) + sys.stdout.write("图片发送成功\n") + except Exception as exc: + sys.stdout.write(f"发送图片失败: {exc}\n") + return 1 - sys.stdout.write("\n") return 0 diff --git a/skills/text-to-image/SKILL.md b/skills/text-to-image/SKILL.md index 6f4de23..88e90dd 100644 --- a/skills/text-to-image/SKILL.md +++ b/skills/text-to-image/SKILL.md @@ -89,14 +89,9 @@ argument-hint: "需要 prompt 参数(画图提示词),可选 model(模 1. 当用户想通过文本描述生成图像时触发该技能。 2. 从用户输入中提取 prompt(画图提示词),不对提示词做总结或修改。可选提取 model、negative_prompt、ratio、resolution 参数。 3. 将参数组装为 shell 风格命令行参数,在仓库根目录下执行本地脚本,例如:`python3 text-to-image/scripts/text_to_image.py --prompt '一只可爱的猫咪在花园里玩耍' --model jimeng-5.0`。 -4. 成功是脚本输出 - -``` -图片URL1 -图片URL2 -``` +4. 脚本生成图片后会自动调用客户端接口 `POST http://127.0.0.1:{ROBOT_WECHAT_CLIENT_PORT}/api/v1/robot/message/send/image/url` 将图片发送给用户,成功时输出「图片发送成功」。 ## 回复要求 -- 成功时,脚本输出 `图片URL1图片URL2` 格式,AI 智能体接受到这种格式内容会自动发送图片。 +- 成功时,脚本输出「图片发送成功」,表示图片已通过客户端接口直接发送,无需 AI 智能体再做额外处理。 - 失败时,返回具体的失败信息。 diff --git a/skills/text-to-image/scripts/text_to_image.py b/skills/text-to-image/scripts/text_to_image.py index b298ab0..f9bc16d 100644 --- a/skills/text-to-image/scripts/text_to_image.py +++ b/skills/text-to-image/scripts/text_to_image.py @@ -423,11 +423,24 @@ def main() -> int: sys.stdout.write("未生成任何图像\n") return 1 - for url in image_urls: - if url: - sys.stdout.write(f"{url}") + # 通过客户端接口发送图片 + client_port = os.environ.get("ROBOT_WECHAT_CLIENT_PORT", "").strip() + if not client_port: + sys.stdout.write("环境变量 ROBOT_WECHAT_CLIENT_PORT 未配置\n") + return 1 + + send_url = f"http://127.0.0.1:{client_port}/api/v1/robot/message/send/image/url" + send_body = { + "to_wxid": from_wx_id, + "image_urls": [u for u in image_urls if u], + } + try: + _http_post_json(send_url, send_body, {"Content-Type": "application/json"}, timeout=60) + sys.stdout.write("图片发送成功\n") + except Exception as exc: + sys.stdout.write(f"发送图片失败: {exc}\n") + return 1 - sys.stdout.write("\n") return 0