ORANGE BOOK · COZE

第七章 工作流从对话到自动化

一、为什么要用工作流

单 Bot 的天花板

你做了一个客服 Bot,用户问:"我下了订单 3 天了还没发货,怎么办?"

理想流程应该是:

  1. 调用「订单查询」插件,输入用户 ID 和订单号。
  2. 看返回结果:是真的没发货?还是已经发货但没更新物流?
  3. 如果真没发货 → 调用「催单系统」自动催商家。
  4. 如果已发货 → 调用「物流查询」插件返回最新轨迹。
  5. 最后给用户写一段安抚 + 解决方案的回复。

这 5 步用单 Bot 提示词非常难稳定实现——你写了规则,模型照着执行 9 次 OK,第 10 次就跑偏。

工作流的核心思想是:

把"复杂任务"拆成"显式的步骤图",每一步都有明确的输入、处理、输出,模型只在你允许它"思考"的节点上思考。

可控、可调试、可复用。这就是工作流的价值。

二、工作流和 Bot 的关系

维度 单 Bot 工作流
形态 一段提示词 + 模型 + 技能 一张可视化"流程图"
节点数 1 个隐式节点 2-30 个显式节点
控制力 弱(靠模型自由发挥) 强(你定流程)
调试 黑盒(看最终输出) 白盒(每个节点单独看输出)
适合 闲聊、Q&A、简单任务 报表、自动化、多步骤决策
调用方式 直接对话 在 Bot 里挂载 / API 调用 / 触发器

黄金搭档:复杂的任务用"工作流"实现,再把工作流挂在 Bot 的"技能"里。Bot 负责自然对话和路由,工作流负责干活。

三、Coze 工作流的全部节点(一图读懂)

┌──────────────────────── 控制类 ─────────────────────────┐
│  开始节点 / 结束节点 / 条件节点(选择器)/ 循环节点         │
│  Loop / 意图识别节点(最常用)                            │
└────────────────────────────────────────────────────────┘

┌──────────────────────── AI 类 ────────────────────────┐
│  大模型节点(LLM)/ 知识库节点 / 文生图节点              │
│  问答节点(带"等用户输入"功能)                          │
└────────────────────────────────────────────────────────┘

┌──────────────────────── 工具类 ────────────────────────┐
│  插件节点 / 工作流节点(嵌套调用)/ 代码节点(写 JS/Python)│
│  HTTP 请求节点(调任意 API)                            │
└────────────────────────────────────────────────────────┘

┌──────────────────────── 数据类 ────────────────────────┐
│  变量节点 / 数据库节点 / 文件读取节点                    │
│  消息节点(中间态发消息给用户)                          │
└────────────────────────────────────────────────────────┘

新手记住下面这 6 个最常用的就够了:

  1. 开始节点:定义工作流的入参。
  2. 结束节点:定义工作流的出参。
  3. 大模型节点(LLM):让 AI 处理一段文本。
  4. 插件节点:调用插件。
  5. 选择器节点:条件判断("如果 A 走分支 1,否则走分支 2")。
  6. 代码节点:写几行 JavaScript / Python 处理数据。

四、动手做:第一个工作流(5 分钟)

我们做最简单的一个:"输入一个城市名,输出今天的天气 + 穿衣建议"。

第 1 步:创建工作流

  1. 左侧「资源库」→「工作流」→「+ 创建工作流」。
  2. 名称:今日天气与穿衣建议
  3. 描述:输入城市名,返回今天的天气情况和穿衣建议
  4. 点 「创建」。

第 2 步:理解画布

进去之后你会看到一个可视化画布

[开始]                                    [结束]
   │                                         ▲
   └─────────  这之间你要拖节点  ───────────┘

左侧栏是节点工具箱,把节点拖到画布上、连线,就完事。

第 3 步:配置开始节点

点击「开始节点」,在右侧面板:

  • 添加输入参数 city,类型 String,描述 城市名,例如"北京"

第 4 步:拖一个"插件节点",调用天气插件

  1. 从左侧拖一个「插件」节点到画布。
  2. 在节点上点"选择插件",搜「天气」,选官方天气插件,挑一个工具如 getWeather
  3. 配置参数映射:
    • city ← 引用 开始节点.city

第 5 步:拖一个"大模型节点",生成穿衣建议

  1. 拖一个「大模型」节点到画布,连在天气节点后面。
  2. 选模型:豆包 1.5 Pro。
  3. 提示词:
你是一个生活助理。根据下面的天气数据,给出当天的穿衣建议。

天气数据:
{{plugin_output.weather_info}}

输出格式:
- 【今日天气】温度 / 状况 / 风力
- 【穿衣指数】指数 + 一句话解释
- 【推荐穿搭】3 套搭配建议(上装 + 下装 + 鞋子)
- 【出门提醒】1 句话(带伞?防晒?口罩?)

参数映射:

  • plugin_output ← 引用上一步天气节点的输出(具体字段名按你看到的为准)

第 6 步:配置结束节点

  • 输出参数 result ← 引用大模型节点的输出。

第 7 步:试运行

  • 点画布右上角「试运行」。
  • 输入 city = 北京
  • 等待几秒,应该能看到完整输出。

第 8 步:发布

  • 点画布右上角「发布」。
  • 在你的某个 Bot 编辑页 → 「技能」→ 「工作流」→ 「+ 添加」→ 选这个工作流。
  • 现在用户在 Bot 里说"北京天气",Bot 就会自动调这个工作流。

🎉 你做出了第一个工作流。

五、3 个完整工作流实战(含完整提示词)

实战 1:自动公众号选题机

场景:每天早上自动给你 5 个高质量选题(带数据 + 大纲 + 标题)。

节点图

[开始: 行业关键词]
        │
        ▼
[插件: 头条搜索]   ← 拉本日 Top 30 文章
        │
        ▼
[插件: 知乎热榜]    ← 拉本日 Top 50 问题
        │
        ▼
[大模型 - 选题分析]
   提示词:分析两路输入,挑出 5 个"既有热度又有创作空间"的话题。
   每个话题给:
   - 选题角度
   - 受众痛点
   - 3 个候选标题
   - 一段 200 字大纲
        │
        ▼
[结束: 5 个选题]

关键节点提示词

# 大模型节点提示词
你是一名资深公众号主编,专门帮 {{ industry }} 行业的小编选题。

# 输入数据
[头条搜索结果] {{ toutiao_results }}
[知乎热榜] {{ zhihu_results }}

# 任务
1. 整合两路数据,识别本日热点。
2. 挑出 5 个最适合做公众号的选题,标准:
   - 有热度(至少 2 个数据源同时出现 / 单源高热度)
   - 有创作空间(不是纯新闻播报,能延展观点)
   - 跟 {{ industry }} 行业相关
3. 每个选题给:
   - 选题角度(1 句话)
   - 受众痛点(1-2 句)
   - 3 个候选标题(标题党 / 干货 / 反差风各一)
   - 200 字大纲(按"开篇钩子 - 核心论点 3 条 - 收尾呼吁"结构)

# 输出格式
Markdown,每个选题用二级标题分隔。

效果:每天起床,运行一下这个工作流(或绑定定时任务),5 个选题端到桌前。

实战 2:Excel 数据分析 + 周报生成

场景:上传一份本周销售 Excel,自动生成"成绩 + 问题 + 下周计划"周报。

节点图

[开始: 上传 Excel 文件]
        │
        ▼
[插件: Excel 读取]
        │
        ▼
[代码节点: 数据清洗]
   - 去掉空行
   - 转换日期格式
   - 计算环比 / 同比
        │
        ▼
[插件: chart-render]
   - 生成趋势图(折线)
   - 生成 Top 5 客户柱状图
        │
        ▼
[大模型: 写周报]
   提示词:基于数据 + 图表,写一份 600 字周报
        │
        ▼
[结束: Markdown 周报 + 图表 URL]

关键节点:代码节点(JavaScript)

async function main({ params }) {
  const rows = params.excel_data;
  const cleanedRows = rows.filter(r => r.amount > 0);

  const totalAmount = cleanedRows.reduce((s, r) => s + r.amount, 0);
  const avgAmount = (totalAmount / cleanedRows.length).toFixed(2);

  const customerMap = {};
  cleanedRows.forEach(r => {
    customerMap[r.customer] = (customerMap[r.customer] || 0) + r.amount;
  });
  const top5 = Object.entries(customerMap)
    .sort((a, b) => b[1] - a[1])
    .slice(0, 5);

  return {
    total: totalAmount,
    average: avgAmount,
    top5_customers: top5,
    raw_count: cleanedRows.length,
  };
}

注意:Coze 的代码节点支持 JS / Python,你不写也能做——直接让大模型节点处理,只是统计精度不如代码节点。

关键节点:大模型周报提示词

你是 {{ team_name }} 的销售运营经理,根据下方数据写一份本周的销售周报。

# 数据
- 本周总成交额:{{ total }}
- 平均单笔金额:{{ average }}
- 订单数量:{{ raw_count }}
- Top 5 客户:{{ top5_customers }}

# 文档结构(必须遵守)
## 一、本周成绩
(用数据说话,不要堆形容词)

## 二、关键洞察
(3 条,每条 50 字以内)

## 三、问题与风险
(2-3 条)

## 四、下周计划
(3-5 个具体可行的行动项)

# 风格
简洁、客观、第一人称("我们")、避免"显著"、"大幅"等模糊词。

效果:原本 2 小时的周报,3 分钟搞定。

实战 3:智能客服分拣 + 自动回复(多分支)

场景:客户消息进来,按"投诉 / 咨询 / 退款 / 物流 / 闲聊"分类,每类走不同的回复流程。

节点图

[开始: 客户消息]
        │
        ▼
[大模型: 意图分类]
   输出 JSON:{ "category": "退款" / "投诉" / "咨询" / "物流" / "闲聊" }
        │
        ▼
[选择器节点 - 5 路分支]
        │
   ┌────┴────┬─────┬────┬────┐
   ▼         ▼     ▼    ▼    ▼
[退款流程] [投诉] [咨询] [物流] [闲聊]
   │         │     │    │    │
   ▼         ▼     ▼    ▼    ▼
[查订单+退] [转人工] [查FAQ] [查物流] [简短回复]
   │         │     │    │    │
   └────┬────┴─────┴────┴────┘
        ▼
[结束: 统一格式回复]

关键节点:意图分类提示词

# 角色
你是客服意图分类专家。

# 任务
将用户消息分类到下列 5 类之一:

| 类别 | 触发词 / 模式 |
| --- | --- |
| 退款 | 退货、退款、不要了、想退 |
| 投诉 | 差评、投诉、骗子、坑、举报 |
| 咨询 | 怎么用、什么是、问下、请问 |
| 物流 | 几天到、发货、物流、快递、单号 |
| 闲聊 | 你好、谢谢、你叫什么、晚安 |

# 输出格式
严格输出以下 JSON,无任何解释:
{
  "category": "退款" | "投诉" | "咨询" | "物流" | "闲聊",
  "confidence": 0.0-1.0,
  "raw_message": "原文"
}

关键节点:选择器

  • 分支 1:category == "退款" → 走"退款流程"子工作流。
  • 分支 2:category == "投诉" → 走"转人工"流程。
  • ……

效果:300 条消息分拣,从"人肉看 1 小时"变成"AI 处理 3 分钟 + 人工只看高优先级"。

六、工作流的 5 个高阶技巧

技巧 1:嵌套调用(工作流套工作流)

复杂场景下,把"退款流程"做成单独的子工作流,主流程通过「工作流节点」调用它。

好处

  • 主流程更清晰。
  • 子流程可复用(多个 Bot 都能用同一个"退款流程")。

技巧 2:循环节点(批量处理)

要处理 100 个客户消息?用 「循环节点」

开始 → 循环开始
         │
         ├─ 处理单个消息(LLM 节点)
         │
         循环结束 → 汇总结果 → 结束

技巧 3:消息节点(中间反馈)

工作流跑得慢?用 **「消息节点」**给用户实时反馈:

  • "正在查询订单..."
  • "正在联系商家..."
  • "正在为您生成方案..."

用户体验立刻好 10 倍。

技巧 4:变量持久化(数据库节点)

如果你想"记住"用户的偏好(比如"小红喜欢甜口、不能吃辣"),用 **「数据库节点」**保存。

下次用户来,先读数据库,再走流程。

技巧 5:失败兜底(try-catch 模式)

每个工具节点都要考虑"失败怎么办":

  • 插件挂了?回到"凭脑补回答"模式。
  • 知识库没找到?返回"我没找到,建议联系人工"。
  • API 超时?记录日志 + 返回兜底答案。

永远不要让用户看到"白屏"或"系统错误"

七、调试工作流的 5 个技巧

技巧 1:每个节点单独"试运行"

不要一次跑完整流程。先单独测每个节点,确认输入输出对了,再连起来。

技巧 2:查看"每个节点的实际输出"

试运行完成后,画布上每个节点会显示"本次的输入和输出"。这是最强的调试工具。

技巧 3:先用最简单的输入测试

不要一上来就用复杂数据。先用 1 条最简单的输入跑通,再扩展

技巧 4:版本管理

每个工作流都有"版本历史",每次发布会留一个快照。改坏了能回滚

技巧 5:日志埋点

在关键节点加 「消息节点」 输出中间变量,方便看流程跑到哪、为啥跑歪。

八、本章一图回顾

工作流 = 把"复杂任务"拆成"可视化步骤图"

6 个最常用节点:
   开始 / 结束 / 大模型 / 插件 / 选择器 / 代码

3 个完整实战:
   1. 公众号选题机(搜索 + LLM)
   2. Excel 周报生成(读取 + 代码 + 出图 + LLM)
   3. 客服智能分拣(分类 + 选择器 + 多分支)

5 个高阶技巧:
   嵌套 / 循环 / 中间反馈 / 数据库 / 失败兜底

5 个调试技巧:
   单节点试运行 / 看每节点输出 / 简单输入起步 / 版本管理 / 埋日志

九、避坑清单

  • ❌ 别一开始就搭"20 节点流程"——从 3-5 节点开始
  • ❌ 别忘了"试运行"。每个节点单独测一下,比连起来排错快 10 倍。
  • ❌ 别让"大模型节点"做太多事。一个节点一个职责,输出 JSON 用专门的"分类节点",写文案用专门的"创作节点"。
  • ❌ 别忘了失败兜底。每个外部调用都要假设它会挂
  • ❌ 别忘了用版本管理。重大改动前先备份

十、下一步

工作流让单 Bot 能跑复杂任务。但当任务复杂到一个流程都装不下时,你需要的是 多 Agent 协作——让多个 Bot 像"AI 团队"一样分工合作。

请翻 第八章 多 Agent 与智能体团队