9148c358d0
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
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-plugin-architecture | Plugin Architecture Pattern | Pattern_Desktop | draft | applied |
|
A | 0.85 | 2026-06-13 | 2026-06-13 |
|
|
|
Plugin Architecture Pattern
🎯 한 줄 통찰 (One-line insight)
플러그인 아키텍처는 "코어를 안정적으로 두고 기능을 확장 지점(extension point) 으로 끼워 넣게" 해 코어 수정 없이 능력을 늘리는 패턴 — 핵심은 안정된 계약(인터페이스) 과 자기 등록 이다.
🧠 핵심 개념 (Core concepts)
- 확장 지점: 코어가 정의한 인터페이스/훅.
- 자기 등록: 플러그인 로드 시 레지스트리에 자기를 등록(side-effect import).
- 발견(discovery): 디렉터리/매니페스트 스캔으로 동적 로드.
- 격리/검증: 플러그인 실패가 코어를 죽이지 않게.
- 버전 계약: 코어 API 버전 호환.
📖 세부 내용 (Details · 패턴 명세)
- 언제 쓰나: 서드파티/도메인 기능을 코어 변경 없이 추가, 기능 on/off, 생태계 구축.
- 사용 조건: 안정된 확장 인터페이스; 로딩/등록 메커니즘; 격리.
- 장점: 확장성, 코어 안정, 병렬 개발, 선택적 기능.
- 단점: 인터페이스 설계 어려움, 버전 호환 부담, 플러그인 품질/보안 위험.
- 대안: 모놀리식(소규모), 설정 플래그, 마이크로서비스.
- 실패 사례: 플러그인 예외가 코어 크래시(격리 부재); 안정 안 된 API 로 잦은 호환 깨짐; 등록 순서 의존; 신뢰 안 된 플러그인 권한 과다.
💻 코드 패턴 (Code patterns)
# 자기 등록 (side-effect import)
import './features/system/handlers' # 로드되며 registry.register(...) 실행
registry.register('cmd:foo', handler)
# 동적 발견
for file in scan(pluginsDir): plugin = load(file); if validate(plugin): register(plugin)
try { plugin.run() } catch { /* 격리 — 코어 보호 */ logError() }
적용 예: ConnectAI 의 핸들러 자기등록(import './features/.../handlers' 가 slashRouter 에 등록)과 externalSkillLoader(외부 스킬 동적 로드) [S2]. → 모듈 시스템과 프로젝트 구성.
⚖️ 모순 및 업데이트 (Contradictions & updates)
플러그인은 유연하나 안정된 계약 없이는 버전 지옥. 확장 지점을 최소·신중히 설계하고, 신뢰 안 된 플러그인은 샌드박스/권한 제한.
🛠️ 적용 사례 (Applied in summary)
ConnectAI 핸들러 자기등록 + 스킬 로더.
🔗 지식 그래프 (Knowledge Graph)
- 상위/루트: 패턴 카탈로그 인덱스
- 관련 개념: Command Pattern, Event Bus Pattern, Architecture Separation Pattern, 데스크탑 앱 개발 가이드
- 참조 맥락: 작은 모델이 확장 가능한 앱(에디터/IDE/툴)을 설계할 때 참조.
📚 출처 (Sources)
- [S1] 일반 플러그인/확장 아키텍처 지식
- [S2] ConnectAI/src/skills/externalSkillLoader.ts, features/*/handlers.ts — 적용 예
📝 변경 이력 (Change history)
- 2026-06-13: 프로젝트 독립 패턴 카드 작성.