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>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
---
|
||||
id: pattern-ipc
|
||||
title: "IPC Pattern"
|
||||
category: "Pattern_Desktop"
|
||||
status: "draft"
|
||||
verification_status: "applied"
|
||||
canonical_id: ""
|
||||
aliases: ["IPC", "프로세스 간 통신", "inter-process communication", "message passing", "bridge"]
|
||||
duplicate_of: ""
|
||||
source_trust_level: "A"
|
||||
confidence_score: 0.86
|
||||
created_at: 2026-06-13
|
||||
updated_at: 2026-06-13
|
||||
review_reason: ""
|
||||
merge_history: []
|
||||
tags: ["pattern", "desktop", "ipc", "messaging", "platform-independent"]
|
||||
raw_sources: ["일반 데스크탑 공학 지식", "ConnectAI/src/bridge.ts, sidebarProvider.ts (적용 예)"]
|
||||
applied_in: ["ConnectAI"]
|
||||
github_commit: ""
|
||||
---
|
||||
|
||||
# [[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)
|
||||
```text
|
||||
# 웹뷰(렌더러) ↔ 확장(메인): 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)
|
||||
- **상위/루트:** [[패턴 카탈로그 인덱스]]
|
||||
- **관련 개념:** [[Event Bus Pattern]], [[Tool Calling Pattern]], [[API Client Pattern]], [[데스크탑 앱 개발 가이드]]
|
||||
- **참조 맥락:** 작은 모델이 데스크탑(Electron/확장) 프로세스 통신을 설계할 때 참조.
|
||||
|
||||
## 📚 출처 (Sources)
|
||||
- [S1] 일반 IPC 지식(Electron, message passing)
|
||||
- [S2] ConnectAI/src/bridge.ts, sidebarProvider.ts — 적용 예
|
||||
|
||||
## 📝 변경 이력 (Change history)
|
||||
- 2026-06-13: 프로젝트 독립 패턴 카드 작성.
|
||||
Reference in New Issue
Block a user