Skip to content

工作流指南

Friday 工作流引擎基于 DAG(有向无环图)实现可视化自动化编排。通过将不同功能的节点以连线方式串联,你可以构建从需求触发到代码交付的完整自动化流程。

核心概念一张图:

1 触发器接收事件2 节点链依次处理3 输出执行结果

前置阅读

如果你还没有部署 Friday,请先阅读快速开始指南完成安装和基础配置。引擎的内部实现见工作流引擎

创建工作流

  1. 进入目标项目页面
  2. 点击左侧导航栏的「工作流」标签
  3. 点击「创建工作流」按钮
  4. 填写工作流名称和描述
  5. 进入可视化编辑器

在可视化编辑器中,你可以通过拖拽方式添加节点,并用连线定义节点之间的执行顺序。每个工作流必须以一个触发器节点作为起点。

配置触发器

触发器是工作流的入口,决定了工作流何时被启动。Friday 提供三种触发器类型:

飞书事件触发(feishu_event_trigger)

监听飞书工作项的状态变更等事件,自动启动工作流。

适用场景: 需求状态流转时自动触发 AI 方案生成、编码等操作。

配置项:

字段必填说明
event_type监听的飞书事件类型(单选)
project_ids要监听的 Friday 项目 ID 列表,留空监听所有项目
filter_project_key飞书项目 Key(高级用法:直接指定飞书项目标识)
filter_work_item_type仅处理指定类型的工作项(story/task/bug/epic/feature)
filter_status状态过滤,仅在指定状态变更时触发
filter_status_custom自定义状态 key,多个用逗号分隔
exclude_project_ids要排除的项目 ID 列表
exclude_work_item_pattern排除工作项(包含匹配):工作项名称包含此文本时被排除
exclude_work_item_regex排除工作项(正则匹配):使用正则表达式匹配要排除的工作项

配置示例:

json
{
  "event_type": "work_item_status_changed",
  "filter_status": ["开发中"],
  "filter_work_item_type": "story",
  "exclude_work_item_pattern": "测试",
  "exclude_work_item_regex": "^\\[SKIP\\]"
}

手动触发(manual_trigger)

通过 Web UI 按钮或 API 调用手动启动工作流。

适用场景: 调试、测试,或需要人工决定何时执行的场景。

配置项:

字段必填说明
input_schema定义触发时用户需要输入的参数

配置示例:

json
{
  "input_schema": {
    "type": "object",
    "properties": {
      "work_item_id": { "type": "string", "description": "工作项 ID" },
      "branch_name": { "type": "string", "description": "目标分支" }
    },
    "required": ["work_item_id"]
  }
}

Webhook 触发(webhook_trigger)

接收外部系统发送的 HTTP POST 请求来启动工作流。

适用场景: 与 CI/CD、第三方系统集成。

配置项:

字段必填说明
path自定义的 Webhook 路径后缀
methodHTTP 方法
secret用于验证请求的签名密钥
response_modeimmediate(立即响应)或 wait(等待工作流完成后响应)

配置示例:

json
{
  "path": "deploy-trigger",
  "secret": "your-webhook-secret",
  "response_mode": "immediate"
}

配置节点

节点是工作流的核心执行单元。每个节点接收上游输出作为输入,处理后将结果传递给下游节点。

AI 节点组

AI 节点利用大语言模型完成智能化任务,是 Friday 的核心能力。

AI 方案生成(ai_plan_generation)

自动分析需求并生成结构化技术方案,支持跨仓库分析。

配置项说明
modelLLM 模型,推荐 claude-sonnet-4-20250514
feishu_field_key技术方案回填到飞书的目标字段 Key
auto_transition_status方案生成后自动将工作项流转到指定状态

推荐配置

开启 auto_transition_status 并设为「待审核」,方案生成后自动流转状态,减少人工操作。

方案审批(ai_plan_approval)

审批技术方案,支持通过飞书群发送审批通知。

配置项说明
chat_id飞书群 ID,用于发送审批通知

AI 编码指派器(ai_coding_dispatcher)

根据技术方案自动创建编码任务,将方案拆分为可执行的编码单元。

配置项说明
merge_same_branch是否将目标相同仓库/分支的任务合并为单个编码任务(推荐开启)

AI 编码执行(ai_coding)

由 Runner 在 Docker 容器中隔离执行 AI 编码任务,自动创建 MR/PR。

配置项说明
container_imageSubAgent 容器镜像
timeout_seconds单个仓库编码超时(秒)
chat_id飞书群 ID,用于发送结果通知和分支确认

执行模式

ai_codingai_code_reviewrunner_dispatched 模式,需要 Runner 在线才能执行。其他 AI 节点在 Server 端本地执行。

AI 代码审查(ai_code_review)

对 AI 编码结果进行多维度审查,支持多轮迭代审查。

配置项说明
model审查使用的 LLM 模型
chat_id飞书群 ID,用于发送审查结果
max_iterationsAgent 审查迭代上限
timeout_hours最大等待时间(小时)

AI Prompt(ai_prompt)

通用 AI 调用节点,可自定义 system prompt 和 user prompt,灵活处理各种文本任务。

配置项说明
system_prompt系统提示词,定义 AI 角色和行为
user_prompt用户提示词,支持模板变量引用上游数据
modelLLM 模型

召回上下文(context_retrieval)

从向量数据库检索与当前任务相关的上下文信息,为后续 AI 节点提供参考资料。

AI 变量提取(ai_variable_extractor)

利用 AI 从非结构化文本中提取结构化变量,例如从需求描述中提取关键参数。

控制流节点组

控制流节点用于编排执行顺序和分支逻辑。

条件分支(condition)

根据表达式结果选择不同的执行路径。

配置项说明
expression条件表达式,返回 true 或 false
true_branch条件为 true 时的下游节点
false_branch条件为 false 时的下游节点

延迟(delay)

暂停工作流执行指定的时间。

配置项说明
duration_seconds延迟时间(秒)

并行分支 / 汇合(parallel / join)

将工作流分为多个并行执行的分支,并在所有分支完成后汇合继续执行。

配置项说明
branches并行分支配置

ForEach 循环(foreach)

对列表中的每个元素执行操作,支持串行和并发两种模式,适合批量处理多个仓库、多个工作项的场景。

配置项说明
list_source列表数据来源,支持模板变量(如 {{input.items}}
execution_modesequential(串行)或 parallel(并发)
max_concurrency并发模式下的最大并发数(1-50,默认 5)
on_iteration_errorabort(任一失败终止)或 continue(记录错误继续)

变量聚合(aggregate)

把多个上游节点的输出汇总成一个对象,常放在并行分支之后整理数据。

等待飞书字段(wait_feishu_field)

暂停工作流,等待飞书工作项指定字段变更为期望值后继续执行。

配置项说明
field_key等待的飞书字段 Key
expected_value期望的字段值
timeout_seconds超时时间(秒),超时后工作流失败

典型用法

用于「AI 方案生成」后等待人工审核通过,再继续后续编码流程。推荐设置 timeout_seconds 为 604800(7 天)。

人工审批(human_approval)

暂停工作流等待指定审批人操作,审批通过后继续执行。

配置项说明
approvers审批人列表
timeout审批超时时间

操作节点组

操作节点执行具体的代码管理和数据处理操作。

创建分支(create_branch)

在关联的代码仓库中创建新分支。

配置项说明
branch_name_template分支名称模板,支持变量引用

创建 PR(create_pr)

在代码仓库中创建 Pull Request / Merge Request。

配置项说明
title_templatePR 标题模板
description_templatePR 描述模板
target_branch目标分支

合并 PR(merge_pr)

合并已创建的 Pull Request。

配置项说明
merge_method合并方式:mergesquashrebase

获取空间信息(fetch_space_info)

获取项目空间的配置信息,包括关联仓库、飞书配置等数据。

配置项说明
space_identifier空间标识
identifier_type标识类型
include_repositories是否返回空间关联的仓库列表

代码执行(code)

在沙箱中执行一段 Python 代码处理上游数据,适合表达式不够用的数据加工场景。代码在执行前会经过 AST 校验,禁止 import、文件与网络访问等危险语法。

配置项说明
code要执行的 Python 代码
timeout_seconds执行超时(秒)

变量提取(variable_extractor)

基于正则表达式或 JSONPath 从上游数据中提取变量。

集成节点组

集成节点用于与外部系统交互。

获取工作项详情(fetch_work_item)

从飞书项目空间拉取工作项的详细信息。

HTTP 请求(http_request)

发送自定义 HTTP 请求,与任意外部 API 集成。

配置项说明
methodHTTP 方法(GET/POST/PUT/DELETE)
url请求 URL,支持模板变量
headers请求头
body请求体

飞书通知(notify_feishu)

向飞书群发送消息通知。

配置项说明
chat_id飞书群 ID
message_template消息模板,支持变量引用

获取群聊 / 加入群聊(fetch_group_chat / join_group_chat)

fetch_group_chat 查找与工作项关联的飞书群聊并返回群信息;join_group_chat 把 Friday 机器人邀请进指定群聊。两者常配合使用:先找到需求对应的群,再确保机器人在群里,后续的提问卡片和结果通知才发得出去。

配置项说明
chat_id飞书群 ID,留空时可通过工作项信息查找
project_key / work_item_id通过工作项定位群聊(fetch_group_chat

群聊提问(group_chat_question)

在飞书群里发送提问卡片,暂停工作流等待群成员回答后继续。适合执行中缺信息(缺字段、缺截图、需要确认分支)的场景。

配置项说明
chat_id飞书群 ID
question问题内容,支持模板变量
options可选项列表(生成按钮卡片)
mention_user_id@ 指定成员
max_rounds最大追问轮数

MCP 部署(mcp_deploy)

将服务部署到 MCP(Model Context Protocol)服务。

推荐工作流模板

需求到 PR 自动化工作流

这是 Friday 最典型的使用场景:从飞书需求状态变更自动触发,经过 AI 方案生成、人工审核、AI 编码,最终自动创建 PR。

1 飞书事件触发2 AI 方案生成3 等待飞书字段(审核通过)4 AI 编码指派器

推荐节点配置:

  1. 飞书事件触发

    • 事件类型:工作项状态变更
    • 状态过滤:进入「开发中」状态时触发
  2. AI 方案生成

    • 模型:claude-sonnet-4-20250514(推荐)
    • 飞书字段 Key:技术方案回填的目标字段
    • 自动流转状态:开启,目标状态「待审核」
  3. 等待飞书字段

    • 等待条件:审核状态字段变为「通过」
    • 超时时间:7 天(604800 秒)
  4. AI 编码指派器

    • 合并同分支任务:开启(推荐)

扩展工作流

你可以在 AI 编码指派器之后继续添加 ai_codingai_code_reviewcreate_pr 节点,实现从需求到代码审查的完整自动化。

运行与调试

手动运行

  1. 进入工作流详情页
  2. 点击「手动运行」按钮
  3. 如果工作流使用 manual_trigger,填入测试数据
  4. 点击「执行」开始运行

飞书事件触发运行

  1. 确保飞书 Webhook 已正确配置(参考飞书集成
  2. 在飞书项目空间中操作工作项(如变更状态)
  3. Friday 自动接收事件并启动匹配的工作流

执行监控

工作流运行后,你可以通过执行详情页实时监控进度:

  • DAG 视图: 以图形方式展示各节点执行状态
    • 灰色 — 待执行
    • 蓝色 — 执行中
    • 绿色 — 成功
    • 红色 — 失败
  • AI 透视: 查看 AI 节点的输入 prompt 和输出内容,了解 AI 的决策过程
  • 执行日志: 查看每个节点的详细日志、输入输出数据和执行耗时

故障排查

节点执行失败:

  • 点击失败节点查看错误信息
  • 修复问题后,可从失败节点重新运行

工作流卡住:

  • 检查等待节点(如 wait_feishu_fieldhuman_approval)的条件是否满足
  • 确认超时时间设置是否合理

Runner 相关节点失败:

附录:节点类型速查表

以下表格列出 Friday 全部 32 种节点类型。server 表示在 Server 端执行,runner 表示需要 Runner 在线执行。

node_type显示名称分类执行模式阻塞
feishu_event_trigger飞书事件触发触发器节点server
manual_trigger手动触发触发器节点server
webhook_triggerWebhook 触发触发器节点server
ai_code_reviewAI 代码审查AI 节点runner
ai_codingAI 编码执行AI 节点runner
ai_coding_dispatcherAI 编码指派器AI 节点server
ai_plan_approval方案审批AI 节点server
ai_plan_generationAI 方案生成AI 节点server
ai_promptAI PromptAI 节点server
ai_variable_extractorAI 变量提取AI 节点server
context_retrieval召回上下文AI 节点server
aggregate变量聚合控制流节点server
condition条件分支控制流节点server
delay延迟控制流节点server
foreachForEach 循环控制流节点server
human_approval人工审批控制流节点server
join并行汇合控制流节点server
parallel并行分支控制流节点server
wait_feishu_field等待飞书字段控制流节点server
code代码执行操作节点server
create_branch创建分支操作节点server
create_pr创建 PR操作节点server
fetch_space_info获取空间信息操作节点server
merge_pr合并 PR操作节点server
variable_extractor变量提取操作节点server
fetch_group_chat获取群聊集成节点server
fetch_work_item获取工作项详情集成节点server
group_chat_question群聊提问集成节点server
http_requestHTTP 请求集成节点server
join_group_chat加入群聊集成节点server
mcp_deployMCP 部署集成节点server
notify_feishu飞书通知集成节点server

基于 MIT License 发布