전체 글
-
이코에코(Eco²) Agent #6: Interactive SSE (Human-in-the-Loop)이코에코(Eco²)/Agent 2026. 1. 14. 01:38
위치 정보가 필요할 때만 권한 요청하는 대화형 SSE 패턴Agent #5에서 Checkpointer를 다뤘습니다. 이번 포스팅에서는 서브에이전트가 추가 정보를 필요로 할 때 사용자에게 요청하는 Interactive SSE 패턴을 Clean Architecture로 설계합니다.문제: 위치 정보를 언제 요청할까?기존 방식의 한계┌──────────────────────────────────────────────┐│ 방안 A: 항상 위치 포함 │├──────────────────────────────────────────────┤│ ││ 사용자: "페트병 어떻게 버려?" ..
-
이코에코(Eco²) Agent #5: Checkpointer & State이코에코(Eco²)/Agent 2026. 1. 13. 20:34
Scan의 Stateless Reducer vs Chat의 Cache-Aside Checkpointer업데이트: Cache-Aside 패턴 적용으로 Hot session은 Redis에서 응답 Agent #4에서 Event Relay 계층을 다뤘습니다. 이번 포스팅에서는 멀티턴 대화 컨텍스트를 유지하는 Checkpointer 구현을 다룹니다.Scan vs Chat: 상태 관리의 차이Scan: Stateless Reducer PatternClean Architecture #14에서 Scan은 Stateless Reducer Pattern으로 체크포인팅을 직접 구현했습니다.┌─────────────────────────────────────────────────────────────┐│ ..
-
이코에코(Eco²) Agent #4: Event Relay & SSE이코에코(Eco²)/Agent 2026. 1. 13. 20:10
Chat Worker에서 발행한 이벤트가 클라이언트까지 도달하는 Event Relay 계층 설계Agent #3에서 Taskiq 기반 비동기 큐잉을 다뤘습니다. 이번 포스팅에서는 Chat Worker가 발행한 이벤트가 클라이언트의 SSE 연결까지 전달되는 Event Relay 계층을 설계합니다.문제: Chat Worker와 클라이언트 사이의 간극Chat Worker Client │ │ │ Redis Streams (XADD) │ │ chat:events:{job_id} │ ▼ ..
-
이코에코(Eco²) Agent #3: Taskiq 기반 비동기 큐잉 시스템이코에코(Eco²)/Agent 2026. 1. 13. 19:08
Chat API → Chat Worker 간 메시지 큐잉 설계와 Taskiq 선택 이유 Chat 서비스는 LLM 기반 대화형 AI입니다. 응답 생성에 수 초~수십 초가 소요되므로 동시성 확보를 위한 비동기 처리가 필수적입니다. 이 문서에서는 Chat API와 Chat Worker 간의 non-blocking 및 태스크 단위 큐잉을 풀어낸 과정을 설명합니다.전체 아키텍처┌─────────────────────────────────────────────────────────────────────────┐│ Client (Mobile/Web) │└───────────────────────────────┬────────..
-
이코에코(Eco²) Agent #2: Subagent 기반 도메인 연동이코에코(Eco²)/Agent 2026. 1. 13. 18:32
1. 배경1.1 문제 정의Chat Worker의 LangGraph 파이프라인에서 다른 도메인 API를 호출해야 합니다.Chat Subagent의 Character/Location 도메인 연동, gRPC 구현을 다룹니다.Intent Router │ ├─ waste → RAG (로컬) ├─ character → ??? (Character API 호출 필요) ├─ location → ??? (Location API 호출 필요) └─ general → LLM1.2 HTTP vs gRPC지연 시간~5-10ms~1-3ms페이로드텍스트 바이너리타입 안전성런타임컴파일 타임적합 환경외부 API내부 통신선택: gRPC — 내부 마이크로서비스 통신에 최적화1.3 Direct Call ..
-
이코에코(Eco²) Agent #1: Domain Layer이코에코(Eco²)/Agent 2026. 1. 13. 02:24
Chat Worker의 Domain Layer — 외부 의존성 없는 순수 비즈니스 개념 정의 항목값작성일2026-01-14 (업데이트)커밋32af77171. 왜 Domain Layer부터 시작하는가?Clean Architecture에서 Domain Layer는 가장 안쪽 원입니다.┌─────────────────────────────────────────┐│ Infrastructure ││ ┌───────────────────────────────┐ ││ │ Application │ ││ │ ┌───────────────────┐ │ ││ │ │ Domain ..
-
이코에코(Eco²) Agent #0: LangGraph 기반 클린 아키텍처 초안이코에코(Eco²)/Agent 2026. 1. 13. 02:04
Intent-Routed Workflow with Subagent 패턴으로 설계한 LangGraph 기반 Chat 서비스 아키텍처 초안SSE 스트리밍, 컨텍스트 격리, 멀티 모델 지원1. 배경과 목표1.1 기존 구조의 한계기존 domains/chat 서비스는 다음과 같은 문제가 있었습니다:문제설명단일 파이프라인이미지/텍스트 구분 없이 동일한 처리 흐름의도 분류 부재모든 요청을 폐기물 질문으로 처리UX 피드백 없음처리 진행 상황을 사용자에게 알릴 수 없음모델 하드코딩OpenAI만 지원, 멀티 모델 확장 어려움1.2 목표LangGraph 도입: 조건부 분기가 가능한 파이프라인 구축Intent-Routed + Subagent: 의도 기반 분기 + 복잡한 질문 컨텍스트 격리SSE 스트리밍: 실시간 진행 상황 및..
-
ADR: Workflow Pattern Decision for Chat이코에코(Eco²) Context/Plans 2026. 1. 13. 01:56
LangGraph Workflow/Agent 패턴 분석을 통한 Chat 서비스 아키텍처 선택참고: LangGraph Workflows + Agents 1. 개요1.1 Workflow vs Agent흐름사전 정의된 코드 경로LLM이 동적으로 결정예측 가능성높음낮음디버깅용이어려움적합한 작업구조화된 작업탐색적 작업Workflow:A → B → C (고정된 경로)Agent:LLM ⇄ Tool ⇄ LLM (동적 루프)1.2 Chat 서비스 요구사항이미지 분류폐기물 이미지 → 분류 → 규정 → 답변필수텍스트 질의의도 분류 → RAG → 답변필수실시간 피드백SSE로 진행 상황 스트리밍필수멀티 모델GPT, Gemini 지원필수복잡한 질의멀티 카테고리 질문 처리향후2. LangGraph 패턴 분석2.1 Prompt Ch..