Files
2nd/10_Wiki/Topics/Domain_Programming/Topic_Programming/IPC_Pattern.md
T
Antigravity Agent c24165b8bc refactor(topics): 멀티 에이전트용 지식 재편 — _Common(공통 기본기) + Domain_* 구조
에이전트 8종(대화형/프로그래머 C·S/디자이너/설계자/기획자/QA/PD/PM)에게
[공통 기본 능력 + 롤별 Specialty] 2층으로 지식을 주입하기 위한 재분류.
문서 내용·포맷은 무수정, 폴더 이동만 (6,372개 문서 수 보존 확인).

- Topic_Programming → Domain_Programming (내부 구조 보존)
- Topic_Graphic → Domain_Design
- Topic_Business → Domain_Product
- Topic_General → Domain_General
- _Common 신설: Math(구 Topic_Math_Specialty), Reasoning(구 General/From_Thinking & Reasoning),
  Reasoning_Creativity(구 General/From_창의성), Communication(Poetic_Blog_Writing + From_writing)
- 타 도메인의 From_* 폴더는 유지 (출처 표기일 뿐, 이미 도메인에 맞게 분류된 문서)
- 빈 폴더 정리 (memory/procedures)
- 에이전트→폴더 매핑은 workspace의 .astra/agent-knowledge-map.json (9개 에이전트)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 11:05:56 +09:00

3.6 KiB

id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
id title category status verification_status canonical_id aliases duplicate_of source_trust_level confidence_score created_at updated_at review_reason merge_history tags raw_sources applied_in github_commit
pattern-ipc IPC Pattern Pattern_Desktop draft applied
IPC
프로세스 간 통신
inter-process communication
message passing
bridge
A 0.86 2026-06-13 2026-06-13
pattern
desktop
ipc
messaging
platform-independent
일반 데스크탑 공학 지식
ConnectAI/src/bridge.ts, sidebarProvider.ts (적용 예)
ConnectAI

IPC Pattern

🎯 한 줄 통찰 (One-line insight)

IPC 는 "서로 다른 프로세스(메인↔렌더러, 앱↔외부 도구)가 메시지로 소통" 하는 패턴으로, 직렬화 가능한 메시지 계약 + 신뢰 경계 검증 이 핵심 — 다른 프로세스의 입력은 신뢰되지 않은 입력이다.

🧠 핵심 개념 (Core concepts)

  1. 메시지 패싱: 객체 직접 공유 불가 → 직렬화(JSON)해 전달.
  2. 채널/타입: 메시지에 type 을 두고 핸들러로 라우팅.
  3. 요청-응답 vs 단방향: 명령은 응답, 알림은 단방향.
  4. 신뢰 경계: 상대 프로세스 입력을 검증(특히 외부 도구).
  5. 전송 매체: Electron ipcMain/Renderer, 웹뷰 postMessage, 로컬 HTTP/소켓.

📖 세부 내용 (Details · 패턴 명세)

  • 언제 쓰나: UI 프로세스↔백그라운드, 앱↔외부 프로그램 통신.
  • 사용 조건: 직렬화 가능 메시지; 채널 정의; 보안 검증.
  • 장점: 프로세스 격리(크래시 격리·보안), 언어/도구 무관 연동.
  • 단점: 직렬화 비용, 객체 공유 불가, 비동기 복잡, 보안 표면.
  • 대안: 단일 프로세스(스레드/공유 메모리), 파일 교환, 메시지 큐.
  • 실패 사례: 외부 입력 미검증→임의 명령 실행; 함수/순환 객체 직렬화 실패; 채널 타입 오타; 응답 누락으로 행; 포트 충돌.

💻 코드 패턴 (Code patterns)

# 웹뷰(렌더러) ↔ 확장(메인): postMessage 프로토콜
webview.postMessage({ type:'streamChunk', value })       # 확장 → UI
onMessage(msg): route(msg.type, validate(msg))           # UI → 확장

# 앱 ↔ 외부 도구: 로컬 HTTP 브리지
http.createServer((req,res) => { body=validate(parse(req)); res.end(handle(body)) })

적용 예: ConnectAI 의 BridgeServer(로컬 HTTP 포트 4825 로 외부 도구↔확장 연결, 서비스 레이어로 로직 분리) + 웹뷰 postMessage 프로토콜(VSCode 확장 구조와 생명주기, Agent 오케스트레이터 분해) [S2].

⚖️ 모순 및 업데이트 (Contradictions & updates)

프로세스 분리는 격리·보안 이득이 있으나 직렬화·복잡도 비용 — 같은 신뢰 영역의 작은 작업이면 단일 프로세스가 단순. 외부 IPC 는 항상 입력 검증.

🛠️ 적용 사례 (Applied in summary)

ConnectAI BridgeServer + 웹뷰 메시지.

🔗 지식 그래프 (Knowledge Graph)

📚 출처 (Sources)

  • [S1] 일반 IPC 지식(Electron, message passing)
  • [S2] ConnectAI/src/bridge.ts, sidebarProvider.ts — 적용 예

📝 변경 이력 (Change history)

  • 2026-06-13: 프로젝트 독립 패턴 카드 작성.