c24165b8bc
에이전트 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>
3.6 KiB
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 |
|
A | 0.86 | 2026-06-13 | 2026-06-13 |
|
|
|
IPC Pattern
🎯 한 줄 통찰 (One-line insight)
IPC 는 "서로 다른 프로세스(메인↔렌더러, 앱↔외부 도구)가 메시지로 소통" 하는 패턴으로, 직렬화 가능한 메시지 계약 + 신뢰 경계 검증 이 핵심 — 다른 프로세스의 입력은 신뢰되지 않은 입력이다.
🧠 핵심 개념 (Core concepts)
- 메시지 패싱: 객체 직접 공유 불가 → 직렬화(JSON)해 전달.
- 채널/타입: 메시지에 type 을 두고 핸들러로 라우팅.
- 요청-응답 vs 단방향: 명령은 응답, 알림은 단방향.
- 신뢰 경계: 상대 프로세스 입력을 검증(특히 외부 도구).
- 전송 매체: 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)
- 상위/루트: 패턴 카탈로그 인덱스
- 관련 개념: 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: 프로젝트 독립 패턴 카드 작성.