코드 리뷰 현황 + 완료된 고도화 + 차기 로드맵을 하나의 문서로 통합
LlmService · ChatWindow · ChatStorageService · AgentLoopService · McpClientService
Part 1 — 코드 리뷰 및 현황
Part 2 — 완료된 고도화
Part 3 — 다음 고도화 계획
Part 4 — 차세대 고도화 계획
| 파일 | 라인 수 | 상태 | 역할 |
|---|---|---|---|
LlmService.cs | 362 | 완료 | Ollama/vLLM/Gemini 3종 LLM API 통신 |
ChatStorageService.cs | 260+ | 완료 | AES-256-GCM 암호화 대화 저장/로드 + 디스크 용량 관리 |
ChatWindow.xaml(.cs) | 209 + 650+ | 완료 | 채팅 UI · 스트리밍 · 피드백 · 워터마크 |
ChatHandler.cs | 154 | 완료 | "!" 프리픽스 핸들러 |
SettingsWindow (AI 탭) | ~120 | 완료 | 서비스/모델/키/온도 설정 UI |
CryptoService.cs | 200+ | 완료 | Portable + Local 이중 암호화 |
사용자 입력 (! 예약어)
↓
ChatHandler.GetItemsAsync()
↓ (Enter)
ChatHandler.ExecuteAsync() → ChatWindow 열기
↓
사용자 메시지 입력 → SendMessageAsync()
↓
LlmService.StreamAsync() / SendAsync()
↓
백엔드 선택 (Ollama / vLLM / Gemini)
↓
HTTP 요청 (Messages + SystemPrompt)
↓
스트리밍 응답 → UI 실시간 갱신
↓
ChatStorageService.Save() (AES-256-GCM 암호화)
| 용도 | 알고리즘 | 키 파생 | 이식성 |
|---|---|---|---|
| 설정값 (API 키) | AES-256-CBC | PBKDF2(AppSeed, 100K) | 모든 PC 동일 |
| 대화 파일 (.axchat) | AES-256-GCM | DPAPI 마스터 키 | 해당 PC만 |
┌─────────────────────────────────────────────────────────────┐
│ AX Agent (WPF Desktop) │
├──────────┬──────────────────┬────────────────────────────────┤
│ Chat │ Cowork │ Code │
│ (대화) │ (자율 작업) │ (코딩 에이전트) │
├──────────┴──────────────────┴────────────────────────────────┤
│ 공통 UI: 폴더 선택 바 + 권한 시스템 │
├──────────────────────────────────────────────────────────────┤
│ C# AgentLoopService (계획→실행→관찰→재평가) │
├──────────────────────────────────────────────────────────────┤
│ LlmService (Function Calling) │ PermissionService │
│ 4종 LLM 통합 + Tool-use 프로토콜│ Ask / Auto / Deny │
├──────────────────────────────────────────────────────────────┤
│ C# 네이티브 도구 시스템 (IAgentTool) │
│ FileRead│FileWrite│FileEdit│Process│Glob│Grep │
├──────────────────────────────────────────────────────────────┤
│ LibGit2Sharp │ AvalonEdit │ StreamJsonRpc (LSP) │
│ Git 스냅샷 │ 코드 에디터 │ 언어 서버 연동 │
├──────────────────────────────────────────────────────────────┤
│ 작업 폴더 (사용자 선택) │
│ 파일 읽기/쓰기 · cmd/powershell · Git 스냅샷 │
└─────────────────────────────────────────────────────────────┘
| 서비스 | API 형식 | 기본 엔드포인트 | API 키 | 키 보안 |
|---|---|---|---|---|
| Ollama | POST /api/chat | http://localhost:11434 | 선택 | AES-256-CBC 암호화 |
| vLLM | POST /v1/chat/completions | http://localhost:8000 | 선택 | AES-256-CBC 암호화 |
| Gemini | Google GenerateContent API | generativelanguage.googleapis.com | 필수 | 평문 (사내 연결 제한) |
| Claude | Anthropic Messages API | api.anthropic.com | 필수 | 평문 (사내 연결 제한) |
| 심각도 | 파일 | 이슈 | 해결 |
|---|---|---|---|
| HIGH | LlmService | JSON 파싱 시 null 체크 없음 | 해결 SafeParseJson 래퍼 |
| HIGH | LlmService | API 에러 시 상세 컨텍스트 부재 | 해결 ClassifyHttpError |
| HIGH | ChatWindow | Messages 컬렉션 멀티스레드 접근 | 해결 _convLock |
| HIGH | ChatWindow | 스트리밍 매 청크 UI 갱신 포화 | 해결 50ms 쓰로틀링 |
| HIGH | ChatStorage | Save/Load/Delete 동시 실행 경쟁 | 해결 ReaderWriterLockSlim |
| MEDIUM | LlmService | 스트리밍 타임아웃 고정 | 해결 30초 청크 타임아웃 |
| MEDIUM | ChatStorage | 원자적 쓰기 미사용 | 해결 tmp→rename |
| MEDIUM | ChatHandler | 창 생성 스레드 안전 없음 | 해결 lock(_windowLock) |
| LOW | LlmService | Gemini 스트리밍 파싱 오류 무시 | 해결 LogService.Warn |
| LOW | ChatWindow | Brush 할당 캐싱 안 됨 | 해결 CacheBrushes() |
| 검증 항목 | Claude | Gemini | Ollama | vLLM |
|---|---|---|---|---|
| Function Calling 응답 파싱 | tool_use 블록 | functionCall 블록 | tool_calls 배열 | tool_calls 배열 |
| Tool Result 메시지 구성 | tool_result content | functionResponse | tool role message | tool role message |
| Assistant tool_use 블록 재전송 | _tool_use_blocks JSON | _tool_use_blocks JSON | _tool_use_blocks JSON | _tool_use_blocks JSON |
| Array 파라미터 items 스키마 | 불필요 (자동 추론) | 필수 | 불필요 | 불필요 |
| GetProperty 안전성 | 전체 TryGetProperty로 교체 완료 (2026-03-28) | |||
크로스 체크 절차:
1. 오류 발생 시 해당 백엔드의 API 응답 JSON 구조를 로그로 확인
2. 동일 시나리오를 다른 3개 백엔드에서 테스트
3. JSON 파싱 코드에서 GetProperty → TryGetProperty 전환 여부 확인
4. 응답 구조가 다른 부분(예: Gemini=functionCall vs Claude=tool_use)은 별도 처리 검증
5. 수정 후 전체 백엔드 빌드 + 기본 도구 호출 테스트
| 영역 | 업계 리더 | AX Copilot 현황 | 격차 |
|---|---|---|---|
| 전체 UX 완성도 | Claude (프로젝트/아티팩트) | 기본 채팅 UI | HIGH |
| 마크다운/코드 렌더링 | ChatGPT, Claude, LobeChat | 플레인 텍스트만 | HIGH |
| 이미지 생성/분석 | ChatGPT (DALL-E/GPT Image) | 미지원 | MEDIUM |
| 음성 대화 | ChatGPT (Advanced Voice) | 미지원 | LOW |
| 다크 모드 색상 품질 | Claude, LobeChat | 테마 리소스 연동 완료 | 해결 |
| 사이드바 + 아이콘 바 | Claude Desktop | 구현 완료 | 해결 |
| 멀티 LLM 지원 | Open WebUI, LibreChat | 4종 지원 | 해결 |
| 암호화 저장 | 없음 (전 서비스) | AES-256-GCM | 우위 |
| 기능 | ChatGPT | Claude | Open WebUI | LobeChat | AX Cmd |
|---|---|---|---|---|---|
| 마크다운 렌더링 | O | O | O | O | O |
| 코드 구문 강조 | O | O | O | O | O |
| 코드 블록 복사 | O | O | O | O | O |
| 이미지 생성 | O | X | 일부 | 플러그인 | X |
| 파일 첨부 분석 | O | O | O | O | X |
| 웹 검색 연동 | O | X | 플러그인 | 플러그인 | X |
| 응답 재생성 | O | O | O | O | O |
| 메시지 편집 | O | O | O | O | O |
| 프롬프트 템플릿 | O (GPTs) | O (프로젝트) | O | O | O |
| 대화 내보내기 | O | X | O | O | O |
| 토큰 사용량 | 일부 | X | O | O | O |
| 좋아요/싫어요 | O | O | O | X | O |
| 대화 분류 | 폴더 | 프로젝트 | 태그 | 태그 | O (6종) |
| 대화 고정(핀) | X | O | X | X | O |
| 제목 인라인 편집 | O | O | O | O | O |
| 멀티 LLM 백엔드 | X | X | O | O | O (4종) |
| 암호화 저장 | X | X | X | X | O (AES) |
| 사내 독립 배포 | X | X | O | O | O |
| # | 원칙 | 설명 |
|---|---|---|
| 1 | 현대적 웹 디자인 | 디자인은 현대적인 웹 디자인 트렌드를 따르며, ChatGPT·Claude·Open WebUI 등 타 서비스와의 디자인을 고려하여 심미적으로 향상시킨다. |
| 2 | 오픈소스 적극 활용 | 오픈소스를 적극 활용하고 오픈소스들의 핵심 기능 및 우수한 코드를 접목하여 개선한다. |
| 3 | 확장 가능한 서비스 설계 | 단순한 채팅이 아닌, 주고받는 의사소통 및 업무 조율, 보고서·파일 작성 저장, PC 제어 등 향후 서비스 확장(AX Copilot)을 고려하여 설계한다. |
| 항목 | 현재 | 목표 |
|---|---|---|
| 마크다운 렌더링 | 완료 | 볼드/이탤릭/헤더/리스트/코드블록 + 코드 복사 |
| 코드 블록 복사 버튼 | 완료 | 코드 블록 헤더에 언어 표시 + 복사 버튼 |
| 대화 제목 인라인 편집 | 완료 | 제목 클릭 시 즉시 편집 |
| 응답 재생성 버튼 | 완료 | AI 응답 하단 "다시 생성" 버튼 |
| 생성 중지 버튼 | 완료 | 스트리밍 중 빨간 정지 버튼, ESC 지원 |
| 대화 내보내기 | 완료 | Markdown/TXT 파일로 저장 (Ctrl+E) |
| 연결 테스트 | 완료 | 설정에서 LLM 서버 상태 확인 버튼 |
| 키보드 단축키 | 완료 | Ctrl+N/W/E, Ctrl+Shift+C, ESC 중지 |
| 스크롤 개선 | 완료 | 사용자 스크롤 시 자동 스크롤 일시정지 |
| 항목 | 현재 | 목표 | 참고 |
|---|---|---|---|
| AI 심볼 로딩 애니메이션 | 텍스트 "생각 중..." | 회전/펄스 AI 아이콘 + 그라디언트 효과 | Siri 무지개 원형 |
| 무지개 테두리 효과 | 없음 | AI 응답 시 입력 바 또는 AI 아이콘에 무지개 그라디언트 글로우 | Apple Siri |
| 아이콘 호버 애니메이션 | 배경색 변경 (네모) | 아이콘 자체 밝기 전환 + 미세 바운스(Y축 -2px) 또는 스케일(1.1x) | LobeChat |
| 좋아요/싫어요 피드백 | 완료 | 클릭 시 아이콘 채움(filled) + 색상 전환 + 상호 배타 토글 | ChatGPT |
| 메시지 페이드인 | 즉시 표시 | 새 메시지 Opacity 0→1 + Y축 슬라이드(10px) 300ms | Claude Desktop |
| 스트리밍 커서 | 완료 | 텍스트 끝에 깜빡이는 블록 커서 (타이핑 효과) | ChatGPT |
| 스트리밍 글자 단위 표시 | 완료 | 청크 단위 실시간 갱신 + Dispatcher.InvokeAsync(Background) | ChatGPT, Claude |
| 항목 | 상태 | 설명 |
|---|---|---|
| 메시지 편집 | 완료 | 보낸 메시지 수정 후 재전송 |
| 프롬프트 템플릿 | 완료 | 프롬프트 카드 3종 + 워터마크 placeholder |
| 슬래시 명령어 | 완료 | /요약, /번역, /코드리뷰 등 빠른 명령 |
| 토큰 사용량 표시 | 완료 | 요청/응답 토큰 수 + 잔여 컨텍스트 |
| 모델 전환 (채팅 내) | 완료 | 대화 중 모델을 바로 변경 |
| 항목 | 설명 |
|---|---|
| 파일 첨부 분석 | PDF/이미지/문서 업로드 후 AI 분석 |
| 웹 검색 연동 | 미구현 — 사내 보안 정책으로 에이전트 웹 검색 차단 |
| 대화 분기/포크 | 특정 메시지에서 새 대화 분기 |
| 대화 내 검색 | 메시지 내용 검색 (제목뿐 아니라) |
| 멀티 대화 비교 | 두 대화를 나란히 비교 |
| 장기 메모리 | 대화 간 사용자 선호 기억 |
| 구분 | Chat | Cowork | Code |
|---|---|---|---|
| 대상 사용자 | 전체 사용자 | 지식 노동자 (기획, 분석, 문서) | 개발자 |
| 상호작용 모델 | 대화형 Q&A | 자율적 멀티스텝 작업 수행 | 에이전틱 코딩 |
| 파일 접근 | 없음 | 선택된 폴더 (VM 샌드박스) | 선택된 프로젝트 폴더 |
| 실행 환경 | N/A | 로컬 VM (격리) | 로컬 / 리모트 / SSH |
| 핵심 기능 | 웹 검색, 커넥터, 아티팩트 | 문서 작성, 데이터 분석, 스프레드시트 | Visual Diff, Git Worktree, 앱 프리뷰 |
| 권한 모델 | 읽기 전용 | 폴더 선택 + 읽기/쓰기 분리 + 삭제 확인 | 도구별 허용/차단 + 샌드박스 |
| 보안 | 기본 | VM 격리 + 네트워크 차단 | SecurityAnalyzer + ConfirmationPolicy |
| 패턴 | 설명 | AX Copilot 적용 방향 |
|---|---|---|
| 폴더 선택 | 채팅 하단에 작업 폴더 선택 UI. 선택한 폴더만 접근 가능 | Chat 하단에 FolderBrowserDialog + 경로 표시 바 |
| 권한 단계 | 읽기/쓰기 분리, 삭제 시 확인 프롬프트, 네트워크 차단 | 3단계: Ask(매번 확인) / Auto(자동 허용) / Deny(차단) |
| 에이전트 루프 | 계획 → 도구 실행 → 관찰 → 재평가 반복 | OpenHands/OpenCode 코어 엔진 활용 |
| 도구 시스템 | 파일 읽기/쓰기, Bash, 브라우저, 웹 검색 | WPF 네이티브 도구 + MCP 통합 (웹 검색 제외) |
| Git 스냅샷 | 매 작업 단계마다 Git 커밋으로 롤백 가능 | OpenCode의 Git snapshot 시스템 활용 |
| LSP 검증 | 파일 수정 후 Language Server로 오류 자동 검증 | OpenCode의 LSP 통합 활용 |
| 항목 | Claude Cowork | AX Copilot 차별점 |
|---|---|---|
| 실행 환경 | 클라우드 VM 샌드박스 | 완전 로컬 실행 — 데이터가 외부로 전송되지 않음 |
| LLM 선택 자유 | Claude만 사용 가능 | 4종 LLM 지원 — Ollama/vLLM/Gemini/Claude |
| 보안 통제 | Ask/Auto 2단계 | Ask/Auto/Deny 3단계 + 차단 경로/확장자/위험 명령 |
| 배포 | Electron 기반 | 단일 EXE + NuGet DLL |
| 비용 | Pro $20/월, Max $100/월 | 무료 + API 비용만 |
| 네트워크 의존 | 상시 인터넷 필요 | Ollama/vLLM 사용 시 인트라넷만으로 동작 |
| 구성 요소 | 역할 | 내장 방식 |
|---|---|---|
openhands.sdk | Agent, Conversation, LLM, Tool, 이벤트 시스템 | Python subprocess 또는 HTTP API |
openhands.tools | 파일 조작, Bash, 브라우저, 웹 검색 | 필요한 도구만 선별 내장 (웹 검색 제외) |
openhands.workspace | 실행 환경 (로컬/Docker/리모트) | LocalWorkspace (Docker 없이 직접 실행) |
agent_server | REST/WebSocket API 서버 | 로컬 HTTP 서버로 WPF와 통신 |
| 구성 요소 | 역할 | 내장 방식 |
|---|---|---|
| Bun HTTP 서버 (Hono) | 에이전트 루프, 도구 실행, LLM 통신 | 백그라운드 프로세스 + REST API |
| 도구 시스템 | 파일 읽기/쓰기, Bash, Glob, Grep, 웹 검색 | HTTP API로 호출 (웹 검색 제외) |
| LSP 통합 | 파일 수정 후 Language Server 진단 | 서버 내장 LSP 그대로 활용 |
| Git Snapshot | 매 단계 임시 커밋 → undo/redo 지원 | 서버 내장 기능 그대로 활용 |
| 이벤트 버스 (SSE) | 실시간 스트리밍 (tool-call, text-delta 등) | WPF HttpClient + SSE 파싱 |
| 항목 | OpenHands | OpenCode |
|---|---|---|
| 주 언어 | Python + TypeScript | Go + JavaScript(Bun) |
| 아키텍처 | 이벤트 소싱 + Docker 샌드박스 | 클라이언트-서버 + HTTP API + SSE |
| 격리 수준 | Docker 컨테이너 (완전 격리) | 없음 (Git 스냅샷으로 롤백) |
| LLM 지원 | 100+ (LiteLLM) | 75+ (AI SDK) |
| .NET 통합 난이도 | 중간 (Python subprocess + HTTP) | 낮음 (순수 HTTP REST + SSE) |
| Windows 지원 | Docker 필요 | WSL 권장, 네이티브 가능 |
| 적합 용도 | Cowork (문서/데이터/분석 작업) | Code (코드 편집/생성/리팩토링) |
| 논문/개념 | 핵심 아이디어 | 주요 기법 | AX Copilot 적용 방안 |
|---|---|---|---|
| ReAct Yao et al., 2023 |
Reasoning + Acting 인터리빙 | Thought-Action-Observation 트리플 반복 | 현재 부분 적용. Thought 단계를 명시적으로 분리하여 UI에 표시. |
| Toolformer Schick et al., 2023 |
LLM이 스스로 도구 사용 시점과 방법을 학습 | Self-supervised API call insertion | 시스템 프롬프트에서 도구 사용 규칙 정의. 추가 조치 불필요. |
| MRKL Systems Karpas et al., 2022 |
LLM을 라우터로, 전문 모듈을 실행기로 분리 | Neural + Symbolic 모듈 하이브리드 | 이미 적용. ToolRegistry가 MRKL의 모듈 레지스트리 역할. |
| HuggingGPT / TaskMatrix Shen et al., 2023 |
LLM이 작업을 분해하고 전문 모델에 위임하는 오케스트레이터 패턴 | Task Planning → Model Selection → Execution → Response | 핵심 적용 대상. Task Decomposition 단계 추가 — 복잡한 요청을 하위 작업으로 분해. |
| Voyager Wang et al., 2023 |
자동 커리큘럼 + 스킬 라이브러리 | Skill Library + Self-verification + Iterative Refinement | 장기 적용 대상. 커스텀 스킬 저장 시스템. |
| SWE-Agent Yang et al., 2024 |
Agent-Computer Interface (ACI) 설계 원칙 | Linting, Window-based file viewing, Search & Navigate | Code 탭에 핵심 적용. FileEditTool 실행 후 자동 구문 검증 추가. |
| Reflexion Shinn et al., 2023 |
자기 반성을 통한 에이전트 성능 향상 | Evaluator → Self-Reflection → Memory → Retry with insight | 중요 개선 대상. 도구 실패 시 반성 프롬프트 추가. 최대 N회 자동 재시도. |
| Plan-and-Solve Wang et al., 2023 |
먼저 계획을 세우고 단계별로 실행 | 계획 → 변수 추출 → 단계별 계산 | 시스템 프롬프트 개선에 즉시 적용 가능. |
| MemGPT / LLM OS Packer et al., 2023 |
LLM 컨텍스트 윈도우를 가상 메모리처럼 관리 | Main context ↔ Archival storage ↔ Recall storage 계층 | Context Condenser의 이론적 기반. 3계층 메모리 시스템. |
| AutoGPT Richards, 2023 |
완전 자율 에이전트 | Self-criticism, Budget/Step limit, Persistent memory | 가드레일 설계 참고. 에이전트 루프 최대 반복 횟수 제한. |
| Tree of Thoughts Yao et al., 2023 |
여러 추론 경로를 트리로 탐색 | BFS/DFS 기반 탐색, 백트래킹 | 장기 연구 대상. |
| 프로젝트 | Stars | 아키텍처 | 핵심 차별점 | AX Copilot 적용 포인트 |
|---|---|---|---|---|
| OpenHands | 64k+ | 이벤트 소싱 + Docker 샌드박스 | SecurityAnalyzer, LLMSummarizingCondenser, 이벤트 소싱 | ContextCondenser 구현, 위험도 평가, 이벤트 로그 |
| Aider | 30k+ | Git 기반 diff 편집 + 코드맵 | Repository Map, Unified Diff, Auto-commit | Repo Map (작업 폴더 트리 요약), Git 스냅샷 |
| Cline | 35k+ | VS Code 확장 + 에이전트 루프 | Diff 미리보기, 비용 추적, MCP 지원 | Diff 미리보기 UI, 누적 비용 표시 |
| Cursor | 상용 | IDE 내장 에이전트 + Shadow Workspace | Shadow Workspace, Tab Completion, @-mentions | Shadow Workspace, @-참조 컨텍스트 첨부 |
| Devon | 4k+ | 세션 기반 에이전트 + 자동 테스트 | 자동 테스트 실행, 세션 이력, Interrupt & Resume | 세션 직렬화, 자동 테스트 |
| Sweep | 8k+ | GitHub Issue → PR 자동 생성 | 코드 검색 인덱싱, Self-review | Self-review 2-pass 패턴 |
| Mentat | 3k+ | 터미널 기반 코딩 에이전트 | Auto Context (import/dependency 자동 수집) | Auto Context 파일 편집 시 관련 파일 자동 추가 |
| # | 기술 영역 | 현재 상태 | 목표 구현 | 참고 | 우선순위 |
|---|---|---|---|---|---|
| 1 | Task Decomposition | 없음 | 복잡한 요청을 하위 작업으로 분해 + 진행률 UI | HuggingGPT, Plan-and-Solve | P1 |
| 2 | Self-Reflection | 에러 메시지만 | 반성 프롬프트 + 최대 3회 자동 재시도 | Reflexion, SWE-Agent | P1 |
| 3 | Context Condenser | 없음 | 토큰 임계값 시 LLM 요약으로 압축 | OpenHands | P1 |
| 4 | Repo/Folder Map | 없음 | 파일 트리를 시스템 프롬프트에 자동 포함 | Aider RepoMap | P2 |
| 5 | Risk Assessment | Ask/Auto/Deny만 | 도구별 위험도 자동 분류 | OpenHands SecurityAnalyzer | P2 |
| 6 | Diff Preview | 즉시 수정 | 파일 수정 전 diff 뷰 + 사용자 승인 | Cline, Cursor | P2 |
| 7 | Session Serialization | 대화만 저장 | 에이전트 루프 전체 상태 JSON 저장/복원 | Devon, OpenHands | P2 |
| 8 | Custom Skill Library | 내장 12개 고정 | 사용자 정의 스킬 저장/관리 | Voyager | P3 |
| 9 | Self-Review | 없음 | 2-pass 품질 검증 패턴 | Sweep, Reflexion | P3 |
| 10 | Parallel Tool Execution | 순차 1개씩 | Task.WhenAll 병렬 실행 | Claude API parallel tool_use | P3 |
| 11 | Auto Context | 없음 | 편집 대상 파일의 import/참조 파일 자동 감지 | Mentat, Cursor | P3 |
| 12 | Shadow Workspace | 없음 | 임시 복사본에서 편집 → 검증 → 적용 | Cursor | P3 |
| # | 기능 | 설명 | 우선순위 |
|---|---|---|---|
| 1 | 파일 포맷 선택 UI | 사용자가 결과물 형식(Excel/Word/HTML/Markdown/CSV)을 직접 선택 | P1 |
| 2 | 실행 이력 상세 표시 | 에이전트 전체 이력을 타임라인으로 표시 (접이식 이벤트 카드) | P1 |
| 3 | 문서 실시간 미리보기 | Claude Artifacts 스타일 오른쪽 패널 미리보기 | P1 |
| 4 | 디자인 템플릿 시스템 | 고품질 디자인 템플릿 내장 (보고서, 분석표, 대시보드 등) | P2 |
| 5 | Suggestion Chips 고도화 | 다양한 선택지 패턴 감지하여 칩 표시 | P2 |
| 설정 카테고리 | 경쟁 서비스 현황 | AX Copilot 구현 계획 | 우선순위 |
|---|---|---|---|
| 미리보기 자동 열기 | Claude Artifact 자동 표시 | AutoPreview: Auto / Manual / Off | P1 |
| 기본 출력 포맷 | AI가 자동 선택 | DefaultOutputFormat: 자동 / Excel / Word / HTML / MD / CSV | P1 |
| 에이전트 권한 세부 | 프로젝트별 권한 프로필 | 도구별 개별 권한, 경로별 권한, 위험도 기반 자동 분류 | P2 |
| 이벤트 로그 수준 | 상세/간략 모드 전환 | AgentLogLevel: 간략 / 상세 / 디버그 | P2 |
| 에이전트 루프 제한 | 기본 25회 | MaxAgentIterations: 1~50 슬라이더 | P2 |
| 탭별 모델 설정 | 단일 모델 | Chat/Cowork/Code 탭별 다른 LLM 지정 가능 | P3 |
| UI 요소 | 문제점 | 커스텀 구현 방안 | 상태 |
|---|---|---|---|
| ContextMenu | 시스템 기본 흰색 메뉴 | WPF Popup 기반 커스텀 메뉴 + DynamicResource | 완료 |
| MessageBox | Win32 스타일 테마 불일치 | CustomMessageBox 클래스로 대체 | 완료 |
| ComboBox 드롭다운 | 다크 테마에서 불일치 | Popup 기반 커스텀 드롭다운 | P2 예정 |
| FolderBrowserDialog | 테마 적용 불가 | 자체 최근 폴더 메뉴를 1차 접점으로 제공 | 완료 |
| ToolTip | 시스템 기본 노란색 | 커스텀 ToolTip — 다크 배경, 라운드 코너 | P2 예정 |
DynamicResource 키 사용 (하드코딩 절대 금지)#18FFFFFF 반투명 배경 + 핸드 커서Button 사용 금지 — Border + MouseLeftButtonUp 사용
| 항목 | 설명 | 우선순위 |
|---|---|---|
| 탭 UI 구조 | ChatWindow 상단에 Chat | Cowork | Code 3탭 추가 | P0 |
| 작업 폴더 선택 | 채팅 하단 폴더 경로 표시 바 + 선택 버튼 | P0 |
| 권한 시스템 설계 | 3단계: Ask / Auto / Deny | P0 |
| 파일 컨텍스트 첨부 | 드래그&드롭 또는 버튼으로 파일 첨부 | P1 |
사내 보안 정책으로 Docker 및 WSL이 차단. 웹 검색 기능은 보안 정책상 구현하지 않습니다.
대안 전략: 오픈소스 핵심 로직을 C# 네이티브 코드로 재구현.
| 항목 | 설명 | 구현 방식 |
|---|---|---|
| 에이전트 루프 엔진 | 계획→도구실행→관찰→재평가 반복 | C# AgentLoopService |
| 기본 도구 (Tools) | FileRead/Write/Edit, Process, Glob, Grep | C# IAgentTool 인터페이스 |
| 내장 스킬 | ExcelSkill, DocxSkill, CsvSkill, MarkdownSkill, HtmlSkill, BatchSkill | 앱 내장 스킬 시스템 |
| LLM 함수 호출 | Tool-use / Function-calling 프로토콜 | 기존 LlmService 확장 |
| 권한 승인 UI | 인라인 승인 UI + 경로 표시 배너 | C# PermissionService |
| 컨텍스트 요약 | 토큰 초과 시 자동 요약 | C# ContextCondenser |
| 항목 | 설명 | 상태 |
|---|---|---|
| 프리뷰 탭 시스템 | 다중 파일 프리뷰, 채팅↔프리뷰 드래그 리사이즈 | 완료 |
| 드롭다운 메뉴 패턴 | 컴팩트 드롭다운 + Popup 방식 | 완료 |
| 프리뷰 동적 갱신 | 에이전트 파일 수정 시 자동 새로고침 | 완료 |
| 문서 읽기 도구 | PDF, DOCX, XLSX, CSV, TXT 텍스트 추출 | 완료 |
| 폴더맵 도구 | 작업 폴더 디렉토리 트리 생성 | 완료 |
| 항목 | 설명 | 구현 방식 |
|---|---|---|
| 코딩 에이전트 엔진 | 프롬프트→LLM→도구호출→결과피드백→검증 루프 | Phase 2 AgentLoopService 확장 |
| 코드 도구 시스템 | Glob, Grep, FileEdit, Bash, 코드 분석 | C# GlobTool, GrepTool, FileEditTool |
| 코드 에디터 뷰 | 파일 트리 + 코드 뷰어 + diff 표시 | AvalonEdit NuGet |
| Git Snapshot | 매 작업 단계 자동 커밋 + undo/redo | LibGit2Sharp |
| LSP 진단 | 파일 수정 후 오류/경고 인라인 표시 | StreamJsonRpc (LSP JSON-RPC) |
| 에이전트 모드 전환 | Plan 모드(읽기 전용) ↔ Build 모드(실제 수정) | 도구 권한 레벨로 구분 |
| 서브에이전트 | 복잡한 작업을 하위 에이전트에 위임 | SubAgentService + Task.WhenAll |
| 항목 | 설명 |
|---|---|
| 작업 폴더 시스템 | Chat 하단에 폴더 선택 바. Cowork/Code 탭 전환 시 동일 폴더 유지 |
| 권한 3단계 | Ask(매번 확인) / Auto(자동 허용, 경고 배너) / Deny(완전 차단) |
| 탭별 대화 분리 | Chat · Cowork · Code 탭별 대화 이력 완전 분리 |
| 외부 런타임 불필요 | 순수 C#/.NET 8.0으로 모든 기능 구현 |
| 웹 검색 차단 | 사내 보안 정책으로 에이전트의 외부 웹 접속 차단 |
| NuGet 패키지만 사용 | LibGit2Sharp, AvalonEdit, StreamJsonRpc, FileSystemGlobbing |
| 분류 | 우선순위 | 스킬 | 기능 | 보안 |
|---|---|---|---|---|
| 문서 | P0 | ExcelSkill 고도화 | 셀 서식, 수식, 다중 시트 | 안전 |
| P0 | DocxSkill | Word 문서 생성 | 안전 | |
| P1 | PptxSkill | 프레젠테이션 생성 | 안전 | |
| P0 | HtmlSkill 고도화 | JS 지원, Chart.js 차트, Mermaid | 안전 | |
| 데이터 | P0 | CsvSkill | CSV 읽기/쓰기/필터링 | 안전 |
| P1 | JsonSkill | JSON 쿼리/변환/검증 | 안전 | |
| P2 | SqliteSkill | 로컬 DB 생성/쿼리 | SQL 인젝션 방지 | |
| 시각화 | P1 | ChartSkill | Bar/Line/Pie 차트 | 안전 |
| P1 | MermaidSkill | Mermaid 다이어그램 | 안전 | |
| P1 | PdfReadSkill | PDF 텍스트 추출 | 읽기 전용 | |
| P2 | PdfCreateSkill | 보고서 PDF 생성 | 안전 | |
| 유틸 | P0 | ZipSkill | 압축/해제 | Zip-slip 검증 |
| P1 | DiffSkill | 두 파일 비교 | 읽기 전용 | |
| 스크립트 | P0 | BatchSkill | .bat 파일 생성 (실행 X) | 시스템 명령 차단 |
| P1 | PowerShellSkill | .ps1 스크립트 생성 | 시스템 명령 차단 | |
| 개발 | P1 | GitSkill | status/log/diff/commit + 스냅샷 | 쓰기 작업 확인 |
| 설정 항목 | Claude Desktop | AX Copilot 계획 | 상태 |
|---|---|---|---|
| 기본 파일 접근 권한 | Ask / Auto 선택 | Ask / Auto / Deny 3단계 | 완료 |
| 탭별 대화 분리 | 탭별 별도 대화 이력 | 탭별 대화 완전 분리 저장 | 완료 |
| 허용 도구 목록 | 도구별 활성/비활성 토글 | 설정에서 도구별 체크박스 | Phase 2 |
| 내장 스킬 | 없음 (Artifacts로 대체) | ExcelSkill, MarkdownSkill, HtmlSkill 등 | Phase 2 |
| 최대 에이전트 반복 횟수 | 내부 제한 (~100회) | 설정에서 25~100 지정 | Phase 2 |
| 자동 컨텍스트 요약 | 자동 (토큰 초과 시) | 임계치 조절 가능 | Phase 2 |
| 탭별 모델 선택 | 전역 모델 선택 | Chat / Cowork / Code 탭별 기본 모델 | Phase 2 |
| Git 스냅샷 | 자동 커밋/되돌리기 | 작업 전 자동 스냅샷, 원클릭 롤백 | Phase 3 |
| 코드 에디터 설정 | 없음 | AvalonEdit 테마, 폰트/크기, 줄번호 | Phase 3 |
화면 디자인 개선을 위해 커스텀 화면을 적극 개발하여 사용합니다.
사용자와 대화 모델이 상호 피드백하는 구조로 개발합니다.
| 단계 | AI 행동 | 사용자 피드백 방식 |
|---|---|---|
| 계획 | 작업 목록 + 예상 결과 제시 | 승인 / 수정 / 취소 버튼 |
| 실행 | 도구 호출 전 확인 요청 | 실행 / 건너뛰기 버튼 |
| 검수 | 결과 미리보기 + 요약 표시 | 승인 / 재작업 / 메시지 |
최신 논문 및 오픈소스를 활용하여 기능 고도화를 적극 추진합니다.
필요한 경우 고성능 NuGet 라이브러리를 적극 채용하고, 포함배포(self-contained)로 인트라넷 호환성을 보장합니다.
| 영역 | 현재 | 검토 대상 NuGet | 용도 |
|---|---|---|---|
| DOCX/XLSX | DocumentFormat.OpenXml | 이미 채택 | Word/Excel 생성 |
| PDF 생성 | 미구현 | QuestPDF, itext7 | PDF 보고서 직접 생성 |
| Excel 고급 | OpenXml 직접 | ClosedXML | 더 간편한 Excel API |
| 차트 이미지 | CSS 차트 | ScottPlot, LiveCharts2 | 차트를 이미지로 렌더링 |
| 마크다운 | 직접 파싱 | Markdig | MD→HTML 고품질 변환 |
대화창에서 마우스 오버가 가능한 모든 버튼, 아이콘에 호버 시 애니메이션을 적용합니다.
| 대상 | 호버 효과 | 구현 방법 |
|---|---|---|
| GhostBtn (사이드바 버튼) | 1.08x 확대 | XAML Style.Triggers + ScaleTransform |
| TopTabBtn (탭 버튼) | 1.06x 확대 | XAML Style.Triggers + ScaleTransform |
| BtnSend, BtnStop, BtnAttach | 1.10~1.12x 확대 | 코드비하인드 ApplyHoverScaleAnimation() |
| BtnModelSelector | Y축 -2.5px 바운스 | 코드비하인드 ApplyHoverBounceAnimation() |
| 액션 버튼 (복사, 편집 등) | 1.15x 확대 | CreateActionButton 내 적용 |
| # | 기능 | 구현 내용 |
|---|---|---|
| 8-1 | MCP 클라이언트 | McpClientService (stdio/JSON-RPC), McpTool 래핑, 설정 UI |
| 8-2 | 모델 폴백 | FallbackModels 순차 시도, 폴백 알림, 설정 편집 UI |
| 8-3 | 대화 분기 | ParentId/BranchLabel, 우클릭 "여기서 분기", 사이드바 분기 아이콘 |
| 8-4 | 스플릿 뷰 | 자동 프리뷰 (에이전트 파일 수정 시), AutoPreview 설정 |
| 8-5 | 커맨드 팔레트 | Ctrl+Shift+P, 16개 명령, 한글 초성 검색 |
| 8-6 | 토큰 관리 | TokenEstimator (비용 추정, CJK 가중치), 상태바 비용 표시 |
| 8-7 | 에이전트 자율성 | 동적 반복 한도 (도구 15+ → 2배), 다단계 반성 |
| 8-8 | 개발자 모드 | 공통 탭, 비밀번호 보호, 스텝 승인 |
| 8-9 | 보안 감사 로그 | AuditLogService (JSON 영속화), 설정 토글 + 폴더 열기 |
| 추가 | 다중 서버 | RegisteredModel에 endpoint/apiKey 필드, 모델별 서버 라우팅 |
| 항목 | 상태 | 변경 내용 |
|---|---|---|
| LlmService JSON 파싱 안전 | 완료 | SafeParseJson 래퍼, 배열 길이 검사, API error 응답 감지 |
| API 에러 분류 | 완료 | HTTP 상태 코드별 메시지 (401/403/404/429/500) |
| 재시도 로직 | 완료 | PostJsonWithRetryAsync — 429/타임아웃 시 최대 2회 |
| 청크 타임아웃 | 완료 | ReadLineWithTimeoutAsync — 30초 무응답 시 스트림 종료 |
| ChatStorageService 동기화 | 완료 | ReaderWriterLockSlim, 원자적 쓰기(tmp→rename) |
| ChatHandler 싱글턴 | 완료 | lock(_windowLock)으로 중복 창 생성 방지 |
| ChatWindow UI 쓰로틀링 | 완료 | DispatcherTimer 50ms 간격 갱신, Brush 캐싱 |
| Claude API 백엔드 | 완료 | Anthropic Messages API, 스트리밍(content_block_delta) |
| API 키 보안 분리 | 완료 | Ollama/vLLM=암호화, Gemini/Claude=평문 |
| 설정 UI AI 탭 | 완료 | 4종 서비스 선택, 서비스별 키 입력 안내 텍스트 분리 |
| 항목 | 상태 | 변경 내용 |
|---|---|---|
| 스트리밍 실시간 표시 수정 | 완료 | 청크 단위 갱신 + Dispatcher.InvokeAsync(Background) 방식 |
| Shift+Enter 줄바꿈 | 완료 | AcceptsReturn="True" + PreviewKeyDown 핸들러 |
| 프롬프트 카드 워터마크 | 완료 | 워터마크(placeholder) 오버레이 표시 |
| 좋아요/싫어요 상호 배타 | 완료 | resetSibling/registerReset 콜백 패턴 |
| 디스크 용량 초과 자동 삭제 | 완료 | 드라이브 사용률 98% 초과 시 오래된 대화 자동 삭제 |
| 우클릭 컨텍스트 메뉴 | 완료 | 대화 제목에서 우클릭 시 바로 커스텀 메뉴 표시 |
| 대화 더블클릭 오류 수정 | 완료 | RemoveAt+Insert 패턴으로 안전 교체 |
| 항목 | 상태 | 변경 내용 |
|---|---|---|
| Chat/Cowork/Code 3탭 UI | 완료 | 상단 RadioButton 탭을 Agent 단일 → 3탭으로 전환 |
| 작업 폴더 선택 바 | 완료 | 폴더 경로 표시 + 선택/해제 버튼. 최근 폴더 10개 저장 |
| 파일 컨텍스트 첨부 | 완료 | 파일 첨부 버튼 + 드래그 앤 드롭. 10MB 제한 |
| 권한 시스템 설계 | 완료 | 3단계 파일 접근 권한: Ask / Auto / Deny |
| 대화 주제 프리셋 7종 | 완료 | 일반/경영/연구개발/제품분석/수율분석/제조기술/시스템 |
| 대화 내보내기 확장 | 완료 | Markdown + JSON + HTML + Text 4종 포맷 |
| 메시지 타임스탬프 | 완료 | 사용자/AI 메시지에 HH:mm 시간 표시 |
| 격려 알림 주기 타이머 | 완료 | System.Timers.Timer 기반 주기적 알림 |
| 커스텀 메시지 박스 | 완료 | 앱 전체 기본 MessageBox → 테마 통합 커스텀 다이얼로그 |
갭: 코드 분석 없이 텍스트 기반으로만 코드 이해
구현: Language Server Protocol 클라이언트로 정의 이동, 참조 검색, 심볼 목록 활용
에이전트 도구: lsp_goto_definition, lsp_find_references, lsp_symbols
기술: OmniSharp (C#), typescript-language-server, pyright
갭: 단일 에이전트가 순차 처리, 큰 작업에서 느림
구현:
spawn_agent, wait_agents패턴: Claude Code의 Agent tool, OpenCode의 parallel execution
갭: 대규모 프로젝트에서 관련 파일을 찾지 못함
search_codebase (시맨틱 검색)기술: SQLite-vec 또는 Hnswlib (로컬 벡터 DB, 서버 불필요)
구현: 코드 변경 감지 → 관련 테스트 자동 생성 → 실행 → 결과 기반 수정
에이전트 도구: test_generate, test_run, test_analyze
구현: 스케줄된 작업 실행 (코드 리뷰, 보안 스캔, 일일 보고서)
트리거 소스: 타이머, 파일 변경 감지, Git push/pull 이벤트
구현: 대화 → PDF, 보고서 → Word/PDF 변환
기술: HTML → PDF (PuppeteerSharp 또는 wkhtmltopdf)
구현: 트리 형태 대화 탐색기 (노드 = 메시지, 간선 = 분기, 현재 위치 하이라이트)
구현: WPF AutomationPeer, 키보드 내비게이션, 고대비 모드 (WCAG 2.1 AA)
| # | 기능 | 구현 내용 | 상태 |
|---|---|---|---|
| 10-1 | 자동 모델 선택 (Auto Router) | 질문 유형 감지 → 최적 모델 자동 라우팅, 잠금 모드 | ✓ 완료 |
| 10-2 | 에이전트 메모리 (영속 학습) | 프로젝트 규칙/코딩 선호도 자동 기억, 대화 간 유지 | ✓ 완료 |
| 10-3 | 웹훅 트리거 확장 | Git push/PR, Jira/Slack 웹훅 → 에이전트 자동 실행 | 높음 |
| 10-4 | 멀티모달 입력 (Vision) | Ctrl+V 이미지 붙여넣기 → Gemini/Claude/Ollama/OpenAI Vision API | ✓ 완료 |
| 10-5 | 코드 검색 개선 | TF-IDF + SQLite 영속 인덱스, 증분 업데이트, 바이그램 | ✓ 완료 |
| 10-6 | 에이전트 훅 시스템 | 도구 호출 전/후 사용자 스크립트 실행 | ✓ 완료 |
| # | 기능 | 구현 내용 | 상태 |
|---|---|---|---|
| 11-1 | 스킬 시스템 | *.skill.md YAML 프론트매터 → 슬래시 명령 자동 등록. 3폴더 우선순위. 기본 스킬 3종 | ✓ 완료 |
| 11-2 | AI 코드 리뷰 자동화 | CodeReviewTool — diff_review/file_review/pr_summary. 정적 분석 + diff 파서 | ✓ 완료 |
| 11-3 | 드래그&드롭 AI 처리 | 파일 유형별 AI 액션 팝업 (코드/문서/데이터/이미지) | ✓ 완료 |
| 추가 | 프로젝트 지침 (AX.md) | ProjectRuleTool — read/append/write, 사용자 승인 | ✓ 완료 |
| 추가 | 슬래시 명령어 강화 | 탭별 필터링, /help 도움말 창, 12개 내장 명령 | ✓ 완료 |
| # | 기능 | 설명 | 우선순위 |
|---|---|---|---|
| 12-1 | 도구/커넥터 관리 UI | 설정 → 기타에 29개 도구 카드 리스트, 활성/비활성 토글, 권한 표시 | 최고 |
| 12-2 | SKILL.md 표준 호환 | agentskills.io 스펙 지원. *.skill.md + 폴더/SKILL.md 양쪽 호환. 도구명 매핑 | 최고 |
| 12-3 | 스킬 시각적 편집기 | 폼 기반 UI로 스킬 생성 (이름/설명/지시사항/도구 선택). SKILL.md 저장 | ✓ 완료 |
| 12-4 | 런타임 의존 스킬 | Python/Node 감지 → 고급 스킬 자동 활성화, 4종 번들 | ✓ 완료 |
| 12-5 | 워크플로우 분석기 | 에이전트 실행 실시간 시각화 창, AgentLogLevel 연동, 타이밍/토큰 추적 | ✓ 완료 |
| 12-6 | 스킬 갤러리 UI | 설치된 스킬 카드 뷰, 카테고리 필터, 내장/사용자 뱃지, 편집/복제/삭제 | ✓ 완료 |
| 12-7 | 스킬 가져오기/내보내기 | 로컬 zip 기반 스킬 패키지 설치/내보내기 (온라인 마켓 제외) | ✓ 완료 |
| 12-8 | 에이전트 팀 (다중 세션 협업) | 여러 에이전트 메시지 교환 + 분업 | 중간 |
| 12-9 | 오프라인 AI (로컬 SLM) | ONNX Runtime + phi-3, 서버 없이 번역/요약 | 낮음 |
| 12-10 | 음성 입출력 | Whisper STT + TTS | 낮음 |
| 12-11 | 접근성 (A11y) | WCAG 2.1 AA, 키보드 내비게이션 | 낮음 |
| # | 기능 | 설명 | 우선순위 |
|---|---|---|---|
| 13-1 | 스킬 갤러리 UI | 설치된 스킬 카드 뷰, 카테고리 필터, 내장/사용자/고급 뱃지, 편집/복제/삭제 | ✓ 완료 |
| 13-2 | 스킬 시각적 편집기 | 폼 기반 UI로 스킬 생성 (이름/설명/지시사항/도구 선택), SKILL.md 저장 | ✓ 완료 |
| 13-3 | 스킬 가져오기/내보내기 | 로컬 zip 기반 스킬 패키지 설치/내보내기 | ✓ 완료 |
| 13-4 | 에이전트 실행 통계 대시보드 | 일별/주별 토큰 사용량, 도구 호출 빈도, 모델별 비용, 성공률 차트 | ✓ 완료 |
| 13-5 | AgentLogLevel 채팅 UI 연동 | 실행 이력 상세도를 코워크/코드 탭으로 이동, 채팅 본문 표시에 반영 | ✓ 완료 |
구현 순서: 13-A (13-5 + 13-3) → 13-B (13-1 + 13-4) → 13-C (13-2)
| # | 도구 | 설명 | 상태 |
|---|---|---|---|
| 14-A1 | json_tool | JSON 파싱·변환·검증·포맷팅 (jq 스타일 쿼리) | ✓ 완료 |
| 14-A2 | regex_tool | 정규식 테스트·추출·치환 (패턴 설명 포함) | ✓ 완료 |
| 14-A3 | diff_tool | 두 파일/텍스트 비교 → 통합 diff 출력 | ✓ 완료 |
| 14-A4 | base64_tool | Base64/URL 인코딩·디코딩 | ✓ 완료 |
| 14-A5 | hash_tool | 파일·텍스트 MD5/SHA256 해시 계산 | ✓ 완료 |
| # | 도구 | 설명 | 상태 |
|---|---|---|---|
| 14-B1 | clipboard_tool | Windows 클립보드 읽기·쓰기 (텍스트/이미지) | ✓ 완료 |
| 14-B2 | notify_tool | Windows 알림 전송 (장시간 작업 완료 알림) | ✓ 완료 |
| 14-B3 | env_tool | 환경변수 읽기·설정 (프로세스 범위) | ✓ 완료 |
| 14-B4 | zip_tool | 파일 압축(zip) / 해제 | ✓ 완료 |
| 14-B5 | log_search | Windows 이벤트 로그·애플리케이션 로그 검색 | 낮음 |
| 14-B6 | datetime_tool | 날짜·시간 변환, 타임존, 기간 계산 | ✓ 완료 |
| # | 도구 | 설명 | 상태 |
|---|---|---|---|
| 14-C1 | http_tool | 로컬/사내 HTTP API 호출 (GET/POST, JSON 파싱) | ✓ 완료 |
| 14-C2 | sql_tool | SQLite DB 쿼리 실행 (로컬 파일 기반) | ✓ 완료 |
| 14-C3 | network_tool | 포트 열림 확인, DNS 조회, ping (사내 망) | 낮음 |
| # | 항목 | 설명 | 상태 |
|---|---|---|---|
| 14-E1 | 슬래시 칩 표시 | 명령 선택 후 입력창에 파란 칩으로 표시 | ✓ 완료 |
| 14-E2 | 팝업 페이징 | 최대 N개 표시 + ▲▼ 네비게이션 | ✓ 완료 |
| 14-E3 | compact 명령어 | /init, /ctx, /pr, /todo, /clean, /refactor 등 | 차기 |
| # | 스킬 | 설명 | requires |
|---|---|---|---|
| 14-F1 | code-scaffold | 프로젝트 구조 자동 생성 | — |
| 14-F2 | meeting-minutes | 회의록 정리 (참석자/결정사항/액션아이템) | — |
| 14-F3 | paper-review | 논문 요약, 강점/약점 분석 | — |
| 14-F4 | data-visualize | 데이터 시각화 차트 (CSV/JSON → HTML) | — |
| 14-F5 | docx-creator | Word 문서 자동 생성 | python |
| 14-F6 | xlsx-analyzer | Excel 데이터 분석·피벗·차트 | python |
| 14-F7 | pdf-processor | PDF 텍스트 추출·병합·분할 | python |
| 14-F8 | pptx-creator | PPT 프레젠테이션 자동 생성 | node |
| 14-F9 | report-writer | 구조화된 보고서 자동 작성 | — |
| 14-F10 | api-docs | API 문서 자동 생성 | — |
| 14-F11 | db-schema | DB 스키마 → ERD 생성 | — |
| 14-F12 | commit-review | Git 커밋 메시지 검토 + 개선 | — |
크기 영향: .skill.md 12개 ≈ 약 130KB (인스톨러 크기 영향 없음)
| # | 항목 | 설명 |
|---|---|---|
| 14-G1 | 가이드 시스템 신설 | 사용자/개발자 가이드 분리, AES-256-CBC 암호화, GuideViewerWindow 내장 뷰어 |
| 14-G2 | 설정 UI 개선 | 독 바 탭 3번째 이동, 기타 탭 접기/열기 섹션 |
| 14-G3 | About 정보 보안 | 기술 스택 비노출, "Commander + Agent" 표시 |
| # | 기능 | 구현 내용 |
|---|---|---|
| 15-A | 멀티패스 문서 생성 | document_plan (개요 구조화) + document_assemble (섹션 조립). 3페이지+ 문서를 개요→섹션별 상세→조립 방식으로 품질 향상 |
| 15-B | PPT 네이티브 생성 | pptx_create — OpenXML 기반, Python 무의존, 5종 레이아웃, 4종 테마 |
| 15-C | 데이터 피벗/집계 | data_pivot — CSV/JSON 그룹화·필터·정렬·집계 (LINQ 기반) |
| 15-D | 템플릿 렌더링 | template_render — Mustache 스타일 변수 치환·반복·조건부 |
| 15-E | 이미지 분석 | image_analyze — LLM 멀티모달 describe/OCR/데이터 추출/비교 |
| 15-F | 파일 변경 감지 | file_watch — 폴더 감시, 상대 시간(1h/7d), 유형별 통계 |
| 15-G | 텍스트 요약 | text_summarize — 청크 분할→핵심 추출 요약 (4종 스타일) |
| 15-H | 내장 스킬 16종 추가 | 비즈니스 4종 + 데이터 3종 + 개발 3종 + 외부 검증 6종 — 총 29종 |
| 15-I | 설정 | EnableMultiPassDocument, MultiPassThresholdPages |
도구: 34개 → 42개 (+8), 스킬: 13개 → 29개 (+16)
| # | 기능 | 설명 | 우선순위 |
|---|---|---|---|
| 16-1 | 플랜 모드 (Plan Mode) | 에이전트가 도구 실행 전 구조화된 계획 생성 → 사용자 검토/편집/승인 → 승인 후 실행. PlanMode: off/always/auto | 최고 |
| 16-2 | 도구/커넥터 관리 UI | 설정에서 52개 도구 카테고리별 카드, 활성/비활성 토글, MCP 서버 연결 상태 표시 | 높음 |
| 16-3 | 프로젝트 규칙 시스템 | .ax/rules/*.md 디렉토리 — 파일 패턴·작업 유형별 규칙을 시스템 프롬프트에 자동 주입 | 높음 |
| 16-4 | 반복 테스트-수정 루프 | TestLoopTool auto_fix 모드 — 테스트 실행→실패 파싱→수정→재실행 자동 반복 | 높음 |
| 16-5 | 병렬 도구 실행 | LLM 다수 도구 동시 호출 시 의존성 분석 후 Task.WhenAll() 병렬 실행 | 중간 |
| 16-6 | SKILL.md 표준 완전 호환 | agentskills.io 스펙 전체 파싱, 외부↔내부 도구 이름 매핑 | 중간 |
| 16-R | 런타임 고급 스킬 확장 | 4종 추가: image-processor, diagram-generator, ocr-extract, data-visualize-adv (총 8종) | 중간 |
경쟁 대응: Claude Code Plan mode, GitHub Copilot Workspace plan
구현:
AppSettings.cs — PlanMode 설정: off / always / autoAgentLoopService.cs — 첫 반복에서 plan-only 시스템 프롬프트 주입, 도구 호출 차단ChatWindow.xaml — PlanReviewPanel (계획 단계별 편집/순서변경/삭제 UI)TaskDecomposer.cs — 구조화된 JSON 계획 포맷 파싱 강화경쟁 대응: Cursor .cursor/rules, Claude Code custom commands
구현:
ProjectRulesService.cs — 규칙 로드, YAML 프론트매터 파싱 (applies-to: *.cs, when: code-review)AgentLoopService.cs — 컨텍스트에 맞는 규칙만 시스템 프롬프트에 자동 주입| # | 기능 | 설명 | 우선순위 |
|---|---|---|---|
| 17-1 | 자기 성찰 (Self-Reflection) | 도구 실패 시 구조화된 성찰 프롬프트 주입, 에러 패턴 추적 (Reflexion 패턴) | 최고 |
| 17-2 | 작업 기억 (Working Memory) | 대화 압축 시에도 유지되는 구조화된 태스크 상태 (현재 작업, 참조 파일, 의사결정 로그) | 높음 |
| 17-3 | 멀티파일 통합 Diff 뷰 | 에이전트 다수 파일 수정 시 전체 변경사항을 하나의 패널에서 파일별/헌크별 승인/거부 | 높음 |
| 17-4 | 자동 컨텍스트 수집 | 사용자 메시지에서 파일명 감지 → 자동 읽기, Git diff, 관련 코드 검색 → 컨텍스트 주입 | 중간 |
| 17-5 | MCP HTTP+SSE 전송 | stdio 전용 → HTTP+SSE 트랜스포트 추가, 원격 MCP 서버 연결 지원 | 중간 |
| 17-6 | 대화 요약 온디맨드 | /summarize-chat 슬래시 명령으로 현재 대화 구조화 요약 | 낮음 |
현황: 현재 단순 재시도만 존재 (consecutiveErrors 카운터)
구현:
ReflectionService.cs — 에러 패턴 추적, 성찰 프롬프트 생성AgentLoopService.cs — 에러 후 성찰 주입IAgentTool.cs — AgentEventType.Reflecting 추가경쟁 대응: Windsurf persistent memory, CrewAI structured memory layers
구현:
WorkingMemoryService.cs — 구조화된 태스크 상태 추적ContextCondenser.cs — 압축 시 작업 기억 보존| # | 기능 | 설명 | 우선순위 |
|---|---|---|---|
| 18-1 | 에이전트 팀 (Multi-Agent) | 특화 에이전트(코드리뷰, 문서작성, 보안감사)가 메시지 버스로 협업, 공동 작업 수행 | 최고 |
| 18-2 | 플러그인 갤러리 + 레지스트리 | 로컬 NAS/Git 레지스트리 기반 플러그인/스킬 탐색, 설치, 업데이트 인앱 갤러리 | 높음 |
| 18-3 | AI 스니펫 | ;email {수신자} {주제} → LLM이 이메일 초안 자동 생성. 기존 스니펫에 AI 확장 | 중간 |
| 18-4 | 파라미터 퀵링크 | jira {티켓번호} → URL 템플릿 변수 치환 (사내 도구 빠른 접근) | 중간 |
| 18-5 | 오프라인 AI (ONNX Runtime) | 서버 없이 번역/요약/분류 가능한 로컬 소형 모델, 모델 별도 배포 | 낮음 |
| 18-6 | 웹 검색 AI 요약 | ? 검색 결과를 AI로 요약하여 런처에 표시 | 낮음 |
경쟁 대응: GitHub Copilot workspace agents, CrewAI role-based teams
구현:
AgentTeamService.cs — 팀 오케스트레이션AgentMessageBus.cs — 에이전트 간 통신AgentTeamConfig.cs — 팀 구성 모델ChatWindow.xaml — 팀 모드 UI| 항목 | 상태 |
|---|---|
| MCP UI (서버 관리 화면) | ✓ 비주얼 카드 리스트 + 활성/비활성 토글 + 서버 추가/삭제 UI 구현 |
| 대화 분기 트리 UI | ✓ 사이드바에 들여쓰기(16px) + 보라색 분기 아이콘 표시 |
| 스플릿 뷰 diff | ✓ DiffService (LCS 기반 라인 diff) 구현 — Added/Removed/Equal 분류 |
| english.json 확장 | ✓ 101 → 150개 완료 |
| movies.json 확장 | ✓ ~90 → 150개 완료 |
| McpClientService nullable warning | ✓ CS8603 해결 — 전체 경고 0개, 오류 0개 |
| 대화별 하단 설정 저장 | ✓ 권한/데이터활용/무드를 대화별 독립 저장/복원 |
| vLLM 다중 서버 지원 | ✓ RegisteredModel에 endpoint/apiKey 필드, 모델별 서버 라우팅 |
| 설정창 OutlineHoverBtn 크래시 | ✓ 인라인 스타일로 교체 |
| Auto 권한 경고 중복 표시 | ✓ 기존 대화에서 Auto였으면 경고 숨김 처리 |
| ShowTips/NotifyOnComplete 바인딩 | ✓ SettingsViewModel 속성 추가, 설정값 저장 정상화 |