> For the complete documentation index, see [llms.txt](https://help.genesis.autify.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.genesis.autify.com/features-ko/workflow/workflow-creation.md).

# 워크플로 작성·편집

이 문서에서는 Autify Genesis의 워크플로 기능을 설명합니다. 워크플로를 사용하면 AI 에이전트를 조합하여 QA 업무를 자동화할 수 있습니다.

## 워크플로 목록 확인과 관리

워크플로 목록에서는 워크플로의 이름·설명·레이블·실행 횟수·마지막 실행 일시와 상태를 한눈에 확인할 수 있습니다. 워크스페이스를 열면 처음에 **워크플로** 탭이 표시됩니다.

각 워크플로 행에서 다음 작업을 실행할 수 있습니다.

| 작업 | 내용                         |
| -- | -------------------------- |
| 실행 | 워크플로를 실행한다                 |
| 복제 | 기존 워크플로를 복사하여 새 워크플로를 작성한다 |
| 보관 | 더 이상 필요 없는 워크플로를 목록에서 숨긴다  |

{% hint style="info" %}
보관한 워크플로는 삭제되지 않습니다. 실행 기록도 유지됩니다.
{% endhint %}

{% hint style="warning" %}
프리셋 워크플로(템플릿)는 보관할 수 없습니다. 사용자 지정하려면 **복제**하십시오.
{% endhint %}

워크스페이스에 아직 워크플로가 없는 경우, 목록에는 템플릿 갤러리와 **처음부터 만들기** 카드가 표시됩니다. 갤러리에는 버그 트리아지, 탐색적 테스트 차터, 회귀 테스트 계획, 결함 분석, 릴리스 노트 작성, 테스트 계획 작성 등의 스타터 템플릿이 나열됩니다.

### 워크플로 검색하기

목록 화면 상단의 검색 바에 키워드를 입력하면 워크플로의 이름이나 설명 등으로 좁힐 수 있습니다. **레이블**을 사용해 같은 레이블이 붙은 워크플로만 볼 수도 있습니다.

## 워크플로 작성하기

워크플로는 처음부터 만드는 방법, YAML 파일 또는 `.genesisworkflow` 번들에서 가져오는 방법, 템플릿에서 작성하는 방법을 지원합니다.

### 새 워크플로 작성하기

1. 워크플로 목록 화면 오른쪽 위의 **새 워크플로**를 클릭하십시오.
2. 작성 방법을 선택하십시오.

| 작성 방법    | 내용                                                |
| -------- | ------------------------------------------------- |
| 처음부터 만들기 | 빈 워크플로를 작성하고 블록을 추가하면서 구축합니다                      |
| 가져오기     | YAML 파일 또는 `.genesisworkflow` 번들에서 워크플로 정의를 가져옵니다 |
| 템플릿에서 시작 | 기존 템플릿을 복제하여 작성합니다                                |

<figure><img src="/files/WEkzwe6OJ4zCsQWasjjR" alt="워크플로 생성 방법 스크린샷"><figcaption><p>워크플로 생성 방법</p></figcaption></figure>

{% hint style="info" %}
워크플로 작성 대화 상자의 프롬프트란에 하고 싶은 작업을 입력하면, 새로 열린 워크플로의 **AI 빌더**에 자동 입력되어 AI가 빈 캔버스에서 워크플로 구축을 시작합니다. 빈 워크플로에는 기본 이름도 자동으로 지정되므로, 바로 저장한 뒤 나중에 이름을 바꿀 수 있습니다.
{% endhint %}

채팅에서 워크플로 작성 액션을 사용할 수 있는 경우에는 워크플로 목록을 열지 않아도 채팅에서 같은 작성 흐름을 시작할 수 있습니다. 액션을 선택하면 새 워크플로가 열리므로, 이름 확인과 편집을 평소의 편집기에서 이어서 진행할 수 있습니다.

### 파일에서 가져오기

1. **새 워크플로**를 클릭하십시오.
2. **가져오기**를 클릭하십시오.
3. `.yaml`, `.yml`, 또는 `.genesisworkflow` 파일을 선택하십시오. 파일을 드래그 앤 드롭하여 불러올 수도 있습니다.

`.genesisworkflow` 번들을 가져오면 워크플로 정의뿐 아니라 워크플로 안에서 참조하는 파일도 함께 옮길 수 있습니다.

## 워크플로 편집하기

워크플로 이름을 클릭하면 편집기 화면이 열립니다. 편집기는 헤더, 중앙의 캔버스, 오른쪽의 **AI 빌더** 사이드 패널로 구성되어 있습니다. 블록 설정은 캔버스 위에 플로팅 패널로 열리므로, 캔버스를 보면서 편집할 수 있습니다.

<figure><img src="/files/N16k1AMrvz6HtaD8SJKN" alt="워크플로 편집기의 화면 구성 스크린샷"><figcaption><p>워크플로 편집기의 화면 구성</p></figcaption></figure>

### 워크플로 세부 정보 변경하기

헤더의 워크플로 이름 옆에 있는 편집 아이콘을 클릭하면 **워크플로 세부 정보** 대화 상자가 열립니다.

| 항목  | 내용                                          |
| --- | ------------------------------------------- |
| 이름  | 워크플로의 표시 이름                                 |
| 설명  | 워크플로의 설명문                                   |
| 아이콘 | 목록에 표시되는 아이콘                                |
| 레이블 | 워크플로를 정리하고 검색하기 위한 레이블입니다. 여러 개를 설정할 수 있습니다 |

### 캔버스 조작하기

캔버스 아래의 도구 모음에서 다음 작업을 실행할 수 있습니다.

| 작업          | 내용                          |
| ----------- | --------------------------- |
| 블록 추가       | 블록 선택 패널을 연다                |
| 미리보기        | 워크플로 전체를 미리보기 실행한다          |
| 축소          | 캔버스를 축소한다                   |
| 확대          | 캔버스를 확대한다                   |
| 캔버스를 가운데 배치 | 모든 블록이 화면 안에 들어오도록 표시를 조정한다 |
| 실행 취소       | 직전 작업을 취소한다                 |
| 다시 실행       | 취소한 작업을 다시 실행한다             |

### AI 빌더 사용하기

오른쪽의 **AI 빌더**에 작성하거나 변경하고 싶은 내용을 자연어로 입력하면, AI가 워크플로를 자동으로 구축하거나 편집합니다.

{% hint style="success" %}
여러 블록을 선택한 상태로 입력하면, 선택 중인 블록에 대해 작업을 좁힐 수 있습니다.
{% endhint %}

<figure><img src="/files/epgnSmpTYuQZdvAvQhfC" alt="AI 빌더 스크린샷"><figcaption><p>AI 빌더</p></figcaption></figure>

### 블록 추가하기

워크플로는 블록을 연결하여 구축합니다. 캔버스 위의 **블록 추가**를 클릭하면 블록 선택 패널이 열립니다.

추가할 수 있는 블록 종류는 다음과 같습니다.

| 블록 유형   | 내용                                                                           |
| ------- | ---------------------------------------------------------------------------- |
| AI 에이전트 | LLM을 사용하여 텍스트나 구조화된 출력을 생성합니다. **AI 에이전트 템플릿**에서 용도에 맞는 AI 에이전트를 추가할 수도 있습니다 |
| 조건부     | 조건을 사용하여 실행을 분기합니다                                                           |
| 워크플로 호출 | 다른 워크플로를 단계로 실행합니다                                                           |

<figure><img src="/files/Me6v5I4pkZW2RGiBwbwC" alt="블록 선택 패널 스크린샷"><figcaption><p>블록 선택 패널</p></figcaption></figure>

AI 에이전트 블록의 설정 방법은 [AI 에이전트 블록](/features-ko/workflow/ai-agent-block.md) 참조.

연결한 상위 블록의 출력은 AI 에이전트 블록에 자동으로 컨텍스트로 전달됩니다. 사용자 입력이나 명시적으로 설정한 입력을 참조하려면 `{{변수명}}`을 사용합니다.

워크플로 중간에 블록을 삽입하려면 삽입할 위치의 **블록 추가**를 클릭하십시오.

블록 설정을 편집할 때는 블록을 선택하고 노드 또는 선택 상태에서 **블록 설정**을 클릭하십시오. 설정 패널은 캔버스 위에 열립니다.

### 조건부 블록 설정하기

| 설정 항목       | 내용                                               |
| ----------- | ------------------------------------------------ |
| 이름          | 블록의 표시 이름                                        |
| 설명          | 블록의 설명문                                          |
| 조건 모드       | AI(LLM으로 평가) 또는 식(JQ 식으로 평가)을 선택합니다              |
| 조건 프롬프트     | AI 모드인 경우, AI가 true 또는 false로 평가할 조건을 기술합니다      |
| 조건 모델       | 조건부 블록에서 true 또는 false를 판정하기 위해 사용할 AI 모델을 선택합니다 |
| 사고 강도       | 지원되는 추론 모델에서 AI 모드의 내부 추론량을 조절합니다                |
| JQ 식        | 식 모드인 경우, 입력에 대해 true 또는 false를 평가하는 JQ 식을 입력합니다 |
| Then 블록     | 조건이 true인 경우에 실행할 블록을 지정합니다                      |
| Else 블록     | 조건이 false인 경우에 실행할 블록을 지정합니다(선택 사항)              |
| 최대 루프 반복 횟수 | 분기 대상이 상위 블록인 경우, 대체 분기로 전환하기까지의 최대 반복 횟수를 설정합니다 |

조건부 블록에서는 AI 모드에서 연결한 상위 블록의 출력이 자동으로 컨텍스트로 전달됩니다. 식 모드에서는 상위 블록이 1개이면 `.input`, 여러 개인 경우는 각 상위 블록의 ID를 토대로 한 `.review_result`와 같은 변수명으로 출력을 참조할 수 있습니다. 블록 ID에 `-`나 `.`이 포함된 경우는 `_`로 치환되어 처리됩니다.

선택한 모델이 지원하는 경우, **사고 강도**를 조절해 응답 속도와 추론 깊이의 균형을 정할 수 있습니다. **기본값**으로 두면 모델의 권장 설정이 사용됩니다.

**JQ 식에 대해**

JQ 식은 블록의 출력(JSON 형식의 데이터)에서 값을 꺼내거나 조건을 판정하기 위한 기술 방식입니다. 맨 앞의 `.`은 "이 데이터의"를 의미하며, 그 뒤에 필드명을 이어 붙임으로써 특정 값을 참조할 수 있습니다.

| 작성 예              | 내용                             |
| ----------------- | ------------------------------ |
| `.status == "완료"` | status 필드의 값이 "완료"와 일치하는지 판정한다 |
| `.count > 0`      | count 필드의 값이 0보다 큰지 판정한다       |
| \`.items          | length > 0\`                   |
| `.result != null` | result 필드가 비어 있지 않은지 판정한다      |

{% hint style="warning" %}
식 모드에서 사용하는 JQ 식은 반드시 true 또는 false 중 하나를 반환하는 내용이어야 합니다.
{% endhint %}

### 워크플로 호출 블록 설정하기

워크플로 호출 블록을 선택하고, 블록 설정 패널의 **세부 정보** 탭에서 다음을 설정합니다.

| 설정 항목 | 내용                       |
| ----- | ------------------------ |
| 이름    | 블록의 표시 이름                |
| 설명    | 블록의 설명                   |
| 워크플로  | 자식 워크플로로 실행할 워크플로를 선택합니다 |

{% hint style="warning" %}
자식 워크플로로 선택한 워크플로가 보관 또는 삭제된 경우, 이 블록에 검증 오류가 표시됩니다. 다른 워크플로를 다시 선택하십시오.
{% endhint %}

자식 워크플로에 사용자 입력이 있으면 같은 **세부 정보** 탭의 **입력**에서 호출별 값을 설정할 수 있습니다. 각 입력에는 자식 워크플로에 저장된 값이 먼저 표시되며, 그대로 두면 이 호출에도 그 저장값이 사용됩니다. 이 호출에만 다른 값을 쓰려면 해당 입력을 덮어쓰고, 재설정하려면 **워크플로에 저장된 값으로 되돌리기**를 선택하십시오.

### 사용자 입력 설정하기

사용자 입력은 워크플로 실행 시에 사용자가 매번 변경할 수 있는 동적인 값입니다.

1. 헤더의 **사용자 입력**을 클릭하십시오.
2. **사용자 입력 추가**를 클릭하여 입력 항목을 추가하십시오.
3. 각 입력 항목의 유형(텍스트 / 숫자 / 파일)을 설정하십시오.

추가한 사용자 입력은 프롬프트 안에서 `{{변수명}}` 형식으로 참조할 수 있습니다.

<figure><img src="/files/MKuMF8ok7BNrarOzjTJM" alt="사용자 입력 설정 스크린샷"><figcaption><p>사용자 입력 설정</p></figcaption></figure>

### 블록 조작하기

캔버스 위에서 블록을 우클릭하면 다음 작업을 실행할 수 있습니다. 여러 블록을 선택한 상태로 조작할 수도 있습니다.

블록을 우클릭하면 그 블록이 선택된 상태로 메뉴가 열립니다. 메뉴의 맨 앞에는 선택 중인 블록 이름, 또는 여러 개 선택 시의 선택 개수가 표시됩니다. 아무것도 없는 캔버스 부분을 우클릭하면 선택이 해제되어 **붙여넣기** 등의 캔버스 작업을 열 수 있습니다.

| 작업     | 내용                       |
| ------ | ------------------------ |
| 복사     | 선택한 블록을 클립보드에 복사한다       |
| 잘라내기   | 선택한 블록을 잘라낸다             |
| 붙여넣기   | 복사 또는 잘라낸 블록을 캔버스에 붙여넣는다 |
| 삭제     | 선택한 블록을 삭제한다             |
| 새 워크플로 | 선택한 블록을 새 워크플로로 분할한다     |

{% hint style="warning" %}
워크플로에는 적어도 1개의 블록이 필요합니다. 마지막 1개의 블록을 잘라낼 수는 없습니다.
{% endhint %}

### 워크플로 저장하기

변경 내용은 헤더의 **저장**을 클릭하면 저장됩니다. 저장하지 않은 변경 사항이 있는 경우, 화면을 떠날 때 대화 상자가 표시되어 저장할지 선택할 수 있습니다.

{% hint style="info" %}
검증 오류가 있는 상태에서도 저장은 가능합니다. 단, 오류를 모두 수정할 때까지 워크플로를 실행할 수 없습니다.
{% endhint %}

### 워크플로 내보내기

편집기 오른쪽 위의 **기타 작업**에서 **내보내기**를 클릭하면, 워크플로를 `.genesisworkflow` 번들로 다운로드할 수 있습니다. 프롬프트에서 참조하는 파일이 있는 경우에는 그 파일도 워크플로 정의와 함께 포함됩니다.

### 워크플로 트리거 설정하기

워크플로 트리거는 수동으로 실행 버튼을 누르지 않고, 외부 시스템(API), 정기 일정, GitHub 이벤트(push, Pull Request 등)에서 워크플로를 자동 실행하기 위한 설정입니다.

자세한 내용은 "워크플로 실행"의 [트리거 설정](https://help.genesis.autify.com/features-ko/workflow/pages/YCR5UwnW07WCEID2QF2z#트리거-설정) 참조.

## 검토 기능

블록 설정 패널의 **검토 필수**를 활성화하면, 그 블록의 실행 후에 처리가 일시 중지되어 사람에 의한 검토를 기다립니다. 검토자는 다음 작업을 선택할 수 있습니다.

{% hint style="info" %}
검토 필수는 AI 에이전트 블록에서 사용할 수 있습니다.
{% endhint %}

| 작업        | 내용                               |
| --------- | -------------------------------- |
| 승인        | 출력을 그대로 다음 블록으로 전달하여 처리를 재개한다    |
| 변경사항으로 승인 | 출력을 수정한 후에 다음 블록으로 전달하여 처리를 재개한다 |
| 거부        | 워크플로 실행을 중지한다                    |

{% hint style="info" %}
검토 대기 중인 실행은 승인 또는 거부 작업이 이루어질 때까지 처리가 멈춥니다.
{% endhint %}

## 문제 해결

### 검증 오류

| 상황                             | 원인                           | 해결 방법                                   |
| ------------------------------ | ---------------------------- | --------------------------------------- |
| 워크플로를 실행할 수 없음                 | 검증 오류가 남아 있음                 | 헤더에 표시되는 오류 건수를 클릭하여 오류 내용을 확인하고 수정하십시오 |
| "순환 종속성이 감지되었습니다"              | 블록이 자기 자신에 의존하도록 연결되어 있음     | 블록 연결을 재검토하여 순환하지 않도록 수정하십시오            |
| "존재하지 않는 블록에 의존합니다"            | 참조 대상 블록이 삭제되어 있음            | 입력의 참조 대상을 재설정하십시오                      |
| "조건부 블록의 Then／Else 블록이 동일함"    | Then과 Else에 같은 블록이 지정되어 있음   | 서로 다른 블록을 지정하십시오                        |
| "자식 워크플로를 선택해야 합니다"            | 워크플로 호출 블록에 워크플로가 설정되어 있지 않음 | 블록 설정 패널에서 워크플로를 선택하십시오                 |
| "선택한 자식 워크플로를 더 이상 사용할 수 없습니다" | 설정한 워크플로가 보관 또는 삭제되어 있음      | 다른 워크플로를 다시 선택하십시오                      |

### 모델 오류

| 상황                   | 원인                           | 해결 방법         |
| -------------------- | ---------------------------- | ------------- |
| "선택한 모델을 사용할 수 없습니다" | 선택한 모델이 활성화된 프로바이더에서 제공되지 않음 | 다른 모델을 선택하십시오 |
