282 lines
29 KiB
HTML
282 lines
29 KiB
HTML
<!-- WordPress 호환 HTML — 사용자 정의 HTML 블록에 붙여넣기 -->
|
|
|
|
<div style="max-width:860px; margin:0 auto; font-family:'맑은 고딕','Malgun Gothic',sans-serif; font-size:16px; color:#1a1a1a; line-height:1.8;">
|
|
|
|
<!-- 헤더 -->
|
|
<div style="text-align:center; padding:40px 20px 30px; background:linear-gradient(135deg,#1F3864 0%,#2E75B6 100%); border-radius:12px; margin-bottom:32px;">
|
|
<h1 style="color:#fff; font-size:28px; margin:0 0 8px;">AX Copilot</h1>
|
|
<p style="color:#B8CCE4; font-size:16px; margin:0 0 4px;">키보드 하나로 모든 업무를 제어하는 사내 전용 AI 런처</p>
|
|
<p style="color:#8FAFD4; font-size:13px; margin:0;">백승재 · AX연구소 AI팀 · SW Architect</p>
|
|
</div>
|
|
|
|
<!-- 1. 왜 만들었는가 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">1. 왜 만들었는가</h2>
|
|
|
|
<p>업무 중 가장 많이 반복하는 동작이 뭐냐고 물으면, 대부분의 사무직 직원이 이렇게 대답합니다:</p>
|
|
|
|
<ul>
|
|
<li>앱을 찾아서 실행하기</li>
|
|
<li>파일을 찾아서 열기</li>
|
|
<li>클립보드에서 복사한 내용 다시 찾기</li>
|
|
<li>계산기 열고 간단한 계산하기</li>
|
|
<li>AI에게 질문하려면 브라우저 열고 별도 서비스 접속하기</li>
|
|
</ul>
|
|
|
|
<p>이 모든 동작에 마우스를 들고, 탐색기를 열고, 클릭하고… 키보드에서 손을 뗄 수가 없습니다.</p>
|
|
|
|
<p><strong>AX Copilot</strong>은 이 문제를 해결합니다. <strong>Alt+Space</strong> 한 번으로 모든 것을 키보드로 제어할 수 있는 런처이자, <strong>AI 대화(AX Agent)</strong>까지 통합된 사내 전용 업무 도우미입니다.</p>
|
|
|
|
<p>이 프로젝트는 LLM(Claude)과 함께 기획부터 구현까지 진행한 사례로, AI와 협업하는 소프트웨어 개발의 실제 경험을 담고 있습니다.</p>
|
|
|
|
<!-- 2. AX Copilot이란? -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">2. AX Copilot이란?</h2>
|
|
|
|
<p><strong>Alt+Space</strong>를 누르면 화면 상단에 깔끔한 런처 창(<strong>AX Commander</strong>)이 나타납니다. 여기에 원하는 명령을 입력하면 됩니다.</p>
|
|
|
|
<ul>
|
|
<li>앱 이름을 치면 앱이 실행됩니다 (한국어 초성 검색도 가능!)</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">=</code> 를 치면 계산기가 됩니다</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">#</code> 을 치면 클립보드 히스토리가 나타납니다</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">cap region</code> 을 치면 영역 캡처가 시작됩니다</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">win chrome</code> 을 치면 크롬 창으로 즉시 전환됩니다</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">!</code> 을 치면 AI 대화(AX Agent)가 열립니다</li>
|
|
</ul>
|
|
|
|
<p>프리픽스(접두어) 기반으로 <strong>45개 이상의 명령어</strong>를 지원하며, 한국어 초성 검색(ㅅㄷ → 설정)과 퍼지 매칭이 됩니다.</p>
|
|
|
|
<!-- 3. 핵심 기능 소개 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">3. 핵심 기능 소개</h2>
|
|
|
|
<p>AX Copilot은 단순한 앱 런처가 아닙니다. 아래는 카테고리별 주요 기능입니다.</p>
|
|
|
|
<!-- 3-1. AI 대화 (AX Agent) -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">AI 대화 — AX Agent <span style="background:#2E75B6; color:#fff; font-size:12px; padding:2px 8px; border-radius:10px; margin-left:8px;">NEW v1.0.5</span></h3>
|
|
|
|
<ul>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">!</code> 예약어로 AI 대화 창 진입</li>
|
|
<li><strong>4종 LLM 지원</strong>: Ollama, vLLM(OpenAI 호환), Gemini, Claude API</li>
|
|
<li><strong>스트리밍 + 타이핑 효과</strong>: SSE 기반 실시간 응답, 12ms 타이머로 타이핑 애니메이션</li>
|
|
<li><strong>마크다운 + 코드 구문 강조</strong>: 10개 언어 키워드 하이라이팅, 코드 블록 복사 버튼</li>
|
|
<li><strong>토큰 사용량</strong>: k/m 단위 실시간 표시 + 응답 소요시간</li>
|
|
<li><strong>프롬프트 카드</strong>: 미리 설정된 시스템 프롬프트 + 사용자 정의 템플릿</li>
|
|
<li><strong>대화 관리</strong>: 고정/이름변경/분류(6종)/삭제, 날짜별 그룹, 30일 자동 정리</li>
|
|
<li><strong>메시지 편집</strong>: 사용자 메시지 편집/복사, 좋아요/싫어요 피드백</li>
|
|
</ul>
|
|
|
|
<!-- 3-2. 검색 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">검색</h3>
|
|
|
|
<ul>
|
|
<li><strong>퍼지 검색</strong>: 앱/파일명을 일부만 입력해도 찾아줌</li>
|
|
<li><strong>한국어 초성</strong>: ㅇㅎㄴ → 아한글 검색</li>
|
|
<li><strong>실행 빈도 학습</strong>: 자주 쓰는 앱이 상단으로</li>
|
|
<li><strong>기본 앱 별칭</strong>: 메모장, 계산기, 엑셀 등 한글+영문 즉시 실행</li>
|
|
<li><strong>폴더 검색</strong>: 인덱스 경로의 하위 폴더도 검색 가능</li>
|
|
</ul>
|
|
|
|
<!-- 3-3. 계산·변환 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">계산 · 변환</h3>
|
|
|
|
<ul>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= sqrt(144)</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= 0xFF + 1</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= 100km in miles</code></li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= 100 USD to KRW</code> (실시간 환율)</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">date +30d</code> (30일 후 날짜), <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">date unix</code> (타임스탬프)</li>
|
|
</ul>
|
|
|
|
<!-- 3-4. 클립보드 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">클립보드</h3>
|
|
|
|
<ul>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">#</code> <strong>히스토리</strong>: 복사 이력 검색 · 재사용 · 병합 (Shift+↑↓ 선택 → Shift+Enter 병합)</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">$</code> <strong>변환</strong>: JSON 정렬, Base64, URL 인코딩 등 12종</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">pipe</code> <strong>파이프라인</strong>: <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">pipe upper > trim > b64e</code> (19종 필터 체이닝)</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">batch</code> <strong>일괄 처리</strong>: 줄번호, 정렬, 중복제거, 감싸기 등 14종</li>
|
|
<li><strong>DPAPI 암호화</strong>: 클립보드 히스토리 파일이 현재 Windows 계정에서만 복호화 가능</li>
|
|
</ul>
|
|
|
|
<!-- 3-5. 개발자 도구 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">개발자 도구</h3>
|
|
|
|
<ul>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">json</code> format / minify / validate</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">encode</code> base64 / url / sha256</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">color #FF5500</code> → HEX/RGB/HSL/HSV 4종 변환</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">port 3000</code> → 점유 프로세스 확인</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">env PATH</code> → 환경변수 검색</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">pick</code> → 스포이드로 화면 색상 HEX 코드 추출 (돋보기 + 실시간 미리보기)</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">diff</code> → 클립보드 최근 2개 또는 파일 2개 비교</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">stats</code> → 텍스트 통계 (글자수/단어수/읽기시간/키워드 빈도)</li>
|
|
</ul>
|
|
|
|
<!-- 3-6. 화면 캡처 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">화면 캡처</h3>
|
|
|
|
<ul>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">cap region</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">window</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">scroll</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">screen</code> (사용 빈도순 정렬)</li>
|
|
<li><strong>지연 캡처</strong>: Shift+Enter → 3초/5초/10초 타이머 후 캡처 <span style="background:#2E75B6; color:#fff; font-size:11px; padding:1px 6px; border-radius:8px;">NEW</span></li>
|
|
<li><strong>스크롤 캡처</strong>: 활성 창을 끝까지 스크롤하며 페이지 전체 캡처</li>
|
|
<li><strong>글로벌 단축키</strong>(PrintScreen 등) 지원</li>
|
|
<li>보안: 클립보드에만 복사 (파일 저장은 설정에서 선택)</li>
|
|
</ul>
|
|
|
|
<!-- 3-7. 창 관리·시스템 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">창 관리 · 시스템</h3>
|
|
|
|
<ul>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">~save</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">~restore</code>: 창 배치 스냅샷</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">snap left/right/full</code>: 창 분할 레이아웃</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">win</code>: 열린 창 검색 → 즉시 전환 (Alt+Tab 대체)</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">/lock</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">/timer 5m</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">/alarm 14:30</code></li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">svc</code>: Windows 서비스 관리 + 클립보드 강제 재시작</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">monitor</code>: CPU·메모리·디스크·가동시간 실시간 모니터링</li>
|
|
</ul>
|
|
|
|
<!-- 3-8. 업무 자동화 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">업무 자동화</h3>
|
|
|
|
<ul>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">journal</code>: 오늘 사용한 앱/명령어 기반 업무 일지 마크다운 자동 생성</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">routine</code>: 출근/퇴근 루틴 등록 → 한 번에 실행</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">scaffold</code>: 프로젝트 폴더 구조 템플릿 일괄 생성</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">rename</code>: 파일 일괄 이름 변경 (순번/날짜 템플릿)</li>
|
|
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">fav</code>: 자주 쓰는 파일·폴더 즐겨찾기</li>
|
|
</ul>
|
|
|
|
<!-- 3-9. 키보드 단축키 -->
|
|
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">키보드 단축키 16종</h3>
|
|
|
|
<table style="border-collapse:collapse; width:100%; margin:12px 0;">
|
|
<tr style="background:#2E75B6; color:#fff;">
|
|
<th style="padding:8px 12px; text-align:left; font-size:14px;">단축키</th>
|
|
<th style="padding:8px 12px; text-align:left; font-size:14px;">기능</th>
|
|
</tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">F1</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">도움말</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+K</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">단축키 도움말</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+H / R / B</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">히스토리 / 최근 파일 / 즐겨찾기</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+1~9</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">N번째 항목 즉시 실행</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+Enter</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">관리자 권한 실행</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Shift+Enter</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Large Type / 병합 실행 / 지연 캡처</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">→ (화살표)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">파일 액션 모드 (경로복사/탐색기/터미널 등 7종)</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Delete</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">항목 제거 (확인 다이얼로그)</td></tr>
|
|
</table>
|
|
|
|
<!-- 4. 보안 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">4. 보안 — 사내 전용 원칙</h2>
|
|
|
|
<p>AX Copilot은 사내 전용 프로그램으로, 외부 네트워크 통신을 원칙적으로 하지 않습니다.</p>
|
|
|
|
<ul>
|
|
<li><strong>외부 HTTP/HTTPS 호출 금지</strong> — HttpClient, WebClient 등 사용 불가 (AI 서비스는 사내 Ollama/vLLM 연동)</li>
|
|
<li><strong>클립보드 히스토리</strong> — Windows DPAPI 암호화 (CurrentUser 범위)</li>
|
|
<li><strong>API 키 보호</strong> — AES-256-CBC 암호화 모드 지원 (설정으로 전환 가능)</li>
|
|
<li><strong>화면 캡처</strong> — 클립보드에만 복사, 파일 저장은 사용자 설정에서 선택</li>
|
|
<li><strong>시스템 명령</strong> — 재시작/종료 등 위험 명령 실행 전 2단계 확인 다이얼로그</li>
|
|
<li><strong>대화 저장</strong> — 모든 AI 대화 내역은 로컬(%APPDATA%)에만 저장, 외부 전송 없음</li>
|
|
</ul>
|
|
|
|
<!-- 5. 테마 시스템 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">5. 테마 시스템</h2>
|
|
|
|
<p><strong>9개 내장 테마</strong>(Dark, Light, OLED, Nord, Monokai, Catppuccin, Sepia, Alfred, Alfred Light) + <strong>커스텀 테마</strong>를 지원합니다.</p>
|
|
|
|
<ul>
|
|
<li>각 테마는 색상뿐 아니라 <strong>모서리 라운딩 비율</strong>도 다릅니다 (OLED가 가장 둥글고, Monokai가 가장 각짐)</li>
|
|
<li>커스텀 테마는 14개 색상 + 모서리 라운딩 슬라이더로 자유롭게 편집</li>
|
|
<li>트레이 메뉴, AI 대화 창 모두 현재 테마를 자동으로 따라감</li>
|
|
</ul>
|
|
|
|
<!-- 6. 사용 통계 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">6. 사용 통계 & 알림</h2>
|
|
|
|
<ul>
|
|
<li><strong>런처 호출 횟수</strong>: 최근 14일 막대 차트</li>
|
|
<li><strong>PC 활성 시간</strong>: 최근 14일 막대 차트</li>
|
|
<li><strong>상위 명령</strong>: 30일 합산 Top 10 순위</li>
|
|
<li><strong>잠금 해제 알림</strong>: PC 잠금 해제 시 누적 사용시간 + 명언 팝업 (30분~4시간 간격, 5초~3분 표시)</li>
|
|
</ul>
|
|
|
|
<!-- 7. 주요 명령어 요약 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">7. 주요 명령어 요약</h2>
|
|
|
|
<table style="border-collapse:collapse; width:100%; margin:12px 0;">
|
|
<tr style="background:#2E75B6; color:#fff;">
|
|
<th style="padding:8px 12px; text-align:left; font-size:14px;">프리픽스</th>
|
|
<th style="padding:8px 12px; text-align:left; font-size:14px;">기능</th>
|
|
<th style="padding:8px 12px; text-align:left; font-size:14px;">예시</th>
|
|
</tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">!</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">AI 대화 (AX Agent)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">!nginx 설정 방법</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">=</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">계산기 + 단위/통화 변환</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">= 100 USD to KRW</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">#</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">클립보드 히스토리</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"># api</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">$</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">클립보드 변환 (12종)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">$ base64</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">cap</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">화면 캡처</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">cap region, cap scroll</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">win</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">창 전환 (Alt+Tab 대체)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">win excel</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">snap</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">창 분할 레이아웃</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">snap left, snap full</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">json</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">JSON 검증/포맷/미니파이</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">json format</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">pipe</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">클립보드 파이프라인</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">pipe upper > trim</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">date</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">날짜 계산/D-day/타임스탬프</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">date +30d</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">?</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">웹 검색 (10개 엔진)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?n 맛집 (네이버)</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">;</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">텍스트 스니펫</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">;addr → 자동 확장</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">/</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">시스템 명령 + 타이머/알람</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">/timer 5m 회의</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">emoji</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">이모지 피커 (300+)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">emoji 웃음</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">journal</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">업무 일지 자동 생성</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">journal</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">routine</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">출퇴근 루틴 실행</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">routine morning</td></tr>
|
|
</table>
|
|
|
|
<!-- 8. 기술 스택 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">8. 기술 스택</h2>
|
|
|
|
<ul>
|
|
<li><strong>.NET 8</strong>, WPF (UseWPF=true), WinForms (일부 다이얼로그)</li>
|
|
<li><strong>P/Invoke</strong>: SetWindowPos, PrintWindow, GlobalMemoryStatusEx, EnumWindows, GetPixel 등 Windows API 직접 호출</li>
|
|
<li><strong>단일 EXE 배포</strong>: Self-Contained + PublishSingleFile + IncludeNativeLibrariesForSelfExtract</li>
|
|
<li><strong>보안</strong>: DPAPI(System.Security.Cryptography.ProtectedData), AES-256-CBC, HKCU 레지스트리</li>
|
|
<li><strong>LLM 통신</strong>: HttpClient SSE 스트리밍 (Ollama/vLLM/Gemini/Claude API)</li>
|
|
<li><strong>테스트</strong>: xUnit 2.9.0 + FluentAssertions (57개 단위 테스트)</li>
|
|
</ul>
|
|
|
|
<!-- 9. v1.0.5 주요 변경 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">9. v1.0.5 주요 변경 사항</h2>
|
|
|
|
<table style="border-collapse:collapse; width:100%; margin:12px 0;">
|
|
<tr style="background:#2E75B6; color:#fff;">
|
|
<th style="padding:8px 12px; text-align:left; font-size:14px;">구분</th>
|
|
<th style="padding:8px 12px; text-align:left; font-size:14px;">내용</th>
|
|
</tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">AX Agent</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">! 예약어로 AI 대화 창. Claude Desktop 스타일 2패널 구조</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">LLM 4종</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ollama, vLLM, Gemini, Claude API 통합 지원</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">스트리밍</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">SSE 기반 스트리밍 + 12ms 타이핑 효과 + 커서 깜빡임</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">코드 강조</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">10개 언어 키워드 하이라이팅 + 코드 블록 복사</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">토큰 표시</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">k/m 단위 사용량 + 응답 소요시간(초)</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">프롬프트 카드</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">시스템 프롬프트 프리셋 + 사용자 정의 템플릿</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">대화 관리</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">고정/이름변경/분류/삭제, 피드백, 메시지 편집</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">지연 캡처</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Shift+Enter → 3/5/10초 타이머 후 캡처</td></tr>
|
|
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">커스텀 Popup</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">모든 드롭다운 메뉴를 라운드 커스텀 Popup으로 통일</td></tr>
|
|
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">알림 확장</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">기본 15초, 1분/2분/3분 표시 시간 추가</td></tr>
|
|
</table>
|
|
|
|
<!-- 10. 마무리 -->
|
|
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">10. 마무리 — LLM과 함께 만든 프로젝트</h2>
|
|
|
|
<p>AX Copilot은 기획부터 구현, 테스트, 문서화까지 LLM(Claude)과 함께 진행한 프로젝트입니다.</p>
|
|
|
|
<ul>
|
|
<li><strong>기획</strong>: Alfred, Raycast 등 기존 런처의 장점을 분석하고, 사내 환경에 맞는 기능 선별</li>
|
|
<li><strong>구현</strong>: WPF + P/Invoke 기반으로 외부 의존성 없이 45개+ 기능 구현</li>
|
|
<li><strong>AI 통합</strong>: Ollama/vLLM/Gemini/Claude 4종 LLM 서비스를 사내 환경에 맞게 통합</li>
|
|
<li><strong>검수</strong>: 코드 리뷰, 오류 분석, 보안 점검, 성능 최적화를 LLM과 함께 반복</li>
|
|
<li><strong>문서</strong>: 개발 문서, 사용자 매뉴얼, 블로그 글까지 LLM이 작성</li>
|
|
</ul>
|
|
|
|
<p style="margin-top:20px; padding:16px 20px; background:#F0F4F8; border-left:4px solid #2E75B6; border-radius:0 8px 8px 0;">
|
|
<em>"개인적으로 느낀 것은, LLM은 '코드 생성기'가 아니라 '함께 생각하는 동료'에 가깝다는 것입니다."</em><br><br>
|
|
<em>"이 기능은 이렇게 하면 어떠냐?" "이 부분은 보안 리스크가 있어" "사용자가 이렇게 쓰면 문제될 수 있어" — 이런 피드백을 주고받으며 프로젝트를 완성했습니다.</em>
|
|
</p>
|
|
|
|
<!-- 풋터 -->
|
|
<div style="text-align:center; margin-top:40px; padding:24px 20px; background:linear-gradient(135deg,#1F3864 0%,#2E75B6 100%); border-radius:12px;">
|
|
<p style="color:#fff; font-size:18px; font-weight:bold; margin:0 0 8px;">AX Copilot v1.0.5 — 모든 업무를 키보드 하나로.</p>
|
|
<p style="color:#B8CCE4; font-size:14px; margin:0;">백승재 · AX연구소 AI팀 · SW Architect · www.swarchitect.net</p>
|
|
</div>
|
|
|
|
</div>
|