
素材来源SAP Community 官方博客《SAP Generative AI Hub: Extending Joule with Custom Skills and AI Agents》Part 6/6原文链接https://community.sap.com/t5/artificial-intelligence-blogs-posts/sap-generative-ai-hub-extending-joule-with-custom-skills-amp-ai-agents-part/ba-p/14354559这是 SAP 官方「Generative AI Hub 扩展 Joule」系列的收官篇也是坑最密的一篇。前面五篇把 CAP 服务、HANA Vector、AI Core 都搭好了这一篇要把它们接进 Joule Studio——而 SAP 社区里 90% 的Joule Studio 连不上后端类问题根因都出在这一步。原文难得地把失败场景的排查方法也写进去了本文按 STEP 1-4 完整拆解并把原文标注的高频故障点单独拎出来。零、先理解整体链路CAP 服务部署在 CF暴露 OData action ↓ BTP Destination必须带 3 个额外属性 SAP Build / Joule Studio 能看到它 ↓ Action Project把 OData action 声明为 Joule 可调用的动作 ↓ Release Publish to Library Joule Skill Builder / Agent Builder 里可选 ↓ Joule Skill意图触发→ 调用 Action → 返回结构化结果每一个箭头都是一个可能断掉的地方下面逐个说。STEP 1Booster 与 Joule Studio 激活1.1 跑 “Setting Up Joule” Booster路径BTP Global Account → Boosters → 搜索 Setting Up Joule → 选择 Joule (das-application) plan → 选择你的 subaccount → Capability Packages 下拉选 SAP Build Process Automation → 确认 Formation Name 与 Build Process Automation 系统实例 → 执行 Booster确认出现成功提示原文给了一句分量很重的警告Without the Booster completing successfully, Joule Studio deployments will fail with Tenant Administration errors.1.2 Booster 失败怎么处理原文重点If the Joule Booster fails partway through, do not retry immediately. Check BTP → System Landscape → Formations to see if a partial Joule formation was created. Delete it before re-running the Booster — orphaned formations are the most common cause of repeated Booster failures.这段务必记住Booster 中途失败时不要立刻点重试。先去BTP → System Landscape → Formations看有没有产生半截的 formation有的话先删掉再重跑。孤儿 formation 是 Booster 反复失败的头号原因。这个坑很隐蔽因为重试时你看到的错误信息跟第一次一模一样很容易误判为网络问题再试一次结果越试越糟。1.3 激活 Joule Studio Capability PackageSAP Build Lobby → Settings → Joule Studio → Activate the Joule Studio capability package验证标准原文确认Skill Builder和Agent Builder两个 tile 出现在 SAP Build Lobby 里。没出现就是没激活成功。STEP 2BTP Destination 配置最容易漏的一步2.1 创建 DestinationBTP Cockpit → 你的 Joule subaccount → Connectivity → Destinations → New Destination配置项值原文示例NameAI_SAP_KNOWLEDGE_SERVICETypeHTTPURLhttps://ai-sap-service-srv.cfapps.region.hana.ondemand.comAuthenticationOAuth2ClientCredentialsClient ID / Client Secret你的 CAP 服务凭据Token Service URLhttps://tenant.authentication.region.hana.ondemand.com/oauth/token2.2 三个必填的 Additional Properties原文强调sap.processautomation.enabled true HTML5.DynamicDestination true WebIDEEnabled true原文对第一个属性的说明值得全文引用Thesap.processautomation.enabled trueproperty is the most commonly missed configuration step. Destinations without this property do not appear in the Joule Studio destination browser, and there is no error message — the destination is simply absent from the list.这是整篇最值钱的一句话。漏了这个属性Destination 在 Joule Studio 里静默消失——不报错、不告警、日志里也查不到你只会看到列表里没有它。排查建议原文遇到连通性问题时先确认这个属性在不在再去查别的。2.3 在 SAP Build Control Tower 注册SAP Build Lobby → Control Tower → Destinations → Open in BTP Cockpit确认 destination 在列表里 → Control Tower → Environments → 创建/选择部署环境 → 添加 destination AI_SAP_KNOWLEDGE_SERVICE → Check Connection必须看到绿色对勾才继续STEP 3Action Project —— 把 CAP 端点暴露给 JouleActions are the bridge between destinations and Joule Skills.3.1 创建 Action ProjectSAP Build Lobby → Connectors → Actions → Create → Choose an API Source → 选 SAP Cloud Application Programming Model → Browse OData Destinations → 选 AI_SAP_KNOWLEDGE_SERVICE → 命名如 AI Knowledge Service Actions 描述 → Create3.2 配置两个 Action原文示例①searchMasterData项目内容端点POST searchMasterDataInputquery(String)、maxResults(Integer)OutputmaterialNumber、description、similarity、aiSummary②askKnowledgeBase项目内容端点POST askKnowledgeBaseInputquestion(String)、category(String, 可选)Outputanswer、sources数组、modelUsed两个动作都要走Test 页签验证→ Save → Release →Publish to Library。3.3 又一个高频坑原文Both actions must be Published to Library before they are visible in the Joule Skill Builder. Released but unpublished actions do not appear in the Browse All Actions dialog. If your actions are missing from the skill builder, check their publication status inConnectors → Actions.Release ≠ Publish。只 Release 没 PublishAction 在 Skill Builder 的 “Browse All Actions” 里照样看不见。Action 找不到时第一件事是去Connectors → Actions查发布状态。STEP 4构建 Joule SkillJoule Skills are structured, deterministic capabilities — when Joule identifies a user intent that matches a skill’s description, it triggers that skill and calls the configured action.4.1 Skill 与 Agent 怎么选原文的定位Skills are ideal for focused, single-purpose tasks where the response structure is predictable.维度SkillAgent触发方式意图匹配确定性自主规划多轮推理适用场景单一目的、返回结构可预期复杂、需要多步拆解可控性高相对较低成本低高选型原则能用 Skill 解决的别上 Agent。查主数据、查知识库这类输入明确 → 调一次接口 → 返回结构化结果的需求Skill 完全够用而且行为可预期、成本低、好测试。4.2 Description 是最重要的字段原文强调The skill description is the most important field in the entire skill definition. Joule uses it to decide when to trigger this skill versus other skills or agents. A vague description produces inconsistent triggering. A precise description produces reliable triggering.没有之一原文写的是 “the most important field in the entire skill definition”。写 Description 的实操建议写清楚触发条件用户会怎么问写清楚不触发的情况减少误匹配带上领域词帮助 Joule 跟其他 Skill 区分必要时加显式激活短语如/CustomAgent做兜底。五、整条链路的故障排查清单按原文整理按从后往前排能省下大量时间现象首先查什么Action 在 Skill Builder 里找不到Connectors → Actions里的Publish状态Destination 在 Joule Studio 里不显示sap.processautomation.enabled true是否设置Joule Studio 部署报 Tenant Administration 错误Booster 是否成功完成Booster 反复失败System Landscape → Formations里的孤儿 formationSkill Builder / Agent Builder tile 不出现Joule Studio capability package 是否激活Check Connection 失败OAuth2ClientCredentials 的 Token Service URL 与凭据六、落地补充我的三点建议把 Destination 的三个属性做成模板。这类不报错但静默失效的配置靠人肉记忆一定会漏。建议在团队里固化一份 destination JSON 模板新建时直接改。Action 的 Output 字段要克制。原文示例的 output 字段都是精选过的similarity、aiSummary 这类。如果把整个业务对象的几十个字段全暴露出来Skill 的回复质量会下降token 成本也会上升。只暴露 Joule 需要的字段。给每个 Action 建回归用例。Action Project 的 Test 页签不只是配置时能用——后端 CAP 服务升级后应该回来跑一遍回归确认输入输出契约没被打破。这类契约断裂在集成场景里是最常见的生产事故。七、一句话总结这一篇提供的是Joule Studio 与外部后端集成的官方标准路径也是故障率最高的一段Booster环境→ Destination连接注意 3 个属性→ Action Project契约→ Skill意图三个必须刻在脑子里的点Booster 失败先删孤儿 formation再重试sap.processautomation.enabled true漏了会静默失效Action 必须Publish to Library只 Release 不够。参考链接原文Part 6/6https://community.sap.com/t5/artificial-intelligence-blogs-posts/sap-generative-ai-hub-extending-joule-with-custom-skills-amp-ai-agents-part/ba-p/14354559SAP Build Lobbyhttps://community.sap.com/SAP AI Core 文档https://help.sap.com/docs/sap-ai-core