主题
技能库 - 自定义技能模板
和 系统技能 并列的一类技能。 系统技能由平台内置(查天气、闲聊、AIoT 指令控制…),自定义技能模板由企业自己创建、只对本企业可见,用来沉淀品牌方专属的对话能力模板——既可以接入企业已有的后台服务(会员系统、售后系统、设备接口…),也可以用提示词 + 平台内置大模型直接完成回复,并可按需关联 MCP 工具调用外部能力。技能库中的自定义技能模板不直接生效,需在「产品管理 → 从模板新建」中引用后,才会在具体产品/智能体中生效。
📌 版本变更说明: 原「自定义技能」已升级为「自定义技能模板」。
- 原有存量的自定义技能已自动迁移为「技能库 → 自定义技能模板」中的模板,继续保留、可复用;
- 已在智能体中配置过的技能仍保留在「智能体 → 技能」列表中,无需重新配置;
- 页面相关按钮与文案统一为「新建技能模版」「自定义技能模版」等。
1. 什么是自定义技能模板
除了平台提供的系统技能,JoyInside 支持您创建专属于自己企业的技能模板,沉淀到技能库中反复复用。
模板与实例的关系(重要):
- 技能库中的是模板:模板是可复用的“配置底稿”,本身不直接对用户生效;
- 在产品中引用才生效:在「产品管理 → 从模板新建」中选择技能模板加入到具体产品/智能体后才会生效;
- 模板与实例互相独立:在产品中对已引用的技能做的修改不会回写、影响整个模板;模板只是新建时的初始来源。
关键特性:
- 企业隔离: 自定义技能模板仅对您的企业账号可见,其他企业既看不到、也用不到;
- 可反复取用: 同一份模板可被任意多个产品/智能体分别新建为独立实例,数量不限;
- 两种技能类型: 根据回复由“平台内置大模型生成(可选调用 MCP 工具)”还是“品牌方注册的外部服务自行处理”,可选择「自定义提示词型」或「第三方服务型」(见 §2)。
2. 核心概念:技能类型
创建自定义技能模板时,首先要选择技能类型——这决定了这个技能如何被执行、需要填写哪些字段。技能类型只影响模板的执行方式,与“模板/实例”的概念无关。
| 技能类型 | 谁来生成回复 | 是否需要后端开发 | 典型场景 |
|---|---|---|---|
| 自定义提示词型(默认) | 平台内置大模型,按您写的提示词生成(可按需调用关联的 MCP 工具) | 否,写提示词即可;如需外部数据可关联 MCP 工具(无需自建后端) | 角色扮演、故事续写、情感安慰、风格化问答,以及需借助 MCP 工具获取实时/外部数据的场景 |
| 第三方服务型 | 外部服务直接回复(平台调用您注册的服务 API,原样返回,不再过大模型;后端可以是 Agent、LLM 或其他实现) | 是,需先在开发者中心注册外部服务的 API | 查会员积分、查保修、下单、设备指令透传等由品牌方外部服务自行处理的场景 |
2.1 两种类型的核心差异
| 维度 | 自定义提示词型 | 第三方服务型 |
|---|---|---|
| 执行方式 | 平台内置大模型推理生成,可按需调用关联的 MCP 工具获取外部数据后再组织回复 | 转发到您注册的外部服务 API,由外部服务(Agent / LLM / 其他后端)直接返回回复(不再过平台大模型二次组织) |
| 意图识别 | 基于「技能准入描述 + 示例」进行意图匹配(两者相同) | 基于「技能准入描述 + 示例」进行意图匹配(两者相同) |
| 触发方式 | 仅支持意图触发 | 支持意图触发和优先触发两种 |
| 专属配置 | 技能提示词、拼接全局人设、系统变量、关联知识库、关联 MCP 工具 | 第三方服务选择 |
| 典型能力 | 情感陪伴、角色扮演、故事讲解、风格化闲聊,以及借 MCP 工具查天气/查数据等由大模型编排的能力 | 会员积分、售后查询、设备下单、指令透传等由外部服务自行执行的能力 |
⚠ 类型创建后不可修改。 技能创建成功后,「技能类型」字段在编辑页面锁定不可变更;若需切换类型,只能删除后重建。这是为了防止执行逻辑与配置数据发生冲突。
2.2 本期约束与边界
| 约束项 | 说明 |
|---|---|
| 不支持混合模式 | 一个技能只能是自定义提示词型或第三方服务型,不支持同时写提示词又挂第三方接口 |
| 提示词型可借工具扩展 | 提示词型基于「意图触发 + 提示词驱动回复」,并可关联 MCP 工具 |
| 提示词长度上限 | 技能提示词最多 7000 字符(与系统技能闲聊的提示词上限对齐) |
3. 自定义提示词型
核心机制: 命中意图后,平台把您编写的「技能提示词」拼装进大模型上下文,由平台内置大模型编排并生成自然语言回复;若关联了 MCP 工具,大模型会按需调用这些工具获取外部数据(如实时天气、外部查询),再把结果组织成回复。无需自建后端 API,外部能力通过 MCP 工具接入。适合角色扮演、情感陪伴、故事续写,以及需要借助工具获取实时/外部数据的技能。
3.1 公共字段(所有自定义技能模板都要填)
| 字段 | 是否必填 | 字数限制 | 说明 |
|---|---|---|---|
| 技能名称 | 是 | ≤ 20 字符,企业内唯一 | 简短清晰地描述技能功能,如“情感安慰”“睡前故事” |
| 技能准入描述 | 是 | ≤ 2000 字符 | 告诉 AI “什么情况下应该触发这个技能”(意图定义 / 标准触发 / 不可触发) |
| 示例 | 是 | ≤ 1000 字符 | 正反例 Few-shot,辅助模型判断意图边界 |
| 技能类型 | 是 | 单选,创建后不可改 | 本节场景固定为「自定义提示词型」 |
技能准入描述与示例的撰写建议,详见 §5「意图识别配置指引」。
3.2 自定义提示词型专属字段
| 字段 | 是否必填 | 说明 | 限制 |
|---|---|---|---|
| 技能提示词 | 是 | 技能命中后,大模型用于生成回复的核心 Prompt。定义该技能“做什么、怎么做” | ≤ 7000 字符 |
| 自动拼接全局人设 | 否 | 勾选后,系统在执行时自动把全局人设 Prompt 拼接到技能提示词头部,保持人设一致性 | 默认勾选 |
| 插入变量 | 否 | 在提示词编辑区点「变量」图标插入两类变量,平台在运行时自动替换:①系统变量——${systemTime}、${location} 等平台内置值;②工具变量——已关联 MCP 工具的返回值占位符,形如 $[MCP服务名/工具名](需先关联 MCP,详见 §3.2.1) | 语法同系统技能编辑能力;工具变量需先关联 MCP 工具 |
| 关联 MCP | 否 | 仅提示词型支持。可关联 0~多个已公开的 MCP 服务,并可在每个服务下按需勾选具体工具(Tool)(支持跨服务组合,如选 MCP1 的 a、b 两个工具 + MCP2 的 c 工具);随后在提示词中围绕所选工具编写调用逻辑,并可插入「工具变量」引用工具返回值(见 §3.2.1) | 仅可选择在「资源管理 → MCP 服务」中标记为**「公开」**的服务及工具 |
| 关联知识库 | 否 | 挂载企业知识库,配置召回数量与匹配阈值,让大模型在回复前先检索知识库 | 语法同系统技能「闲聊」的知识库关联能力 |
3.2.1 关联 MCP 与工具变量(仅提示词型)
自定义提示词型技能支持关联 MCP 工具,让“提示词驱动的技能”也能调用外部工具能力(工具级粒度)。
关联 MCP —— 可选 0~多个服务、按工具自由组合:
- 点击「关联 MCP」下拉框,列表按 MCP 服务分组展示,每个服务下可展开看到它的具体工具(Tool);
- 可关联 0 个到多个公开 MCP 服务;同一服务下可只勾选需要的部分工具,也可跨服务组合——例如同时选择
MCP1的 a、b 两个工具与MCP2的 c 工具; - 勾选服务名可一次选中其下全部工具,也可只勾选单个工具;已选工具以标签形式展示(如
MCP服务名/工具名),点标签✕可移除; - 当前仅支持云端 MCP 服务返回的内容;
- 只有在「资源管理 → MCP 服务」中标记为「公开」的服务及工具,才会出现在此处可供选择。
💡 若资源管理中没有创建 MCP 服务,或已创建但未标记「公开」,「关联 MCP」下拉框会显示「暂无数据」;此时无工具可关联,也不会出现「工具变量」。请先到「资源管理 → MCP 服务」创建并公开对应服务。
根据所选工具编写提示词 + 插入工具变量:
- 完成工具关联后,可在技能提示词中围绕这些工具说明其调用时机与调用方式;
- 在提示词编辑区点击「变量」图标,可切换「系统变量」与「工具变量」两个页签:
- 系统变量:长期记忆
${memoBaseContent}、系统时间${systemTime}、设备地点${location}等,由平台在运行时替换; - 工具变量:仅列出已在「关联 MCP」中勾选的工具对应的返回值占位符,如
$[MCP服务名/工具名],勾选后插入提示词,一次插入一个;
- 系统变量:长期记忆
- 工具变量范围取决于「关联 MCP」的选择结果,二者保持同步:勾选哪些工具,「工具变量」页签即列出哪些工具;未勾选任何工具时该页签内容为空;
- 「工具变量」页签顶部提供「搜索服务或工具名」输入框,方便快速检索。
📌 关联 MCP 是提示词型专属能力;第三方服务型不涉及关联 MCP(其外部能力由所注册的外部服务自行实现)。MCP 服务的创建与「公开」设置详见「资源管理 · MCP 服务」。
3.3 技能提示词撰写建议
一段好的技能提示词通常包含 4 部分:
- 明确角色:你是一位 XXX(如“专业营养师”“温柔的故事讲述者”)
- 定义任务:当用户 XXX 时,你需要 XXX
- 约束输出:回复控制在 XXX 字以内,语气保持 XXX
- 补充规则:不可以 XXX、必须 XXX
示例:「儿童睡前故事」技能提示词
你是一位儿童睡前故事讲述者。当用户说“讲个故事”或提到一个主题时,请根据主题即兴创作一个 3-5 句话的短故事,语气温柔、节奏舒缓,适合 3-6 岁儿童。故事结尾需引导孩子入睡,如“月亮也困了,我们一起闭上眼睛吧”。当前时间是 ${systemTime},可根据早晚气氛调整用词。3.4 触发方式限定 —— 仅意图触发
自定义提示词型只能选择「意图触发」,不支持「优先触发」。
原因: 提示词型的定位是“AI 理解用户意图后再进入”,没有精准的指令词直连关系;优先触发则要求“用户所有输入 100% 先给该技能”,两者不匹配。
流程:
用户说话
↓
AI 意图识别(基于准入描述 + 示例)
↓
命中提示词型技能
↓
拼装:[全局人设(可选)] + [技能提示词] + [知识库检索结果(可选)] + [系统变量替换]
↓
(可选)调用关联的 MCP 工具,回填工具变量
↓
平台内置大模型直接生成自然语言回复
↓
TTS 输出给用户3.5 与「全局人设」「事件反馈」的关系
| 场景 | 变量注入方 | 语法 | 说明 |
|---|---|---|---|
| 自定义提示词技能 | 平台内置自动注入 | ${systemTime}、${location} | 系统内置变量,运行时平台自动替换 |
| 关联 MCP 工具(仅提示词型) | 平台运行时回填 | $[MCP服务名/工具名] | 关联 MCP 工具后可插入的「工具变量」,运行时用工具返回值替换(见 §3.2.1) |
| 事件反馈 | 端侧通过 CLIENT_UPDATE_CHAT_CONTEXT 上报 | ${(extInfo.字段名)!""} | 由端侧上报后再注入 Prompt |
| A2A 调用透传 | 集成侧调用时传入 | 详见开放接口 ext_info 字段 | A2A 接口调用生效 |
📌 注意区分:自定义提示词技能里的
${systemTime}/${location}是系统内置变量,无需端侧上报;而事件反馈里的${(extInfo.xxx)!""}是端侧上报的业务字段,两者机制不同,不要混用。
4. 第三方服务型
核心机制: 命中意图后,平台把请求转发到您在开发者中心注册的外部服务 API(即「第三方服务」),由该外部服务自行处理并直接返回自然语言回复,平台不再过大模型做二次组织,拿到什么回什么(仅做必要的通道透传与格式适配)。该外部服务背后的实现由品牌方自行决定——可以是一个 Agent、一个封装了 LLM 的服务,或任意能按 A2A 协议返回回复的后端;对平台而言只要遵守 A2A 协议即可。适合需要由品牌方自有服务自行执行并组织话术的技能(如查会员积分、查保修、下单、设备指令透传)。
4.1 公共字段
同 §3.1(所有自定义技能都要填的字段一致)。
4.2 第三方服务型专属字段
| 字段 | 是否必填 | 说明 |
|---|---|---|
| 第三方服务选择 | 是 | 从「开发者中心 · 第三方服务管理」已注册且启用的 API 列表中选择 |
术语澄清:「第三方服务」在平台语境里是品牌方注册的外部服务 API,双方按 A2A(Agent-to-Agent)协议通信(协议名沿用 A2A,但后端不限于 Agent,也可以是封装 LLM 的服务或其他后端)。技能命中后,平台把用户输入 + 会话上下文 + 长短期记忆 + RAG 结果打包透传给该服务,外部服务以流式响应直接返回可播报的自然语言回复,平台原样透传给端侧,不再调用大模型做二次改写、总结或润色。协议细节见 A2A 流式响应协议。
平台侧 ↔ 外部服务侧职责边界:
| 谁负责 | 具体职责 |
|---|---|
| 平台侧 | 通道透传、鉴权、超时、限流、格式适配;把 input/messages/session_id/long_term_memory/rag_recall_result/ext_info 等打包 POST 给外部服务 |
| 外部服务侧 | ① 自己组织好话术(长度、语气、TTS 友好度);② 按 A2A 协议流式返回 4 类事件(Message → Instruction 可选 → Done;失败发 Error);③ 自己处理失败降级(只有外部服务明确返回失败时,平台才会回落到其他技能) |
外部服务侧必须遵守的 A2A 协议核心约束(简介):
- 必须流式:HTTP 流式响应,不能一次性返回整块 JSON;
- 事件顺序:
Message(输出内容) →Instruction(可选,自定义结构,直接透传终端) →Done(结束标志,data: {}); - 失败处理:异常时发
Error事件(含error_code/error_message); - Done 必须发:平台以
Done事件作为整轮结束标志,漏发会导致端侧超时。
完整字段定义、请求示例、Message/Instruction/Error/Done 结构见 §7.1 A2A 技能协议。
4.3 触发方式(意图触发 / 优先触发,二选一)
第三方服务型支持两种触发方式,决定“AI 什么时候把用户的话交给这个技能”:
| 触发方式 | 说明 | 适用场景 |
|---|---|---|
| 意图触发 | AI 先理解用户意图,判断“用户想做什么”,再决定是否进入该技能 | 大多数场景。例如「查积分」「查保修」等需要 AI 理解语义的技能 |
| 优先触发 | 用户的每一句话 100% 先分给该技能处理,不经过 AI 意图判断;只有当该技能返回失败时,才会继续走其他技能的正常流程 | 品牌方已有成熟服务系统,希望优先使用自家服务响应,自己搞不定时再交给平台其他技能兜底 |
简单理解:
- 意图触发 = AI 先“想一想”用户在说什么,再决定交给谁处理
- 优先触发 = 所有用户输入 100% 先给该技能,处理不了再兜底给其他技能
4.3.1 优先触发的典型场景
某品牌已经有一套完善的智能客服系统,能处理大部分用户问题。选择「优先触发」后:
用户说话
↓
优先调用品牌自有客服接口
↓
┌─ 品牌接口成功响应 → 直接返回结果给用户
└─ 品牌接口无法处理(返回失败)
↓
自动流转到平台其他技能(闲聊、查天气…)兜底这样既能发挥品牌方已有服务的优势,又能借助平台能力做兜底,不会让用户“问了没人答”。
⚠ 优先触发意味着所有用户输入 100% 都会先经过该技能,不做 AI 意图判断。请确保您关联的第三方服务能在处理不了时正确返回失败状态,以便系统将请求顺利流转到其他技能。
4.3.2 意图触发 vs 优先触发的字段差异
| 配置项 | 意图触发 | 优先触发 |
|---|---|---|
| 技能名称 | 必填 | 必填 |
| 技能准入描述 | 必填 | 不必填(优先触发跳过意图判断) |
| 示例 | 必填 | 不必填 |
| 第三方服务选择 | 必填 | 必填 |
4.4 关联第三方服务
第三方服务需要提前在开发者中心 → 第三方服务中创建。创建后的第三方服务会出现在技能配置的「第三方服务选择」下拉列表中,供技能关联使用。
第三方服务的详细创建方法,请参见「开发者中心 · 第三方服务管理」说明。
5. 意图识别配置指引(两种类型通用)
「技能准入描述」和「示例」是意图识别的核心输入,不管选哪种技能类型,都建议按下述方法撰写。
5.1 技能准入描述撰写建议
一个好的准入描述应该包含三部分:
- 意图定义: 这个技能是做什么的
- 标准触发条件: 什么样的用户表述应该触发
- 不可触发条件: 什么情况不应该触发(避免误判)
示例:为「查会员积分」技能撰写准入描述
当用户明确表达查询自己的会员积分、余额、等级时,应进入该技能。
标准触发条件:
- 用户询问积分余额:如“我还有多少积分”“查一下我的积分”
- 用户询问会员等级:如“我现在是什么级别”“我的会员等级”
- 用户询问积分用途:如“积分能换什么”“积分怎么用”
不可触发条件:
- 用户只是在闲聊中提到了“积分”,但并非查询自己的信息,
如“积分制度是什么”“你们的积分好不好用”
- 用户要求增加或修改积分,如“给我加点积分”“我要兑换积分”5.2 示例撰写建议
提供正例(应该触发)和反例(不应该触发),帮助 AI 理解典型边界:
正例:
- “我有多少积分”
- “查一下余额”
- “我的会员等级是多少”
反例:
- “积分制度怎么回事” → 应走知识问答
- “帮我把积分用掉” → 应走闲聊或其他技能📌 经验值: 准入描述越精准、反例越充分,AI 判断意图的准确率越高,误触发越少。
6. 完整使用流程
6.1 自定义提示词型(平台大模型生成,可选关联 MCP 工具)
1. 新建技能模板(资源管理 → 技能库 → + 新建技能模版)
↓
2. 选择「自定义提示词型」→ 填写名称/准入描述/示例
↓
3. 撰写技能提示词(必填,最多 7000 字符)
↓
4. (可选)勾选拼接全局人设 / 插入变量(系统变量、工具变量) / 关联知识库 / 关联 MCP 工具
↓
5. 在产品中引用模板(产品管理 → 从模板新建 → 选择该技能模板)
↓
6. 用户对话时,AI 识别意图后自动进入,平台大模型按提示词生成回复6.2 第三方服务型(需接入后端 API)
1. 创建第三方服务(开发者中心 → 第三方服务 → 新建)
↓
2. 新建技能模板(资源管理 → 技能库 → + 新建技能模版)
↓
3. 选择「第三方服务型」→ 选择触发方式 → 关联第三方服务
↓
4. 意图触发需填写准入描述与示例;优先触发无需填写
↓
5. 在产品中引用模板(产品管理 → 从模板新建 → 选择该技能模板)
↓
6. 用户对话时,AI 识别意图后触发,调用您的接口获取数据并组织回复📌 模板在技能库中创建后不会直接生效,必须经「产品管理 → 从模板新建」引用到具体产品/智能体;引用后在产品内的修改不会影响原模板。
7. 使用场景举例
| 场景 | 技能名称 | 技能类型 | 触发方式 | 说明 |
|---|---|---|---|---|
| 陪伴玩具情感陪伴 | 情感安慰 | 自定义提示词型 | 意图触发 | 用户表达负面情绪时,平台大模型按“温柔共情”提示词生成回复,无需后端 |
| 睡前故事讲解 | 睡前故事 | 自定义提示词型 | 意图触发 | 用户说“讲个故事”,大模型按提示词即兴创作 3-5 句短故事 |
| 品牌角色扮演 | 皮卡丘互动 | 自定义提示词型 | 意图触发 | 大模型扮演特定 IP 角色,风格化回复,无需接口 |
| 提示词型 + 调用工具 | 实时天气播报 | 自定义提示词型 | 意图触发 | 关联 MCP 天气服务的查询工具,提示词中用工具变量回填实时天气后由大模型组织成温柔话术 |
| 用户查询会员信息 | 查会员积分 | 第三方服务型 | 意图触发 | 识别到用户询问积分/等级后,调用品牌方会员系统 API 返回结果 |
| 用户查询设备保修 | 查保修 | 第三方服务型 | 意图触发 | 用户问“我的设备还在保修期吗”时触发,调用售后系统查询 |
| 硬件设备指令透传 | 设备指令透传 | 第三方服务型 | 优先触发 | 特定格式指令直接透传到您的外部服务,由该服务按 A2A 协议流式返回;Instruction 事件的 data 结构自定义,直接透传到终端,不经平台大模型改写、也不走系统指令集建模 |
8. 注意事项
- 技能库中是模板,需引用才生效: 技能模板本身不直接对用户生效,必须在「产品管理 → 从模板新建」中引用到具体产品/智能体
- 产品内修改不影响模板: 在产品中对已引用技能的修改不会回写、影响原模板,两者互相独立
- 存量已自动迁移: 原有自定义技能已自动迁移为「自定义技能模版」,已配置的技能仍保留在「智能体 → 技能」列表中,无需重新配置
- 技能类型创建后不可修改: 需切换类型只能删除后重建
- 提示词型必须写提示词: 提示词是提示词型模板的执行核心,不填等于“空壳模板”
- 提示词型走平台默认模型: 生成质量与平台内置模型能力相关,复杂业务逻辑请选第三方服务型
- 知识库为选填增强: 提示词型可以不挂知识库,仅凭提示词也能工作;挂知识库后大模型会先检索再生成
- 关联 MCP 仅提示词型可用: 只有自定义提示词型可关联 MCP 工具,且仅能选择 MCP 服务中已标记为「公开」的服务及工具;可 0~多个、跨服务按工具组合,关联后需在提示词中用工具变量
$[服务名/工具名]回填返回值 - 准入描述越精准越好: 描述越清晰、边界越明确,AI 判断意图的准确率越高
- 善用反例: 在示例中加入“不应该触发”的反例,能有效减少误触发
- 仅企业内可见: 自定义技能模板只有您的企业账号下可见和使用,不会影响其他企业
9. 与系统技能的关系
| 维度 | 系统技能 | 自定义技能模板(本篇) |
|---|---|---|
| 谁提供 | 平台内置 | 企业自己创建 |
| 可见范围 | 全平台可见 | 仅本企业可见 |
| 是否需要接后端 | 否(部分需硬件适配) | 提示词型:否;服务型:是 |
| 触发方式 | 平台调度(意图 + 兜底) | 提示词型:仅意图触发;服务型:意图 / 优先二选一 |
| 是否需引用才生效 | 需在产品中引用启用 | 需在「从模板新建」中引用 |
| 典型场景 | 查天气、闲聊、AIoT 指令、视觉问答… | 提示词型:情感安慰、故事讲解、角色扮演;服务型:查积分、查保修、设备透传… |
共存关系: 一个产品/智能体可以同时引用系统技能和自定义技能模板;当自定义技能选择「优先触发」时(仅三方服务型可选),它会排在所有系统技能之前;其他情况下与系统技能一起参与 AI 意图路由。