ecom-details-image-plugin

September 1, 2026 · View on GitHub

Claude Skill「ecom-details-image」(电商图片方法论)改造成的 DeepSeek Harness(dsh)插件:让模型在 dsh 里就能写出合规的电商图片 Prompt 并真实出图(产品主图 / 详情页 / 社媒图 / 直播场景 / 广告等),结果以画廊卡片展示在网页界面。

一句话实战

用户:「生成一张白色马克杯的电商主图」
  → 模型加载 ecom-details-image 技能(铁律/模板/风格锁)
  → 写出合规 Prompt → 调用 ecom_generate_image 工具
  → 插件经代理提交 apimart.ai 异步任务 → 轮询取图
  → 浏览器画廊卡片「🖼️ 电商图片已生成」渲染

安装好插件,打开 http://127.0.0.1:3080,说「生成 xx 的电商主图 / 详情页 / 社媒图」即可

配置(环境变量或插件 Config):

  • IMG_API_KEY:图片 API 密钥(apimart.ai / OpenAI 兼容)
  • IMG_PROXY_URL:可选 HTTP 代理(apimart 在受限网络需经代理,如 http://127.0.0.1:1080

项目结构

src/
├── index.ts        # apply 入口:注册工具 + 技能 + 系统提示(含环境变量 fallback)
├── fragment.ts     # 共享契约纯函数(尺寸/分辨率归一化 + EcomImageMeta + 校验)
├── client.ts       # apimart 异步客户端:提交 + 轮询 + 可选 undici ProxyAgent + 重试
├── tool.ts         # ecom_generate_image 工具(output/meta 分离,presentationMeta 投影)
├── skill.ts        # ecom-details-image 技能正文(浓缩方法论,按需加载)
└── client/index.tsx# 浏览器端画廊卡片 Toolview(骨架屏 + 画廊)
assets/templates/   # 原项目 25 个场景模板 JSON(保留)
scripts/            # build.ps1 / link_deps.py / sync_profile.py / 验证脚本

实战要点(改造中踩过的坑)

解法
apimart 直连超时(受限网络)插件内用 undici ProxyAgent,经本地代理出网
undici v7 ProxyAgent 传字符串无效必须传对象 { uri: '...' }
运行时改 process.env 对已初始化 fetch 不生效代理/密钥在进程启动时注入(环境变量或 Config)
工具 output schema additionalProperties:false 漏字段 → 每次调用被拒execute() 返回值必须与 schema 声明字段完全一致
file: 安装是复制,不感知改码改后 sync_profile.py + 重启 dsh 才生效
代理链路偶发 TLS 重置轮询 getJson 加有限重试
参考图是本地文件、无公网 URLapimart 支持 base64 data URI;工具参数 image_url 走公网 URL 通道

验证

  • 独立链路:node scripts/verify_apimart.mjs(文生图 + 图生图,需在无沙箱终端配代理)
  • 冒烟:dsh --profile headless "生成一张白色马克杯电商主图"
  • 界面验收:dsh web 发消息,看画廊卡片(截图可见白色马克杯 / 参考图连体裤白底化)

依赖

  • @deepseek-ai/*(宿主依赖,构建时 junction 链接,不发布)
  • undici(代理客户端,bundle 进 node 端)

特别致谢:

https://linux.do 社区支持