{
	// 指令（意图）名称, 用于动态增删改配置
	"name": "{name || 'demo'}",
	// 标题, 用于查询指令时
	"title": "{title || '指令标题'}",
	// 描述, 用于介绍该指令的作用
	"description": "{description || '暂无描述'}",
	// 示例（训练样本）, 用于提示AI该指令的格式，多个样本用分号隔开
	"example": "{example || '播放一首周杰伦的歌；听音乐，邓紫棋的喜欢你；听歌邓紫棋的《喜欢你》；我想听邓紫棋的《光年之外》'}",
	// 指令分组, 可以将特有的指令分一个组, 方便用户查询
	"group": "{group || 'default'}",
	// 指令分类, 例如: 查询服务类query、执行类execute、管理类admin、控制类control、播放类play、游戏类game
	"type": "{type || 'control'}",
	// 时态, 分before之前、check验证、main主要、render渲染、after之后五个时态
	"tense": "{tense || 'main'}",
	// 文件名, 用于驱动脚本, 实现业务 
	"main": "{main || './index.js'}",
  // 指令状态, 1为启用, 0为禁用
  "state": 1,
	// 执行顺序, 数值越小的指令越优先执行
	"sort": 100,
	// 匹配关键词组, 当聊天中出现其中一个关键词则会执行该指令 
	"match": ["播放", "听", "听歌"],
	// 结束会话 当值为1时，指令触发并返回了内容后不再执行其他指令。为0时，指令触发仍继续执行其他指令
	"end": 1,
	// 不包含关键词, 如果匹配后, 出现不应该包含的关键词, 则不会执行指令 
	"not": [],
	// 移除关键词, 如果聊天中含这些词, 将会被剔除在执行指令
	"remove": [],
	// 提取特定词, 如果聊天中含有特定词, 会被提取出来再执行指令
	"extract": [],
	// 阶段（1-9），可用于补全参数fill、过滤参数filter、校验参数check、更新参数update
	"stage": [
		// 第一阶段
		{
			// 方式 fill为补全，会将本次消息加入到msg.form[name]中
			"mode": "fill",
			/* 参数, 用于执行指令行为前抽取关键词进行验证, 然后再执行指令 */
			"param": [
				{
					// 参数名称, 用于提交数据时
					"name": "music_name",
					// 参数标题, 用于提示用户什么参数错误
					"title": "音乐名称",
					// 是否必填, 1为必填, 0为选填
					"required": 1,
					// 参数描述, 用于提示AI该参数的作用
					"desc": "要播放的音乐名称",
					// 示例, 用于提示该参数的格式，多个示例用分号隔开，别名用竖线隔开
					"example": "画；喜欢你；告白气球；来自天堂的魔鬼；",
					// 抽验顺序, 越小的越优先验证, 并且抽取后排列在前
					"sort": 10,
					// 抽取/校验格式, 如果格式不符合, 则表示验证未通过,提示用户
					"format": "/[a-zA-Z0-9_\u4e00-\u9fa5]+/g",
					// 缺少参数提示, 如果不包含该参数, 则做出的提示
					"not_tip": "音乐名称是？",
					// 错误提示, 提示用户补充参数时, 补充参数错误时做出的提示
					"error_tip": "音乐名称不正确",
					// 校验/抽取的函数名, 通过函数的方式抽取/校验参数
					"func_name": "",
					// 同义词, 用于训练NLP, 多个同义词用分号隔开
					"aliases": "音乐；歌曲"
				},
				{
					// 参数名称, 用于提交数据时
					"name": "author",
					// 参数标题, 用于提示用户什么参数错误
					"title": "音乐作者",
					// 是否必填, 1为必填, 0为选填
					"required": 0,
					// 参数描述, 用于提示AI该参数的作用
					"desc": "写这首歌的人",
					// 示例, 用于提示该参数的格式，多个示例用分号隔开，别名用竖线隔开
					"example": "周杰伦|杰伦；邓紫棋|GEM",
					// 抽验顺序, 越小的越优先验证, 并且抽取后排列在前
					"sort": 10,
					// 抽取/校验格式, 如果格式不符合, 则表示验证未通过,提示用户
					"format": "/[a-zA-Z0-9_\u4e00-\u9fa5]+/g",
					// 缺少参数提示, 如果不包含该参数, 则做出的提示
					"not_tip": "音乐作者是？",
					// 错误提示, 提示用户补充参数时, 补充参数错误时做出的提示
					"error_tip": "音乐作者不正确",
					// 校验/抽取的函数名, 通过函数的方式抽取/校验参数
					"func_name": "",
					// 同义词, 用于训练NLP, 多个同义词用分号隔开
					"aliases": "作者；作词人"
				},
				{
					// 参数名称, 用于提交数据时
					"name": "singer",
					// 参数标题, 用于提示用户什么参数错误
					"title": "歌手",
					// 是否必填, 1为必填, 0为选填
					"required": 1,
					// 参数描述, 用于提示AI该参数的作用
					"desc": "唱歌的人",
					// 示例, 用于提示该参数的格式，多个示例用分号隔开，别名用竖线隔开
					"example": "周杰伦|杰伦；邓紫棋|GEM|G.E.M.",
					// 抽验顺序, 越小的越优先验证, 并且抽取后排列在前
					"sort": 10,
					// 抽取/校验格式, 如果格式不符合, 则表示验证未通过,提示用户
					"format": "/[a-zA-Z0-9_\u4e00-\u9fa5]+/g",
					// 缺少参数提示, 如果不包含该参数, 则做出的提示
					"not_tip": "歌手是？",
					// 错误提示, 提示用户补充参数时, 补充参数错误时做出的提示
					"error_tip": "歌手不正确",
					// 校验/抽取的函数名, 通过函数的方式抽取/校验参数
					"func_name": "",
					// 同义词, 用于训练NLP, 多个同义词用分号隔开
					"aliases": "歌手；唱作者"
				}
			]
		},
		// 第二阶段
		{
			// 方式 update为更新，会将本次消息替换掉msg.form[name]的值
			"mode": "update",
			// 验证参数集
			"param": []
		}
	]
}