Internal Tech Seminar

AX Copilot

WPF 데스크톱 기반 AI 에이전트 플랫폼의
핵심 아키텍처와 차별화 전략

WPF / .NET 8 Agentic AI Loop 91+ Tools Multi-Model MCP Protocol

Table of Contents

1

오픈소스 기반 핵심 엔진 구성

AX Copilot의 에이전트 엔진은 OpenHands(전 OpenDevin)와 OpenCode 두 프로젝트의 아키텍처 패턴을 분석하여, WPF 데스크톱 환경에 맞게 재설계한 결과물입니다.

◆ 1.1 OpenHands 반영 사항

MemGPT 스타일 다단계 컨텍스트 압축 ContextCondenser

OpenHands의 AgentController가 수행하는 메모리 관리 전략을 5단계 파이프라인으로 구현. 단계 1~4는 LLM 호출 없이 수행하여 비용을 절감하고, 5단계에서만 LLM 1회 호출.

Plan-and-Solve 분해 전략 TaskDecomposer

OpenHands CodeActAgent의 태스크 분해 패턴 반영. LLM 응답에서 번호 매긴 단계를 추출 (TaskDecomposer.ExtractSteps()), 현재 도구 호출을 계획 단계에 매칭하여 실시간 진행률을 UI에 표시합니다.

도구 병렬 실행 + 프리페치 AgentLoopParallelExecution

읽기 전용 도구를 자동 분류하여 최대 12개까지 병렬 실행. 스트리밍 응답 도중에도 읽기 도구를 선행 실행(Prefetch)하여 대기 시간 최소화.

◆ 1.2 OpenCode 반영 사항

실행 엔진 3단계 분리 AxAgentExecutionEngine

OpenCode의 Prepare → Execute → Commit 분리 패턴을 답습합니다.

  • ResolveExecutionMode() — 탭/설정에 따라 에이전트 루프 vs 단순 LLM 호출 결정
  • PrepareExecution() — 시스템 프롬프트 스택 + 메시지 조립
  • ExecutePreparedAsync() — agentLoopRunner 또는 llmRunner로 분기
  • CommitAssistantMessage() — 결과 메시지 영속화
스트리밍 도구 실행 + 자동 복구 StreamingToolExecutionCoordinator

SSE 스트리밍 중 도구 블록 도착 즉시 실행. 컨텍스트 오버플로우 자동 감지 → 강제 압축, 일시적 네트워크 오류 → 지수 백오프 재시도 포함.

💡
설계 철학
OpenHands의 자율적 다단계 태스크 수행 + OpenCode의 경량 실행 분리를 결합하되, WPF 데스크톱 특성(UI 스레드 분리, 로컬 파일 시스템, 시스템 트레이 통합)에 맞춰 재설계.
2

Agentic Loop 동작 구조

◆ 2.1 4단계 실행 사이클

에이전트 루프는 Plan → Execute → Observe → Evaluate 사이클을 작업 완료까지 자율 반복합니다.

Phase 1
Planning
LLM이 도구 호출 계획 생성
➔
Phase 2
Execute
읽기 병렬 + 쓰기 순차 실행
➔
Phase 3
Observe
도구 결과 수집 + 이벤트 발행
➔
Phase 4
Evaluate
LLM이 결과 판단 + 다음 행동

AgentLoopService 핵심 기능

◆ 2.2 전체 아키텍처 다이어그램

+------------------------------------------------------------------+ | AX Copilot UI Layer | | ChatWindow -- TranscriptHost -- AgentEventProcessor | | | | | | | v v v | | V1 Render V2 Render AgentEvent stream | +----------+----------------------------+---------------------------+ | | +----------v----------------------------v---------------------------+ | AxAgentExecutionEngine | | ResolveMode -> PrepareExecution -> ExecutePrepared -> Commit | +----------+----------------------------+---------------------------+ | | +----------v-----------+ +------------v----------------------------+ | AgentLoopService | | LlmService (Streaming) | | | | Ollama / vLLM / Gemini / Claude | | Plan -> Execute -> | | Override Stack (Push/Pop) | | Observe -> Evaluate | | Token Tracking per call | +-----------+-----------+ +---------------------------------------------+ | +-----------v---------------------------------------------------------+ | ToolRegistry (91+ Tools) | | File Ops | Document | Code/Git | System | MCP Dynamic | | Parallel | Plan+ | Worktree | Notify | JSON-RPC stdio | | Batch | Assemble | Branch | Env | mcp_{srv}_{fn} | +-----------+---------------------------------------------------------+ | +-----------v---------------------------------------------------------+ | Permission / Security Layer | | OperationModePolicy (Internal/External) | | PermissionModeCatalog (Default/AcceptEdits/Plan/Bypass/Deny) | | Tool-level overrides with wildcard/pattern matching | +---------------------------------------------------------------------+

◆ 2.3 도구 시스템 (91+ Tools)

91+
내장 도구
3
노출 버킷
12
최대 병렬 실행

도구 카테고리

카테고리주요 도구설명
파일 조작file_read file_write file_edit glob grep파일 읽기/쓰기/검색 + folder_map
문서 생성html_create docx_create xlsx_create pptx_create8가지 Mood 템플릿 + Multi-pass 조립
코드/Gitgit_tool code_search build_run test_loop브랜치 격리, 코드 리뷰, CI 연동
시스템process env_tool clipboard notify프로세스 실행, 환경 변수, 알림
데이터json_tool sql_tool math_tool data_pivot구조화 데이터 처리 + 피벗
워크플로우spawn_agent enter_worktree checkpoint playbook에이전트 분기, 체크포인트, 자동화
MCP 동적mcp_{server}_{fn}JSON-RPC 2.0 over stdio 외부 도구 서버

3

컨텍스트 관리 + 보안

◆ 3.1 5단계 압축 파이프라인

모델 입력 한도의 80%에 도달하면 자동으로 트리거. 단계 1~4는 LLM 호출 없이 수행하여 비용 절감.

Stage 1
Tool Result 절삭
LLM 호출 없음. 도구 결과를 1,500자 제한 (head 220자 + tail 140자 보존). 가장 빈번하게 적용.
Stage 2
Session Memory 통합
LLM 호출 없음. 이전 압축 경계의 요약들을 단일 세션 메모리 메시지로 병합.
Stage 3
Microcompact
LLM 호출 없음. 오래된 실행 로그/도구 묶음을 한 줄 요약으로 교체. 단일 결과 480자 제한.
Stage 4
Collapse / Snip
LLM 호출 없음. 남은 긴 로그를 head+tail 스니펫으로 절삭. 증거 보존 + 크기 축소.
Stage 5
LLM 요약 (Historical Summarization)
1회 LLM 호출. 가장 오래된 대화 구간을 LLM으로 요약. 최근 6개 메시지는 원본 유지.

◆ 3.2 권한 모드 + 사내/외부 모드

5가지 권한 모드 PermissionModeCatalog
  • Default — 모든 도구 실행 전 사용자 승인 요청
  • AcceptEdits — 쓰기 도구 자동 승인, 위험 도구만 확인
  • Plan — 계획만 표시, 쓰기 도구 차단
  • Bypass — 모든 도구 자동 실행 (완전 자동)
  • Deny — 읽기 전용, 쓰기 완전 차단

도구별 패턴 매칭 오버라이드: tool_name@pattern 구문 지원

운영 모드 OperationModePolicy

사내 모드 (Internal)

  • 외부 LLM (Gemini, Claude) 완전 차단
  • http_tool 차단
  • 워크스페이스 외부 경로 접근 시 강제 승인
  • Ollama / vLLM 로컬 백엔드만 허용
  • API 키 DPAPI+AES 암호화 저장

외부 모드 (External)

  • 모든 서비스/도구 사용 가능

4

코워크 / 코드 탭 특장점

Chat / Cowork / Code 3개 탭으로 분리된 워크스페이스. 각 탭은 고유한 시스템 프롬프트, 도구 집합, 권한 정책을 가집니다.

◆ 4.1 Cowork 탭 — 문서 생성 특화

핵심 원칙: "Tools First When Needed" Cowork

응답 시 텍스트보다 도구 호출을 우선. 독립적인 문서 읽기/생성을 병렬 배치 처리합니다.

문서 생성 워크플로우

  • 단일 섹션 → html_create, docx_create 직접 생성
  • 3페이지 이상 → document_plan → 섹션별 작성 → document_assemble
  • Multi-pass 모드 — 아웃라인 → LLM 섹션별 집필 → 조립 (최고 품질)

지원 출력 포맷 + HTML Mood 템플릿

HTML DOCX XLSX PPTX CSV Markdown
modern professional creative elegant dark corporate magazine dashboard

◆ 4.2 Code 탭 — 코드 개발 특화

핵심 원칙: 코드 검증 게이트 + 브랜치 격리 Code

코드 전용 도구

  • git_tool — Git 전체 워크플로우
  • file_edit — 정밀 라인 기반 코드 편집
  • build_run / test_loop — 빌드 + 테스트 반복
  • enter_worktree / exit_worktree — Git 워크트리 격리
  • code_review — Git diff 기반 자동 코드 리뷰

슬래시 커맨드 (Code 전용)

/review /commit /test /build /diff /branch /structure /doctor

◆ 4.3 탭별 비교표

특성ChatCoworkCode
에이전트 루프✕ 단순 LLM✓ 자율 루프✓ 자율 루프
도구 실행✕✓ 문서 중심✓ 코드 중심
병렬 실행N/A✓✓
컨텍스트 압축✕✓ 5단계✓ 5단계
시스템 프롬프트기본 대화문서 생성 특화코드 개발 특화
워크스페이스✕✓ 폴더 기반✓ 폴더 기반

5

AX Commander 런처

◆ 5.1 글로벌 핫키 + 시스템 통합

Alt+Space 글로벌 런처 LauncherWindow

macOS Spotlight / Raycast 스타일이지만, AI 에이전트와 완전 통합된 시스템 전역 런처.

런처 핵심 기능

  • 파일/폴더/앱 검색 + 실행
  • 클립보드 히스토리 (이미지 포함)
  • 웹 검색 (Google, Naver, DuckDuckGo, Yahoo, Wikipedia)
  • 커스텀 핫키 바인딩
  • 번호 배지 Ctrl+1~9 단축키
  • 즐겨찾기 / 최근 항목
  • 파일 액션 모드 (복사/이동/삭제)
  • 스니펫 자동 확장
  • 대형 텍스트 표시 (Shift+Enter)

시스템 통합

  • WH_KEYBOARD_LL 로우레벨 키보드 후킹
  • 시스템 트레이 아이콘 + 커스텀 메뉴
  • Windows 시작 시 자동 실행 등록
  • 고해상도 DPI 스케일링 대응
  • 포커스 해제 시 자동 닫기
  • 위치 설정: center-top / center / bottom
  • 투명도 조절 (기본 96%)

테마 시스템

System Dark Light OLED Nord Monokai Catppuccin Sepia + Custom

◆ 5.2 위젯 및 Quick Actions

위젯 시스템

런처 하단에 선택적으로 표시되는 미니 위젯:

성능 모니터 뽀모도로 퀵 노트 날씨 캘린더 배터리
Quick Actions

입력창이 비어있을 때 최근 사용 파일/폴더 상위 8개를 칩으로 표시. 색상 구분:

  • ■ 폴더 (초록)
  • ■ 실행파일/바로가기 (파랑)
  • ■ 기타 파일 (보라)
슬래시 커맨드 70+ Commands
/clear /model /permissions /theme /summary /translate /explain /fix /review /commit /test /build /structure /doctor /tasks /init /search /diff +50 more

6

모델별 실행 프로파일

LLM 모델마다 다른 특성에 맞춰 4가지 실행 프로파일을 제공. 프로파일에 따라 온도 제한, 재시도 횟수, 병렬 규모, 검증 게이트가 자동 조정됩니다.

◆ 6.1 4가지 프로파일 상세

Strict tool_call_strict
IBM Granite, Qwen 등 시스템 프롬프트 무시 경향 모델용
온도 제한
0.2 (매우 낮음)
재시도
4회 (비도구 응답 시)
병렬 읽기
최대 8개
특수 기능
사용자 메시지에 도구 호출 리마인더 주입
Balanced reasoning_first
Claude, GPT-4 등 고성능 추론 모델용
온도 제한
0.45 (균형)
재시도
2회
병렬 읽기
최대 6개
코드 게이트
활성 (품질 검증)
Fast fast_readonly
빠른 조회/분석 작업 특화
온도 제한
0.25 (예측 가능)
재시도
1회 (최소)
병렬 읽기
최대 10개 (최대 공격적)
검증 게이트
비활성 (속도 최우선)
Document document_heavy
보고서/프레젠테이션 생성 집중 모드
온도 제한
0.35
계획 재시도
0 (계획 생략, 생성 집중)
병렬 읽기
최대 6개
메모리 압박
조기 해소 활성

◆ 6.2 모델별 컨텍스트 한도

모델 계열모델 한도적용 한도 (90%)압축 트리거
Claude (Opus/Sonnet/Haiku)200K180K144K (80%)
Gemini 2.5 Pro1M900K720K
GPT-4 / GPT-4o128K120K96K
DeepSeek128K128K102K
Qwen / LLaMA32K32K25.6K
vLLM / Ollama (미확인)-32K (보수적)25.6K

◆ 6.3 자동 모델 라우팅

⚠
현재 비활성 (EnableAutoRouter = false)
사용자 메시지 의도(coding, translation, analysis, creative, document, math)를 분석하여 최적 모델로 자동 전환하는 기능. 신뢰도 임계값 초과 시에만 전환하며, 기존 모델보다 0.1점 이상 높을 때만 적용. 향후 사내 서버 확정 후 활성화 예정.

7

경쟁 서비스 비교

◆ 7.1 기능 비교 매트릭스

기능 AX Copilot Claude Code Claude Desktop OpenAI Codex Cursor / Windsurf ChatGPT Desktop
플랫폼 WPF 독립 앱 터미널 CLI Electron 데스크톱 클라우드 샌드박스 VS Code Fork Electron 데스크톱
에이전트 루프 ✓ 91+ 도구 ✓ ● MCP 기반 ✓ 샌드박스 ● 편집 특화 ✕
멀티 모델 ✓ 4종 백엔드 ✕ Claude 전용 ✕ Claude 전용 ✕ GPT 전용 ✓ ✕ GPT 전용
사내 LLM ✓ Ollama/vLLM ✕ ✕ ✕ ✕ ✕
문서 생성 ✓ 7종 포맷 ✕ ✕ ✕ ✕ ✕
런처 (핫키) ✓ Alt+Space ✕ ✕ ✕ ✕ ● 기본
권한 세분화 ✓ 5모드+패턴 ✓ 3단계 ✕ ● 샌드박스 격리 ● ✕
컨텍스트 관리 ✓ 5단계 압축 ✓ ● 기본 ✓ ● ✕
MCP 서버 ✓ ✓ ✓ ✕ ● ✕
모델별 프로파일 ✓ 4종 ✕ ✕ ✕ ✕ ✕
사내/외부 모드 ✓ ✕ ✕ ✕ ✕ ✕
오프라인 동작 ✓ 로컬 모델 ✕ ✕ ✕ ✕ ✕
로컬 파일 접근 ✓ 직접 접근 ✓ 직접 접근 ● MCP 경유 ✕ 클라우드만 ✓ 프로젝트 내 ✕
비용 구조 API 종량제 API 종량제 구독 (Pro/Max) 구독 (Pro) 구독 ($20/mo~) 구독 (Plus)

◆ 7.2 핵심 차별화 요약

① 완전 독립 데스크톱 에이전트

IDE 종속 없는 독립 실행형 에이전트. 코드 편집 + 문서 생성 + 시스템 관리 + 워크플로우 자동화를 단일 앱에서 수행. 런처로 어디서든 즉시 접근.

② 사내 인프라 네이티브

Ollama / vLLM 직접 연결. DPAPI+AES 암호화 API 키. 사내 모드에서 외부 완전 차단. 오프라인에서도 에이전트 루프 동작.

③ 모델 불문 최적 실행

4가지 프로파일이 모델 특성에 맞춰 자동 조정. "chatty" 모델에는 도구 호출 강제, 고성능 모델에는 추론 우선. 온도/재시도/병렬 규모 모두 자동 최적화.

④ 문서+코드 통합 워크스페이스

단일 앱에서 보고서/PPTX 자동 생성과 코드 개발/리뷰/테스트를 동시 수행. 같은 대화 컨텍스트에서 문서와 코드를 넘나드는 작업.


8

기술 스택 요약

.NET 8
런타임
WPF
UI 프레임워크
C#
언어
MCP
확장 프로토콜
레이어기술 / 패턴핵심 파일
UI 렌더링VirtualizingStackPanel + TranscriptVisualItem 가상화, V1/V2 분기 렌더ChatWindow.*.cs (40+ partial files)
실행 엔진Prepare → Execute → Commit 3단계 분리AxAgentExecutionEngine.cs
에이전트 루프Plan → Execute → Observe → Evaluate + Parallel BatchAgentLoopService.cs
LLM 통신SSE Streaming + Override Stack + Token TrackingLlmService.cs
도구 시스템IAgentTool + ToolRegistry + MCP 동적 래핑ToolRegistry.cs, IAgentTool.cs
컨텍스트5단계 MemGPT 스타일 압축 파이프라인ContextCondenser.cs
보안5모드 권한 + Internal/External 운영 + DPAPI 암호화PermissionModeCatalog.cs
런처WH_KEYBOARD_LL 글로벌 핫키 + Spotlight 스타일 UILauncherWindow.xaml.cs