扣子平台bot变量需严格按三类(用户信息、对话上下文、插件输出)从「插入变量」侧边栏选取,用{{var_name}}格式书写,禁空格、分大小写;空值/列表须用list_join、if判断或each遍历处理;插件参数映射须匹配变量名与类型;调试用【debug】快照验证解析结果。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在扣子(Coze)平台配置 Bot 时,需将用户输入、上下文变量或插件返回值作为提示词中的可变内容注入,实现个性化响应与逻辑分支控制。变量名必须严格匹配平台定义的语法格式,否则提示词将原样输出而无法解析。
识别并声明扣子平台支持的变量类型
打开 Bot 编辑页 → 点击「提示词」标签页 → 在编辑框顶部点击「插入变量」按钮 → 弹出侧边栏显示全部可用变量。
变量分三类:【用户信息】(如 user_id、user_name)、【对话上下文】(如 last_message、chat_history)、【插件/工作流输出】(需先添加插件并勾选“导出为变量”,命名如 weather_result、db_query_list)。
未出现在该侧边栏的字段名,即使写进提示词也不会被替换,例如手动输入 {{user_phone}} 而平台未提供该字段,最终发送给 LLM 的仍是字面量 {{user_phone}}。
在提示词中正确书写变量占位符
所有变量必须用双大括号包裹,且内部**不能有空格**:写成 {{user_name}} ✅,写成 {{ user_name }} ❌。
变量名区分大小写,{{UserName}} 和 {{user_name}} 视为两个不同变量;若平台只提供小写下划线格式,就不可改写为驼峰。
若变量值可能为空或为列表,直接嵌入提示词可能导致语义断裂。例如:你查询了天气插件,导出变量名为 weather_info,但用户未授权定位,该变量值为 null —— 此时提示词中写“今天{{weather_info}},建议出门带伞”会生成“今天,建议出门带伞”,出现明显语病。
对列表类变量做安全展开处理
方法一:使用内置的 list_join 函数(推荐)
在变量名后加 |list_join:“、” ,例如 {{db_query_list|list_join:"、"}},可将 ["北京","上海","深圳"] 渲染为“北京、上海、深圳”。
方法二:配合 if 条件判断避免空渲染
用 {{#if db_query_list}}有结果:{{db_query_list|list_join:","}}{{/if}} 包裹,当变量为空或 null 时不输出任何内容。
方法三:手动遍历(仅限简单场景)
写法:{{#each db_query_list}}{{this}}{{/each}},适用于需要逐项加前缀或后缀的情况,比如生成编号列表:{{#each db_query_list}}● {{this}}{{/each}}。
动态传参到插件调用时的键名映射规则
第一步:在 Bot 的「插件」模块中,点击目标插件右侧「配置」→ 找到「参数映射」区域。
第二步:左侧选择插件要求的参数名(如 city、date_range),右侧点击「+ 添加变量」→ 从弹窗中选择已声明的变量(如 user_location 或 fixed_date)。
第三步:确认映射关系后保存,该插件下次触发时就会把对应变量值作为实际参数传入。
注意:插件参数名是插件开发者定义的固定字符串,不能随意修改;若填入的变量名不存在或类型不匹配(如插件要数字,却传入字符串),插件将调用失败并报错“Parameter validation failed”。
调试变量是否生效的快捷方式
在提示词末尾临时追加一行:【DEBUG】变量快照:user={{user_name}},history_len={{chat_history.length}},weather={{weather_info}}。
发布 Bot 后用测试账号发送消息,查看 Bot 返回的完整响应体——如果看到形如“【DEBUG】变量快照:user=张三,history_len=5,weather=多云”即表示全部解析成功。
若某变量显示为 {{xxx}} 原样,说明该变量未被平台识别,需回到「插入变量」侧边栏核对名称,或检查插件是否已启用并完成导出设置。











