1.1 Coze是什么:平台定位、核心能力与典型应用场景
我第一次打开Coze的时候,心里想的其实很简单——它是不是又一个套壳的聊天机器人工具?用了大概两个下午,我改观了。Coze是字节跳动推出的一站式AI应用开发平台,你不需要写多少代码,就能把一个自己的想法变成能对话、能查资料、能调接口的智能体。它把大模型能力、知识检索、插件调用、流程编排这些东西打包成了可视化的积木。你拖拖拽拽,填几个字段,一个Bot就跑起来了。
我身边做电商的朋友用它做客服机器人,把商品手册和退换货政策丢进知识库,客户问什么它答什么。做自媒体的朋友拿它当选题助手,接上搜索插件,每天自动抓热点整理成简报。我自己最常用的场景是内容初稿生成加数据整理,让Bot帮我从一堆杂乱的信息里捞出结构化要点。这些场景的共同点是:有明确的输入,有相对固定的处理逻辑,输出能被人直接使用。
平台的核心能力可以拆成四块。对话能力靠的是大模型加提示词工程,你给Bot设定人设和指令,它就能按你的语气说话。知识能力靠知识库,把文档、网页、表格传上去,Bot回答时能引用这些私有资料。执行能力靠插件和工作流,插件负责调外部API,工作流负责把多个步骤串起来。发布能力靠多渠道集成,做好的Bot能扔到飞书、微信、网页或者通过API被其他系统调用。这四块拼在一起,Coze的定位就很清楚了——它是给非专业开发者准备的AI应用工厂,也是给专业开发者准备的快速验证工具。
1.2 Coze教程学习地图:从Bot搭建到工作流、插件开发
学习Coze这件事,我走过一些弯路。刚开始我什么都想学,今天看工作流,明天翻插件文档,结果哪个都没吃透。后来我给自己画了一张学习地图,按顺序来,效率高了很多。这张地图的第一站是Bot搭建。你得先知道一个智能体最基本的组成:人设、指令、开场白、技能配置。把这几个东西调明白,你就能做出一个能用的对话助手。这一步不需要懂代码,但需要你把自己的需求想清楚。
第二站是Prompt工程和知识库。Prompt决定Bot怎么说话、怎么思考,知识库决定它知道什么。我见过很多人Bot搭得很快,但回答质量差,问题多半出在这两站。结构化提示词、变量设计、多轮对话的上下文管理,这些都是要动手练的。知识库那边,上传文档只是开始,分段策略、召回数量、相似度阈值这些参数会直接影响回答的准确度。我的建议是拿一份自己熟悉的资料做实验,反复调整,观察变化。
第三站是工作流。工作流是把复杂任务拆成节点再串起来的地方。LLM节点、代码节点、条件节点、循环节点、数据库节点,每一种都有它的脾气。我在这一站卡了挺久,后来发现关键不是记住所有节点,而是理解数据怎么在节点之间流动。第四站是插件开发。当你发现内置插件不够用,就需要自己定义API、写Schema、调试发布。这一站开始有技术门槛了,但回报也大,因为插件能让你的Bot接入几乎任何外部服务。最后一站是多Agent和发布运营,属于进阶内容。整张地图走下来,快的话两三周,慢的话一两个月,取决于你每天能投入多少时间。
1.3 账号注册、工作空间与界面导航
注册Coze账号的过程没什么好说的,邮箱或者手机号,几分钟搞定。我想多说两句的是工作空间这个东西。Coze的工作空间有点像你电脑上的文件夹,但它不只是分类用的。一个工作空间里的Bot、工作流、插件、知识库可以互相引用,不同工作空间之间的资源默认是隔离的。我自己的习惯是按项目建空间,比如“客服项目”一个空间,“内容工具”一个空间。这样做的好处是找东西快,权限管理也清晰。团队协作的时候,你可以把成员拉进同一个空间,大家共享资源,各改各的模块,不容易打架。
界面导航这块,我第一次进去确实有点懵。左侧是导航栏,资源、个人空间、探索、模板这些入口排在一起。中间是工作区,你选中的Bot或者工作流会在这里打开。右侧通常是配置面板,具体显示什么取决于你当前在编辑什么。顶部有发布按钮和调试入口。我建议新手花十分钟把每个入口点一遍,不用深入,就看看里面长什么样。特别是“探索”和“模板”这两个地方,里面有官方和社区做好的案例,直接复制过来改,比自己从零开始快得多。
有个小细节我想提醒一下。Coze的界面在不同设备上布局会有差异,网页版功能最全,移动端主要是用来预览和简单调试的。我一般在电脑上搭建和调试,出门在外用手机看看Bot的回答效果。另外,平台的版本更新比较频繁,按钮位置和菜单名称偶尔会变。遇到找不到的功能,先别慌,去搜一下官方文档或者社区帖子,大概率是挪位置了,不是被删了。
1.4 核心概念速览:Bot、Prompt、技能、知识库、工作流、插件
Bot是Coze里最基本的产品单位。你可以把它理解成一个有名字、有人设、有能力的AI助手。用户跟Bot对话,Bot根据你配置的一切来回应。我刚开始把Bot想得太复杂,后来发现它就是“一个大模型加上你给它的各种约束和工具”。人设和指令写在Prompt里,能力来自技能和插件,知识来自知识库,复杂逻辑交给工作流。这几样东西组合起来,就是一个完整的Bot。
Prompt是Bot的灵魂。它不只是一段描述,而是你对Bot行为的全部约定。好的Prompt通常包含角色定义、任务说明、输出格式要求、边界条件处理。我习惯把Prompt分成系统级和用户级两层,系统级定基调,用户级做补充。变量可以让Prompt动态化,比如把用户的名字或者当前日期传进去。多轮对话的设计要考虑上下文长度和话题切换,这些在后面章节会展开讲。
技能和插件经常被混在一起说,它们确实有点像,但作用范围不同。技能是平台内置的能力,比如联网搜索、图片生成、代码解释器,开箱即用。插件是你自己或者别人开发的外部接口封装,需要配置鉴权和参数。知识库用来存放私有资料,支持文档、网页、表格等多种格式,Bot在回答时会检索相关内容。工作流则是把这些东西串起来的胶水,它让Bot能按步骤执行任务,而不是只做一次问答。我学的时候是先把Bot和Prompt搞明白,再碰知识库和技能,最后才动工作流和插件。这个顺序对我来说比较顺。
1.5 常见误区与学习建议:如何高效上手Coze
我踩过的第一个坑是贪多。看到工作流里那么多节点,恨不得一天全学会。结果每个节点都只懂个皮毛,真到用的时候还是不知道怎么连。后来我调整了策略,先做一个最小可用的Bot,能对话就行。做出来之后再想:它哪里不够好?回答不准?那就去调Prompt和知识库。回答太死板?那就加插件让它能查实时信息。需要多步骤处理?那就上工作流。需求驱动学习,比按功能列表学习快得多。
第二个坑是忽视调试。很多人搭完Bot就直接发布,用户反馈不好才回来改。Coze提供了调试面板,你可以看到Bot的思考过程、调用了哪些工具、检索了哪些知识片段。我现在的习惯是每改一次配置就测三五个问题,观察输出有没有变好。还有一个容易被忽略的点是成本。工作流和插件调用都会消耗资源,复杂逻辑跑一次可能比简单对话贵很多。前期不用太纠结,但心里要有这根弦。
第三个坑是闭门造车。Coze的社区和模板库里有大量现成案例,我早期花了很多时间自己摸索,后来发现很多问题别人已经解决过了。我的建议是:遇到卡点先去搜,搜不到再自己试。另外,不要追求一次做到完美。Bot是需要迭代的,上线之后根据真实用户的对话记录来优化,效果比闭门调参好得多。学习路径上,我推荐“Bot搭建 → Prompt和知识库 → 技能和插件 → 工作流 → 插件开发 → 多Agent和发布”这个顺序,每一步都做一个小项目,做完再进下一步。这样学下来,知识点是连着的,不容易忘。
2.1 创建第一个Bot:人设、指令与开场白设计
我做的第一个Bot是个周报助手。点下“创建Bot”按钮,填名字、传头像、写一句描述,这些步骤跟注册社交账号差不多。真正让我停下来想的是人设和指令。人设不是写“你是一个助手”就完事。我把周报助手设定成“一个在互联网公司干了五年的运营,擅长把零散工作整理成结构清晰的汇报”。这个身份一写进去,Bot回答时的语气、用词、甚至分段习惯都会往那个方向靠。
指令部分我一开始写得太笼统,只说了“帮我写周报”。测试的时候Bot回了一堆空话。后来我改成三段:先写任务目标,再写输出格式,最后写几条硬规则。比如“用户会给你一段零散的工作记录,你要输出三部分:本周完成、下周计划、风险与求助。每部分不超过四条,每条不超过二十五个字。不要编造用户没提过的事情。”这样改完,回答质量明显稳了。开场白也重要,我最开始写“你好,我是周报助手”,用户根本不知道接下来该干嘛。换成“把你这周做的事直接粘给我,或者随便说几件,我帮你整理成周报”,对话启动率高了不止一倍。
站在用户角度想,他们打开一个Bot,心里其实在问三个问题:你能干嘛?我该怎么用你?用了有什么好处?开场白要把这三个问题一次说清。我后来养成的习惯是,每做一个新Bot,先自己假装用户聊五轮。如果前三轮我还在猜这个Bot能做什么,那说明人设、指令、开场白这三样里至少有一项没写明白。
2.2 Prompt工程实战:结构化提示词、变量与多轮对话设计
结构化提示词是我踩过坑之后才学会的。以前我把所有要求写成一整段,Bot经常漏掉其中几条。现在我会用 Markdown 分块:角色、能力、规则、输出格式、示例。拿我做的“面试模拟官”举例。角色写“你是一个有十年经验的产品总监,负责模拟面试”。能力写“你能根据候选人回答追问,能给出评分和改进建议”。规则写“每次只问一个问题,不要一次抛出三个问题”。输出格式写“评分用表格,改进建议用列表”。示例给两组问答。分块之后,Bot执行指令的准确率提升很明显。
变量让Prompt活了起来。我在面试模拟官里用了 {{position}} 和 {{level}} 两个变量。用户选“产品经理”和“高级”,Bot就会按高级产品经理的标准提问。变量还能传日期、用户名、历史摘要。多轮对话设计是另一个关键点。Bot需要记住前面聊过什么,Coze默认会带上下文,但对话太长会超出模型窗口。我的做法是在Prompt里写一条规则:“每轮对话结束后,用一句话总结候选人当前的表现,放在内部记忆里。”这样即使后面上下文被截断,核心信息还在。
多轮对话还有一个常见问题:用户跑题。我测试的时候故意问面试模拟官“今天天气怎么样”,它如果跟着聊天气就完蛋了。后来我在规则里加了“如果用户的问题与面试无关,礼貌拉回,说‘我们先把面试流程走完,你刚才提到的项目经历可以再展开讲讲’”。实测下来,拉回成功率挺高。写Prompt这件事,我的体会是:你写得越像给一个聪明但没常识的新人做岗前培训,Bot的表现就越好。
2.3 知识库配置教程:上传、分段、召回策略与测试优化
知识库是我觉得最像“养孩子”的环节。你上传的资料质量,直接决定Bot回答的靠谱程度。我传过一份扫描版PDF,文字识别全是乱码,Bot回答也跟着胡言乱语。后来我学乖了,上传前先检查文档:文字能复制吗?标题层级清楚吗?表格有没有错位?Coze支持 Word、PDF、TXT、网页、飞书文档,我一般优先用飞书文档,格式保留得最好。上传之后是分段。自动分段省事,但遇到长段落容易切得莫名其妙。我通常改成自定义分段,每段五百到八百字,重叠一百字左右。这个尺寸召回时既不会丢上下文,也不会因为太长而混入无关信息。
召回策略里有几个参数需要动手调。召回数量默认是三条,我一般调到五条。相似度阈值我设在零点五上下。阈值太高,稍微换个问法就召不回;阈值太低,什么乱七八糟的片段都往里塞。测试的时候一定要打开调试面板,看Bot到底召回了哪些片段。我遇到过用户问“退货政策”,Bot召回了“发货政策”,原因是两个文档标题太像,分段时把内容混在一起了。解决办法是把文档拆开,标题写清楚,每段只讲一件事。FAQ类的内容我习惯整理成问答对,一条问题配一条答案,召回准确率比纯文本高很多。
知识库不是传完就没事了。我每周会看一次Bot的对话记录,把回答不好的问题挑出来。如果是知识库里没有,就补文档。如果是召回了但回答不对,就调分段或改Prompt里的引用规则。我还会在Prompt里加一句“如果知识库里的信息不足以回答问题,直接说不知道,不要自己编”。这句话加完,胡编乱造的情况少了一大半。测试知识库的时候,我建议拿二十个真实用户可能问的问题跑一遍,记录命中率。低于八成,就回去优化分段和召回参数。
2.4 内置技能与插件调用:让Bot具备联网、绘图、搜索等能力
Coze的内置技能像是一排开关。联网搜索、图片生成、代码解释器、语音合成,勾上就能用。我做的第一个带技能的Bot是“热点追踪助手”。开启联网搜索之后,用户问“今天AI圈有什么新闻”,Bot会自动去搜,然后把结果整理成三条摘要。图片生成技能我用来做“配图助手”,用户给一段文字,Bot生成一张封面图。这些技能的好处是零配置,坏处是控制粒度粗。比如联网搜索,你没法指定只搜某个网站,也没法限制时间范围。
插件比技能灵活得多。官方插件市场里有头条搜索、百度搜索、必应搜索、GitHub、飞书文档、高德地图。我经常用搜索插件做行业资讯Bot,用飞书文档插件做团队知识助手。配置插件的时候要注意参数映射。搜索插件需要一个 query 参数,你得告诉Coze这个参数从哪来。我一般设成“从用户最新一条消息里提取”。有些插件还需要鉴权,比如GitHub插件要填Token,这些在插件配置页里一步步填就行。插件调用不是越多越好。我给一个Bot同时开过搜索、绘图、代码解释器三个插件,结果用户问“帮我画个图”,Bot先去搜索了一圈才想起来调绘图。后来我按意图分流:只有用户明确说“搜一下”才调搜索插件,说“画一张”才调绘图插件。
从成本角度看,插件调用比普通对话贵。搜索插件一次调用可能消耗几百个Token,绘图插件更贵。我现在的习惯是:能靠Prompt解决的不开插件,能靠知识库解决的不开搜索。只有必须实时信息或者外部操作的时候才挂插件。从用户体验角度看,插件调用会有延迟。搜索插件通常两三秒返回,绘图插件可能要十秒以上。我一般会在Prompt里写“调用插件前先告诉用户‘我去查一下’,调用完成后说‘查到了’”。这样用户知道Bot在干活,不会以为它卡死了。
2.5 Bot调试与效果评估:异常处理、对话评测与持续迭代
调试面板是我每天都会打开的地方。它能看到Bot的完整思考过程:用户说了什么,Bot调用了哪个工具,检索了哪些知识片段,最后生成了什么回答,消耗了多少Token。有一次我发现Bot回答一个简单问题花了四千多Token,查了调试面板才发现它把整个知识库都塞进了上下文。后来我调小了召回数量,加了Prompt里的长度限制,Token消耗直接降了六成。异常处理是另一个容易被忽略的点。Bot答不上来的时候,默认会说“我不知道”,这个体验很硬。我一般会设置兜底回复:“这个问题我暂时没找到准确信息,你可以换个问法,或者把相关文档发给我学习一下。”插件超时、知识库为空、用户输入乱码,这些情况都要提前想好Bot该怎么回应。
对话评测我分两层做。第一层是人工测。找三五个朋友,每人跟Bot聊十个问题,记录哪里卡壳、哪里答偏。第二层是批量测。Coze有评测功能,可以导入测试用例,一次跑几十条,看通过率和平均耗时。我还会把真实用户的对话日志导出来,每周挑二十条最常出现的问法,手动检查回答质量。评测指标不用太复杂,我就看三个:回答准确不准确,语气像不像我设定的人设,Token消耗在不在预算内。
持续迭代是Bot能活下来的关键。我早期总想一次做到完美,结果拖了两周还没发布。后来我改成先上线一个六十分版本,然后每周根据对话记录改一次。改的内容无非三样:补知识库、调Prompt、开关插件。有次我发现用户总在问一个我没写进知识库的问题,补上文档之后,相关问答的准确率从四成跳到八成五。还有一次用户反馈Bot说话太正式,我在Prompt里加了一句“偶尔可以用‘咱们’‘挺’这类口语词”,语气立刻自然了不少。迭代这件事,频率比幅度重要。每周花半小时看日志、改配置,比攒一个月再大改一次效果好得多。
3.1 工作流基础:触发方式、节点类型与数据流转逻辑
我刚开始用Coze的时候,总觉得Bot已经够用了。直到遇见一个需求:用户发来一张发票图片,我要先识别文字,再提取金额和日期,接着判断金额是否超过报销标准,最后生成一条审批记录。这件事在Bot里做不了,或者说做起来很别扭。工作流就是为这种多步骤、有逻辑分支的任务准备的。它像一条流水线,你把节点一个个摆上去,数据从上游流到下游,每个节点干一件具体的事。触发方式是流水线的开关。我常用的有三种:手动触发用于调试,Bot调用触发用于对话场景,定时触发用于每天自动跑的任务。还有Webhook触发,适合外部系统主动推数据进来。
节点类型决定了流水线上能装什么机器。Coze里有开始节点、结束节点、LLM节点、代码节点、条件节点、循环节点、变量节点、数据库节点、插件节点、知识库节点、HTTP请求节点。开始节点定义输入参数,结束节点定义输出格式。中间节点各司其职。我习惯在画布上先拖一个开始节点,把需要用户或系统传入的变量列清楚。变量名要一眼看懂,比如 user_question、order_id、raw_text,别用 a、b、c。数据流转逻辑是工作流的灵魂。每个节点都有输入和输出,输出会变成后续节点的可用变量。我踩过一个坑:在LLM节点里引用了上游代码节点的输出,但变量名写错了一个字母,工作流跑起来一直报空值。后来我养成习惯,每加一个节点,先点一下“测试节点”,确认输出长什么样,再往下连。
触发方式选错了,后面全白搭。我做过一个每日新闻摘要的工作流,一开始设成Bot调用触发,结果每天要手动跟Bot说“跑一下”。改成定时触发之后,早上八点自动执行,把摘要发到飞书群。数据流转还有一个细节:并行分支。有些任务可以同时做,比如用户提交一篇文章,一边做敏感词检测,一边做摘要生成,最后合并结果。Coze工作流支持并行节点,但变量合并的时候要注意命名冲突。我的做法是给每个分支的输出加前缀,比如 sensitive_result 和 summary_result,合并节点里分别引用,不会打架。
3.2 核心节点详解:LLM、代码、条件、循环、变量与数据库
LLM节点是我用得最多的。它像一个可以定制的文本处理引擎。你给它一段Prompt,把上游变量用 {{变量名}} 嵌进去,它返回模型生成的内容。我常用LLM节点做意图识别、信息抽取、文本改写、摘要生成。模型选择上,简单任务用轻量模型省Token,复杂推理用大模型。温度参数我一般设零点三到零点七,抽取类任务设低一点,创意类设高一点。Prompt里一定要写清楚输出格式。我做过一个合同信息抽取的工作流,LLM节点Prompt里写“输出JSON,包含甲方、乙方、金额、签署日期四个字段”,后面代码节点直接解析JSON,顺畅得很。如果不写格式,模型返回一段话,代码节点就得做各种兼容,烦得很。
代码节点是工作流里的万能工具。它支持Python和JavaScript。我用代码节点做数据清洗、格式转换、数学计算、字符串处理。比如上游LLM返回了一段带Markdown的文本,我要去掉星号和换行,写成三行代码就搞定。代码节点还能调用外部库,但Coze沙箱环境里预装的库有限,太冷门的库可能跑不了。我一般先用标准库和常见库,比如 json、re、datetime、requests。代码节点的输入变量从上游节点选,输出变量自己定义。调试的时候我会在代码里加 print,运行后看日志输出。条件节点像岔路口。它接收一个布尔表达式,比如 {{amount}} > 5000,成立走一条路,不成立走另一条。我做过报销审批工作流,金额小于五百直接通过,五百到五千走主管审批,五千以上走总监审批。三个条件节点串起来,逻辑清清楚楚。
循环节点用来处理数组。比如用户上传了一个Excel,里面有五十行数据,我要对每一行做同样的处理。循环节点接收一个数组变量,把当前元素传给内部节点,跑完一轮再跑下一轮。循环里要注意变量作用域。我在循环内部用代码节点修改了一个变量,以为循环外部能拿到,结果拿不到。后来我改用循环节点的输出变量,把每轮结果收集成数组,循环结束后再统一处理。变量节点用来存中间状态。工作流里有些值需要跨节点传递,但又不是每个节点的直接输出。比如用户ID、当前时间、配置参数。变量节点可以设默认值,也可以运行时赋值。数据库节点我用来做持久化。Coze自带一个简易数据库,可以建表、增删改查。我做过一个客户登记工作流,用户填完表单,工作流把信息写入数据库,同时发一封确认邮件。数据库节点支持条件查询和批量操作,做轻量级CRUD够用了。如果数据量大或者需要复杂查询,我会用HTTP节点调外部数据库的API。
3.3 插件节点与API调用:在工作流中接入外部服务
插件节点是工作流连接外部世界的桥梁。Coze插件市场里的插件,在工作流里可以直接拖出来用。我用得最多的是搜索插件、飞书文档插件、高德地图插件。搜索插件节点配置很简单,把上游的 query 变量映射到插件的查询参数上,输出就是搜索结果列表。飞书文档插件可以读取文档内容,也可以写入新文档。我做过一个会议纪要工作流:语音转文字之后,LLM节点整理成结构化纪要,飞书文档插件自动创建一篇新文档,把纪要写进去,最后把文档链接发给参会人。插件节点的好处是省去了鉴权和请求构造的麻烦,坏处是参数固定,没法做太灵活的定制。
HTTP请求节点比插件节点更底层,也更自由。你可以调用任何公开API,自己设请求方法、URL、请求头、请求体。我做过一个天气播报工作流,用HTTP节点调天气API。URL里拼上城市参数,请求头加API Key,返回JSON之后用代码节点解析出温度和天气状况,再让LLM节点写成一段口语化的播报。HTTP节点支持GET、POST、PUT、DELETE,也支持表单和JSON两种请求体格式。鉴权方式我试过Bearer Token和API Key放在Header里,都能跑通。要注意的是,有些API返回的数据结构很深,代码节点解析的时候要一层层取,写错了就报错。我的习惯是先用Postman或者curl调通接口,再把参数搬到HTTP节点里。
错误处理是插件和API调用绕不开的话题。外部服务可能超时、返回错误码、限流。我在工作流里会给每个HTTP节点后面加一个条件节点,判断 status_code 是不是200。不是200就走异常分支,记录日志,给用户发一条“服务暂时不可用,请稍后再试”的消息。插件节点也有类似的问题。搜索插件偶尔会返回空结果,如果直接让LLM节点处理空数组,模型会瞎编。我一般在插件节点后面加一个条件判断,空结果就直接返回“没有找到相关信息”。还有一点,插件和API调用会增加工作流耗时。一次搜索可能两秒,一次绘图可能十秒。如果工作流面向C端用户,我会在开始节点之后加一个“发送等待提示”的节点,让用户知道系统在干活。
3.4 工作流调试与发布:测试用例、日志排查、版本管理
调试工作流比调试Bot要复杂一些,因为节点多,链路长。我的习惯是分两步走:先单节点测试,再整体测试。单节点测试就是点开每个节点,手动填输入变量,看输出对不对。LLM节点看生成内容是否符合预期,代码节点看有没有报错,条件节点看分支走对了没有。整体测试是从开始节点一路跑到结束节点,用真实数据或者模拟数据。Coze工作流编辑器有“试运行”按钮,跑完之后每个节点上会显示执行状态和耗时。绿色是对,红色是错。我一般先跑一个最简单的用例,确认主流程通畅,再跑边界用例。比如报销审批工作流,我先跑金额一百的,再跑金额六千的,再跑金额正好五百的。
日志排查是调试里最花时间的环节。工作流运行日志会记录每个节点的输入、输出、错误信息、消耗Token数。我遇到过一个诡异的问题:工作流跑着跑着突然停了,没有任何报错。查日志才发现,循环节点处理一个空数组时直接跳过了后续所有节点。后来我在循环前面加了一个条件判断,数组为空就返回默认提示。日志里还能看到变量传递的过程。有一次LLM节点输出的变量名是 result,但我在下游代码节点里写的是 results,多了一个s,日志里显示 results 是 undefined。这种拼写错误肉眼很难发现,看日志一目了然。我建议每次改完工作流,都跑一遍完整流程,把日志从头到尾扫一遍,重点看有没有warning和error。
版本管理是工作流发布之后的安全网。Coze工作流支持保存多个版本,每次发布都会生成一个版本号。我在做重要修改之前,会先手动保存一个当前版本,命名成“稳定版-日期”。改完之后如果发现问题,可以一键回滚到之前的版本。发布工作流有两种方式:一种是发布到Bot,让Bot在对话中调用;另一种是发布成API,让外部系统通过HTTP调用。发布到Bot的时候,要配置触发条件。我一般写“当用户问题涉及报销、审批、查询订单时,调用此工作流”。发布成API的时候,Coze会生成一个API地址和鉴权Token,外部系统按格式传参就能调用。API发布之后,我习惯写一个简单的测试脚本,用curl或者Python requests跑一遍,确认返回格式和预期一致。
3.5 实战案例:智能客服、内容生成、数据整理自动化工作流
智能客服工作流是我做的第一个完整项目。用户提问进入开始节点,先经过一个LLM节点做意图分类,分成“产品咨询”“售后问题”“投诉建议”“其他”四类。产品咨询和售后问题走知识库检索节点,把召回的知识片段和用户问题一起交给LLM节点生成回答。投诉建议走条件节点,判断是否需要转人工。需要转人工就调用飞书消息插件,把用户问题和联系方式发到客服群。不需要转人工就由LLM节点生成安抚话术。整个工作流跑下来大概三到五秒。我测试了五十个真实用户问题,准确率在八成左右。优化空间主要在知识库分段和意图分类的Prompt上。我后来把意图分类的示例从三条增加到十条,准确率又涨了几个点。
内容生成工作流适合批量生产文章或者营销文案。我做过一个“小红书笔记生成器”。用户输入产品名称和卖点,工作流先让LLM节点生成五个标题,再用循环节点遍历每个标题,生成对应的正文和标签。循环内部有一个LLM节点负责写正文,一个代码节点负责格式化标签。循环结束后,汇总节点把所有笔记合并成一个列表,输出给用户。这个工作流里我用了变量节点来存产品名称和卖点,因为循环内部每个节点都要引用。还有一个小技巧:在循环节点的输出变量里,我把每轮生成的正文拼成一个长字符串,每篇之间用分隔线隔开。用户拿到结果直接复制就能发。内容生成工作流的Token消耗比较大,我一般建议用户用轻量模型跑初稿,再人工润色。如果对质量要求高,就换成大模型,成本会上去。
数据整理自动化工作流是我最近做得最多的。典型场景:运营同事每周发来一个Excel,里面有几百条用户反馈,我要做分类、提取关键词、统计频次。手动做要两小时,工作流跑一遍三分钟。流程是这样的:开始节点接收文件链接,代码节点下载并解析Excel,循环节点遍历每一行。循环内部先过LLM节点做情感分类和关键词提取,再用代码节点把结果写入一个数组。循环结束后,代码节点对数组做聚合统计,最后LLM节点生成一段总结报告。数据库节点用来存历史数据,方便做趋势对比。这个工作流里最麻烦的是Excel解析。Coze代码节点可以调用 pandas 和 openpyxl,但文件要从URL下载,我用 requests 拉下来存到临时文件,再读进DataFrame。跑通之后,我把它分享给了三个同事,每个人每周省下至少一个半小时。工作流的价值就在这种地方,把重复劳动变成一次配置、多次运行。
4.1 插件开发基础:OpenAPI Schema、鉴权方式与请求参数
我一开始以为插件开发要写很多代码。后来发现Coze插件本质是把一个HTTP API包装成模型能看懂的工具。模型需要知道这个工具叫什么、干什么、需要哪些参数、返回什么。这些信息都写在OpenAPI Schema里。OpenAPI Schema是一份JSON或YAML描述文件,里面包含路径、方法、参数、请求体、响应结构。Coze会解析这份文件,生成可视化的参数表单。我习惯用Swagger Editor先写schema,校验通过再复制到Coze。写schema时要给每个参数加description,模型靠这些描述判断要不要填、怎么填。比如一个搜索插件,参数 query 的描述写成“用户想要搜索的关键词,尽量保留原始问法”,模型调用时就不会乱改。
鉴权方式我踩过坑。Coze支持无鉴权、API Key、OAuth、Service Token。内部测试接口用无鉴权最省事。对外部服务,API Key放Header或Query里都行。我做过一个企业知识库插件,对方要求Bearer Token,我在Coze鉴权配置里选“API Key”,位置选Header,Key填 Authorization,Value填 Bearer sk-xxx。注意Bearer后面有个空格,少打了就401。OAuth稍微复杂,需要填授权地址、Token地址、Client ID、Client Secret。Coze会帮你走授权流程,拿到access_token后自动放进请求头。OAuth适合飞书、Google这类平台。Service Token是Coze内部服务之间调用用的,普通开发者用得少。
请求参数分四类:Path、Query、Header、Body。Path参数直接拼在URL里,比如 /users/{id}。Query参数挂在问号后面,比如 ?page=1&size=10。Header参数放请求头,常用于鉴权或指定格式。Body参数放请求体,支持JSON和表单。我写schema的时候,会把必填参数标成 required: true,可选参数标false。模型看到必填项会主动向用户追问,看到可选项可能忽略。参数类型要写清楚:string、integer、boolean、array、object。类型写错,Coze解析会报错。数组参数还要写items类型。我做过一个批量发送消息的插件,参数 user_ids 是array of string,schema里写清楚,模型才能正确生成数组。
4.2 从零开发一个Coze插件:接口定义、调试与发布流程
我拿一个真实需求练手:查快递。用户给一个单号,插件返回最新物流状态。我找了一个公开的快递查询API,先用Postman调通。URL是 https://api.example.com/kuaidi,方法GET,参数 number 放Query,鉴权用API Key放Header。Postman里返回JSON,包含 status、time、context。确认接口稳定后,打开Coze,进入工作空间,点“插件”,再点“创建插件”。填名称“快递查询”,描述写“根据快递单号查询最新物流轨迹”。图标随便传一个。创建完进入插件编辑页,点“添加工具”。工具名称用英文,比如 queryExpress。描述写中文,给模型看:“输入快递单号,返回最新物流状态和时间”。选“OpenAPI Schema”导入方式。我把Postman里的请求信息手写成OpenAPI JSON,粘贴进去。Coze自动解析出参数 number 和Header X-API-Key。我给参数补上描述,把 number 标为必填。
调试环节我花了最多时间。Coze插件编辑器有个“调试”按钮,点开可以填测试参数。我填了一个真实单号,点运行。头一回返回401,检查发现Header名字写成了 X-API-KEY,大小写不匹配。改完再跑,返回200,但结果里物流状态是空的。看响应JSON,发现状态藏在 data.list[0].status 里。我在输出参数里只定义了顶层字段,模型拿不到嵌套值。后来我在schema的responses里把嵌套结构写全,Coze就能解析出深层字段。调试通过后,点“发布”。发布前要填版本号和更新说明。发布后插件出现在“我的插件”列表里,状态是“已发布”。我建议每次改完schema都重新调试,不要直接发布。发布后的插件可以在Bot和工作流里搜索到。
发布流程还有一个细节:插件可见范围。Coze插件可以设为仅自己可见、工作空间可见、公开。自己用选仅自己。团队用选工作空间。想上插件商店选公开,但审核比较严,要求接口稳定、描述清晰、无敏感数据。我做过一个内部审批插件,设为工作空间可见,同事在各自Bot里都能调用。发布之后如果接口地址变了,要回到插件编辑页更新schema,重新发布新版本。旧版本不会自动失效,但新调用会走新版本。我习惯在插件描述里写清楚版本号和更新日期,方便排查。
4.3 插件在Bot与工作流中的调用:参数映射与结果解析
在Bot里调用插件,需要在Bot编辑页的“技能”区域添加插件。添加之后,模型会根据用户问题自动判断是否调用。我做的快递查询Bot,用户说“帮我查一下单号123456”,模型识别出意图,调用 queryExpress 工具,把 number 参数填成123456。参数映射这一步是自动的,但模型有时候会填错。比如用户说“查快递”,没给单号,模型会反问“请提供单号”。这靠的是参数描述里写了“必填”。如果模型把单号填成“123456”,但实际单号有字母,模型会原样传过去。我在工具描述里加了一句“单号可能包含字母和数字,请完整提取”,准确率就上来了。Bot里还可以设置“强制调用”某个插件,适合固定流程。但强制调用会破坏对话自然感,我一般不用。
工作流里调用插件更可控。在工作流画布上添加“插件节点”,选择已发布的插件,然后做参数映射。上游节点的输出变量直接拖到插件输入参数上。比如开始节点有一个 express_number,插件节点的 number 参数就映射这个变量。插件节点的输出会变成后续节点的可用变量。我习惯在插件节点后面加一个代码节点,把嵌套的返回结果拍平。快递API返回 data.list 数组,代码节点取 list[0],提取 status 和 time,输出两个简单变量。这样下游LLM节点写回复时,直接引用 {{status}} 和 {{time}},不用处理复杂结构。结果解析还有一个坑:有些API返回的字段名和schema里写的不一致。我在调试时发现 status 实际叫 state,schema里写错了。模型拿不到值,输出空。改schema重新发布,问题解决。
参数映射时要注意类型匹配。插件参数是integer,上游变量是string,直接映射会报错。我做过一个天气插件,参数 city_id 是integer,开始节点传来的却是城市名。我在中间加了一个代码节点,把城市名转成ID,再映射给插件。工作流里插件节点的输出如果是一个数组,后续节点要用循环处理。我做过一个批量查询专利的插件,输入关键词数组,返回专利列表数组。循环节点遍历数组,每个元素交给LLM节点生成摘要。插件节点本身不支持循环,循环要放在工作流层面。还有一个经验:插件调用失败时,工作流会中断。我在插件节点后面加条件节点,判断 error 字段是否为空。不为空就走异常分支,给用户返回友好提示。这样整个流程不会因为一个插件挂掉而全盘崩溃。
4.4 常见插件类型实战:搜索、数据库、企业系统与第三方API
搜索插件是我用得最频繁的。Coze插件市场里有必应搜索、谷歌搜索、百度搜索。我自己也封装过一个内部搜索插件,调用公司的Elasticsearch。OpenAPI Schema里定义 query、page、size 三个参数。鉴权用Basic Auth,用户名密码放Header。搜索插件返回的结果通常是一个列表,每个结果有标题、链接、摘要。我在工作流里把结果列表交给LLM节点,Prompt写“根据以下搜索结果回答用户问题,附上来源链接”。模型会挑最相关的几条,拼成回答。搜索插件要注意限流。公开搜索API一般有QPS限制,调用太频繁会被封。我在代码节点里加了一个简单的计数器,每秒钟最多调一次。如果超了,就返回缓存结果或者提示“搜索太频繁,请稍后再试”。
数据库插件适合做持久化查询。Coze自带的数据库插件可以建表、插入、查询、更新、删除。我做过一个客户管理插件,表里有 name、phone、company、last_contact。插件工具分四个:addCustomer、getCustomer、updateCustomer、deleteCustomer。每个工具的OpenAPI Schema里定义好输入参数。在Bot里,用户说“记一下张老板的电话13800000000”,模型调用 addCustomer,参数从对话里提取。工作流里做批量导入时,循环节点遍历Excel行,每行调用一次 addCustomer。数据库插件的好处是不用自己写后端,坏处是查询能力有限,复杂联表查不了。数据量大或者要事务,我会用HTTP节点调外部数据库的REST API。
企业系统插件是内部集成的大头。我接过飞书审批、企业微信消息、Jira工单、Salesforce CRM。这类系统的API通常有OAuth鉴权,文档厚,参数多。我的做法是只封装最常用的几个操作,不要一次性把所有接口都做成工具。比如飞书审批,我只做“发起审批”和“查询审批状态”两个工具。Schema里参数尽量少,必填项标清楚。企业系统API经常有版本变化,我在插件描述里写清楚依赖的API版本。第三方API插件像天气、汇率、股票、翻译。这类插件可以公开分享,但要注意API Key不能泄露。我把API Key存在Coze的鉴权配置里,不要写在schema里。有一次我图省事把Key写在URL参数里,发布后别人复制插件就能看到。后来改成Header鉴权,安全多了。
4.5 插件安全、限流与错误处理:稳定性与合规要点
插件安全最要紧的一关是密钥管理。Coze的鉴权配置会把密钥加密存储,不会明文显示在schema里。我养成习惯:所有外部API Key、Token、密码都走鉴权配置,不写在请求参数或代码里。如果插件需要多个密钥,比如Client ID和Client Secret,OAuth配置里有两个输入框。内部系统用Service Token时,Token有效期短,要设自动刷新。Coze支持在鉴权配置里填刷新逻辑,但需要写一点JSON。我一般让后端同事提供一个长期Token,省事。权限最小化也很重要。数据库插件只给必要的表权限,搜索插件只给只读Key。不要用管理员账号去调外部API。有一次我用了一个有写权限的Key做查询插件,测试时误删了一条数据。后来换成只读Key,心里踏实多了。
限流是稳定性的关键。外部API通常有每分钟调用次数限制。我在插件里加了一个简单的内存计数器,用代码节点实现。每次调用前检查当前分钟已调用次数,超过阈值就返回“请求过于频繁”。Coze工作流没有内置的限流节点,但可以用变量节点和代码节点模拟。还有一个办法:在插件描述里写“本插件每分钟最多调用10次”,模型看到会尽量少调。但这不可靠,模型不会严格遵守。生产环境我建议在外部API网关做限流,插件只负责转发。超时设置也要注意。Coze插件默认超时时间大概10秒到30秒。外部API如果响应慢,插件会超时失败。我在schema里把超时时间写在描述里,提醒自己选快速接口。如果接口确实慢,就改成异步模式:插件只提交任务,返回任务ID,再写另一个插件查结果。
错误处理要分层次。插件内部做请求参数校验、网络异常捕获、返回标准错误格式。我在schema里定义统一的错误响应,包含 code、message、detail。工作流层面,插件节点后面加条件节点,判断 code 是否为0。不为0就走异常分支,记录日志,给用户友好提示。Bot层面,模型看到错误信息后,可以自动重试或者换一种说法。我在Prompt里写“如果插件返回错误,请告知用户稍后再试,不要编造结果”。合规方面,插件不能收集用户隐私数据,不能调用未授权的接口,不能返回敏感内容。企业内使用要遵守数据安全规定。我做过一个插件,需要把用户手机号传给外部API。法务同事要求先脱敏,只传后四位。我在代码节点里做了截断处理。插件发布前最好让安全同事过一遍,看看有没有硬编码密钥、越权访问、日志泄露。这些事花时间,但比出事之后补救便宜得多。
5.1 多Agent模式教程:角色分工、协作机制与路由策略
我第一次接触多Agent是在一个客服项目里。用户问题五花八门,有的问产品功能,有的要退款,有的投诉物流。单个Bot把所有人设、知识库、工作流全塞进去,Prompt变得巨长,回答质量反而下降。后来我把一个Bot拆成三个:接待Agent负责打招呼和识别意图,技术Agent专答产品问题,售后Agent处理退款和投诉。每个Agent有自己的Prompt、知识库和技能。用户进来先由接待Agent聊两句,判断意图后把对话转给对应Agent。这个拆分让每个Agent的Prompt短了很多,回答准确率明显上升。
角色分工的关键是让每个Agent只做一件事。接待Agent不需要知道退款流程,售后Agent不需要懂产品参数。我给接待Agent的Prompt写“你的任务是用一句话确认用户需求,然后输出路由标签”。路由标签可以是 tech、after_sale、other。技术Agent看到 tech 标签才被激活。协作机制靠变量传递。Coze里可以用工作流把用户消息和路由标签一起传给下一个Agent。我试过用API节点直接调另一个Bot,也能跑通,但延迟高一点。更简单的办法是在同一个Bot里用条件分支切换Prompt。不过那样不算真正的多Agent,只是Prompt切换。真正的多Agent是多个独立Bot互相调用。
路由策略我踩过坑。一开始我让模型自由判断该调哪个Agent,结果它经常把退款问题扔给技术Agent。后来我改成关键词加模型判断。用户消息里出现“退款”“退货”“投诉”直接走售后,出现“怎么用”“参数”“报错”走技术,剩下的走接待。命中率高了,但太死板。我又加了一层:模型先分类,分类结果和关键词不一致时,以模型为准,但记录日志人工复查。路由还有个细节:Agent之间转接时要把上下文带过去。Coze的Bot之间调用可以传 conversation_id,但历史消息不一定完整。我习惯在转接前把关键信息提取成变量,比如用户ID、订单号、问题摘要,一起传给下一个Agent。这样售后Agent不用重新问一遍,体验好很多。
5.2 综合项目实战:工作流+插件+知识库从需求到上线
去年我接了一个内部招聘助手的活。HR每天要看几百份简历,想用Coze做个自动筛选工具。需求很明确:上传简历PDF,提取关键信息,匹配职位JD,打分,通过的发面试邀请。我花了三天做完,中间改了好几版。第一版只用了知识库,把JD和公司介绍传进去,让模型直接读简历打分。效果很差,模型对PDF解析不稳定,打分忽高忽低。第二版加了插件,用第三方PDF解析API提取文本,再用代码节点清洗。知识库只存JD和评分标准。工作流串起来:开始节点接收简历文件,插件节点解析文本,代码节点提取姓名、电话、技能,LLM节点根据JD打分,条件节点判断分数是否大于80。大于80走邮件插件发面试邀请,小于80存数据库留档。
工作流里最麻烦的是PDF解析插件。公开API对中文简历支持不好,经常把表格和正文混在一起。我换了一个支持版面分析的API,贵一点但准确率高。代码节点里我写了一段正则,专门抓手机号和邮箱。LLM节点的Prompt写得很细:“你是一个HR专家,根据以下JD要求给简历打分,满分100。技能匹配占60分,经验匹配占30分,学历占10分。输出JSON格式,包含分数和理由。”刚开始模型输出带 markdown 代码块,我加了一个代码节点剥掉 `json 标记。知识库召回策略也调了。我把JD分成多个段落,每个段落标上权重。检索时用混合检索,关键词和向量各占一半。这样“Java开发”这种词能精准命中。
上线前我找了五个同事做测试。有人传了英文简历,解析插件直接乱码。我加了一个语言判断节点,英文简历走翻译插件再处理。还有人传了图片格式的简历,解析插件返回空。我加了提示:“请上传PDF或Word格式”。测试两周后正式上线,HR反馈筛选效率提高了70%。但我也发现一个问题:模型对“985/211”这种硬条件判断不稳定。后来我在代码节点里加了白名单,直接匹配学校名,不依赖模型。这个项目让我明白,工作流+插件+知识库不是堆上去就行,每个环节都要有兜底方案。模型擅长模糊判断,精确规则交给代码。
5.3 发布与集成:飞书、微信、网页、API与SDK接入
Coze做好的Bot得让人用起来。我试过四种发布方式。飞书最简单,在Coze发布渠道里选飞书,扫码授权,自动创建机器人。飞书群聊里@机器人就能用。注意飞书需要开启“获取用户发给机器人的单聊消息”权限,不然私聊没反应。我一开始没开,用户私聊Bot装死,排查了半天。飞书还有个好处:可以配置快捷指令,比如输入“查快递”自动弹出输入框。微信麻烦一些。公众号需要认证服务号,订阅号不行。企业微信稍微宽松,但也要配置可信域名。我帮朋友接过一个微信客服,用的是企业微信的API模式,Coze提供webhook地址,填到企业微信后台就行。微信对消息格式要求严,图片和文件要转成特定结构。我踩过坑:Coze返回的markdown在微信里不渲染,得改成纯文本。
网页集成有两种。一种是Coze提供的分享链接,直接发给用户,打开就是个聊天页。适合内部工具。另一种是iframe嵌入,把Bot嵌到自己的网站里。代码就一行iframe标签,但样式要自己调。我做过一个官网客服,用iframe嵌进去,设置宽高和圆角,看起来像原生组件。API和SDK适合开发者。Coze有REST API,可以发消息、收消息、管理会话。SDK目前有Python和JavaScript版本。我用Python SDK做过一个自动回复工具,监听群消息,命中关键词就调Coze Bot。API调用要注意鉴权,用Personal Access Token。Token别写在前端代码里,会泄露。我习惯放后端环境变量。
发布之后还要考虑多端同步。同一个Bot在飞书和网页上,对话历史不互通。用户从飞书转到网页,得重新开始。我试过用 user_id 做关联,但Coze默认的会话隔离比较强。后来我开了“持久化会话”功能,把对话存在数据库插件里,不同渠道用同一个 user_id 查历史。这样体验连贯一些。还有一个细节:不同渠道的消息长度限制不同。飞书单条消息有字数上限,微信更短。我在工作流最后加了一个代码节点,把长回复切成多条发送。飞书支持卡片消息,比纯文本好看,我学了点卡片JSON语法,把查询结果做成表格卡片,用户点一下就能复制单号。
5.4 性能优化与成本控制:Token、缓存、并发与监控
Token烧钱的速度比我预想快。一个客服Bot每天两千次对话,用GPT-4一个月账单吓人。我开始优化。第一步砍Prompt。原来的人设写了八百字,删到两百字,效果没差。历史消息只保留最近五轮,更早的用摘要代替。摘要用一个便宜的小模型生成,成本几乎忽略。第二步用变量代替重复描述。比如产品价格表,不要每次塞进Prompt,放知识库,模型需要时再检索。第三步选模型。简单意图识别用 gpt-3.5-turbo,复杂回答用 gpt-4。Coze支持在工作流里切换模型,我在条件节点后面接不同的LLM节点。一个月下来成本降了六成。
缓存是另一个省钱利器。用户问“你们公司地址在哪”,答案固定。我在工作流开头加了一个缓存节点,用问题文本的哈希做key,查数据库。命中就直接返回,不调模型。缓存有效期设24小时。插件结果也能缓存。比如天气插件,同一个城市十分钟内查一次就行。我用变量节点存上次查询时间和结果,再次请求时判断时间差。并发控制很重要。工作流里如果有循环节点批量处理,不要一次性发几百个请求。我在循环里加了一个等待节点,每次循环间隔200毫秒。Coze工作流默认并发数有限制,超了会排队。监控方面,Coze后台有调用统计,能看到每天消息量、Token消耗、错误率。我设了告警,错误率超过5%就发邮件。日志排查用 conversation_id 搜,能还原整个对话链路。有一次线上Bot突然不回复,查日志发现是知识库文件被误删了。赶紧重新上传,虚惊一场。
成本控制还要注意插件的调用费用。有些第三方API按次收费,比如搜索、翻译。我在插件节点后面加条件判断,只有必要的时候才调。比如用户问“今天天气”,先查缓存,缓存没有才调天气插件。用户问“帮我写个文案”,不调搜索插件。模型有时候会过度调用插件,我在Prompt里写“只在需要外部数据时才调用插件,不要为了调用而调用”。另外,Coze的免费额度有限,团队用要提前规划。我建议先跑一周测试,统计平均每次对话的Token消耗和插件调用次数,再估算月成本。如果超预算,就降级模型或者限制某些功能。省钱不是抠门,是把钱花在刀刃上。
5.5 运营与商业化:模板复用、团队协作、变现路径与持续迭代
我做第一个Bot花了三天,第二个类似的花了三小时。差别在模板复用。Coze工作空间里可以把Bot、工作流、插件存成模板。下次新建直接套用,改改Prompt和知识库就行。我整理了一套模板库:客服模板、内容生成模板、数据查询模板。每个模板带示例数据和测试用例。同事拿去改改就能用。团队协作方面,Coze支持工作空间成员权限。我设了管理员、编辑者、查看者三个角色。管理员管发布和计费,编辑者改Bot和工作流,查看者只能看不能动。版本管理很重要。每次大改之前先复制一份,命名带上日期。出问题了回滚旧版本。我吃过亏:直接在生产Bot上改Prompt,改崩了没法恢复。现在改之前先建分支,测试通过再合并。
变现路径我试过几种。卖模板是最轻的。在Coze插件商店或第三方平台挂模板,一份几十到几百块。适合标准化场景,比如“小红书文案生成器”“简历筛选助手”。接私活定制Bot利润高,但费时间。我帮一家电商做过订单查询Bot,收费五千,做了两周。做SaaS是长期生意。把Coze的API封装成自己的产品,按月收费。我有个朋友做外贸客服SaaS,底层用Coze,前端自己开发,每月收99美元。插件商店分成是另一条路。开发高质量插件,上架Coze商店,别人调用你拿分成。目前分成比例不算高,但量大能赚钱。我认识一个开发者做了个PDF解析插件,每天调用几万次,月入过万。
持续迭代比开发更重要。Bot上线只是开始。我每周看一次后台数据:哪些问题被问最多,哪些回答用户点了踩,哪些插件调用失败。根据这些改Prompt、加知识库、换插件。有一次我发现用户总问“能不能开发票”,知识库里没有,模型瞎编。我补了一段发票说明,问题解决。用户反馈渠道也要开。我在Bot开场白里加了一句“如果回答不满意,请回复‘转人工’”。转人工的消息推送到飞书群,人工介入。这些反馈帮我发现了不少盲点。商业化不是一锤子买卖,是持续打磨。我现在的习惯是每两周发一个小版本,更新日志写清楚改了什么。用户看到你在维护,信任感会强很多。