Files
pipeline/OPENCLAW_INTEGRATION.md
T
chpark 37cac72085 refactor: Pipeline 네이밍 통일 및 AI 에이전트/장비 연결 기능 추가
- Docker/K8s 배포 설정을 pipeline-backend/pipeline-front로 통일
- 네임스페이스, 서비스, PVC 등 k8s 리소스명 pipeline-* 로 변경
- AI 에이전트 관리 기능 추가 (에이전트, 그룹, 프로바이더, 대화, API 키, 지식베이스)
- 장비 연결 관리 기능 추가 (PLC/Modbus/OPC-UA/MQTT)
- 배치 스케줄러에 AI agent/device collection/crawling 타입 추가
- 배치 편집 UI 개선 (6가지 실행 방식 지원)
- 회사별 페이지(COMPANY_*) 제거 및 AdminPageRenderer 최적화
- 메뉴 재구성: 장비 연결 관리 시스템관리로 이동, 에이전트 오케스트레이션으로 개명
- ai-assistant 디렉토리 제거 (backend-node로 통합)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 12:14:50 +09:00

5.8 KiB

OpenClaw 멀티 에이전트 AI 통합

개요

Pipeline 프로젝트에 OpenClaw 멀티 에이전트 AI 플랫폼을 빌트인으로 통합했습니다. Pipeline UI에서 에이전트 생성/관리, API 키 발급, 대화 모니터링, 사용량 추적이 가능하며, 외부 서비스에서 Pipeline이 발급한 API 키로 에이전트를 사용할 수 있습니다.

아키텍처

외부 서비스 (ERP, MES, 물류 등)
  │ POST /api/ai/v1/chat/completions
  │ Authorization: Bearer sk-pipe-xxxxx
  ▼
Pipeline Backend (:8080)
  ├── 인증 (JWT 또는 API Key)
  ├── Rate Limit 체크
  ├── 프록시 → OpenClaw Gateway (:18789)
  ├── 응답 로깅 (토큰, 비용)
  └── DB 저장 (PostgreSQL)
       ▼
OpenClaw Gateway (내장 프로세스)
  ├── Agent A (데이터 분석)
  ├── Agent B (보고서 작성)
  ├── Agent C (모니터링)
  └── LLM: Claude / GPT / Ollama

DB 테이블

테이블 용도
ai_agents 에이전트 정의 (이름, 모델, 시스템프롬프트, 도구, 상태)
ai_agent_api_keys 외부 서비스용 API 키 (해시 저장, 사용량 제한)
ai_agent_conversations 대화 세션
ai_agent_messages 대화 메시지
ai_agent_usage_logs 토큰 사용량, 비용, 응답시간 로그
ai_llm_providers LLM API 키 관리 (암호화 저장)

API 엔드포인트

에이전트 관리 (Pipeline JWT 인증)

GET    /api/ai-agents              에이전트 목록
GET    /api/ai-agents/:id          에이전트 상세
POST   /api/ai-agents              에이전트 생성
PUT    /api/ai-agents/:id          에이전트 수정
DELETE /api/ai-agents/:id          에이전트 삭제

API 키 관리 (Pipeline JWT 인증)

GET    /api/ai-agents/keys/list    키 목록
POST   /api/ai-agents/keys         키 발급 (sk-pipe-xxx 형태, 한 번만 노출)
DELETE /api/ai-agents/keys/:id     키 폐기

LLM 프로바이더 관리 (Pipeline JWT 인증)

GET    /api/ai-agents/providers/list    프로바이더 목록
POST   /api/ai-agents/providers         프로바이더 추가 (API 키 암호화 저장)
PUT    /api/ai-agents/providers/:id     프로바이더 수정
DELETE /api/ai-agents/providers/:id     프로바이더 삭제

대화 모니터링 (Pipeline JWT 인증)

GET    /api/ai-agents/conversations/list    대화 목록 (페이징)
GET    /api/ai-agents/conversations/:id     대화 + 메시지 상세

사용량 (Pipeline JWT 인증)

GET    /api/ai-agents/usage/summary    요약 (오늘/이번달 토큰, 비용)
GET    /api/ai-agents/usage/logs       상세 로그 (페이징)
GET    /api/ai-agents/usage/daily      일별 차트 데이터

외부 서비스용 프록시 (API Key 인증)

POST   /api/ai/v1/chat/completions    OpenAI 호환 채팅 (스트리밍 지원)
GET    /api/ai/v1/models              사용 가능 모델 목록
GET    /api/ai/v1/health              Gateway 상태

외부 서비스에서 사용하기

1. API 키 발급

Pipeline 관리자 화면 > AI 에이전트 > API 키 관리에서 키를 발급합니다. sk-pipe-xxxxxxxx 형태의 키가 생성되며, 최초 1회만 노출됩니다.

2. 채팅 API 호출

curl -X POST https://pipeline.example.com/api/ai/v1/chat/completions \
  -H "Authorization: Bearer sk-pipe-xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "messages": [
      {"role": "user", "content": "매출 데이터를 분석해줘"}
    ]
  }'

3. 응답 형태 (OpenAI 호환)

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "model": "claude-sonnet-4-20250514",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "매출 데이터 분석 결과..." },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 15,
    "completion_tokens": 200,
    "total_tokens": 215
  }
}

프론트엔드 관리 화면

경로 기능
/admin/aiAssistant/agents 에이전트 CRUD (카드형 목록)
/admin/aiAssistant/providers LLM API 키 등록/관리
/admin/aiAssistant/conversations 대화 모니터링 (메시지 열람)
/admin/aiAssistant/api-keys 외부 서비스용 API 키 발급
/admin/aiAssistant/usage 사용량 대시보드

환경 변수

# OpenClaw Gateway 포트 (기본: 18789)
OPENCLAW_GATEWAY_PORT=18789

# OpenClaw 활성화 여부 (기본: true)
OPENCLAW_ENABLED=true

파일 구조

backend-node/src/
├── controllers/aiAgentController.ts     # 에이전트/키/프로바이더/대화/사용량 컨트롤러
├── services/
│   ├── aiAgentService.ts                # 에이전트 CRUD
│   ├── aiAgentApiKeyService.ts          # API 키 발급/검증
│   ├── aiAgentProviderService.ts        # LLM 프로바이더 관리
│   ├── aiAgentConversationService.ts    # 대화 로깅
│   └── aiAgentUsageService.ts           # 사용량 추적
├── routes/
│   ├── aiAgentRoutes.ts                 # 관리 API 라우트
│   └── openClawProxyRoutes.ts           # 외부 서비스 프록시
├── middleware/
│   └── aiApiKeyAuthMiddleware.ts        # API 키 인증
├── utils/startOpenClaw.ts               # Gateway 프로세스 관리
├── types/aiAgent.ts                     # TypeScript 타입
└── db/migrations/
    └── 300_create_openclaw_tables.sql   # 마이그레이션

frontend/
├── lib/api/aiAgent.ts                   # API 클라이언트
└── app/(main)/admin/aiAssistant/
    ├── agents/page.tsx                  # 에이전트 관리
    ├── providers/page.tsx               # 프로바이더 관리
    └── conversations/page.tsx           # 대화 모니터링