66일차 새 방식(CLI 코딩 에이전트로 n8n)으로 교체, 67일차 교안·실습 추가

This commit is contained in:
mcchae committed 2026-10-18 09:47:41 +09:00
1 parent d7dc9dd68a
commit bf55eaf772
120 files changed
+7398 -5988

No files matched your search

+220
View File
@@ -0,0 +1,220 @@
# 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 만들기
<sub>노코드 멀티 에이전트 워크플로우 설계 및 운영 · 2026-10-19</sub>
---
## 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<br/>/faq?q="]
AG -->|"T-1002 같은 번호"| T2["Get ticket<br/>/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["담당자 연결<br/>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