DOCS/journey/research/260323_skill_slack_입출력분리_아키텍처_리서치.md
happybell80 ffa9923743 docs: skill-slack 입출력 분리 — 아이디어 보강(OpenClaw/JSON 인터페이스) + 리서치 신설
- 아이디어: 표준 JSON 출력 인터페이스 초안, OpenClaw 커넥터 패턴, 메시지 버스 트렌드 반영
- 리서치: 현재 코드 기반 실현 경로 4단계, Facts 6건, Unresolved 3건

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:27:18 +09:00

4.0 KiB

type, tags, status, research_target
type tags status research_target
research
research
skill-slack
rb8001
architecture
openclaw
message-bus
block-kit
open rb8001-skill-slack 입출력 분리의 기술적 타당성과 현재 코드 기반 실현 경로 확인

260323 skill-slack 입출력 분리 아키텍처 리서치

목적

  • rb8001과 skill-slack 사이의 입출력 분리가 현재 코드 구조에서 실현 가능한지 확인한다.
  • 업계 트렌드(OpenClaw, 메시지 버스)와 현재 로빙 아키텍처의 차이를 확인한다.

사실 (Facts)

1. 현재 rb8001의 Slack 의존 범위

  • rb8001/app/services/slack/ 디렉토리에 5개 서비스 파일 존재
    • message_service.py: 이벤트 수신 + 라우팅 + chat_postMessage 직접 호출
    • file_service.py: 파일 업로드 + Block Kit 진행률 표시
    • coldmail_service.py: Block Kit blocks 사용 (이미 분리된 패턴)
    • clarify_service.py: chat_postMessage 직접 호출
    • news_service.py: Block Kit blocks 전달
  • Slack SDK(slack_sdk)가 rb8001의 직접 의존성
  • grounding 응답 경로: message_service.pychat_postMessage(text=final_text) — Block Kit 미사용

2. skill-slack의 현재 역할

  • robeing/skill-slack/: 독립 서비스 (포트 할당, Docker 컨테이너)
  • 콜드메일 리스트, Slack Lists 연동 등 일부 기능만 담당
  • rb8001의 메인 메시지 응답 경로와 무관하게 동작

3. 업계 참조 — OpenClaw 커넥터 패턴

  • 에이전트 본체는 채널을 모르고 표준 JSON만 주고받음
  • 채널별 '커넥터'가 프로토콜 변환 전담
  • 로빙의 Gateway(robeing-gateway)가 이 역할에 가장 가까우나, 현재는 HTTP 프록시 수준

4. Block Kit 사용 현황

  • rb8001 내부에서 이미 Block Kit을 사용하는 서비스: file_service.py, coldmail_service.py, news_service.py
  • grounding 응답만 plain text로 보내고 있음
  • Block Kit fields를 사용하면 키-값 2열 정렬 가능 (Slack이 표를 지원하지 않는 대안)

5. 표준 JSON 인터페이스 가능성

  • rb8001의 grounding 응답은 이미 CompanyXRAGOutput Pydantic 모델로 구조화되어 있음
  • direct_answer, evidence_docs, failure_reason 필드가 있으므로 JSON 인터페이스 전환 비용 낮음
  • 추가로 data_format (text/table/list) 필드를 넣으면 skill-slack이 렌더링 방식을 결정 가능

6. workspace-team-project 계층 재정의와의 관계

  • 23서버에서 진행 중인 계층 재정의 작업에서 접근 권한·에이전트 등록이 추가됨
  • skill-slack이 입출력 전담이 되면 접근 권한 enforcement 지점이 달라짐 (현재 rb8001 내부 → Gateway 또는 skill-slack 레벨로 이동 가능)

실현 경로 (점진적)

단계 내용 영향 범위
1단계 rb8001 grounding 응답을 JSON 인터페이스로 통일 rb8001만 수정
2단계 skill-slack에 Block Kit 렌더링 엔드포인트 추가 skill-slack 수정
3단계 rb8001의 chat_postMessage 직접 호출을 skill-slack 호출로 교체 rb8001 + skill-slack
4단계 이벤트 수신을 skill-slack → rb8001 API 호출로 전환 Gateway + skill-slack + rb8001

1단계는 RAG 작업과 병행 가능. 2~4단계는 별도 트랙.

Unresolved

  • skill-slack을 거치면 응답 지연이 얼마나 증가하는지 (현재 직접 호출 vs HTTP 1홉 추가)
  • 비동기 처리(200 OK 즉시 반환 + 백그라운드 push)로 전환 시 기존 스레드 응답 UX에 영향이 있는지
  • Gateway의 역할 경계 — 프로토콜 라우팅만 할지, 인증/접근 권한도 담당할지

관련 문서