Initial commit to new repository
This commit is contained in:
345
docs/SEMINAR.md
Normal file
345
docs/SEMINAR.md
Normal file
@@ -0,0 +1,345 @@
|
||||
# AX Copilot 기술 세미나
|
||||
### 사내 AI 생산성 플랫폼 — 아키텍처와 핵심 기술
|
||||
|
||||
> **발표 대상**: 사내 개발팀 / AI 연구팀
|
||||
> **버전**: v1.6.1 기준 (2026년 3월)
|
||||
> **발표자**: AX연구소 AI팀
|
||||
|
||||
---
|
||||
|
||||
## 1. AX Copilot 이란?
|
||||
|
||||
> **"Alt+Space 한 번으로 모든 업무 도구에 접근하는 사내 전용 AI 플랫폼"**
|
||||
|
||||
### 세 가지 제품으로 구성
|
||||
|
||||
| 제품명 | 역할 | 주요 기능 |
|
||||
|--------|------|-----------|
|
||||
| **AX Commander** | 글로벌 런처 | 명령 검색, 도구 실행, 자동화 |
|
||||
| **AX Agent** | AI 대화 엔진 | Chat / Cowork / Code 3탭 |
|
||||
| **AX Copilot** | 통합 플랫폼 | 위 두 제품 + 설정·보안 통합 |
|
||||
|
||||
### 왜 데스크탑 앱인가? — 2026년 AI 도구의 방향
|
||||
|
||||
> **"브라우저 안의 AI"에서 "내 PC에서 직접 움직이는 AI"로 전환 중**
|
||||
|
||||
2024~2025년 AI 서비스들은 웹 채팅(ChatGPT, Claude.ai)이 주류였지만,
|
||||
2026년 현재 **주요 AI 코딩 서비스가 모두 데스크탑 앱/터미널 네이티브**로 전환했습니다:
|
||||
|
||||
| 서비스 | 형태 | 로컬 파일 접근 |
|
||||
|--------|------|:------------:|
|
||||
| **Claude Code** | 터미널 CLI (사용자 PC에서 직접 실행) | ✅ 파일 읽기/쓰기/실행 |
|
||||
| **Cursor** | 데스크탑 IDE (Electron 기반) | ✅ 프로젝트 전체 분석 |
|
||||
| **Windsurf** | 데스크탑 IDE (VS Code 포크) | ✅ 48시간 자동 인덱싱 |
|
||||
| **GitHub Copilot** | VS Code 확장 → 독립 에이전트 | ✅ 로컬 Git 연동 |
|
||||
| **Raycast** | 데스크탑 런처 (macOS 네이티브) | ✅ 앱·파일·클립보드 통합 |
|
||||
|
||||
**공통 패턴**: AI가 실제로 유용하려면 **사용자의 실제 파일을 읽고, 수정하고, 실행**해야 합니다.
|
||||
웹 브라우저에서는 이것이 불가능하므로, 모든 서비스가 데스크탑/터미널로 내려왔습니다.
|
||||
|
||||
**AX Copilot은 이 흐름의 정중앙에 위치합니다:**
|
||||
- 🖥️ **데스크탑 네이티브** — WPF 앱이 OS 레벨에서 파일·프로세스·클립보드에 직접 접근
|
||||
- ⌨️ **글로벌 런처** — Alt+Space 한 번으로 어떤 앱 위에서든 즉시 호출
|
||||
- 🤖 **에이전트 도구 52개** — 파일 읽기/쓰기, 코드 실행, Git, 문서 생성을 AI가 직접 수행
|
||||
|
||||
### 핵심 설계 원칙
|
||||
|
||||
- 🏢 **사내 전용** — 외부 서버 의존 없음, 텔레메트리 없음
|
||||
- 💾 **로컬 우선** — 모든 데이터는 `%APPDATA%\AxCopilot\`에 저장
|
||||
- 🔒 **보안** — AES-256 설정 암호화, 역공학 방지
|
||||
- 📦 **인스톨러 150MB 이하** — .NET 8 런타임 내장 단일 배포
|
||||
|
||||
---
|
||||
|
||||
## 2. 전체 아키텍처
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ App.xaml.cs (진입점) │
|
||||
│ 서비스 초기화 · 트레이 아이콘 · 전역 훅 관리 │
|
||||
└────────┬──────────────┬──────────────────────┘
|
||||
│ │
|
||||
┌────────▼───────┐ ┌───▼──────────────────────┐
|
||||
│ AX Commander │ │ AX Agent │
|
||||
│ (런처 WPF) │ │ (Chat / Cowork / Code) │
|
||||
└────────┬───────┘ └───┬──────────────────────┘
|
||||
│ │
|
||||
┌────────▼──────────────▼──────────────────────┐
|
||||
│ 공통 서비스 계층 │
|
||||
│ SettingsService · LogService · IndexService │
|
||||
│ CryptoService · McpClientService · LLMRouter │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 기술 스택
|
||||
|
||||
| 계층 | 기술 |
|
||||
|------|------|
|
||||
| UI | WPF (.NET 8), WinForms (트레이) |
|
||||
| 언어 | C# 12, XAML |
|
||||
| 데이터 | JSON 직렬화 (System.Text.Json) |
|
||||
| 검색 | TF-IDF + SQLite (코드), 퍼지 엔진 (런처) |
|
||||
| AI | Ollama·vLLM (사내), Gemini·Claude (외부 옵션) |
|
||||
| 프로토콜 | MCP (Model Context Protocol) |
|
||||
|
||||
---
|
||||
|
||||
## 3. AX Commander — 런처 기술
|
||||
|
||||
### 입력 → 결과 처리 파이프라인
|
||||
|
||||
```
|
||||
사용자 입력
|
||||
│
|
||||
▼
|
||||
CommandResolver (프리픽스 라우터)
|
||||
│
|
||||
├── 프리픽스 매칭 ──► 44개 핸들러 실행
|
||||
│ = 계산기 ; 스니펫 # 클립보드
|
||||
│ @ URL 별칭 ~ 폴더 $ 클립보드 변환
|
||||
│ ! 워크스페이스 / 시스템 명령
|
||||
│ color·date·emoji·port·json·encode …
|
||||
│
|
||||
└── 프리픽스 없음 ──► FuzzyEngine
|
||||
(한국어 초성 + 퍼지 매칭)
|
||||
```
|
||||
|
||||
### FuzzyEngine 핵심 알고리즘
|
||||
|
||||
```
|
||||
입력: "설정"
|
||||
→ 초성 추출: "ㅅㅈ"
|
||||
→ LCS(최장 공통 부분 수열) 기반 점수 계산
|
||||
→ 사용 빈도 가중치 적용 (UsageRankingService)
|
||||
→ 정렬 후 결과 반환
|
||||
```
|
||||
|
||||
### 주요 핸들러 카탈로그 (44종)
|
||||
|
||||
| 카테고리 | 핸들러 | 기능 |
|
||||
|----------|--------|------|
|
||||
| 개발 도구 | json, encode, port, color | JSON 검증, 인코딩, 포트 조회, 색상 변환 |
|
||||
| 파일/시스템 | recent, rename, scaffold, svc | 최근 파일, 일괄 이름변경, 프로젝트 생성 |
|
||||
| 생산성 | note, snippet, date, stats | 메모, 스니펫, 날짜 계산, 텍스트 분석 |
|
||||
| UI/화면 | cap, snap, pick | 화면 캡처, 창 배치, 색상 추출 |
|
||||
| 워크스페이스 | !, workspace | 22개 레이아웃, 프로파일 저장/복원 |
|
||||
|
||||
---
|
||||
|
||||
## 4. AX Agent — AI 대화 엔진
|
||||
|
||||
### 에이전트 루프 (AgentLoopService)
|
||||
|
||||
```
|
||||
사용자 메시지
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────┐
|
||||
│ 에이전트 루프 (반복) │
|
||||
│ │
|
||||
│ 1. LLM API 호출 │
|
||||
│ 2. 응답 파싱 │
|
||||
│ 3. 도구 호출 감지 │
|
||||
│ 4. 도구 실행 │◄──── 52개 도구
|
||||
│ 5. 결과 → 컨텍스트 추가 │
|
||||
│ 6. 목표 달성? → 종료 │
|
||||
└─────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
최종 응답 스트리밍 출력 (SSE)
|
||||
```
|
||||
|
||||
### 3개 대화 탭의 특성
|
||||
|
||||
| 탭 | 목적 | 시스템 프롬프트 | 주요 도구 |
|
||||
|----|------|----------------|-----------|
|
||||
| **Chat** | 일반 AI 대화 | 범용 어시스턴트 | 기본 도구 |
|
||||
| **Cowork** | 업무 자동화 | 20개 프리셋 특화 | 문서·데이터 도구 |
|
||||
| **Code** | 개발 지원 | 코딩 에이전트 | LSP·Git·빌드 도구 |
|
||||
|
||||
### 컨텍스트 관리
|
||||
|
||||
- **토큰 추정**: `TokenEstimator` — CJK 문자 가중치 적용, 실시간 비용 표시
|
||||
- **대화 압축**: 컨텍스트 초과 시 `ContextCondenser`로 요약 → 재압축
|
||||
- **대화 분기**: `ParentId` 기반 트리 구조, 우클릭 "여기서 분기"
|
||||
|
||||
---
|
||||
|
||||
## 5. 도구 생태계 — 52개 에이전트 도구
|
||||
|
||||
### 도구 카테고리
|
||||
|
||||
```
|
||||
파일·코드 (18개) 문서·데이터 (12개)
|
||||
file_read/write document_read/write
|
||||
directory_list pptx_create
|
||||
search_files xlsx_analyze
|
||||
file_watch data_pivot
|
||||
lsp_goto_definition template_render
|
||||
lsp_find_references text_summarize
|
||||
search_codebase (TF-IDF) image_analyze
|
||||
|
||||
개발 (12개) 시스템·프로세스 (10개)
|
||||
git_status/diff/commit process_run
|
||||
build_run environment_read
|
||||
test_generate/run clipboard_read/write
|
||||
code_review screen_capture
|
||||
spawn_agent notification_show
|
||||
```
|
||||
|
||||
### 스킬 시스템 (29개 내장 슬래시 명령)
|
||||
|
||||
```
|
||||
/daily-standup /email-draft /code-review
|
||||
/translate /security-audit /prd-generator
|
||||
/weekly-report /refactor /gen-test
|
||||
/changelog /sql-report /perf-audit …
|
||||
```
|
||||
|
||||
- `*.skill.md` 마크다운 파일로 정의 (YAML 프론트매터)
|
||||
- `%APPDATA%\AxCopilot\skills\` 외부 폴더로 재빌드 없이 추가
|
||||
- Python/Node.js 런타임 감지 → 고급 스킬 자동 활성화
|
||||
|
||||
---
|
||||
|
||||
## 6. 코드 인텔리전스 기술
|
||||
|
||||
### LSP (Language Server Protocol) 연동
|
||||
|
||||
```
|
||||
에이전트 LSP 서버
|
||||
│ │
|
||||
├─ lsp_goto_definition ──► OmniSharp (C#)
|
||||
├─ lsp_find_references ──► typescript-language-server
|
||||
└─ lsp_symbols ──► pyright (Python)
|
||||
```
|
||||
|
||||
**효과**: 텍스트 검색이 아닌 의미 기반 코드 탐색 → 수정 정확도 대폭 향상
|
||||
|
||||
### 시맨틱 코드 검색 (TF-IDF 엔진)
|
||||
|
||||
```
|
||||
1. 프로젝트 파일 인덱싱
|
||||
└── 바이그램 토크나이저 + 스톱워드 제거
|
||||
└── SQLite 영속 저장 (증분 업데이트)
|
||||
|
||||
2. 질의 시 관련 파일 자동 검색
|
||||
└── TF-IDF 점수 계산 → 상위 N개 반환
|
||||
└── 에이전트가 자동으로 관련 코드 읽기
|
||||
```
|
||||
|
||||
### MCP (Model Context Protocol) 클라이언트
|
||||
|
||||
- `stdio` + `JSON-RPC 2.0` 표준 구현
|
||||
- 외부 MCP 서버의 도구를 에이전트 도구로 자동 래핑
|
||||
- 사내 전용 MCP 서버만 연결 허용
|
||||
|
||||
---
|
||||
|
||||
## 7. 보안 & 사내 환경 설계
|
||||
|
||||
### 다층 보안 구조
|
||||
|
||||
```
|
||||
레이어 1: 설정 암호화
|
||||
└── settings.json → AES-256-GCM → settings.dat
|
||||
└── PC별 DPAPI 키 조합 (이식 불가)
|
||||
|
||||
레이어 2: 역공학 방지 (AntiTamper)
|
||||
└── 디버거 감지, 리버싱 도구 프로세스 감지
|
||||
└── 사내 IP 대역 예외 처리 (개발 환경)
|
||||
|
||||
레이어 3: 보안 감사 로그
|
||||
└── AuditLogService — 모든 도구 호출 JSON 영속화
|
||||
└── 개발자 모드에서 감사 로그 폴더 열기
|
||||
|
||||
레이어 4: 실행 범위 제한
|
||||
└── 외부 HTTP 호출 금지 (LLM API 제외)
|
||||
└── 원격 코드 실행 금지
|
||||
└── 텔레메트리 완전 차단
|
||||
```
|
||||
|
||||
### 모델 라우팅 전략
|
||||
|
||||
```
|
||||
질문 유형 분류
|
||||
│
|
||||
├── 코딩/기술 → 코드 특화 모델 (사내 vLLM)
|
||||
├── 번역/요약 → 경량 모델 (Ollama)
|
||||
└── 복잡 분석 → 대형 모델 (Gemini Pro / Claude)
|
||||
|
||||
폴백 처리: 모델 오류 시 FallbackModels 순차 시도
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Phase별 개발 현황
|
||||
|
||||
### 완료된 주요 Phase
|
||||
|
||||
| Phase | 버전 | 핵심 성과 |
|
||||
|-------|------|-----------|
|
||||
| 2.5~7 | v1.1~1.2 | 에이전트 루프, 21개 도구, 마크다운 렌더러 |
|
||||
| 8 | v1.5.0 | MCP 클라이언트, 모델 폴백, 대화 분기, 토큰 관리 |
|
||||
| 9 | v1.5.0 | LSP 연동, 병렬 에이전트, 코드 시맨틱 검색, 이벤트 트리거 |
|
||||
| 10~11 | v1.5.0 | Auto Router, 에이전트 메모리, 스킬 시스템, AI 코드 리뷰 |
|
||||
| 15 | v1.6.0 | 멀티패스 문서 생성, 42→52개 도구, 29개 내장 스킬 |
|
||||
| 16 | v1.7.0 | 플랜 모드, 병렬 도구 실행, 프로젝트 규칙 시스템 |
|
||||
|
||||
### 현재 규모 (v1.6.1)
|
||||
|
||||
```
|
||||
에이전트 도구: 52개
|
||||
내장 스킬: 29개
|
||||
코워크 프리셋: 20개
|
||||
지원 LLM: 4종 (Ollama · vLLM · Gemini · Claude)
|
||||
런처 핸들러: 44개
|
||||
지원 테마: 10종
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. 차기 개발 방향 (v1.8~2.0)
|
||||
|
||||
### 경쟁 서비스 대비 로드맵
|
||||
|
||||
| 기능 | 경쟁 서비스 | AX Copilot 계획 |
|
||||
|------|-------------|-----------------|
|
||||
| 자기 성찰 루프 | Claude Code Reflexion | **v1.8** 자기 성찰 서비스 |
|
||||
| 영속 작업 기억 | Windsurf Memory | **v1.8** Working Memory |
|
||||
| 멀티파일 Diff | Cursor diff view | **v1.8** 통합 Diff UI |
|
||||
| HTTP+SSE MCP | Claude Code 원격 | **v1.8** MCP HTTP 전송 |
|
||||
| 에이전트 팀 | GitHub Copilot Workspace | **v2.0** 다중 에이전트 |
|
||||
| 플러그인 갤러리 | Raycast Store | **v2.0** 로컬 레지스트리 |
|
||||
|
||||
### 사내 환경 특화 원칙 유지
|
||||
|
||||
- ✅ 외부 서버 의존 없음 → 온프레미스 LLM 우선
|
||||
- ✅ 인스톨러 150MB 이하 유지
|
||||
- ✅ 플러그인 로컬 zip 설치만 허용
|
||||
- ✅ 모든 데이터 로컬 저장
|
||||
|
||||
---
|
||||
|
||||
## 10. 정리 및 Q&A
|
||||
|
||||
### AX Copilot의 기술적 차별점
|
||||
|
||||
```
|
||||
1. 완전 오프라인 동작 가능 (사내 Ollama/vLLM)
|
||||
2. 52개 에이전트 도구 + 29개 슬래시 스킬
|
||||
3. LSP 기반 실제 코드 이해 (텍스트 검색 수준 초월)
|
||||
4. MCP 표준으로 사내 서버 자유 연결
|
||||
5. AES-256 + DPAPI 이중 암호화 설정 보안
|
||||
6. 전역 핫키 Alt+Space — 어떤 앱에서도 즉시 호출
|
||||
```
|
||||
|
||||
### 향후 기여 방법
|
||||
|
||||
- **스킬 추가**: `*.skill.md` 파일 작성 → `%APPDATA%\AxCopilot\skills\` 배치
|
||||
- **MCP 서버**: 사내 도구를 MCP 서버로 노출 → AX Copilot에서 자동 사용
|
||||
- **플러그인**: `IActionHandler` 인터페이스 구현 → DLL 배치
|
||||
|
||||
---
|
||||
|
||||
*발표 자료 작성: AX연구소 AI팀 | 문의: 내부 메신저*
|
||||
Reference in New Issue
Block a user