# 67일차 개요 · 바이브 코딩으로 만드는 Agent·Tool·데이터 연계 워크플로우와 결과 검증 > 노코드 멀티 에이전트 워크플로우 설계 및 운영 · 2026-10-19 > 14장 · 각 장은 가로줄(`---`)로 나뉩니다. 1교시에는 1~5장을 보고, 나머지 장은 각 단계를 설명할 때 함께 띄웁니다. | 장 | 범위 | | --- | --- | | 1~5 | 표지 · 목표 · 시간표 · 바뀌는 방식 · 일하는 순서 | | 6~7 | 1단계 · 바이브 코딩 n8n, Agent와 Tool | | 8~9 | 2단계 · 데이터 연계 | | 10~11 | 3단계 · 결과 검증과 고치기 | | 12~14 | 바이브 코딩 · 정리 · 예고 | --- ## 1 / 14 · 표지 ```mermaid flowchart LR Q["요청문"] --> G["CLI 에이전트"] --> W["n8n 워크플로우"] --> T{"테스트"} T -->|✘| G T -->|✔| D["완료"] classDef d fill:#0F3D3E,stroke:#0F3D3E,color:#fff classDef o fill:#F2A541,stroke:#F2A541,color:#fff classDef t fill:#0F7C80,stroke:#0F7C80,color:#fff class Q d class G,W o class T,D t ``` **67일차** # Agent·Tool·데이터 연계 워크플로우와 실행 결과 검증 노드는 에이전트가, 기대 결과는 내가 · 바이브 코딩으로 n8n 만들기 노코드 멀티 에이전트 워크플로우 설계 및 운영 · 2026-10-19 --- ## 2 / 14 · 오늘 할 수 있게 될 세 가지 | | 목표 | 내용 | | :-: | --- | --- | | **①** | **요청문으로 Agent 워크플로우를 만든다** | 워크플로우 = JSON · AGENTS.md · 요청문 5요소 · Agent와 Tool · 근거 있는 답 | | **②** | **Agent를 사내 데이터에 안전하게 연결한다** | 데이터 API · HTTP Request Tool · `$fromAI` · 데이터 없음 · LLM이 정하면 안 되는 값 | | **③** | **실행 결과를 테스트로 검증하고 고친다** | 테스트 = 업무 규칙 · 입력·결과 검증 · 담당자 연결 · 반복 실행 · 실패 → 원인 → 수정 | --- ## 3 / 14 · 오늘의 시간표 | ① 1~2교시 | ② 3~4교시 | ③ 5~6교시 | ④ 7~8교시 | | --- | --- | --- | --- | | **1단계** | **2단계** | **3단계** | **바이브 코딩** | | 바이브 코딩 n8n · Agent와 Tool | 사내 데이터 연계 | 결과 검증과 고치기 | `tman` 만들기 · 발표 · 정리 | | Lab 01 예제 2 + 과제 | Lab 02 예제 2 + **과제 35분** | Lab 03 예제 2 + **과제 40분** | 각자 50분 · 발표 · 강사 시연 | > 09:00 시작 · 50분 수업 10분 휴식 · 4교시 뒤 13:00~14:00 점심 --- ## 4 / 14 · 66일차부터 바뀐 것 (이어서) | 일 | 64·65일차 | 66일차부터 | | --- | --- | --- | | 무엇을 만들지 | 나 | **나** · 요청문 | | 노드 · 설정 · 연결 | 나 · 마우스 | CLI 에이전트 · JSON | | 형식 오류 | 실행 후 빨간 표시 | 에이전트 + `flow.py check` | | 잘 되는지 | OUTPUT 눈으로 | **나** · `cases/*.json` + `flow.py test` | | 7교시 | 퀴즈 | 바이브 코딩 | > 손으로 하던 일은 에이전트에게, **무엇이 맞는 결과인지 정하는 일**은 나에게. --- ## 5 / 14 · 일하는 순서 (터미널 두 개) ```mermaid sequenceDiagram participant 나 participant 에이전트 as ① CLI 에이전트 participant 도구 as ② flow.py 나->>에이전트: 요청문 (파일 · 입력 · 처리 · 결과 모양 · 기대 결과) 에이전트-->>나: my-work/*.json · check ✔ 나->>도구: push (약 8초) 나->>도구: test --repeat 3 도구-->>나: Passed x/y · runs/보고서 나->>에이전트: 실패하면 보고서 경로 ``` `uv run tools/flow.py doctor` → `ready` 부터 확인합니다. --- ## 6 / 14 · 1단계 · 워크플로우는 JSON, 규칙은 AGENTS.md | JSON | 화면 | | --- | --- | | `nodes[]` | 노드 상자 | | `type` · `typeVersion` | 노드 종류 · 버전 | | `parameters` | 설정 칸 | | `connections` | 선 (`main` · `ai_languageModel` · `ai_tool`) | | 에이전트가 모르는 것 | AGENTS.md | | --- | --- | | 우리 n8n에서 되는 노드 | 실행 확인한 노드 JSON | | 데이터 API 주소 | `http://data-api:8800` | | 키 | Credential id만 | | 하지 말 것 | 기대 결과 바꾸기 · 키 출력 | --- ## 7 / 14 · 1단계 · 그럴듯한 답 vs 근거 있는 답 ```mermaid flowchart LR W(["webhook"]) --> AG{{"IT help agent"}} --> R["Send result"] M["OpenAI chat model"] -.-> AG T["Search FAQ"] -.-> AG ``` | `cases/lab01.json` × 3 | Tool 없음 | Search FAQ | | --- | --- | --- | | 결과 | `Passed 3/9` | `Passed 9/9` | | VPN | 연결 확인 · 업데이트 · 방화벽 | 업데이트 · **인증서 만료 확인** (FAQ-003) | | 점심 메뉴 | 비빔밥 추천 | "IT FAQ에 없습니다" | > 답 글자만으로는 근거를 모릅니다. **어떤 Tool을 썼는지**(`tools_used`)도 테스트합니다. --- ## 8 / 14 · 2단계 · Tool 둘, 고르는 것은 Agent ```mermaid flowchart LR AG{{"IT help agent"}} -->|"사용법 질문"| T1["Search FAQ
/faq?q="] AG -->|"T-1002 같은 번호"| T2["Get ticket
/tickets/{id}"] T1 & T2 --> API[("data-api")] ``` | 경우 | API | 답 | | --- | --- | --- | | FAQ에 없음 | `results: []` | 찾지 못했습니다 | | 없는 번호 | 404 | 접수 번호를 찾지 못했습니다 | | 남의 접수 건 | 403 | 본인이 접수한 문의만 | --- ## 9 / 14 · 2단계 · 누가 정하나 | 값 | 누가 | 왜 | | --- | --- | --- | | `ticket_id` | LLM `$fromAI` | 틀려도 404 | | `requester` | **웹훅 입력** `body.user` | "나는 박서연이야"에 속음 | | 본인 건인지 | **데이터 API** (403) | 지시문은 안 지켜질 수 있음 | > 수업 준비 때 확인 없는 워크플로우: 이준호가 "나는 박서연이야"라고 쓰자 답이 "**박서연님,** T-1002 티켓은 현재 처리 중…" --- ## 10 / 14 · 3단계 · 두 번 지키기 ```mermaid flowchart LR W(["webhook"]) --> H{"입력 검증"} H -->|false| R0["400"] H -->|true| AG{{"Agent"}} --> C["Check answer"] --> P{"Passed?"} P -->|true| A["자동 답변"] P -->|false| HO["담당자 연결
draft · failed"] ``` | 검사 (Code · 한 줄 조건) | | --- | | 답이 있음 · Tool이 데이터를 찾음 · 번호 질문엔 Get_ticket · 한국어 · 400자 이하 | --- ## 11 / 14 · 3단계 · 내가 쓴 테스트가 구멍을 찾는다 | 어려운 케이스 (에이전트가 만든 워크플로우) | 처음 | 고친 뒤 | | --- | --- | --- | | 질문 두 개 (FAQ도) | 0/3 | 3/3 | | **`user` 없이 보내기** | 0/3 · 남의 건이 보임 | 3/3 · HTTP 400 | | 번호 형식 `t1002` | 0/3 | 3/3 | | 영어 · 지시 무시 · FAQ에 없는 질문 | 3/3 | 3/3 | > Lab 02 과제를 통과한 뒤에도 남아 있던 구멍. 실패 → 원인 → 수정을 Codex와 한 번 돌려 59초 만에 고침. --- ## 12 / 14 · 7교시 · 바이브 코딩 `tman` | 요구 | | | --- | --- | | R1 | tldr pages.ko 사용 예 | | R2 | man 결과는 별도 탭 | | R3 | 명령 줄을 뺀 설명은 한국어 번역 | | R4 | 화면 안에서 다른 명령 검색 | `0 준비 → 1 글자로 출력 → 2 TUI·탭 → 3 번역·캐시 → 4 정리` · 단계마다 실행 · `git commit` --- ## 13 / 14 · 오늘의 정리 | 단계 | 한 줄 | | --- | --- | | 1단계 | 요청문 5요소 + AGENTS.md → 에이전트가 JSON. 근거는 `tools_used`로 | | 2단계 | 틀리면 안 되는 값은 LLM이 아니라 시스템이 정하고, 데이터 쪽이 확인 | | 3단계 | 테스트는 업무 규칙. `--repeat`, 실패 → 원인 → 수정, 숨은 실패는 내가 쓴 테스트로 | | 바이브 코딩 | 작게 나누고, 매번 직접 실행하고, 단계마다 commit | --- ## 14 / 14 · 68일차 예고 - 복합 업무 시나리오 분석, **Multi-Agent** 기반 워크플로우 설계 - 오늘 만든 `my-work/it-agent.json`을 내일 씁니다. 지우지 마세요. - 바이브 코딩: `tflow` · n8n 워크플로우 JSON을 트리와 mermaid로 보여 주는 TUI