SuperAPI AI 工具集

ffcpe-custom-node-sdk

编程与开发

查看项目

更新于 10-15 17:59

技能介绍

本技能用于协助使用 @adobe/ffcpe-custom-node-core 与 @adobe/ffcpe-custom-node-app-builder 这两个 NPM 包的开发者,构建在 Adobe App Builder 上运行的 FFCPE(Firefly Creative Production for Enterprise)自定义操作。适用人群是正在交付 App Builder 应用、由 Workflow Builder 以自定义动作方式(异步提交加状态轮询)调用的团队。

用途与定位 该技能关注自定义动作的消费方(consumer)场景。若需要为 SDK 源码仓库做贡献(monorepo、Turbo、发布流程),应参考 README.md 的“Monorepo (contributors)”部分与 SDK 源码旁的 CONTRIBUTING.md。若要脚手架生成 web/worker 文件、webpack 与 ext.config.yaml,应使用 ffcpe-app-builder-actions。若要编写 catalog-entry.json 并使用 aio ffcpe catalog(validate、register、list、update),需从 adobe/aio-cli-plugin-ffcpe 安装 ffcpe-catalog-entry-json 与 aio-ffcpe-cli 技能。

端到端流程要点 从零开始(仅新项目)需引导 Console 项目:通过 aio console 创建 project 与 workspace,运行 aio app init --standalone-app,下载 workspace 配置,用 aio app use <config>.json --overwrite --no-input 接入。清理 web-src/、脚手架生成的通用 action,以及在 app.config.yaml 中的 web: web-src。将 webpack-config.js 替换为 esbuild-loader + commonjs2 形态。Console 项目名称只能包含字母数字、不超过 20 字符(不能有连字符),且可能与 YAML 中的 OpenWhisk 包名不同。

安装 SDK 包 使用 npm:npm install @adobe/ffcpe-custom-node-core @adobe/ffcpe-custom-node-app-builder;或使用 pnpm(需在应用 .npmrc 中设置 auto-install-peers=true,然后 pnpm add 同名包)。若希望显式安装所有 peer 依赖或工具不自动安装 peer(如 Yarn Classic),可安装 hono、hono-openwhisk-adapter 等。典型 peers 包括 @adobe/aio-lib-core-logging、@adobe/aio-lib-state、@adobe/aio-lib-ims、openwhisk、hono、hono-openwhisk-adapter(版本以模板与 Adobe 文档为准)。

链接本地 SDK 检出 当需要让消费方应用从本地的 SDK monorepo 克隆加载上述包而非 registry 时使用。先在 SDK monorepo 中安装并构建两个包的 dist/(pnpm install && pnpm run build,或 npm 等价命令;可用 pnpm run dev / npm run dev 实现构建监听)。在消费方 App Builder 项目里先 link core,再 link app-builder(pnpm link /path/to/.../packages/core,再 link app-builder;npm 用 npm link)。恢复 registry 包可用 unlink + install。也可选全局 link(pnpm link --global)。若 workspace:* 对 app-builder 解析失败,可继续用目录链接或添加 pnpm.overrides 将 core 指向 packages/core 路径。完整文字见 SDK README.md 的“Use a local SDK checkout”。

安装技能 技能位于 SDK 仓库的 skills/ 目录,通过 open agent skills CLI 安装。可从 GitHub 或本地检出安装:使用 npx skills add adobe/ffcpe-custom-node-sdk --list 列出,--all -y 安装全部,--skill ffcpe-custom-node-sdk -y 仅安装本技能,或用 -a claude-code -a cursor 指定 agent,-g 安装到全局。CLI 插件技能来自另一仓库:npx skills add adobe/aio-cli-plugin-ffcpe --all -y。各 SKILL.md frontmatter 中按名称引用技能:ffcpe-custom-node-sdk、ffcpe-app-builder-actions、aio-ffcpe-cli、ffcpe-catalog-entry-json。

Catalog CLI 操作 安装 Adobe I/O CLI 插件:npm install -g @adobe/aio-cli,然后 aio plugins:install @adobe/aio-cli-plugin-ffcpe,再 aio login、aio console org select。可用命令包括:validate(本地 JSON 校验,无 API 调用)、register(注册新自定义动作)、inspect(获取单个条目)、list(列出,可加 --include-core 含 Adobe 内置)、update(完整 PUT 替换)、disable/enable/delete(生命周期)。register/update 可用 --strict 在告警时失败,可用 AIO_FFCPE_CATALOG_BASE_URL 或 --base-url 覆盖 API 主机。推荐使用 aio ffcpe catalog 而非手写 HTTP,因为它与 aio login 使用同一 IMS 会话。需将 catalog JSON 中的 customActionConfig.submitEndpoint/statusEndpoint 与已部署的 web 动作 URL 及 mountFfcpeNodeRoutes 的路由路径对齐;catalog inputs/outputs 中的端口名必须与 worker 通过 getTextInput、getImageInput 等读取的名称匹配。

两种 OpenWhisk 动作(推荐形态) Web 动作:FFCPE 的 HTTP 入口,POST /submit、GET /status;构建 Hono 应用,调用 mountFfcpeNodeRoutes,用 hono-openwhisk-adapter 的 ToOpenWhiskAction 导出 main。Worker 动作:长任务,通过 createFfcpeNodeWorker(handler, options) 导出 main。使用 ext.config.yaml(或等价物)使 web 动作采用 web: "raw" 与 annotations.require-adobe-auth: false。worker/web 的包名与动作名需与 mountFfcpeNodeRoutes 接收的一致。

Web 路由挂载 传入 worker: { package, name }(submit 后异步 OpenWhisk 调用的目标)。传入 web: { package, name }(必填,用于构建返回给 Workflow Builder 的 statusUrl;缺失或空字符串会在挂载时报错)。routes 可选,默认 /submit 与 /status,需与 catalog 的 submitEndpoint/statusEndpoint 路径对齐。authenticate 可选,默认通过 createImsInboundAuth 使用 IMS bearer + x-api-key;传 null 可禁用这些路由的认证(仅在产品/安全允许时)。jobStore、loggerName、jobMetadata(submit) 为高级选项,默认 store 基于 aio-lib-state。

Worker 处理器 实现 FfcpeNodeWorkerHandler:async ({ jobId, inputs, params, logger, authContext, args }),其中 inputs 为校验后的 FFCPE input[],params 为 run-workflow 的工作流参数,args 为完整 worker 调用对象。返回 { status: "completed", outputs?: ActionOutput[] } 或 { status: "failed", error: string }。可用 options.requiredInputNames 在 submit 负载缺少指定输入时快速失败。仅在需要将失败有意映射为 SDK 的 failed-job 行为时抛出 FfcpeJobFailedError(适配器已会映射 handler 的失败结果)。推荐使用 @adobe/ffcpe-custom-node-core 的 findInputByName、getTextInput 等,并用 TextInput、ImageInput、VideoInput、JsonInput 收窄类型;用 createTextOutput、createImageOutput、createVideoOutput、createJsonOutput 等构建输出。

HTTP 契约 Workflow Builder 向 submitEndpoint POST { inputs, parameters },并轮询 status 直到 completed 或 failed。submit 响应应包含 jobId、status,最好还有 statusUrl 供轮询。头部规则、响应字段与轮询语义详见 SDK 文档包或源码树中的 docs/custom-action-requests.md。

安全与健壮性 将 inputs 与 parameters 视为不可信;在获取或处理素材前校验类型、大小与 URL。不要记录 token、API key 或原始 Authorization 头,保持 Logger 输出精简。尽量使用 HTTPS 素材 URL;若在 SDK 之外实现自定义 fetch,对可疑 scheme 或重定向应失败关闭。除非有明确且经审查的理由,否则保持 submit/status 的认证开启。

高级与逃生舱 仅用 core 的 HTTP:在不使用 Hono 时使用 handleFfcpeSubmit、handleFfcpeStatus 或 runWorkerJob(仍需 JobStore、JobOrchestrator、InboundAuth、status URL builder)。自定义编排或存储:实现 core 端口(JobStore、JobOrchestrator),参照上游 README“Implementing for a different Cloud Functions Provider”的思路。导入速查表、pnpm link 与故障排查(status URL、web manifest)见 references/quick-reference.md。

限制与未知 关于该技能的具体收费、价格、平台支持范围与效果指标,资料中暂未提供。