Initial commit to new repository
This commit is contained in:
164
docs/26-03-29 report.txt
Normal file
164
docs/26-03-29 report.txt
Normal file
@@ -0,0 +1,164 @@
|
||||
E:\AX Copilot\src\AxCopilot\Views\TrayContextMenu.cs 55踰덉㎏ 以꾩엯?덈떎.
|
||||
|
||||
var menu = new SpacedContextMenuStrip(new Padding(20, 16, 20, 16));
|
||||
// 醫? ?? ?? ??
|
||||
|
||||
|
||||
|
||||
?댁젣 ?꾩껜?곸씤 蹂닿퀬瑜??뺣━?섍쿋?듬땲??
|
||||
|
||||
---
|
||||
|
||||
# AX Copilot 怨좊룄??怨꾪쉷 醫낇빀 蹂닿퀬
|
||||
|
||||
**?꾩옱 踰꾩쟾**: v1.5.2 | **蹂닿퀬??*: 2026-03-29
|
||||
|
||||
---
|
||||
|
||||
## 1. ?꾩껜 援ъ“ ?붿빟
|
||||
|
||||
| ?곸뿭 | ?꾨즺 Phase | 李④린 Phase | 臾몄꽌 |
|
||||
|------|-----------|-----------|------|
|
||||
| **AX Agent** (????쒕퉬?? | Phase 2.5~13 (紐⑤몢 ?꾨즺) | Phase 14 (李④린) | `AGENT_ROADMAP.md` |
|
||||
| **AX Commander** (?곗쿂) | Phase L1 (?꾨즺) | Phase L2, L3 (李④린) | `LAUNCHER_ROADMAP.md` |
|
||||
| **醫낇빀** | ??| v1.5.0~v2.0 | `NEXT_ROADMAP.html` |
|
||||
|
||||
---
|
||||
|
||||
## 2. AX Agent ???꾨즺 ?대젰 (Phase 2.5 ~ Phase 13)
|
||||
|
||||
### Phase 8 (v1.5.0) ??寃쎌웳 踰ㅼ튂留덊겕 湲곕컲 ??
|
||||
MCP ?대씪?댁뼵?? 紐⑤뜽 ?대갚, ???遺꾧린, ?ㅽ뵆由?酉? 而ㅻ㎤???붾젅?? ?좏겙 愿由? ?먯쑉?? 媛쒕컻??紐⑤뱶, 蹂댁븞 媛먯궗
|
||||
|
||||
### Phase 9 (v1.5.0) ??李⑥꽭? 怨좊룄????
|
||||
LSP ?곕룞 肄붾뱶 ?명뀛由ъ쟾?? 蹂묐젹 ?먯씠?꾪듃(?쒕툕?먯씠?꾪듃), TF-IDF ?쒕㎤??寃?? ?먮룞 ?뚯뒪??猷⑦봽, ?대깽???몃━嫄? PDF ?대낫?닿린, ?ㅼ떆媛?diff 酉곗뼱
|
||||
|
||||
### Phase 10 (v1.5.0) ??吏?ν삎 ?먯씠?꾪듃 ??
|
||||
Auto Router ?먮룞 紐⑤뜽 ?좏깮, ?먯씠?꾪듃 硫붾え由??곸냽 ?숈뒿), 硫?곕え??Vision), 肄붾뱶 寃??媛쒖꽑(SQLite ?곸냽), ?먯씠?꾪듃 ??
|
||||
|
||||
### Phase 11 (v1.5.0) ???앺깭怨??뺤옣 ??
|
||||
?ㅽ궗 ?쒖뒪???щ옒??紐낅졊), AI 肄붾뱶 由щ럭 ?먮룞?? ?쒕옒洹??쒕∼ AI 泥섎━
|
||||
|
||||
### Phase 12 (v1.5.1~1.5.2) ???ㅽ궗/而ㅻ꽖??怨좊룄????(?쇰?)
|
||||
- ???고????섏〈 ?ㅽ궗 (Python/Node 媛먯? + 4醫?怨좉툒 ?ㅽ궗)
|
||||
- ???뚰겕?뚮줈??遺꾩꽍湲?(?ㅼ떆媛???꾨씪???쒓컖??
|
||||
- 燧??꾧뎄/而ㅻ꽖??愿由?UI (怨꾪쉷)
|
||||
- 燧?SKILL.md ?쒖? ?명솚 (怨꾪쉷)
|
||||
|
||||
### Phase 13 (v1.5.2) ???ㅽ궗 ?앺깭怨?+ 遺꾩꽍 ??
|
||||
?ㅽ궗 媛ㅻ윭由?UI, ?쒓컖???몄쭛湲? 媛?몄삤湲??대낫?닿린, ?ㅽ뻾 ?듦퀎 ??쒕낫?? AgentLogLevel 梨꾪똿 ?곕룞
|
||||
|
||||
---
|
||||
|
||||
## 3. AX Agent ??李④린 怨꾪쉷: Phase 14 (v1.5.4+)
|
||||
|
||||
> **諛⑺뼢**: ???먯씠?꾪듃 ?꾧뎄 25醫???40醫? ?뺣? ??寃利앸맂 ?몃? ?ㅽ궗 12醫?踰덈뱾
|
||||
|
||||
### 14-A. ?곗씠??泥섎━ ?꾧뎄 (5醫?
|
||||
| ?곗꽑?쒖쐞 | ?꾧뎄 |
|
||||
|----------|------|
|
||||
| ?믪쓬 | `json_tool` (?뚯떛/寃利?jq荑쇰━), `regex_tool` (?뺢퇋???뚯뒪??異붿텧) |
|
||||
| 以묎컙 | `diff_tool` (?뚯씪 鍮꾧탳) |
|
||||
| ??쓬 | `base64_tool`, `hash_tool` |
|
||||
|
||||
### 14-B. ?쒖뒪???섍꼍 ?꾧뎄 (6醫?
|
||||
| ?곗꽑?쒖쐞 | ?꾧뎄 |
|
||||
|----------|------|
|
||||
| ?믪쓬 | `clipboard_tool` (?대┰蹂대뱶 ?쎄린/?곌린), `notify_tool` (Windows ?뚮┝) |
|
||||
| 以묎컙 | `env_tool` (?섍꼍蹂??, `zip_tool` (?뺤텞) |
|
||||
| ??쓬 | `log_search`, `datetime_tool` |
|
||||
|
||||
### 14-C. ?ㅽ듃?뚰겕/API ?꾧뎄 (3醫?
|
||||
| ?곗꽑?쒖쐞 | ?꾧뎄 |
|
||||
|----------|------|
|
||||
| ?믪쓬 | `http_tool` (?щ궡 API ?몄텧), `sql_tool` (SQLite 荑쇰━) |
|
||||
| ??쓬 | `network_tool` (?ы듃/DNS/ping) |
|
||||
|
||||
### 14-D. 肄붾뱶 ?덉쭏 ?꾧뎄 (4醫?
|
||||
| ?곗꽑?쒖쐞 | ?꾧뎄 |
|
||||
|----------|------|
|
||||
| ?믪쓬 | `snippet_runner` (肄붾뱶 利됱떆 ?ㅽ뻾) |
|
||||
| 以묎컙 | `template_tool` (蹂댁씪?ы뵆?덉씠??, `complexity_tool` (蹂듭옟??遺꾩꽍) |
|
||||
| ??쓬 | `dependency_tool` (?섏〈???몃━) |
|
||||
|
||||
### 14-E. UX 媛쒖꽑
|
||||
| ?곹깭 | ??ぉ |
|
||||
|------|------|
|
||||
| ???꾨즺 | ?щ옒??移??쒖떆, ?앹뾽 ?섏씠吏?|
|
||||
| 李④린 | compact 紐낅졊??(`/init`, `/ctx`, `/pr` ??, 利먭꺼李얘린, ?ㅽ궗 ?먮룞 異붿쿇 |
|
||||
|
||||
### 14-F. ?몃? 寃利??ㅽ궗 ?댁옣 踰덈뱾 (12醫?
|
||||
- **?쇰컲 (8醫?**: code-scaffold, meeting-minutes, paper-review, data-visualize, report-writer, api-docs, db-schema, commit-review
|
||||
- **?고????꾩슂 (4醫?**: docx-creator(python), xlsx-analyzer(python), pdf-processor(python), pptx-creator(python)
|
||||
- **?ш린 ?곹뼢**: ~120KB (臾댁떆 媛??
|
||||
|
||||
### 援ы쁽 ?쒖꽌
|
||||
1. **14-F** (利됱떆) ??2. **14-A+B** (1李? ??3. **14-C+D** (2李? ??4. **14-E** (3李?
|
||||
|
||||
---
|
||||
|
||||
## 4. AX Commander (?곗쿂) ???꾨즺 諛?李④린 怨꾪쉷
|
||||
|
||||
### Phase L1 (v1.5.0) ???꾨즺
|
||||
TextAction, Everything, 22 ?덉씠?꾩썐 ??쇰쭅, ?뚮윭洹몄씤 zip ?ㅼ튂, ??諛? ??붿긽???듯빀, ?대┰蹂대뱶 ?/移댄뀒怨좊━, ???뺤옣, ???怨듦컙 愿由?
|
||||
|
||||
### Phase L2 (v1.5.3) ???대┰蹂대뱶 怨좊룄??+ UX 媛쒖꽑
|
||||
| ?곗꽑?쒖쐞 | 湲곕뒫 |
|
||||
|----------|------|
|
||||
| **?믪쓬** | L2-1 ?대?吏 ?먮낯 ?댁긽??蹂댁〈 (?꾩옱 異뺤냼 ??????먮낯 DPAPI ??? |
|
||||
| **?믪쓬** | L2-2 Shift+Enter ?ㅽ뻾 ???먮룞 ?대┰蹂대뱶 蹂듭궗 |
|
||||
| 以묎컙 | L2-3 ?대?吏 誘몃━蹂닿린 李?(?뺣?/異뺤냼) |
|
||||
| 以묎컙 | L2-4 OCR 湲곕컲 ?대?吏 寃??(Windows OCR API 濡쒖뺄) |
|
||||
| ??쓬 | L2-5 ?대┰蹂대뱶 ??ぉ 蹂묓빀 |
|
||||
|
||||
### Phase L3 (v1.6.0+) ??李⑥꽭? ?곗쿂
|
||||
| ?곗꽑?쒖쐞 | 湲곕뒫 |
|
||||
|----------|------|
|
||||
| ?믪쓬 | ?뚮윭洹몄씤 ?몄빋 媛ㅻ윭由?(?щ궡 NAS/Git) |
|
||||
| 以묎컙 | ??寃??AI ?붿빟, ?뚯씪 ?쒓렇, ?ㅽ봽?쇱씤 AI (ONNX + phi-3) |
|
||||
| ??쓬 | ?ㅼ쨷 ?붿뒪?뚮젅?? ?뚮┝ ?쇳꽣, ?뚯꽦 ?낅젰, 誘몃땲 ?꾩젽 |
|
||||
|
||||
---
|
||||
|
||||
## 5. ?꾩옱 ?먯씠?꾪듃 ?꾧뎄 ?꾪솴 (25醫?
|
||||
|
||||
| 移댄뀒怨좊━ | ?꾧뎄 |
|
||||
|----------|------|
|
||||
| ?뚯씪 | `file_read`, `file_write`, `file_list`, `file_search` |
|
||||
| 肄붾뱶 遺꾩꽍 | `grep_tool`, `search_codebase`, `lsp_goto_definition`, `lsp_find_references`, `lsp_symbols` |
|
||||
| ?ㅽ뻾 | `process_run`, `build_run`, `git_tool` |
|
||||
| ?먯씠?꾪듃 | `spawn_agent`, `wait_agents`, `skill_manager` |
|
||||
| ?뚯뒪??| `test_generate`, `test_run`, `test_analyze` |
|
||||
| 肄붾뱶 由щ럭 | `code_review` |
|
||||
| 湲고? | `dev_env_detect`, `mcp_tool`, `hook_execute`, `event_trigger` ??|
|
||||
|
||||
**Phase 14 紐⑺몴**: 18醫?異붽? ??**43醫?* (?ㅻТ ?묒뾽 80% ?댁긽 ?먯쑉 ?섑뻾)
|
||||
|
||||
---
|
||||
|
||||
## 6. 怨꾪쉷 ?섎┰ ?먯튃 (Sigmoid.md 짠8)
|
||||
|
||||
| 愿??| 寃???ы빆 |
|
||||
|------|----------|
|
||||
| 寃쎌웳 ?쒕퉬??| Claw Code, Cursor, Windsurf, Copilot, Raycast 理쒖떊 湲곕뒫 |
|
||||
| 理쒖떊 ?쇰Ц | SWE-Agent v2, CodeAct, Reflexion, Agentic Coding Survey |
|
||||
| ?낃퀎 ?쒖? | MCP, SKILL.md, LSP, DAP |
|
||||
| ?щ궡 ?섍꼍 | ?ㅽ듃?뚰겕 ?쒗븳, 蹂댁븞, Python/Node ?ㅼ튂 ?꾪솴 |
|
||||
| ???ш린 | ?몄뒪?⑤윭 **150MB ?댄븯** ?좎? (?꾩옱 ~80MB) |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
蹂寃??뚯씪 5媛?
|
||||
|
||||
?뚯씪 蹂寃?
|
||||
Models/AppSettings.cs EnableMultiPassDocument 湲곕낯媛?true ??false
|
||||
ViewModels/SettingsViewModel.cs ?꾨줈?쇳떚 ?좎뼵 + Load/Save 留ㅽ븨 異붽?
|
||||
Views/SettingsWindow.xaml 肄붿썙????뿉 "怨좏뭹吏?臾몄꽌 ?앹꽦" ToggleSwitch 異붽?
|
||||
Services/Agent/DocumentPlannerTool.cs ?ㅼ젙 OFF ??document_plan ?꾧뎄 鍮꾪솢????LLM??html_create/docx_create ?ъ슜 ?덈궡
|
||||
Services/Agent/DocumentAssemblerTool.cs ?ㅼ젙 OFF ??document_assemble ?꾧뎄 鍮꾪솢?????숈씪 ?덈궡
|
||||
?숈옉:
|
||||
|
||||
OFF (湲곕낯媛?: document_plan, document_assemble ?몄텧 ???ㅽ뙣 硫붿떆吏 諛섑솚 ??LLM??湲곗〈 html_create/docx_create濡???踰덉뿉 ?앹꽦 (v1.5.x ?댁쟾 諛⑹떇)
|
||||
ON: 硫?고뙣??臾몄꽌 ?앹꽦 ?꾩껜 ?ъ슜 媛??(媛쒖슂?믪꽮?섎퀎 ?곸꽭?믪“由?
|
||||
1605
docs/AGENT_ROADMAP.html
Normal file
1605
docs/AGENT_ROADMAP.html
Normal file
File diff suppressed because it is too large
Load Diff
39
docs/AGENT_ROADMAP.md
Normal file
39
docs/AGENT_ROADMAP.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# AX Agent 로드맵 (전면 재작성)
|
||||
|
||||
## 1. 보존 이력 (요약만 유지)
|
||||
- v1.5.0: MCP 연동, 모델 폴백, 대화 분기, 프리뷰/토큰 관리, 에이전트 루프 강화.
|
||||
- v1.5.1: 고급 스킬 확장, 워크플로우 분석기, 런타임 감지.
|
||||
- v1.6.0: 멀티패스 문서 생성, 데이터 피벗/템플릿/이미지 분석 계열 도구 확장.
|
||||
- v1.7.0: Plan Mode, 병렬 도구 실행, 프로젝트 규칙 주입, 테스트 루프 자동화.
|
||||
- v1.7.1: 도구 실행 후 검증 게이트 강화, 피드백 컨텍스트 개선.
|
||||
- v1.7.2: 컨텍스트 압축/복원 안정화, UX/성능 보완.
|
||||
|
||||
## 2. 재작성 기준
|
||||
- 기준 레퍼런스: `claw-code/claw-code-f5a40b86dede580f6543bf8926c9af017eea9409/src`.
|
||||
- 목표: 동작 순서, 예외/검증 흐름, 세션 내구성에서 동일 품질 달성.
|
||||
- 원칙: AX 코드 스타일로 재구성(표현/구조 변경), 기능적 동등성 유지.
|
||||
|
||||
## 3. 2026 실행 계획 (v1.7.3 ~ v1.8.0)
|
||||
|
||||
| Phase | 참조 대상 (`claw-code`) | AX 적용 위치 | 완료 조건 | 품질 판정 시나리오 |
|
||||
|---|---|---|---|---|
|
||||
| A (v1.7.3) Hook/Permission 계약 고도화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts`, `src/utils/permissions/permissionSetup.ts` | `src/AxCopilot/Services/Agent/AgentHookRunner.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Models/AppSettings.cs`, `src/AxCopilot/ViewModels/SettingsViewModel.cs`, `src/AxCopilot/Views/SettingsWindow.xaml` | Hook JSON 출력(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영 완료. Plain text 훅 하위호환 유지. 훅 실패 비차단 유지. | Pre-hook 입력 변형 적용 시 도구 입력이 실제 변경되는지 검증. 권한 업데이트 후 동일 run 내 권한 판정이 즉시 반영되는지 검증. |
|
||||
| B (v1.7.4) Plan/Run 상태 내구성 강화 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/TaskRunService.cs`, `src/AxCopilot/Services/TaskRunStore.cs`, `src/AxCopilot/Views/ChatWindow.xaml.cs` | Plan 단계 승인/수정 이력 영속화. 앱 재시작 후 run 재개 시 마지막 실행 지점 정확 복원. 중복 실행/중복 이벤트 0건. | 실행 중 앱 종료 → 재실행 → 같은 탭/대화에서 run 상태와 최근 실행 이력이 일치하는지 검증. |
|
||||
| C (v1.7.5) 세션/이벤트 로그 정규화 | `src/utils/sessionStorage.ts`(이벤트 기록/복원 규약), `src/utils/hooks/hookEvents.ts` | `src/AxCopilot/Models/ChatModels.cs`, `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/AppStateService.cs` | 이벤트 스키마 정리(도구 호출/결과/권한/훅/요약). replay 시 순서 불일치 0건. run 단위 요약 리포트 생성 가능 상태. | 동일 세션을 여러 번 로드해도 실행 이력 순서/상태가 변하지 않는지 검증. |
|
||||
| D (v1.7.6) 명령/도구 선택 정확도 개선 | `src/commands.ts`, `src/Tool.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopParallelExecution.cs`, `src/AxCopilot/Services/LlmService.ToolUse.cs` | 도구 별칭 정규화 규칙 강화. unknown-tool 재시도 루프 방지. 실패 유형별 복구 흐름 표준화. | 오타/별칭/비활성 도구 요청 시 복구 프롬프트로 정상 도구로 수렴하는지 검증. |
|
||||
| E (v1.8.0) 품질 게이트 최종 정렬 | `src/query.ts`, `src/QueryEngine.ts`(루프 종료/완료 기준), `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs` | 코드/문서 작업별 완료 게이트를 증거 기반으로 고정. 내부 벤치마크 목표 성공률 충족. 완료 응답 근거 누락률 최소화. | 코드수정/문서생성/권한거부/실패복구 혼합 시나리오에서 조기 완료 없이 근거 기반 종료하는지 검증. |
|
||||
|
||||
## 4. 공통 검증 규칙
|
||||
- 모든 단계: `dotnet build` 경고 0/오류 0.
|
||||
- 고위험 변경: 최소 1개 이상 재현 테스트 추가.
|
||||
- 운영모드(`internal`/`external`) 보안 정책 위반 0건.
|
||||
|
||||
## 5. 즉시 착수 항목
|
||||
1. 내부 벤치마크(기본 loop/복구/권한/hook) 결과를 릴리즈 체크리스트에 연동 유지.
|
||||
2. 세션 replay 안정성(`Suite=ReplayStability`) 전건 통과를 릴리즈 게이트로 운영.
|
||||
3. 패리티 수치(테스트 통과 수/게이트 상태)를 로드맵 문서 간 동일 문구로 유지.
|
||||
|
||||
## 6. 최신 검증 스냅샷 (2026-04-03)
|
||||
- `dotnet test --filter "Suite=ParityBenchmark"`: 7/7 통과.
|
||||
- `dotnet test --filter "Suite=ReplayStability"`: 8/8 통과.
|
||||
- `dotnet test`: 355/355 통과.
|
||||
132
docs/AUTO_ROUTER_DEV_GUIDE.md
Normal file
132
docs/AUTO_ROUTER_DEV_GUIDE.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# 자동 모델 라우팅 (Auto Model Router) 개발자 가이드
|
||||
|
||||
## 개요
|
||||
|
||||
자동 모델 라우팅은 사용자 메시지의 유형(코딩/번역/분석 등)을 키워드 기반으로 감지하여,
|
||||
해당 유형에 최적화된 AI 모델로 자동 전환하는 기능입니다.
|
||||
|
||||
**현재 상태**: 잠금 (설정 UI에 표시되나 활성화 불가)
|
||||
**활성화 조건**: 사내 Ollama/vLLM 서버 확정 후 개발자가 아래 절차에 따라 활성화
|
||||
|
||||
---
|
||||
|
||||
## 활성화 절차
|
||||
|
||||
### 1단계: 사내 모델 능력 점수 등록
|
||||
|
||||
**파일**: `src/AxCopilot/Services/ModelRouterService.cs`
|
||||
**메서드**: `GetDefaultCapabilities()`
|
||||
|
||||
주석 처리된 Ollama/vLLM 예시를 해제하고 실제 모델 정보로 수정:
|
||||
|
||||
```csharp
|
||||
// ── 사내 Ollama/vLLM (예시 — 서버 확정 후 수정) ──
|
||||
new()
|
||||
{
|
||||
Service = "ollama", // "ollama" 또는 "vllm"
|
||||
Model = "codellama:34b", // 실제 모델 ID
|
||||
Alias = "CodeLlama 34B", // UI 표시명
|
||||
Scores = new()
|
||||
{
|
||||
["coding"] = 0.85, // 코딩 적합도 (0.0~1.0)
|
||||
["translation"] = 0.40, // 번역 적합도
|
||||
["analysis"] = 0.55, // 분석 적합도
|
||||
["creative"] = 0.35, // 창작 적합도
|
||||
["document"] = 0.40, // 문서 작성 적합도
|
||||
["math"] = 0.50, // 수학/계산 적합도
|
||||
}
|
||||
},
|
||||
```
|
||||
|
||||
**점수 가이드라인**:
|
||||
| 점수 | 의미 |
|
||||
|------|------|
|
||||
| 0.90+ | 해당 분야 최고 수준 |
|
||||
| 0.70~0.89 | 우수 |
|
||||
| 0.50~0.69 | 보통 |
|
||||
| 0.30~0.49 | 기본 가능하나 비추천 |
|
||||
| 0.30 미만 | 부적합 |
|
||||
|
||||
**인텐트 카테고리 키**:
|
||||
- `coding` — 코드 작성/디버그/리팩토링
|
||||
- `translation` — 번역/다국어
|
||||
- `analysis` — 데이터 분석/요약/비교
|
||||
- `creative` — 창작 글쓰기/스토리/에세이
|
||||
- `document` — 보고서/문서/제안서 작성
|
||||
- `math` — 수학/계산/증명
|
||||
|
||||
### 2단계: 설정 UI 잠금 해제
|
||||
|
||||
**파일**: `src/AxCopilot/Views/SettingsWindow.xaml`
|
||||
|
||||
"자동 모델 라우팅" 섹션에서 다음을 변경:
|
||||
|
||||
1. 두 `Border`의 `Opacity="0.5"` 제거 (또는 `Opacity="1.0"`으로 변경)
|
||||
2. `CheckBox`의 `IsEnabled="False" IsHitTestVisible="False"` 제거
|
||||
3. `Slider`의 `IsEnabled="False"` 제거
|
||||
4. 힌트 텍스트를 "비활성 시 항상 현재 선택된 모델을 사용합니다."로 변경
|
||||
|
||||
### 3단계: 기본값 활성화 (선택)
|
||||
|
||||
사용자가 직접 활성화하도록 할 수도 있지만, 기본 활성화하려면:
|
||||
|
||||
**파일**: `src/AxCopilot/Models/AppSettings.cs`
|
||||
|
||||
```csharp
|
||||
// 변경 전
|
||||
public bool EnableAutoRouter { get; set; } = false;
|
||||
|
||||
// 변경 후
|
||||
public bool EnableAutoRouter { get; set; } = true;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 아키텍처 요약
|
||||
|
||||
```
|
||||
사용자 메시지
|
||||
↓
|
||||
IntentDetector.Detect(message) ← 키워드 매칭으로 인텐트 감지
|
||||
↓ (category, confidence)
|
||||
ModelRouterService.Route(message) ← 후보 모델 점수 비교 → 최적 모델 선택
|
||||
↓ ModelRouteResult
|
||||
ChatWindow.SendMessageAsync() ← PushRouteOverride → LLM 호출 → ClearRouteOverride
|
||||
↓
|
||||
LlmService.ResolveService/ResolveModel ← 오버라이드 있으면 해당 서비스/모델 사용
|
||||
```
|
||||
|
||||
### 핵심 파일
|
||||
|
||||
| 파일 | 역할 |
|
||||
|------|------|
|
||||
| `Services/IntentDetector.cs` | 키워드 기반 인텐트 분류기 |
|
||||
| `Services/ModelRouterService.cs` | 모델 라우팅 로직 + 하드코딩 기본값 |
|
||||
| `Services/LlmService.cs` | PushRouteOverride/ClearRouteOverride |
|
||||
| `Services/LlmService.ToolUse.cs` | 에이전트 도구 호출 시 오버라이드 반영 |
|
||||
| `Models/AppSettings.cs` | EnableAutoRouter, AutoRouterConfidence, ModelCapability |
|
||||
| `Views/ChatWindow.xaml.cs` | 라우터 호출 및 상태 표시 |
|
||||
| `Views/SettingsWindow.xaml` | 설정 UI (현재 잠금) |
|
||||
|
||||
### 키워드 추가/수정
|
||||
|
||||
**파일**: `Services/IntentDetector.cs`
|
||||
|
||||
`_keywords` 딕셔너리에서 카테고리별 키워드와 가중치를 수정할 수 있습니다.
|
||||
한국어 키워드는 `string.Contains`로 매칭 (조사 붙어도 감지),
|
||||
영어 키워드는 단어 경계 매칭 (공백 분리).
|
||||
|
||||
---
|
||||
|
||||
## 테스트 방법
|
||||
|
||||
1. `GetDefaultCapabilities()`에 사내 모델 추가
|
||||
2. 설정 UI 잠금 해제
|
||||
3. `dotnet build` — 경고/오류 0 확인
|
||||
4. 앱 실행 → 설정 → 자동 라우팅 활성화
|
||||
5. 테스트 시나리오:
|
||||
- "이 함수를 리팩토링해줘" → coding 감지 → 코드 특화 모델
|
||||
- "이 문장을 영어로 번역해줘" → translation 감지
|
||||
- "이 데이터를 분석해줘" → analysis 감지
|
||||
- "안녕하세요" → general → 기본 모델 유지 (라우팅 안함)
|
||||
6. 상태바에 "라우팅: coding → [모델명]" 표시 확인
|
||||
253
docs/AX_Commander_개발문서.html
Normal file
253
docs/AX_Commander_개발문서.html
Normal file
@@ -0,0 +1,253 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko"><head><meta charset="utf-8">
|
||||
<title>AX_Commander_개발문서</title>
|
||||
<style>
|
||||
body { font-family: "맑은 고딕", "Malgun Gothic", sans-serif; font-size: 11pt; color: #1a1a1a; line-height: 1.7; max-width: 900px; margin: 0 auto; padding: 40px 20px; }
|
||||
h1 { font-size: 22pt; color: #1F3864; border-bottom: 3px solid #4472C4; padding-bottom: 8px; margin-top: 32px; }
|
||||
h2 { font-size: 16pt; color: #2E75B6; border-bottom: 2px solid #B8CCE4; padding-bottom: 4px; margin-top: 28px; }
|
||||
h3 { font-size: 13pt; color: #44546A; margin-top: 22px; }
|
||||
h4 { font-size: 12pt; color: #44546A; margin-top: 18px; }
|
||||
p { margin: 6px 0; }
|
||||
table { border-collapse: collapse; width: 100%; margin: 12px 0; }
|
||||
th { background: #2E75B6; color: white; padding: 8px 10px; text-align: left; font-size: 10pt; }
|
||||
td { padding: 6px 10px; border: 1px solid #D6E4F0; font-size: 10pt; }
|
||||
tr:nth-child(even) td { background: #EBF3FB; }
|
||||
ul, ol { margin: 6px 0 6px 24px; }
|
||||
li { margin: 3px 0; }
|
||||
code { font-family: Consolas, "D2Coding", monospace; background: #F0F0F0; padding: 1px 4px; border-radius: 3px; font-size: 10pt; }
|
||||
.footer { text-align: right; color: #999; font-size: 9pt; margin-top: 40px; border-top: 1px solid #ddd; padding-top: 8px; }
|
||||
</style></head><body>
|
||||
<p><b>AX Commander</b></p>
|
||||
<p>개발 문서</p>
|
||||
<p>Windows 전용 시맨틱 런처 & 워크스페이스 매니저</p>
|
||||
|
||||
<h1>사내 전용 프로그램 개발 원칙</h1>
|
||||
<p>AX Commander는 사내 전용 프로그램입니다. 아래 원칙을 반드시 준수하여 개발하세요.</p>
|
||||
<h2>외부 연결 금지</h2>
|
||||
<table>
|
||||
<tr><th><b>금지 항목</b></th><th><b>설명</b></th></tr>
|
||||
<tr><td>외부 HTTP/HTTPS 호출</td><td>HttpClient, WebClient, HttpWebRequest 등으로 외부 서버에 요청 금지</td></tr>
|
||||
<tr><td>외부 SDK 연동</td><td>서드파티 클라우드 SDK, AI API, SaaS 라이브러리 사용 금지</td></tr>
|
||||
<tr><td>원격 플러그인 다운로드</td><td>런타임에 외부에서 DLL/코드 다운로드 금지</td></tr>
|
||||
<tr><td>텔레메트리 / 오류 수집</td><td>사용 데이터를 외부 서버로 전송하는 일체의 코드 금지</td></tr>
|
||||
<tr><td>NuGet 패키지</td><td>외부 네트워크 통신이 내장된 패키지 신규 도입 금지</td></tr>
|
||||
</table>
|
||||
<p>허용: 로컬 파일 시스템 접근, Windows API (P/Invoke), 사내 인트라넷 URL, 로컬 프로세스 실행</p>
|
||||
|
||||
<h1>아키텍처 개요</h1>
|
||||
<h2>핵심 컴포넌트</h2>
|
||||
<table>
|
||||
<tr><th><b>컴포넌트</b></th><th><b>역할</b></th></tr>
|
||||
<tr><td>App.xaml.cs</td><td>앱 진입점, 서비스 초기화, 트레이 아이콘 관리</td></tr>
|
||||
<tr><td>LauncherWindow</td><td>WPF 메인 UI (AllowsTransparency, WindowStyle=None)</td></tr>
|
||||
<tr><td>CommandResolver</td><td>프리픽스 기반 핸들러 라우팅 테이블</td></tr>
|
||||
<tr><td>FuzzyEngine</td><td>퍼지 검색 + 한국어 초성(ㅅㄷ) 매칭</td></tr>
|
||||
<tr><td>IndexService</td><td>파일 시스템 인덱서 + FileSystemWatcher</td></tr>
|
||||
<tr><td>SettingsService</td><td>settings.json 로드/저장 (자동 백업)</td></tr>
|
||||
<tr><td>ClipboardHistoryService</td><td>WM_CLIPBOARDUPDATE 훅 기반 히스토리</td></tr>
|
||||
<tr><td>PluginHost</td><td>DLL/JSON 스킬 플러그인 로더</td></tr>
|
||||
<tr><td>NotificationService</td><td>트레이 풍선 알림 (타이머/알람)</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>프리픽스 핸들러 치트시트</h1>
|
||||
<table>
|
||||
<tr><th><b>프리픽스</b></th><th><b>핸들러</b></th><th><b>기능</b></th></tr>
|
||||
<tr><td>(없음)</td><td>FuzzyEngine</td><td>앱·파일 퍼지 검색 + 한국어 초성</td></tr>
|
||||
<tr><td>=</td><td>CalculatorHandler</td><td>수식 계산, 단위/통화 변환</td></tr>
|
||||
<tr><td>/</td><td>SystemCommandHandler</td><td>lock, sleep, restart, shutdown, timer, alarm</td></tr>
|
||||
<tr><td>;</td><td>SnippetHandler</td><td>텍스트 스니펫 키워드 검색 & 붙여넣기</td></tr>
|
||||
<tr><td>#</td><td>ClipboardHistoryHandler</td><td>클립보드 히스토리 검색 & 병합</td></tr>
|
||||
<tr><td>@</td><td>UrlAliasHandler</td><td>URL 단축키</td></tr>
|
||||
<tr><td>~</td><td>FolderAliasHandler</td><td>폴더 단축키</td></tr>
|
||||
<tr><td>></td><td>BatchHandler</td><td>명령 실행 / 배치 단축키</td></tr>
|
||||
<tr><td>$</td><td>ClipboardHandler</td><td>클립보드 텍스트 12종 변환</td></tr>
|
||||
<tr><td>!</td><td>WorkspaceHandler</td><td>워크스페이스 저장·복원</td></tr>
|
||||
<tr><td>emoji</td><td>EmojiHandler</td><td>이모지 피커 (300+)</td></tr>
|
||||
<tr><td>color</td><td>ColorHandler</td><td>HEX/RGB/HSL/HSV 색상 변환</td></tr>
|
||||
<tr><td>recent</td><td>RecentFilesHandler</td><td>Windows 최근 파일</td></tr>
|
||||
<tr><td>note</td><td>NoteHandler</td><td>빠른 메모 저장·조회</td></tr>
|
||||
<tr><td>uninstall</td><td>UninstallHandler</td><td>앱 제거 (레지스트리)</td></tr>
|
||||
<tr><td>port</td><td>PortHandler</td><td>TCP 포트/프로세스 점검</td></tr>
|
||||
<tr><td>env</td><td>EnvHandler</td><td>환경변수 조회</td></tr>
|
||||
<tr><td>json</td><td>JsonHandler</td><td>JSON 검증/포맷/미니파이</td></tr>
|
||||
<tr><td>encode</td><td>EncodeHandler</td><td>base64/url/hex/md5/sha256 인코딩</td></tr>
|
||||
<tr><td>snap</td><td>SnapHandler</td><td>창 배치 레이아웃</td></tr>
|
||||
<tr><td>cap</td><td>ScreenCaptureHandler</td><td>화면/창/스크롤 캡처</td></tr>
|
||||
<tr><td>help</td><td>HelpHandler</td><td>도움말</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>설정 스키마 (settings.json)</h1>
|
||||
<p>경로: %APPDATA%\AxCommander\settings.json</p>
|
||||
<table>
|
||||
<tr><th><b>키</b></th><th><b>타입</b></th><th><b>설명</b></th></tr>
|
||||
<tr><td>version</td><td>string</td><td>설정 버전</td></tr>
|
||||
<tr><td>hotkey</td><td>string</td><td>글로벌 단축키 (기본: Alt+Space)</td></tr>
|
||||
<tr><td>launcher.opacity</td><td>float</td><td>창 투명도 (0.0~1.0, 기본 0.96)</td></tr>
|
||||
<tr><td>launcher.maxResults</td><td>int</td><td>최대 결과 수 (기본 7)</td></tr>
|
||||
<tr><td>launcher.theme</td><td>string</td><td>테마 (system|dark|light|oled|nord|monokai|catppuccin|sepia|alfred|alfredlight|custom)</td></tr>
|
||||
<tr><td>launcher.position</td><td>string</td><td>런처 위치 (center-top|center|bottom)</td></tr>
|
||||
<tr><td>launcher.webSearchEngine</td><td>string</td><td>기본 검색 엔진 (g|n|d|y|w)</td></tr>
|
||||
<tr><td>launcher.snippetAutoExpand</td><td>bool</td><td>스니펫 자동 확장 활성화</td></tr>
|
||||
<tr><td>indexPaths</td><td>string[]</td><td>인덱싱할 폴더 경로 목록</td></tr>
|
||||
<tr><td>aliases</td><td>object[]</td><td>URL/폴더/배치 단축키 목록</td></tr>
|
||||
<tr><td>snippets</td><td>object[]</td><td>텍스트 스니펫 목록</td></tr>
|
||||
<tr><td>clipboardHistory.enabled</td><td>bool</td><td>클립보드 히스토리 활성화</td></tr>
|
||||
<tr><td>clipboardHistory.maxItems</td><td>int</td><td>최대 보관 개수 (기본 50)</td></tr>
|
||||
<tr><td>plugins</td><td>object[]</td><td>DLL 플러그인 경로 목록</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>테마 시스템</h1>
|
||||
<h2>내장 테마 목록</h2>
|
||||
<table>
|
||||
<tr><th><b>테마 키</b></th><th><b>이름</b></th><th><b>특징</b></th></tr>
|
||||
<tr><td>system</td><td>시스템</td><td>Windows 다크/라이트 모드 자동 감지</td></tr>
|
||||
<tr><td>dark</td><td>Dark</td><td>딥 네이비 다크 (기본)</td></tr>
|
||||
<tr><td>light</td><td>Light</td><td>클린 화이트 라이트</td></tr>
|
||||
<tr><td>oled</td><td>OLED</td><td>순수 블랙 (OLED 절전)</td></tr>
|
||||
<tr><td>nord</td><td>Nord</td><td>Arctic 컬러 팔레트</td></tr>
|
||||
<tr><td>monokai</td><td>Monokai</td><td>Sublime Text 스타일</td></tr>
|
||||
<tr><td>catppuccin</td><td>Catppuccin</td><td>Mocha 따뜻한 파스텔</td></tr>
|
||||
<tr><td>sepia</td><td>Sepia</td><td>황갈색 아날로그 감성</td></tr>
|
||||
<tr><td>alfred</td><td>Alfred Dark</td><td>Alfred 5 다크 팔레트 (딥 퍼플-차콜)</td></tr>
|
||||
<tr><td>alfredlight</td><td>Alfred Light</td><td>Alfred 5 라이트 팔레트 (클린 화이트)</td></tr>
|
||||
<tr><td>custom</td><td>커스텀</td><td>14개 색상 완전 커스터마이징</td></tr>
|
||||
</table>
|
||||
<h2>테마 ResourceKey 목록 (14개)</h2>
|
||||
<table>
|
||||
<tr><th><b>키</b></th><th><b>용도</b></th></tr>
|
||||
<tr><td>LauncherBackground</td><td>전체 배경</td></tr>
|
||||
<tr><td>ItemBackground</td><td>항목 기본 배경</td></tr>
|
||||
<tr><td>ItemSelectedBackground</td><td>선택된 항목 배경</td></tr>
|
||||
<tr><td>ItemHoverBackground</td><td>호버 배경</td></tr>
|
||||
<tr><td>PrimaryText</td><td>주 텍스트 색상</td></tr>
|
||||
<tr><td>SecondaryText</td><td>보조 텍스트 색상</td></tr>
|
||||
<tr><td>PlaceholderText</td><td>플레이스홀더 텍스트</td></tr>
|
||||
<tr><td>AccentColor</td><td>강조색 (선택 바, 배지 등)</td></tr>
|
||||
<tr><td>SeparatorColor</td><td>구분선 색상</td></tr>
|
||||
<tr><td>HintBackground</td><td>ESC 힌트 배경</td></tr>
|
||||
<tr><td>HintText</td><td>ESC 힌트 텍스트</td></tr>
|
||||
<tr><td>BorderColor</td><td>창 테두리</td></tr>
|
||||
<tr><td>ScrollbarThumb</td><td>스크롤바 색상</td></tr>
|
||||
<tr><td>ShadowColor</td><td>드롭 섀도우 색상</td></tr>
|
||||
</table>
|
||||
<h2>새 테마 추가 절차</h2>
|
||||
<ul>
|
||||
<li>1. Themes/MyTheme.xaml 작성 (위 14개 키 모두 정의)</li>
|
||||
<li>2. AxCommander.csproj에 <Resource Include="Themes/MyTheme.xaml"/> 추가</li>
|
||||
<li>3. LauncherWindow.xaml.cs → GetEffectiveThemeName() switch에 케이스 추가</li>
|
||||
<li>4. SettingsViewModel.ThemeCards 목록에 ThemeCardModel 항목 추가</li>
|
||||
</ul>
|
||||
|
||||
<h1>보안 고려사항</h1>
|
||||
<table>
|
||||
<tr><th><b>항목</b></th><th><b>구현</b></th></tr>
|
||||
<tr><td>URL 스킴 검증</td><td>http, https, ftp, ms-settings, mailto, file 허용. javascript: 등 차단</td></tr>
|
||||
<tr><td>PowerShell 인젝션 방지</td><td>> 명령어 입력의 " 이스케이프 처리</td></tr>
|
||||
<tr><td>ReDoS 방지</td><td>사용자 정의 Regex에 TimeSpan 타임아웃 적용</td></tr>
|
||||
<tr><td>자격증명 저장</td><td>Windows Credential Manager (advapi32.dll, DPAPI 암호화)</td></tr>
|
||||
<tr><td>클립보드 민감 데이터</td><td>Regex 기반 제외 패턴 — 신용카드·IP 등 기본 차단</td></tr>
|
||||
<tr><td>API 타임아웃</td><td>JSON 스킬 HTTP 요청 3초 제한</td></tr>
|
||||
<tr><td>시스템 명령 확인</td><td>재시작·종료·로그아웃 실행 전 MessageBox.Show 2단계 확인</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>단위 테스트</h1>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>테스트 수</b></th><th><b>대상</b></th></tr>
|
||||
<tr><td>FuzzyEngineTests.cs</td><td>19</td><td>CalculateScore, FuzzyMatch, 초성 검색</td></tr>
|
||||
<tr><td>ClipboardTransformTests.cs</td><td>21</td><td>12개 내장 변환기</td></tr>
|
||||
<tr><td>SettingsServiceTests.cs</td><td>17</td><td>기본값, JSON 직렬화 라운드트립</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>v1.6 3차 전체 점검 수정</h1>
|
||||
<p>빌드 오류 3건, 컴파일 경고 1건, 런타임 버그 6건, 보안 이슈 2건을 수정하였습니다.</p>
|
||||
<h2>컴파일 오류 수정</h2>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>수정 내용</b></th><th><b>오류 코드</b></th></tr>
|
||||
<tr><td>UsageRankingService.cs</td><td>using System.IO; 누락 추가</td><td>CS0103</td></tr>
|
||||
<tr><td>SettingsWindow.xaml.cs</td><td>Key.Enter or Key.Return 단일 arm으로 통합</td><td>CS8510</td></tr>
|
||||
<tr><td>ContextManager.cs</td><td>EnumDisplayMonitors 람다 타입 혼합 수정</td><td>CS0748</td></tr>
|
||||
</table>
|
||||
<h2>런타임 버그 수정</h2>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>버그</b></th><th><b>수정</b></th></tr>
|
||||
<tr><td>JsonSkillLoader.cs</td><td>field[0 형식 오류 방지 (IndexOf 반환 -1)</td><td>closingIdx < 0 가드 추가</td></tr>
|
||||
<tr><td>ClipboardHistoryService.cs</td><td>_ignoreNext 스레드 비안전, 이중 초기화</td><td>volatile + 이중 초기화 가드</td></tr>
|
||||
<tr><td>IndexService.cs</td><td>ScheduleRebuild 타이머 비원자적 교체</td><td>_timerLock으로 원자적 교체</td></tr>
|
||||
<tr><td>SettingsService.cs</td><td>백업 실패 무음 catch</td><td>LogService.Warn으로 기록</td></tr>
|
||||
<tr><td>LauncherWindow.xaml.cs</td><td>Window에 RenderTransform 설정 시 InvalidOperationException</td><td>Content(루트 Border)에 적용</td></tr>
|
||||
</table>
|
||||
<h2>보안 수정</h2>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>수정 내용</b></th></tr>
|
||||
<tr><td>JsonSkillLoader.cs</td><td>ActionUrl 실행 전 http/https 스킴 검증 추가</td></tr>
|
||||
<tr><td>SettingsWindow.xaml.cs</td><td>NewIndexPathBox null 역참조 방어 처리</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>빌드 및 배포</h1>
|
||||
<h2>빌드 명령</h2>
|
||||
<p># 개발 실행</p>
|
||||
<p>dotnet run --project src/AxCommander</p>
|
||||
|
||||
<p># Release 단일 파일 빌드 (self-contained)</p>
|
||||
<p>dotnet publish src/AxCommander -c Release -r win-x64 --self-contained</p>
|
||||
|
||||
<p># 단위 테스트</p>
|
||||
<p>dotnet test src/AxCommander.Tests</p>
|
||||
<h2>데이터 경로</h2>
|
||||
<table>
|
||||
<tr><th><b>용도</b></th><th><b>경로</b></th></tr>
|
||||
<tr><td>설정 파일</td><td>%APPDATA%\AxCommander\settings.json</td></tr>
|
||||
<tr><td>로그</td><td>%APPDATA%\AxCommander\logs\app-YYYY-MM-DD.log</td></tr>
|
||||
<tr><td>스킬 파일</td><td>%APPDATA%\AxCommander\skills\*.skill.json</td></tr>
|
||||
<tr><td>메모</td><td>%APPDATA%\AxCommander\notes.txt</td></tr>
|
||||
<tr><td>사용 빈도</td><td>%APPDATA%\AxCommander\usage.json</td></tr>
|
||||
<tr><td>크래시 덤프</td><td>%APPDATA%\AxCommander\crashes\</td></tr>
|
||||
</table>
|
||||
<h2>요구 사항</h2>
|
||||
<ul>
|
||||
<li>OS: Windows 10 20H2 이상 (Windows 11 권장)</li>
|
||||
<li>.NET 8.0 Runtime (Self-contained 빌드 시 불필요)</li>
|
||||
</ul>
|
||||
|
||||
<h1>플러그인 개발</h1>
|
||||
<h2>DLL 플러그인</h2>
|
||||
<p>AxCommander.SDK를 참조하여 IActionHandler 인터페이스를 구현합니다.</p>
|
||||
<p>using AxCommander.SDK;</p>
|
||||
|
||||
<p>public class MyHandler : IActionHandler</p>
|
||||
<p>{</p>
|
||||
<p> public string? Prefix => "?"; // 트리거 프리픽스</p>
|
||||
<p> public PluginMetadata Metadata => new("MyPlugin", "설명", "1.0");</p>
|
||||
|
||||
<p> public async Task<IEnumerable<LauncherItem>> GetItemsAsync(string query, CancellationToken ct)</p>
|
||||
<p> {</p>
|
||||
<p> return [ new LauncherItem("제목", "부제목", null, myData, Symbol: "\uE721") ];</p>
|
||||
<p> }</p>
|
||||
|
||||
<p> public Task ExecuteAsync(LauncherItem item, CancellationToken ct)</p>
|
||||
<p> {</p>
|
||||
<p> return Task.CompletedTask;</p>
|
||||
<p> }</p>
|
||||
<p>}</p>
|
||||
<h2>JSON 스킬 (코드 없이 HTTP API 연동)</h2>
|
||||
<p>경로: %APPDATA%\AxCommander\skills\*.skill.json</p>
|
||||
<p>{</p>
|
||||
<p> "id": "my-api",</p>
|
||||
<p> "name": "API 연동",</p>
|
||||
<p> "prefix": "?",</p>
|
||||
<p> "request": {</p>
|
||||
<p> "method": "GET",</p>
|
||||
<p> "url": "https://intranet.example.com/api?q={{INPUT}}"</p>
|
||||
<p> },</p>
|
||||
<p> "response": {</p>
|
||||
<p> "resultsPath": "items",</p>
|
||||
<p> "titleField": "name",</p>
|
||||
<p> "subtitleField": "description",</p>
|
||||
<p> "actionUrl": "url"</p>
|
||||
<p> },</p>
|
||||
<p> "cache": 30</p>
|
||||
<p>}</p>
|
||||
|
||||
<p>AX Commander · .NET 8.0 · WPF · MIT License</p>
|
||||
<p class='footer'>Converted from: AX_Commander_개발문서.docx</p>
|
||||
</body></html>
|
||||
282
docs/AX_Copilot_블로그_워드프레스.html
Normal file
282
docs/AX_Copilot_블로그_워드프레스.html
Normal file
@@ -0,0 +1,282 @@
|
||||
<!-- WordPress ?명솚 HTML ???ъ슜???뺤쓽 HTML 釉붾줉??遺숈뿬?j린 -->
|
||||
|
||||
<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(Sigmoid)怨??④퍡 湲고쉷遺??援ы쁽源뚯? 吏꾪뻾???щ?濡? 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, Sigmoid 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醫?/??젣, ?좎쭨蹂?洹몃9, 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/Sigmoid 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 ???李? Sigmoid 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, Sigmoid 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(Sigmoid)怨??④퍡 吏꾪뻾???꾨줈?앺듃?낅땲??</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>湲고쉷</strong>: Alfred, Raycast ??湲곗〈 ?곗쿂???μ젏??遺꾩꽍?섍퀬, ?щ궡 ?섍꼍??留욌뒗 湲곕뒫 ?좊퀎</li>
|
||||
<li><strong>援ы쁽</strong>: WPF + P/Invoke 湲곕컲?쇰줈 ?몃? ?섏〈???놁씠 45媛? 湲곕뒫 援ы쁽</li>
|
||||
<li><strong>AI ?듯빀</strong>: Ollama/vLLM/Gemini/Sigmoid 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>
|
||||
|
||||
132
docs/CLAW_CODE_PARITY_PLAN.md
Normal file
132
docs/CLAW_CODE_PARITY_PLAN.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# CLAW-CODE 품질 동등화 계획 (전면 재작성)
|
||||
|
||||
## 1. 기준
|
||||
- 레퍼런스: `E:\AX Copilot - Codex\claw-code\claw-code-f5a40b86dede580f6543bf8926c9af017eea9409\src`
|
||||
- 동등화 범위: 명령 처리 흐름, 권한/훅 체계, plan/run 내구성, 세션/로그 관리.
|
||||
|
||||
## 2. 보존 이력 (요약만 유지)
|
||||
- 루프 가드(반복 실패/정체 감지)와 검증 게이트는 이미 AX에 부분 반영.
|
||||
- 병렬 도구 실행, Plan Mode, Unknown-tool 복구 로직은 반영 완료.
|
||||
- 세션/이력 안정화는 진행 중.
|
||||
|
||||
## 3. 현재 갭
|
||||
- Hook 출력의 구조화 계약 적용 범위가 제한적.
|
||||
- 세션 재개/이벤트 replay 품질이 시나리오별 편차 존재.
|
||||
- 도구 선택 실패 후 재시도 전략의 일관성 부족.
|
||||
|
||||
## 4. 단계별 실행
|
||||
|
||||
### P1 Hook 계약 고도화
|
||||
- `updatedInput`, `updatedPermissions`, `additionalContext`를 AX 실행 루프에 반영.
|
||||
- 설정 토글로 위험 기능 제어.
|
||||
|
||||
### P2 세션/이벤트 내구성
|
||||
- run 상태 영속화와 resume 기준 고정.
|
||||
- jsonl 이벤트 필드 표준화 및 재생 가능성 확보.
|
||||
|
||||
### P3 실패 복구 표준화
|
||||
- unknown-tool/권한거부/파라미터 오류를 유형화.
|
||||
- 유형별 복구 프롬프트와 다음 액션 우선순위 고정.
|
||||
|
||||
### P4 완료 품질 정렬
|
||||
- 코드/문서 작업별 완료 체크리스트 표준화.
|
||||
- 증거 없는 완료 응답 방지.
|
||||
|
||||
## 5. 완료 판정
|
||||
- 내부 벤치마크 시나리오에서 목표 성공률 충족.
|
||||
- 세션 재개/이벤트 재생 오류 0건.
|
||||
- 빌드 경고 0/오류 0 유지.
|
||||
|
||||
## 6. 2026-04-03 점검 스냅샷
|
||||
- 기준 시점: 2026-04-03.
|
||||
- 계획 대비 현재 수준: 약 92~95%.
|
||||
- 테스트 상태: `dotnet test` 355/355 통과.
|
||||
- P1 Hook 계약: 구현 완료 수준.
|
||||
- P2 세션/이벤트 내구성: 구현 완료 수준(복원/재생 경계 케이스 테스트 반영).
|
||||
- P3 실패 복구 표준화: 구현 완료 수준(unknown-tool/권한/정체/fork 강제 흐름 반영).
|
||||
- P4 완료 품질 정렬: 구현 완료 수준(게이트 로직 + 벤치마크 기준 문서화 완료).
|
||||
|
||||
## 7. 스킬/도구 운영 점검 (2026-04-03)
|
||||
- 도구 레지스트리 등록 수: 65개 (`ToolRegistry.CreateDefault()` 기준).
|
||||
- `IAgentTool` 구현 수: 65개. 동적 MCP 래퍼(`McpTool`)는 런타임 등록 구조로 정상.
|
||||
- 내장 스킬 파일 수: 40개 (`src/AxCopilot/skills/*.skill.md`).
|
||||
- `allowed-tools` 적용 스킬: 40/40.
|
||||
- `requires: python` 고정 의존 스킬: 0개(기존 10개에 Python 가능/불가 분기 fallback 경로 반영).
|
||||
- 레거시 도구명 `process_run` 참조: 0건 (`process`로 정규화).
|
||||
- 레거시 도구명 `grep_tool` 참조: 0건 (`grep`로 정규화).
|
||||
- 내부 모드 차단 정책: `http_tool` 전면 차단, `open_external`의 외부 URL 차단.
|
||||
- 테스트 상태: `dotnet test` 355/355 통과.
|
||||
|
||||
## 8. claw-code 소스 직접 비교 결과 (2026-04-03)
|
||||
- 비교 기준 소스: `claw-code/.../src/tools.ts`, `src/Tool.ts`, `src/skills/loadSkillsDir.ts`, `src/skills/bundled/*.ts`.
|
||||
- claw-code 도구 상수명: 41개 (`*_TOOL_NAME` 기준).
|
||||
- AX 도구명: 65개 (`IAgentTool.Name` 기준).
|
||||
- claw-code 도구명 중 AX alias로 직접 해석되는 항목: 8개 (`Bash/Read/Write/Edit/Glob/Grep/WebFetch/WebSearch`).
|
||||
- 미해석 항목(33개)은 대부분 제품 철학 차이 영역(예: `EnterPlanMode`, `ExitWorktree`, `TeamCreate`, `TodoWrite`, `ToolSearch`, `REPL`, `Cron*`).
|
||||
- claw-code 번들 스킬은 코드 등록형 14개(`registerBundledSkill`)이며, AX는 파일 기반 스킬 40개(`*.skill.md`) 중심 구성.
|
||||
- 번들 스킬 이름 교집합은 0개이며(의도된 차별화), 품질 기준은 "이름 일치"가 아니라 "동작 등가(계획/복구/검증/권한/세션 내구성)"로 판단해야 함.
|
||||
- claw-code 스킬 메타데이터는 `allowedTools`, `whenToUse`, `model`, `disableModelInvocation`, `userInvocable`, `hooks`, `context`, `agent`, `paths`, `effort`, `shell`까지 지원.
|
||||
- AX 스킬 메타데이터는 `allowed-tools`, `when_to_use`, `argument-hint`, `model`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `effort`, `paths`, `shell`, `hooks`, `hook_filters`까지 런타임 연계 확장 완료.
|
||||
|
||||
## 9. claw-code 비교 기반 즉시 보완 항목 (반영 상태)
|
||||
1. 스킬 frontmatter 확장: `when_to_use`, `argument-hint`, `model`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `effort`, `paths`, `shell` 반영 완료.
|
||||
2. 스킬 실행 범위 제어: `paths` 기반 조건부 활성화 반영 완료(첨부 파일 경로 매칭 시 동적 활성화).
|
||||
3. 도구 별칭 정규화: claw-code 기본 도구명군(`WebFetch`, `WebSearch`, `AskUserQuestion`, `LSP`, `ListMcpResourcesTool` 등) AX 내부 도구명으로 매핑 반영 완료.
|
||||
4. 반영 완료(2026-04-03): `hooks`/`hook_filters` 계약 확장 및 runtime hook 필터링(도구/타이밍 기준) 적용.
|
||||
5. 반영 완료(2026-04-03): 슬래시 스킬 실행 시 `context/agent/effort/model/disable-model-invocation/allowed-tools/hooks/hook_filters` 메타데이터를 런타임 정책 지시문으로 합성 적용.
|
||||
|
||||
## 10. 전체 영역 동시 비교 기준 (누락 방지)
|
||||
1. 도구 계층: 도구 목록, 별칭 정규화, unknown-tool 복구, tool search/선택 정책.
|
||||
2. 스킬 계층: 로더, frontmatter, 번들/파일 기반 동시 운영, 조건부 활성화.
|
||||
3. 훅/권한: pre/post hook 계약, permission update 반영, ask/auto/deny 일관성.
|
||||
4. 세션/상태: run 복원, 이벤트 replay, 중복 이벤트 억제, resume 신뢰성.
|
||||
5. 계획/실행: plan 승인/수정 이력, 실행 게이트, 조기 완료 방지.
|
||||
6. MCP/외부도구: 연결/리소스 조회/읽기, 실패 복구, internal 모드 정책.
|
||||
7. 서브에이전트: spawn/wait 제약, read-only 모드, 결과 회수 구조.
|
||||
8. 운영/설정/UI 연동: 설정값-실행코드-UI 동기화, 탭별 분기(Cowork/Code) 일치.
|
||||
|
||||
## 11. 다음 적용 순서 (전체 영역 병렬 보정)
|
||||
1. 기본 Agentic loop E2E 시나리오(도구 실행/unknown-tool 복구)를 회귀 테스트로 고정.
|
||||
2. 벤치마크 합격 기준(시나리오/통과조건/증적)을 문서화하고 배포 체크리스트에 연결. (완료)
|
||||
3. 최종 마감 시 패리티 문서(수치/상태)와 로드맵 문서를 동기화. (진행 중)
|
||||
|
||||
## 12. 내부 벤치마크 기준 (고정)
|
||||
|
||||
| 시나리오 | 기준 테스트 | 합격 기준 |
|
||||
|---|---|---|
|
||||
| 기본 Agentic loop (도구 호출 → 완료) | `AgentLoopE2ETests.RunAsync_ExecutesToolCall_AndCompletesWithFinalText` | ToolCall/ToolResult/Complete 이벤트가 순서상 유효하고 최종 응답에 계산 결과 포함 |
|
||||
| unknown-tool 복구 | `AgentLoopE2ETests.RunAsync_UnknownTool_RecoversAndCompletes` | unknown 도구 오류 이벤트 후 완료까지 수렴, 반복 실패 루프 없음 |
|
||||
| Plan Mode 실행 연결 | `AgentLoopE2ETests.RunAsync_PlanModeAlways_EmitsPlanningThenExecutesTool` | 계획 응답 후 실제 도구 호출이 이어지고 최종 결과 생성 |
|
||||
| 권한 Ask 거부 처리 | `AgentLoopE2ETests.RunAsync_AskPermissionDenied_EmitsPermissionEvents_AndCompletes` | PermissionRequest/PermissionDenied 이벤트가 기록되고 안전 종료 |
|
||||
| Hook 입력 변형 반영 | `AgentLoopE2ETests.RunAsync_PreHookInputMutation_ChangesToolArguments` | pre-hook `updatedInput`이 실제 도구 입력에 적용됨 |
|
||||
| Runtime 정책(`allowed_tools`) 강제 | `AgentLoopE2ETests.RunAsync_DisallowedTool_ByRuntimePolicy_EmitsPolicyRecoveryError` | 비허용 도구 차단 + 정책 복구 경고 후 종료 |
|
||||
| Hook filter 정합성 | `AgentLoopE2ETests.RunAsync_HookFilters_ExecuteOnlyMatchingHookForToolAndTiming` | 지정된 hook만 실행되고 비매칭 hook는 미실행 |
|
||||
|
||||
### 벤치마크 배포 체크리스트 연결
|
||||
1. `dotnet build` 경고 0/오류 0.
|
||||
2. `dotnet test` 전체 통과 (`355/355` 기준, 증가 시 최신 값으로 동기화).
|
||||
3. 위 7개 시나리오의 회귀 테스트가 모두 통과.
|
||||
4. 패리티 수치/상태를 `NEXT_ROADMAP.md`와 동일 문구로 동기화.
|
||||
5. 릴리즈 전 게이트 스크립트 실행: `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`
|
||||
|
||||
### 실행 증적 (2026-04-03)
|
||||
- `dotnet test --filter "Suite=ParityBenchmark"`: 7/7 통과.
|
||||
|
||||
## 13. 세션 Replay 안정성 기준 (고정)
|
||||
|
||||
| 시나리오 | 기준 테스트 | 합격 기준 |
|
||||
|---|---|---|
|
||||
| 실행 이벤트 정렬/압축 복원 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesHistoryOrderAndCompactsSize` | ExecutionEvents 400개 상한 유지 + 시간순 정렬 유지 |
|
||||
| run 이력 중복 정규화 | `ChatSessionStateServiceTests.LoadOrCreateConversation_NormalizesAgentRunDuplicatesByRunId` | 동일 `RunId` 중복이 최신 상태 1건으로 축약 |
|
||||
| 동시각 이벤트 종결 우선 판정 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_PrefersTerminalEventsWhenTimestampsEqual` | Tool/Permission 상태가 terminal 이벤트 기준으로 복원 |
|
||||
| 비종결 이벤트 active 복원 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_RebuildsActiveTasksFromNonTerminalEvents` | 중단 후 재개 시 active task 3종(agent/tool/permission) 재구성 |
|
||||
| run 종료 시 dangling 정리 | `TaskRunServiceTests.RestoreRecentFromExecutionEvents_CompleteClearsDanglingRunScopedActiveTasks` | Complete 이후 run 스코프 active task 잔존 0건 |
|
||||
| 현재 run 복원 우선순위 | `AppStateServiceTests.RestoreCurrentAgentRun_PrefersRunningExecutionEventOverHistory` | 실행 중 이벤트가 history보다 우선되어 현재 run 복원 |
|
||||
| recent timeline 재구성 | `AppStateServiceTests.RestoreRecentTasks_RebuildsRecentTaskTimelineFromExecutionEvents` | 도구/권한/에이전트 최근 이력 순서 복원 |
|
||||
|
||||
### 운영 규칙
|
||||
1. 위 시나리오는 `Suite=ReplayStability` 테스트 태그로 관리.
|
||||
2. 릴리즈 전 `Suite=ReplayStability` 전건 통과를 replay 불일치 0건의 최소 조건으로 사용.
|
||||
|
||||
### 실행 증적 (2026-04-03)
|
||||
- `dotnet test --filter "Suite=ReplayStability"`: 8/8 통과.
|
||||
188
docs/Cowork_업무활용_계획보고서.md
Normal file
188
docs/Cowork_업무활용_계획보고서.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# AX Copilot Cowork 업무 활용 계획 보고서
|
||||
|
||||
> 작성일: 2026-03-28 | 버전: v1.1.0 기준
|
||||
|
||||
---
|
||||
|
||||
## 1. 현재 Cowork 기능 요약
|
||||
|
||||
### 1.1 에이전트 실행 구조
|
||||
- **ReAct 패턴**: Plan → Tool Execute → Observe → Re-evaluate
|
||||
- 최대 25회 반복, 에러 시 3회 자동 재시도 + 자기성찰 메커니즘
|
||||
- 컨텍스트 자동 압축으로 장기 작업 지원
|
||||
- 작업 분해(TaskDecomposer)로 단계별 진행 추적
|
||||
|
||||
### 1.2 등록된 도구 (14개)
|
||||
| 구분 | 도구 | 기능 |
|
||||
|------|------|------|
|
||||
| 파일 I/O | file_read, file_write, file_edit | 파일 읽기/생성/수정 |
|
||||
| 검색 | glob, grep | 파일 패턴 검색, 내용 검색 |
|
||||
| 실행 | process | CMD/PowerShell 명령 실행 (위험 명령 차단) |
|
||||
| 탐색 | folder_map | 디렉토리 트리 생성 |
|
||||
| 문서 읽기 | document_read | PDF, DOCX, XLSX, CSV, TXT 텍스트 추출 |
|
||||
| 문서 생성 | excel_create, docx_create, html_create, markdown_create, csv_create | 5종 포맷 출력 |
|
||||
| 스크립트 | script_create | BAT/PS1 스크립트 생성 |
|
||||
|
||||
### 1.3 프리셋 (5종)
|
||||
| 프리셋 | 용도 | 주요 출력 |
|
||||
|--------|------|-----------|
|
||||
| 보고서 | 정형 보고서 작성 | Excel, Word, HTML |
|
||||
| 문서작성 | 자유 문서 작성 | Word, Markdown, HTML |
|
||||
| 데이터분석 | CSV/Excel 데이터 분석 | Excel, HTML 차트 |
|
||||
| 자동화 | 반복 업무 스크립트화 | BAT, PS1 |
|
||||
| 파일관리 | 파일 정리/검색/이름변경 | 실행 결과 보고 |
|
||||
|
||||
### 1.4 디자인 템플릿 (10종)
|
||||
Modern, Professional, Creative, Minimal, Elegant, Dark, Colorful, Corporate, Magazine, Dashboard
|
||||
|
||||
---
|
||||
|
||||
## 2. 업무 활용 가능 영역 검토
|
||||
|
||||
### 2.1 경영/기획 업무
|
||||
|
||||
| 업무 | 활용 방식 | 난이도 | 기대효과 |
|
||||
|------|-----------|--------|----------|
|
||||
| **주간/월간 업무 보고서** | 프리셋=보고서, 폴더 내 데이터 참조하여 HTML/Word 자동 생성 | 낮음 | 보고서 작성 시간 70% 절감 |
|
||||
| **회의록 정리** | 프리셋=문서작성, 회의 메모 텍스트를 구조화된 문서로 변환 | 낮음 | 형식 통일, 누락 방지 |
|
||||
| **사업 계획서 초안** | 프리셋=보고서, 참고 자료 읽기 + Corporate 템플릿 적용 | 중간 | 초안 작성 시간 50% 절감 |
|
||||
| **경쟁사 분석 보고서** | 프리셋=보고서, 수집 자료 종합 + Dashboard 템플릿 | 중간 | 분석 체계화 |
|
||||
|
||||
### 2.2 인사/총무 업무
|
||||
|
||||
| 업무 | 활용 방식 | 난이도 | 기대효과 |
|
||||
|------|-----------|--------|----------|
|
||||
| **인사 데이터 분석** | 프리셋=데이터분석, Excel 인사DB 읽기 → 통계 보고서 | 낮음 | 수작업 집계 제거 |
|
||||
| **교육 자료 제작** | 프리셋=문서작성, Magazine 템플릿으로 시각적 교재 생성 | 낮음 | 디자인 외주 불필요 |
|
||||
| **내규/매뉴얼 정리** | 프리셋=문서작성, 기존 문서 읽기 → 최신 버전 재구성 | 중간 | 문서 버전 관리 개선 |
|
||||
| **급여/근태 엑셀 자동화** | 프리셋=자동화, 반복 계산 스크립트 생성 | 중간 | 월간 2-3시간 절감 |
|
||||
|
||||
### 2.3 재무/회계 업무
|
||||
|
||||
| 업무 | 활용 방식 | 난이도 | 기대효과 |
|
||||
|------|-----------|--------|----------|
|
||||
| **매출 데이터 분석** | 프리셋=데이터분석, CSV/Excel 매출 데이터 → 차트 포함 HTML 보고서 | 낮음 | 실시간 분석 가능 |
|
||||
| **비용 항목 분류** | 프리셋=데이터분석, 거래 내역 파일 읽기 → 카테고리별 집계 | 낮음 | 수작업 분류 제거 |
|
||||
| **예산 대비 실적 보고** | 프리셋=보고서, 예산/실적 Excel 비교 → Professional 템플릿 보고서 | 중간 | 월간 보고 시간 60% 절감 |
|
||||
| **세금계산서 데이터 정리** | 프리셋=파일관리 + 데이터분석, 파일 수집 → CSV 통합 | 중간 | 분기 결산 효율화 |
|
||||
|
||||
### 2.4 영업/마케팅 업무
|
||||
|
||||
| 업무 | 활용 방식 | 난이도 | 기대효과 |
|
||||
|------|-----------|--------|----------|
|
||||
| **고객 데이터 분석** | 프리셋=데이터분석, CRM 내보내기 파일 → 세그먼트 분석 | 낮음 | 타겟팅 정확도 향상 |
|
||||
| **제안서/견적서 작성** | 프리셋=문서작성, Elegant 템플릿으로 고급 제안서 생성 | 낮음 | 제안서 품질 향상 |
|
||||
| **캠페인 결과 보고** | 프리셋=보고서, Dashboard 템플릿으로 KPI 시각화 | 중간 | 성과 가시화 |
|
||||
| **뉴스레터 콘텐츠** | 프리셋=문서작성, Magazine 템플릿으로 뉴스레터 HTML 생성 | 낮음 | 디자인 시간 제거 |
|
||||
|
||||
### 2.5 R&D/개발 업무
|
||||
|
||||
| 업무 | 활용 방식 | 난이도 | 기대효과 |
|
||||
|------|-----------|--------|----------|
|
||||
| **코드 문서화** | 프리셋=문서작성, folder_map + grep으로 코드 분석 → API 문서 생성 | 중간 | 문서화 부채 해소 |
|
||||
| **테스트 데이터 생성** | 프리셋=자동화, CSV/Excel 형식 테스트 데이터 대량 생성 | 낮음 | QA 준비 시간 절감 |
|
||||
| **빌드/배포 스크립트** | 프리셋=자동화, BAT/PS1 스크립트 자동 생성 | 낮음 | DevOps 초기 설정 지원 |
|
||||
| **기술 보고서** | 프리셋=보고서, Modern 템플릿으로 기술 검토 문서 생성 | 중간 | 기술 의사결정 체계화 |
|
||||
|
||||
### 2.6 운영/생산 업무
|
||||
|
||||
| 업무 | 활용 방식 | 난이도 | 기대효과 |
|
||||
|------|-----------|--------|----------|
|
||||
| **재고 데이터 분석** | 프리셋=데이터분석, 재고 Excel → 부족/과잉 분석 보고서 | 낮음 | 재고 관리 효율화 |
|
||||
| **작업 일지 자동 포맷** | 프리셋=문서작성, 수기 메모 → 정형 일지 Word 변환 | 낮음 | 기록 표준화 |
|
||||
| **파일 정리 자동화** | 프리셋=파일관리, 날짜/유형별 파일 자동 분류 | 낮음 | 공유폴더 관리 효율화 |
|
||||
| **품질 검사 보고서** | 프리셋=보고서, 검사 데이터 → Corporate 템플릿 보고서 | 중간 | 보고 양식 통일 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 고활용 시나리오 (즉시 적용 가능)
|
||||
|
||||
### 시나리오 A: 주간 업무 보고서 자동 생성
|
||||
```
|
||||
1. 작업 폴더에 주간 업무 메모(txt/md) 저장
|
||||
2. Cowork → 보고서 → HTML 보고서(Professional 템플릿)
|
||||
3. "이번 주 업무 내용을 종합해서 주간 보고서 작성해줘"
|
||||
4. AI가 폴더 문서 읽기 → 구조화 → HTML 보고서 자동 생성
|
||||
```
|
||||
**소요 시간**: 기존 30분 → 2-3분
|
||||
|
||||
### 시나리오 B: Excel 데이터 분석 → 시각적 보고서
|
||||
```
|
||||
1. 작업 폴더에 매출 데이터(xlsx/csv) 저장
|
||||
2. Cowork → 데이터분석 → HTML 보고서(Dashboard 템플릿)
|
||||
3. "월별 매출 추이와 상위 품목을 분석해서 보고서 만들어줘"
|
||||
4. AI가 데이터 읽기 → 집계/분석 → 차트 포함 대시보드 생성
|
||||
```
|
||||
**소요 시간**: 기존 1-2시간 → 5분
|
||||
|
||||
### 시나리오 C: 다수 문서 종합 → 요약 보고서
|
||||
```
|
||||
1. 작업 폴더에 관련 자료(PDF, DOCX, TXT) 수집
|
||||
2. Cowork → 보고서 → Word(Corporate 템플릿)
|
||||
3. "폴더 내 문서를 모두 읽고 핵심 내용 종합 보고서 작성해줘"
|
||||
4. AI가 document_read로 전체 문서 읽기 → 종합 → Word 보고서 생성
|
||||
```
|
||||
**소요 시간**: 기존 2-3시간 → 5-10분
|
||||
|
||||
### 시나리오 D: 반복 업무 스크립트화
|
||||
```
|
||||
1. Cowork → 자동화
|
||||
2. "매일 아침 특정 폴더의 파일을 날짜별로 정리하는 스크립트 만들어줘"
|
||||
3. AI가 요구사항 분석 → BAT/PS1 스크립트 생성
|
||||
```
|
||||
**소요 시간**: 기존 1시간(개발자 요청) → 3분
|
||||
|
||||
---
|
||||
|
||||
## 4. 현재 한계 및 향후 개선 방향
|
||||
|
||||
### 4.1 현재 한계
|
||||
| 한계 | 설명 | 영향도 |
|
||||
|------|------|--------|
|
||||
| 인터넷 검색 불가 | 외부 데이터 수집 자동화 미지원 | 중간 |
|
||||
| 이미지/차트 직접 생성 불가 | HTML 내 CSS 기반 시각화만 가능 | 낮음 |
|
||||
| 대용량 파일 제한 | 8,000자 기본 제한 (document_read) | 중간 |
|
||||
| 데이터베이스 연동 없음 | DB 직접 쿼리 불가 (파일 내보내기 후 사용) | 중간 |
|
||||
| 메일/메신저 연동 없음 | 생성 결과 자동 전송 불가 | 낮음 |
|
||||
|
||||
### 4.2 향후 개선 계획 (v1.2.0+)
|
||||
| 우선순위 | 기능 | 기대 효과 |
|
||||
|----------|------|-----------|
|
||||
| 1 | **Code 탭 에이전트 활성화** | 코드 분석/수정/테스트 자동화 |
|
||||
| 2 | **웹 검색 도구 추가** | 실시간 정보 기반 보고서 작성 |
|
||||
| 3 | **차트 이미지 생성** | 데이터 시각화 품질 향상 |
|
||||
| 4 | **템플릿 사용자 정의** | 기업 CI/BI 맞춤 문서 생성 |
|
||||
| 5 | **워크플로우 자동화** | 다단계 작업 사전 정의 및 원클릭 실행 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 도입 효과 예상
|
||||
|
||||
### 정량적 효과
|
||||
- **문서 작성 시간**: 평균 70% 절감 (30분 → 3-5분)
|
||||
- **데이터 분석 보고**: 평균 80% 절감 (2시간 → 10-15분)
|
||||
- **반복 작업 스크립트화**: 비개발자도 자동화 가능
|
||||
- **디자인 외주 비용**: 10종 템플릿으로 내부 해결
|
||||
|
||||
### 정성적 효과
|
||||
- 보고서 양식/품질 표준화
|
||||
- 데이터 기반 의사결정 문화 촉진
|
||||
- 비개발 직군의 자동화 접근성 향상
|
||||
- 문서 작성 부담 감소로 핵심 업무 집중도 향상
|
||||
|
||||
---
|
||||
|
||||
## 6. 부서별 우선 도입 권장
|
||||
|
||||
| 우선순위 | 부서 | 핵심 활용 | 권장 프리셋 |
|
||||
|----------|------|-----------|-------------|
|
||||
| 1순위 | 기획/경영지원 | 주간보고, 회의록, 사업계획 | 보고서, 문서작성 |
|
||||
| 1순위 | 재무/회계 | 매출분석, 비용분류, 예산보고 | 데이터분석, 보고서 |
|
||||
| 2순위 | 영업/마케팅 | 제안서, 고객분석, 캠페인보고 | 문서작성, 데이터분석 |
|
||||
| 2순위 | 인사/총무 | 인사분석, 교육자료, 매뉴얼 | 데이터분석, 문서작성 |
|
||||
| 3순위 | R&D/개발 | 기술문서, 테스트데이터, 스크립트 | 자동화, 보고서 |
|
||||
| 3순위 | 운영/생산 | 재고분석, 작업일지, 파일정리 | 데이터분석, 파일관리 |
|
||||
|
||||
---
|
||||
|
||||
*본 보고서는 AX Copilot v1.1.0 기준으로 작성되었으며, 향후 기능 업데이트에 따라 활용 범위가 확대될 예정입니다.*
|
||||
2692
docs/DEVELOPMENT.md
Normal file
2692
docs/DEVELOPMENT.md
Normal file
File diff suppressed because it is too large
Load Diff
619
docs/LAUNCHER_ROADMAP.html
Normal file
619
docs/LAUNCHER_ROADMAP.html
Normal file
@@ -0,0 +1,619 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AX Commander (런처) 고도화 계획 | AX Copilot</title>
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Pretendard', 'Segoe UI', 'Malgun Gothic', -apple-system, sans-serif;
|
||||
font-size: 15px;
|
||||
background: #f8f9fe;
|
||||
color: #1a1a2e;
|
||||
line-height: 1.7;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
.header {
|
||||
background: linear-gradient(135deg, #1a1b2e 0%, #2d3a6b 60%, #4b5efc 100%);
|
||||
padding: 48px 0 40px;
|
||||
color: white;
|
||||
}
|
||||
.header-inner {
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
.header-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.header-logo {
|
||||
width: 48px; height: 48px;
|
||||
background: rgba(255,255,255,0.15);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
border-radius: 12px;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
font-weight: 800; font-size: 1.2rem; color: #fff;
|
||||
}
|
||||
.header h1 {
|
||||
font-size: 26px;
|
||||
font-weight: 800;
|
||||
color: #fff;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.header-meta {
|
||||
display: flex; gap: 2rem; margin-top: 0.5rem; font-size: 0.85rem; color: rgba(255,255,255,0.65);
|
||||
}
|
||||
.header-meta span { display: flex; align-items: center; gap: 0.4rem; }
|
||||
|
||||
/* Container */
|
||||
.container { max-width: 900px; margin: 0 auto; padding: 40px 20px 80px; }
|
||||
|
||||
/* TOC */
|
||||
.toc {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
padding: 18px 26px;
|
||||
margin-bottom: 24px;
|
||||
box-shadow: 0 2px 12px rgba(75,94,252,0.08);
|
||||
}
|
||||
.toc h2 {
|
||||
font-size: 15px;
|
||||
font-weight: 800;
|
||||
color: #2e3060;
|
||||
margin-bottom: 1rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 1px solid #e0e0ec;
|
||||
}
|
||||
.toc ul { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 0.4rem; }
|
||||
.toc a {
|
||||
color: #4b5efc;
|
||||
text-decoration: none;
|
||||
font-size: 13.5px;
|
||||
font-weight: 600;
|
||||
padding: 0.3rem 0.6rem;
|
||||
border-radius: 6px;
|
||||
display: block;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.toc a:hover { background: #eef1ff; color: #1a1a2e; }
|
||||
|
||||
/* Section (collapsible) */
|
||||
.section {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
margin-bottom: 16px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 12px rgba(75,94,252,0.08);
|
||||
}
|
||||
|
||||
.section-header {
|
||||
background: #eef1ff;
|
||||
padding: 12px 20px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
user-select: none;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.section-header:hover { border-bottom-color: #4b5efc; }
|
||||
.section-header h2 { font-size: 16px; font-weight: 700; color: #1a1b2e; }
|
||||
|
||||
/* Collapsible chevron replaced with triangle markers */
|
||||
.chevron { display: none; }
|
||||
.section-header::after {
|
||||
content: '\25BC';
|
||||
font-size: 11px;
|
||||
color: #4b5efc;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
.section.collapsed .section-header::after { content: '\25B6'; }
|
||||
.section.collapsed .section-body { display: none; }
|
||||
|
||||
.section-body { padding: 20px; }
|
||||
|
||||
/* Status badges */
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 2px 10px;
|
||||
border-radius: 20px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.badge-completed { background: rgba(52,211,153,0.15); color: #16a34a; border: 1px solid rgba(52,211,153,0.3); }
|
||||
.badge-in-progress { background: rgba(251,191,36,0.15); color: #d97706; border: 1px solid rgba(251,191,36,0.3); }
|
||||
.badge-done { background: rgba(16,185,129,0.15); color: #059669; border: 1px solid rgba(16,185,129,0.3); }
|
||||
.badge-hold { background: rgba(156,163,175,0.15); color: #6b7280; border: 1px solid rgba(156,163,175,0.3); }
|
||||
.badge-planned { background: rgba(96,165,250,0.15); color: #3b82f6; border: 1px solid rgba(96,165,250,0.3); }
|
||||
|
||||
/* Priority badges */
|
||||
.priority {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
border-radius: 6px;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
.priority-highest { background: rgba(248,113,113,0.15); color: #e53e3e; border: 1px solid rgba(248,113,113,0.3); }
|
||||
.priority-high { background: rgba(251,146,60,0.15); color: #dd6b20; border: 1px solid rgba(251,146,60,0.3); }
|
||||
.priority-medium { background: rgba(251,191,36,0.15); color: #d97706; border: 1px solid rgba(251,191,36,0.3); }
|
||||
.priority-low { background: rgba(156,163,175,0.15); color: #6b7280; border: 1px solid rgba(156,163,175,0.3); }
|
||||
.priority-longterm { background: rgba(139,92,246,0.15); color: #7c3aed; border: 1px solid rgba(139,92,246,0.3); }
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
background: white;
|
||||
font-size: 13.5px;
|
||||
margin: 1rem 0;
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 12px rgba(75,94,252,0.08);
|
||||
}
|
||||
thead th {
|
||||
background: #2e3060;
|
||||
color: white;
|
||||
padding: 12px 16px;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
}
|
||||
tbody td {
|
||||
padding: 10px 16px;
|
||||
border-bottom: 1px solid #f0f0f8;
|
||||
vertical-align: top;
|
||||
color: #1a1a2e;
|
||||
}
|
||||
tbody tr:nth-child(even) td { background: #f8f9fe; }
|
||||
tbody tr:hover td { background: #f5f6ff; }
|
||||
tbody tr:last-child td { border-bottom: none; }
|
||||
|
||||
/* Feature cards */
|
||||
.feature-card {
|
||||
background: #f8f9fe;
|
||||
border: 1px solid #e0e0ec;
|
||||
border-radius: 10px;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.feature-card:hover { border-color: #4b5efc; }
|
||||
.feature-card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 6px;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.feature-card-header h4 { font-size: 15px; font-weight: 700; color: #2e3060; }
|
||||
.feature-card p, .feature-card li {
|
||||
color: #6b6b8a;
|
||||
font-size: 13px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.feature-card strong { color: #1a1a2e; }
|
||||
.feature-card ul { padding-left: 1.2rem; }
|
||||
|
||||
/* Bullet list */
|
||||
.bullet-list { list-style: none; padding: 0; }
|
||||
.bullet-list li {
|
||||
padding: 0.4rem 0 0.4rem 1.2rem;
|
||||
position: relative;
|
||||
color: #6b6b8a;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
.bullet-list li::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0.85rem;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background: #4b5efc;
|
||||
}
|
||||
|
||||
/* Separator */
|
||||
hr {
|
||||
border: none;
|
||||
height: 1px;
|
||||
background: #e0e0ec;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
/* Comparison highlight */
|
||||
table .check { color: #16a34a; font-weight: 700; }
|
||||
table .cross { color: #e53e3e; opacity: 0.6; }
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 32px 20px;
|
||||
color: #8888aa;
|
||||
font-size: 12px;
|
||||
border-top: 1px solid #e0e0ec;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
/* Print */
|
||||
@media print {
|
||||
body { background: #fff; }
|
||||
.header { page-break-after: always; }
|
||||
.section-body { display: block !important; }
|
||||
.section-header::after { content: ''; }
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.container { padding: 20px 12px; }
|
||||
.toc ul { grid-template-columns: 1fr; }
|
||||
.header h1 { font-size: 20px; }
|
||||
.header-meta { flex-direction: column; gap: 0.5rem; }
|
||||
table { font-size: 12px; }
|
||||
thead th, tbody td { padding: 8px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<div class="header-inner">
|
||||
<div class="header-brand">
|
||||
<div class="header-logo">AX</div>
|
||||
<div>
|
||||
<h1>AX Commander (런처) 고도화 계획</h1>
|
||||
<div style="color: rgba(255,255,255,0.65); font-size: 14px; margin-top: 0.2rem;">AX Copilot Launcher Roadmap</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-meta">
|
||||
<span>Version: v1.6.1</span>
|
||||
<span>Last Updated: 2026-03-30</span>
|
||||
<span>Status: Active</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<!-- TOC -->
|
||||
<nav class="toc" id="toc">
|
||||
<h2>목차 (Table of Contents)</h2>
|
||||
<ul>
|
||||
<li><a href="#current-state">현재 상태 (v1.5.0)</a></li>
|
||||
<li><a href="#comparison">경쟁 서비스 비교</a></li>
|
||||
<li><a href="#phase-l1">Phase L1 — 차세대 런처 고도화 (v1.5.0)</a></li>
|
||||
<li><a href="#phase-l2">Phase L2 — 클립보드 고도화 + UX 개선 (v1.5.3)</a></li>
|
||||
<li><a href="#phase-l3">Phase L3 — 차세대 런처 (v2.0) + Agent Phase 18 교차</a></li>
|
||||
<li><a href="#tech-debt">기술 부채</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- Current State -->
|
||||
<div class="section" id="current-state">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>현재 상태 (v1.5.0) — 핵심 기능 44개 핸들러</h2>
|
||||
<span class="badge badge-completed">현재</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<ul class="bullet-list">
|
||||
<li>퍼지 검색 + 한글 초성 검색 (FuzzyEngine)</li>
|
||||
<li>44개 프리픽스 명령 (계산기, 이모지, 웹검색, 스니펫, 클립보드, 프로세스 등)</li>
|
||||
<li>10가지 테마 + 커스텀 테마</li>
|
||||
<li>플러그인 시스템 (DLL + JSON 스킬)</li>
|
||||
<li>AX Agent AI 대화 통합</li>
|
||||
<li>글로벌 핫키 (Alt+Space), 무지개 글로우 효과</li>
|
||||
<li>파일/앱 인덱싱, 북마크 검색, 사용 빈도 랭킹</li>
|
||||
<li>워크스페이스 프로파일 (창 레이아웃 저장/복원)</li>
|
||||
<li>클립보드 히스토리, 스니펫 확장</li>
|
||||
<li>스크린 캡처, 컬러 피커, JSON 도구</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Comparison -->
|
||||
<div class="section" id="comparison">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>경쟁 서비스 비교 (2026년 3월 기준)</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<div style="overflow-x:auto;">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>기능</th>
|
||||
<th>AX Commander</th>
|
||||
<th>Raycast</th>
|
||||
<th>Alfred 5</th>
|
||||
<th>Flow Launcher</th>
|
||||
<th>PowerToys</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>AI 대화</td><td class="check">O (AX Agent)</td><td class="check">O (멀티모델)</td><td>워크플로우</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>MCP 프로토콜</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>에이전트 코딩</td><td class="check">O (Code 탭)</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>플러그인</td><td>DLL+JSON</td><td>1500+ 스토어</td><td>워크플로우 갤러리</td><td>200+</td><td>모듈</td></tr>
|
||||
<tr><td>클립보드 히스토리</td><td class="check">O</td><td class="check">O (리치)</td><td>파워팩</td><td>플러그인</td><td class="cross">X</td></tr>
|
||||
<tr><td>윈도우 관리</td><td class="check">O (22 레이아웃)</td><td>70+ 레이아웃</td><td class="cross">X</td><td class="cross">X</td><td>FancyZones</td></tr>
|
||||
<tr><td>파일 탐색기 통합</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>Everything 연동</td><td class="check">O (es 프리픽스)</td><td class="cross">X</td><td class="cross">X</td><td class="check">O</td><td class="cross">X</td></tr>
|
||||
<tr><td>선택 텍스트 AI</td><td class="check">O (텍스트 액션)</td><td class="check">O (AI Commands)</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>영구 독 UI</td><td class="check">O (독 바)</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">O</td></tr>
|
||||
<tr><td>클라우드 동기화</td><td class="cross">X</td><td>Pro</td><td>Dropbox</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>다국어</td><td class="check">5개국어</td><td>영어</td><td>영어</td><td>영어</td><td>다국어</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L1 -->
|
||||
<div class="section" id="phase-l1">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L1 — 차세대 런처 고도화 (v1.5.0)</h2>
|
||||
<span class="badge badge-done">✓ 완료</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
|
||||
<!-- L1-1 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-1. 선택 텍스트 AI 명령 (AI Commands)</h4>
|
||||
<span class="priority priority-highest">최고</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 런처에서만 AI 사용 가능, 시스템 전역 텍스트 처리 불가</p>
|
||||
<p><strong>구현:</strong> 글로벌 핫키(예: Alt+A) → 선택된 텍스트에 AI 명령 실행</p>
|
||||
<p><strong>명령 예시:</strong> 번역, 문법 교정, 요약, 코드 설명, 포맷 변환</p>
|
||||
<p><strong>참고:</strong> Raycast AI Commands</p>
|
||||
<p><strong>기술:</strong> InputListener 확장 + Clipboard 읽기 + LLM 호출 + 결과 Popup</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-2 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-2. Everything (voidtools) 연동</h4>
|
||||
<span class="priority priority-high">높음</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 자체 인덱싱은 설정된 폴더만 검색, 전체 디스크 검색 불가</p>
|
||||
<p><strong>구현:</strong> Everything SDK (IPC/HTTP API) 연동으로 NTFS 전체 즉시 검색</p>
|
||||
<p><strong>폴백:</strong> Everything 미설치 시 기존 IndexService 사용</p>
|
||||
<p><strong>참고:</strong> Flow Launcher, Wox의 Everything 통합</p>
|
||||
<p><strong>기술:</strong> Everything.dll P/Invoke 또는 HTTP API (http://localhost:8080)</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-3 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-3. 윈도우 타일링 레이아웃 확장</h4>
|
||||
<span class="priority priority-high">높음</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 기본 snap만 지원, 복잡한 레이아웃 불가</p>
|
||||
<p><strong>구현:</strong> 2분할, 3분할, 4분할, 그리드 레이아웃 (halves/thirds/quarters)</p>
|
||||
<p><strong>UI:</strong> snap 프리픽스에 레이아웃 선택 UI 추가</p>
|
||||
<p><strong>참고:</strong> Raycast Window Management (70+ 레이아웃)</p>
|
||||
<p><strong>기술:</strong> SnapHandler 확장 + Win32 SetWindowPos</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-4 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-4. 플러그인 스토어 (인앱 갤러리)</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 플러그인 설치가 수동 (DLL 파일 복사)</p>
|
||||
<p><strong>구현:</strong> 인앱 플러그인 브라우저 + 원클릭 설치/업데이트</p>
|
||||
<p><strong>소스:</strong> GitHub 리포지토리 기반 플러그인 레지스트리 (JSON manifest)</p>
|
||||
<p><strong>참고:</strong> Raycast Extension Store, Flow Launcher pm install</p>
|
||||
<p><strong>기술:</strong> PluginHost 확장 + GitHub API + 다운로드/설치 자동화</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-5 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-5. 영구 독/위젯 모드</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 런처는 호출 시에만 나타남, 상시 접근 불가</p>
|
||||
<p><strong>구현:</strong> 화면 하단/측면에 고정되는 미니 바 (핀 고정 명령, CPU/메모리, 시계)</p>
|
||||
<p><strong>참고:</strong> PowerToys Command Palette Dock</p>
|
||||
<p><strong>기술:</strong> 별도 Window (TopMost, 자동 숨김 옵션)</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-6 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-6. 파일 탐색기 대화상자 통합</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 열기/저장 대화상자에서 빠른 검색 불가</p>
|
||||
<p><strong>구현:</strong> Windows 열기/저장 대화상자 감지 → 런처 오버레이 표시</p>
|
||||
<p><strong>참고:</strong> Listary의 대화상자 하이재킹</p>
|
||||
<p><strong>기술:</strong> SetWinEventHook + 대화상자 감지 + 경로 주입</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-7 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-7. 클립보드 히스토리 강화</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 텍스트만 저장, 이미지/파일 클립보드 미지원</p>
|
||||
<p><strong>구현:</strong> 이미지 클립보드 저장, 리치 텍스트, 핀 고정, 카테고리 분류</p>
|
||||
<p><strong>참고:</strong> Raycast Clipboard (리치 컨텐츠)</p>
|
||||
<p><strong>기술:</strong> ClipboardHistoryHandler 확장 + 이미지 직렬화</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-8 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-8. 클라우드 설정 동기화</h4>
|
||||
<span class="badge badge-hold">보류</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 여러 PC에서 설정 수동 복사 필요</p>
|
||||
<p><strong>구현:</strong> settings.json + 스니펫 + 별칭을 클라우드 저장소에 동기화</p>
|
||||
<p><strong>후보:</strong> OneDrive / Google Drive / 사내 NAS 공유 폴더</p>
|
||||
<p><strong>참고:</strong> Raycast Pro Cloud Sync</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-9 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-9. 커스텀 테마 마켓</h4>
|
||||
<span class="badge badge-hold">보류</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 10개 내장 테마만 사용 가능</p>
|
||||
<p><strong>구현:</strong> 사용자 테마 공유/다운로드 시스템</p>
|
||||
<p><strong>기술:</strong> 테마 JSON 파일 → GitHub 기반 레지스트리</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L1 추가 완료 -->
|
||||
<div class="section">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L1 추가 완료 (v1.5.0)</h2>
|
||||
<span class="badge badge-done">✓ 완료</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<table>
|
||||
<thead><tr><th>기능</th><th>상태</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>Windows 탐색기 셸 확장</td><td>✓ ShellExtensionService — HKCU 레지스트리 우클릭 메뉴 등록/해제</td></tr>
|
||||
<tr><td>저장 공간 관리 UI</td><td>✓ StorageAnalyzer — 사용량 분석, 드라이브 여유, 7/14/30일 정리</td></tr>
|
||||
<tr><td>설정 도움말 아이콘</td><td>✓ AI 관련 설정 17개에 ? 아이콘 + 커스텀 다크 툴팁</td></tr>
|
||||
<tr><td>독 바 실시간 설정</td><td>✓ 설정 변경 즉시 반영, 자동 표시, 위치 기억, 히트 테스트 수정</td></tr>
|
||||
<tr><td>클립보드 이미지 썸네일</td><td>✓ 런처에서 이미지 항목 썸네일 미리보기 표시</td></tr>
|
||||
<tr><td>런처 독 바 명령어</td><td>✓ /dock 명령으로 독 바 표시/숨기기</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L2 -->
|
||||
<div class="section" id="phase-l2">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L2 — 클립보드 고도화 + UX 개선 (v1.5.3)</h2>
|
||||
<span class="badge badge-planned">계획</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<p style="color:#555;margin-bottom:1rem;">
|
||||
<strong>방향</strong>: 클립보드 히스토리의 실용성 극대화 (이미지 원본 품질, 자동 복사 워크플로우).
|
||||
Raycast의 리치 클립보드, Alfred의 Snippet 확장을 참고하되 사내 로컬 환경에 최적화.
|
||||
</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>#</th><th>기능</th><th>설명</th><th>우선순위</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>L2-1</td><td>클립보드 이미지 원본 해상도 보존</td><td>원본 PNG/BMP 그대로 DPAPI 저장. 썸네일은 표시용으로만 생성. 캐시 정리 정책 (30일/500MB)</td><td><span class="priority priority-high">높음</span></td></tr>
|
||||
<tr><td>L2-2</td><td>Shift+Enter 실행 시 자동 클립보드 복사</td><td>클립보드 히스토리에서 미리보기 시 해당 항목을 시스템 클립보드에 자동 복사</td><td><span class="priority priority-high">높음</span></td></tr>
|
||||
<tr><td>L2-3</td><td>클립보드 이미지 미리보기 창</td><td>이미지 항목 선택 시 별도 팝업으로 원본 크기 미리보기. 확대/축소, 복사 버튼</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L2-4</td><td>클립보드 검색 강화</td><td>이미지 OCR 텍스트 추출 → 텍스트 기반 이미지 검색. Windows OCR API (로컬)</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L2-5</td><td>클립보드 항목 병합</td><td>여러 텍스트 항목을 선택하여 하나로 병합 (줄바꿈 구분). Ctrl+Click 다중 선택</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L3 -->
|
||||
<div class="section" id="phase-l3">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L3 — 차세대 런처 (v2.0) + Agent Phase 18 교차</h2>
|
||||
<span class="badge badge-planned">계획</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<p style="color:#555;margin-bottom:1rem;">
|
||||
<strong>방향</strong>: 경쟁 런처(Raycast 1500+ 확장, PowerToys Run)의 에코시스템 수준을 참고하되,
|
||||
사내 보안/오프라인 환경에서 동작하는 자체 완결형 기능으로 구현.<br>
|
||||
<strong>참고</strong>: AX Agent Phase 18 (v2.0)과 교차 — 플러그인 갤러리(18-2), AI 스니펫(18-3), 퀵링크(18-4), 웹 검색 AI 요약(18-6).
|
||||
</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>#</th><th>기능</th><th>참고</th><th>우선순위</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>L3-1</td><td>플러그인 인앱 갤러리 + 레지스트리</td><td>로컬 NAS/Git 레지스트리 기반 탐색/설치/업데이트. → Agent Phase 18-2</td><td><span class="priority priority-high">높음</span></td></tr>
|
||||
<tr><td>L3-2</td><td>웹 검색 AI 요약</td><td>? 검색 결과를 AI로 요약. → Agent Phase 18-6</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-3</td><td>AI 스니펫</td><td>;email {수신자} {주제} → LLM 초안 자동 생성. → Agent Phase 18-3</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-4</td><td>파라미터 퀵링크</td><td>jira {티켓번호} → URL 템플릿 변수 치환. → Agent Phase 18-4</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-5</td><td>파일 태그 시스템</td><td>사용자 태그 부여, 태그 기반 검색</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-6</td><td>오프라인 AI (로컬 SLM)</td><td>ONNX Runtime + phi-3. → Agent Phase 18-5</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
<tr><td>L3-7</td><td>다중 디스플레이</td><td>모니터별 런처/독 바 위치 기억</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
<tr><td>L3-8</td><td>알림 센터 통합</td><td>Windows 알림과 연동</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
<tr><td>L3-9</td><td>런처 미니 위젯</td><td>날씨/일정/할일 카드형 표시. 로컬 데이터 기반</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Tech Debt -->
|
||||
<div class="section" id="tech-debt">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>기술 부채 (v1.5.0 해결)</h2>
|
||||
<span class="badge badge-done">✓ 완료</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>항목</th><th>상태</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>SnapHandler 기본 기능만</td><td>✓ 22개 레이아웃으로 확장 (3등분, 2/3, 3분할 조합)</td></tr>
|
||||
<tr><td>Everything 미연동</td><td>✓ EverythingHandler 구현 (es 프리픽스, P/Invoke, graceful fallback)</td></tr>
|
||||
<tr><td>플러그인 설치 수동</td><td>✓ PluginHost.InstallFromZip() 로컬 zip 자동 추출·등록 (URL 제외: 사내 보안)</td></tr>
|
||||
<tr><td>이미지 클립보드 미지원</td><td>✓ PNG→Base64 DPAPI 암호화 저장/복원, 앱 재시작 후 이미지 유지</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
AX Copilot — AX Commander Roadmap v1.6.1 · Last Updated: 2026-03-30
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function toggleSection(header) {
|
||||
const section = header.parentElement;
|
||||
section.classList.toggle('collapsed');
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
48
docs/LAUNCHER_ROADMAP.md
Normal file
48
docs/LAUNCHER_ROADMAP.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# AX Commander 로드맵 (전면 재작성)
|
||||
|
||||
## 1. 보존 이력 (요약만 유지)
|
||||
- v1.5.0: Everything 연동, Dock Bar, 파일대화상자 연동, 클립보드 고도화, 플러그인 ZIP 설치.
|
||||
- v1.5.3: 클립보드 이미지 원본 보존/복원, Shift+Enter 자동복사, 설정 UX 개선.
|
||||
|
||||
## 2. 재작성 기준
|
||||
- 런처는 AX Agent 실행 품질을 끌어올리는 입력 허브로 재정의.
|
||||
- claw-code의 명령 중심 워크플로우를 AX Commander UX에 맞게 흡수.
|
||||
|
||||
## 3. 2026 실행 계획 (v1.7.3 ~ v1.8.x)
|
||||
|
||||
### Phase L-A 입력 라우팅 정교화
|
||||
- 목표
|
||||
- 접두사/슬래시/검색 입력을 충돌 없이 일관 파싱.
|
||||
- Agent 호출 전 컨텍스트 힌트 품질 향상.
|
||||
- 완료 조건
|
||||
- 동일 입력의 실행 결과가 재현 가능.
|
||||
|
||||
### Phase L-B 작업 전환 시간 단축
|
||||
- 목표
|
||||
- 런처에서 Agent 세션 진입까지 최소 단계화.
|
||||
- 자주 쓰는 명령 카드(최근/즐겨찾기/업무흐름) 강화.
|
||||
- 완료 조건
|
||||
- 평균 실행 단계 및 클릭 수 감소.
|
||||
|
||||
### Phase L-C 클립보드-에이전트 연계 강화
|
||||
- 목표
|
||||
- 텍스트/이미지/파일 클립보드 항목을 Agent 입력으로 안정 전달.
|
||||
- 완료 조건
|
||||
- 클립보드 기반 질의에서 컨텍스트 누락 최소화.
|
||||
|
||||
### Phase L-D 운영모드 정책 일관화
|
||||
- 목표
|
||||
- `internal` 모드에서 외부 연결성 기능 완전 차단.
|
||||
- 런처 레벨에서 차단 사유를 사용자에게 명확 안내.
|
||||
- 완료 조건
|
||||
- 내부망 정책 위반 기능 노출 0건.
|
||||
|
||||
## 4. 런처 품질 기준
|
||||
- UI는 테마 리소스만 사용(하드코딩 금지).
|
||||
- 수평 스크롤 없음, 클릭 영역 최소 36px.
|
||||
- 설정 변경 즉시 반영 + 저장 안정성 확보.
|
||||
|
||||
## 5. 즉시 착수 항목
|
||||
1. 입력 라우팅 우선순위 매트릭스 재정의.
|
||||
2. Agent 진입 단축 플로우(최근 세션/새 세션) 단일화.
|
||||
3. internal 모드 차단 메시지 표준화.
|
||||
259
docs/NEXT_ROADMAP.html
Normal file
259
docs/NEXT_ROADMAP.html
Normal file
@@ -0,0 +1,259 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AX Copilot ??李④린 媛쒕컻 怨꾪쉷 (v1.6.1~v2.0)</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
body { font-family: 'Pretendard', 'Segoe UI', 'Malgun Gothic', sans-serif; font-size: 15px; color: #1a1a2e; background: #f8f9fe; line-height: 1.7; }
|
||||
.wrap { max-width: 960px; margin: 0 auto; padding: 40px 20px 80px; }
|
||||
.header { background: linear-gradient(135deg, #1a1b2e 0%, #2d3a6b 60%, #4b5efc 100%); border-radius: 20px; padding: 48px 40px 40px; margin-bottom: 40px; color: white; }
|
||||
.header h1 { font-size: 26px; font-weight: 800; line-height: 1.3; margin-bottom: 12px; }
|
||||
.header .subtitle { font-size: 14px; color: rgba(255,255,255,0.65); line-height: 1.6; }
|
||||
.header .badge { display: inline-block; background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.25); border-radius: 20px; padding: 4px 14px; font-size: 12px; font-weight: 600; margin-bottom: 16px; }
|
||||
h2 { font-size: 20px; font-weight: 800; margin: 40px 0 16px; padding: 14px 20px; background: linear-gradient(135deg, #1a1b2e 0%, #2d3a6b 60%, #4b5efc 100%); color: #fff; border-radius: 12px; }
|
||||
h3 { font-size: 15px; font-weight: 700; color: #1a1b2e; margin: 20px 0 10px; padding-left: 12px; border-left: 4px solid #4b5efc; }
|
||||
.card { background: #fff; border-radius: 14px; padding: 20px 24px; margin: 0 0 14px; box-shadow: 0 1px 4px rgba(0,0,0,0.06); }
|
||||
table { width: 100%; border-collapse: collapse; font-size: 13px; }
|
||||
th { background: #f0f2ff; text-align: left; padding: 8px 12px; font-weight: 700; border-bottom: 2px solid #dde; }
|
||||
td { padding: 7px 12px; border-bottom: 1px solid #eef; vertical-align: top; }
|
||||
.check { color: #059669; font-weight: 700; }
|
||||
.cross { color: #dc2626; }
|
||||
.new { color: #4b5efc; font-weight: 700; }
|
||||
.badge-done { display: inline-block; background: rgba(16,185,129,0.15); color: #059669; border: 1px solid rgba(16,185,129,0.3); padding: 2px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; }
|
||||
.badge-plan { display: inline-block; background: rgba(75,94,252,0.1); color: #4b5efc; border: 1px solid rgba(75,94,252,0.3); padding: 2px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; }
|
||||
.badge-hold { display: inline-block; background: rgba(156,163,175,0.15); color: #6b7280; border: 1px solid rgba(156,163,175,0.3); padding: 2px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; }
|
||||
.p-high { color: #dc2626; font-weight: 700; }
|
||||
.p-mid { color: #d97706; font-weight: 600; }
|
||||
.p-low { color: #6b7280; }
|
||||
.footer { text-align: center; font-size: 12px; color: #9999bb; margin-top: 48px; padding-top: 16px; border-top: 1px solid #e4e4f0; }
|
||||
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
|
||||
@media (max-width: 700px) { .two-col { grid-template-columns: 1fr; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
|
||||
<div class="header">
|
||||
<div class="badge">AX Copilot 李④린 媛쒕컻 怨꾪쉷</div>
|
||||
<h1>v1.6.1 ~ v2.0 濡쒕뱶留?/h1>
|
||||
<p class="subtitle">
|
||||
2026??3??寃쎌웳 ?쒕퉬??遺꾩꽍 (Claw Code, Cursor, Copilot, Windsurf, Raycast, PowerToys) 諛??먯씠?꾪듃 肄붾뵫 ?숉뼢 湲곕컲<br>
|
||||
?꾩옱 v1.6.1 ??52媛??먯씠?꾪듃 ?꾧뎄, 29媛??댁옣 ?ㅽ궗, 20媛?肄붿썙???꾨━?? 4醫?LLM ?쒕퉬?? </p>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧???꾩옱 ?꾨즺 ?먥븧??-->
|
||||
<h2>v1.6.1 ?꾨즺 ?꾪솴</h2>
|
||||
|
||||
<div class="two-col">
|
||||
<div class="card">
|
||||
<h3>?곗쿂 (Phase L1) <span class="badge-done">?꾨즺</span></h3>
|
||||
<table>
|
||||
<tr><td>?좏깮 ?띿뒪??AI 紐낅졊</td><td class="check">O</td></tr>
|
||||
<tr><td>??諛?(?ㅼ젙 湲곕컲)</td><td class="check">O</td></tr>
|
||||
<tr><td>?대┰蹂대뱶 ?/移댄뀒怨좊━</td><td class="check">O</td></tr>
|
||||
<tr><td>?뚯씪 ??붿긽???곕룞</td><td class="check">O</td></tr>
|
||||
<tr><td>Everything ?곕룞</td><td class="check">O</td></tr>
|
||||
<tr><td>SnapHandler 22醫?/td><td class="check">O</td></tr>
|
||||
<tr><td>?꾩씠肄??꾨㈃ 援먯껜</td><td class="check">O</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>????쒕퉬??(Phase 8~15) <span class="badge-done">?꾨즺</span></h3>
|
||||
<table>
|
||||
<tr><td>MCP ?대씪?댁뼵??+ 紐⑤뜽 ?대갚</td><td class="check">O</td></tr>
|
||||
<tr><td>LSP 肄붾뱶 ?명뀛由ъ쟾??/td><td class="check">O</td></tr>
|
||||
<tr><td>?쒕툕?먯씠?꾪듃 + 肄붾뱶 ?쒕㎤??寃??/td><td class="check">O</td></tr>
|
||||
<tr><td>diff 酉곗뼱 + PDF ?대낫?닿린</td><td class="check">O</td></tr>
|
||||
<tr><td>?대깽???몃━嫄?+ ?먮룞 ?뚯뒪??猷⑦봽</td><td class="check">O</td></tr>
|
||||
<tr><td>?먮룞 紐⑤뜽 ?좏깮 (Auto Router)</td><td class="check">O</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 硫붾え由?+ 硫?곕え??(Vision)</td><td class="check">O</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 ???쒖뒪??/td><td class="check">O</td></tr>
|
||||
<tr><td>?ㅽ궗 ?쒖뒪??29醫?(媛ㅻ윭由??몄쭛湲?媛?몄삤湲?</td><td class="check">O</td></tr>
|
||||
<tr><td>AI 肄붾뱶 由щ럭 + ?쒕옒洹??쒕∼ AI</td><td class="check">O</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 ?꾧뎄 52醫?(?곗씠???쒖뒪???ㅽ듃?뚰겕)</td><td class="check">O</td></tr>
|
||||
<tr><td>?뚰겕?뚮줈??遺꾩꽍湲?+ ?ㅽ뻾 ?듦퀎 ??쒕낫??/td><td class="check">O</td></tr>
|
||||
<tr><td>硫?고뙣??臾몄꽌 ?앹꽦 (plan?뭓ssemble)</td><td class="check">O</td></tr>
|
||||
<tr><td>PPT ?ㅼ씠?곕툕 ?앹꽦 + ?대?吏 遺꾩꽍</td><td class="check">O</td></tr>
|
||||
<tr><td>媛?대뱶 ?쒖뒪??(?뷀샇??酉곗뼱)</td><td class="check">O</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??寃쎌웳 鍮꾧탳 ?먥븧??-->
|
||||
<h2>寃쎌웳 ?쒕퉬???鍮??ъ???(2026??3??</h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>湲곕뒫</th><th>AX Copilot</th><th>Claw Code</th><th>Cursor</th><th>Copilot</th><th>Raycast</th><th>媛?/th></tr>
|
||||
<tr><td>MCP</td><td class="check">O</td><td class="check">?쒕쾭 紐⑤뱶</td><td class="check">O</td><td class="check">O</td><td class="check">@硫섏뀡</td><td>??/td></tr>
|
||||
<tr><td>?쒕툕?먯씠?꾪듃</td><td class="check">O</td><td class="check">10媛??</td><td class="check">8媛??대씪?곕뱶</td><td class="check">?ㅼ쨷</td><td class="cross">X</td><td>?먯씠?꾪듃 ?</td></tr>
|
||||
<tr><td>?대깽???몃━嫄?/td><td class="check">O</td><td class="check">?뱁썒+?ㅼ?以?/td><td class="check">Automations</td><td class="check">?댁뒋?뭁R</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?먯씠?꾪듃 硫붾え由?/td><td class="check">O</td><td class="check">O</td><td class="check">O</td><td class="check">O</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?먮룞 紐⑤뜽 ?좏깮</td><td class="check">O</td><td class="cross">X</td><td class="check">O</td><td class="check">O</td><td class="check">Auto</td><td>??/td></tr>
|
||||
<tr><td>硫?곕え??/td><td class="check">O</td><td class="check">Vision</td><td class="check">O</td><td class="check">O</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?ㅽ궗 ?쒖뒪??/td><td class="check">O</td><td class="check">Skills</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>AI 肄붾뱶 由щ럭</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="check">Review</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?뚮윭洹몄씤 留덉폆</td><td>zip+媛ㅻ윭由?/td><td class="check">留덉폆</td><td class="check">30+</td><td class="check">Extensions</td><td class="check">1500+</td><td class="p-mid">?몄빋 ?덉??ㅽ듃由?/td></tr>
|
||||
<tr><td>硫?고뙣??臾몄꽌</td><td class="check">O (plan?뭓ssemble)</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>?뚰겕?뚮줈??遺꾩꽍</td><td class="check">O (?ㅼ떆媛??쒓컖??</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>?먯깋湲????뺤옣</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>??諛?/td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>Windows ?ㅼ씠?곕툕</td><td class="check">O</td><td>?곕???/td><td>IDE</td><td>IDE</td><td>beta</td><td class="check">李⑤퀎??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??Phase 16 ??李④린 媛쒕컻 ?먥븧??-->
|
||||
<h2>Phase 16 ???먯씠?꾪듃 吏??媛뺥솕 + 媛쒕컻??寃쏀뿕 (v1.7.0) <span class="badge-plan">李④린 媛쒕컻</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th><th>李멸퀬</th></tr>
|
||||
<tr><td>16-1</td><td><strong>?뚮옖 紐⑤뱶 (Plan Mode)</strong></td><td class="p-high">理쒓퀬</td>
|
||||
<td>?먯씠?꾪듃媛 ?꾧뎄 ?ㅽ뻾 ??援ъ“?붾맂 怨꾪쉷 ?앹꽦 ???ъ슜??寃???몄쭛/?뱀씤 ???뱀씤 ???ㅽ뻾</td>
|
||||
<td>Claw Code Plan mode</td></tr>
|
||||
<tr><td>16-2</td><td><strong>?꾧뎄/而ㅻ꽖??愿由?UI</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>52媛??꾧뎄 移댄뀒怨좊━蹂?移대뱶, ?쒖꽦/鍮꾪솢???좉?, MCP ?쒕쾭 ?곌껐 ?곹깭</td>
|
||||
<td>Sigmoid 而ㅻ꽖??UI</td></tr>
|
||||
<tr><td>16-3</td><td><strong>?꾨줈?앺듃 洹쒖튃 ?쒖뒪??/strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>.ax/rules/*.md ???뚯씪 ?⑦꽩쨌?묒뾽 ?좏삎蹂?洹쒖튃 ?먮룞 二쇱엯</td>
|
||||
<td>Cursor .cursor/rules</td></tr>
|
||||
<tr><td>16-4</td><td><strong>諛섎났 ?뚯뒪???섏젙 猷⑦봽</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>TestLoopTool auto_fix 紐⑤뱶 ???뚯뒪?멤넂?ㅽ뙣 ?뚯떛?믪닔?뺚넂?ъ떎???먮룞 諛섎났</td>
|
||||
<td>GitHub Copilot</td></tr>
|
||||
<tr><td>16-5</td><td><strong>蹂묐젹 ?꾧뎄 ?ㅽ뻾</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>LLM ?ㅼ닔 ?꾧뎄 ?숈떆 ?몄텧 ???섏〈??遺꾩꽍 ??Task.WhenAll() 蹂묐젹 ?ㅽ뻾</td>
|
||||
<td>Claw Code parallel</td></tr>
|
||||
<tr><td>16-6</td><td><strong>SKILL.md ?쒖? ?꾩쟾 ?명솚</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>agentskills.io ?ㅽ럺 ?꾩껜 ?뚯떛, ?몃??붾궡遺 ?꾧뎄 ?대쫫 留ㅽ븨</td>
|
||||
<td>16媛? ?꾧뎄 梨꾪깮</td></tr>
|
||||
<tr><td>16-R</td><td><strong>?고???怨좉툒 ?ㅽ궗 ?뺤옣</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>4醫?異붽?: image-processor, diagram-generator, ocr-extract, data-visualize-adv</td>
|
||||
<td>Pillow, Tesseract</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??Phase 17 ?먥븧??-->
|
||||
<h2>Phase 17 ???ы솕 吏??+ UX ?곸떊 (v1.8.0) <span class="badge-plan">怨꾪쉷</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th><th>李멸퀬</th></tr>
|
||||
<tr><td>17-1</td><td><strong>?먭린 ?깆같 (Self-Reflection)</strong></td><td class="p-high">理쒓퀬</td>
|
||||
<td>?꾧뎄 ?ㅽ뙣 ??援ъ“?붾맂 ?깆같 ?꾨\?꾪듃, ?먮윭 ?⑦꽩 異붿쟻 (Reflexion ?⑦꽩)</td>
|
||||
<td>Reflexion ?쇰Ц</td></tr>
|
||||
<tr><td>17-2</td><td><strong>?묒뾽 湲곗뼲 (Working Memory)</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>????뺤텞 ?쒖뿉???좎??섎뒗 援ъ“?붾맂 ?쒖뒪???곹깭 (?꾩옱 ?묒뾽, 李몄“ ?뚯씪, ?섏궗寃곗젙 濡쒓렇)</td>
|
||||
<td>Windsurf memory</td></tr>
|
||||
<tr><td>17-3</td><td><strong>硫?고뙆???듯빀 Diff 酉?/strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>?먯씠?꾪듃 ?ㅼ닔 ?뚯씪 ?섏젙 ???섎굹???⑤꼸?먯꽌 ?뚯씪蹂??뚰겕蹂??뱀씤/嫄곕?</td>
|
||||
<td>Cursor multi-file diff</td></tr>
|
||||
<tr><td>17-4</td><td><strong>?먮룞 而⑦뀓?ㅽ듃 ?섏쭛</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>?ъ슜??硫붿떆吏?먯꽌 ?뚯씪紐?媛먯? ???먮룞 ?쎄린, Git diff, 肄붾뱶 寃??二쇱엯</td>
|
||||
<td>Windsurf auto context</td></tr>
|
||||
<tr><td>17-5</td><td><strong>MCP HTTP+SSE ?꾩넚</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>stdio ?꾩슜 ??HTTP+SSE ?몃옖?ㅽ룷??異붽?, ?먭꺽 MCP ?쒕쾭 ?곌껐</td>
|
||||
<td>MCP ?쒖?</td></tr>
|
||||
<tr><td>17-6</td><td><strong>????붿빟 ?⑤뵒留⑤뱶</strong></td><td class="p-low">??쓬</td>
|
||||
<td>/summarize-chat ?щ옒??紐낅졊?쇰줈 ?꾩옱 ???援ъ“???붿빟</td>
|
||||
<td>??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??Phase 18 ?먥븧??-->
|
||||
<h2>Phase 18 ???먯퐫?쒖뒪??+ 李⑤퀎??(v2.0) <span class="badge-plan">怨꾪쉷</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th><th>李멸퀬</th></tr>
|
||||
<tr><td>18-1</td><td><strong>?먯씠?꾪듃 ? (Multi-Agent)</strong></td><td class="p-high">理쒓퀬</td>
|
||||
<td>?뱁솕 ?먯씠?꾪듃(肄붾뱶由щ럭, 臾몄꽌?묒꽦, 蹂댁븞媛먯궗)媛 硫붿떆吏 踰꾩뒪濡??묒뾽</td>
|
||||
<td>Claw Code ?먯씠?꾪듃 ?</td></tr>
|
||||
<tr><td>18-2</td><td><strong>?뚮윭洹몄씤 媛ㅻ윭由?+ ?덉??ㅽ듃由?/strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>濡쒖뺄 NAS/Git ?덉??ㅽ듃由?湲곕컲 ?뚮윭洹몄씤/?ㅽ궗 ?몄빋 媛ㅻ윭由?/td>
|
||||
<td>Raycast Store</td></tr>
|
||||
<tr><td>18-3</td><td><strong>AI ?ㅻ땲??/strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>;email {?섏떊?? {二쇱젣} ??LLM???대찓??珥덉븞 ?먮룞 ?앹꽦</td>
|
||||
<td>Raycast AI Snippets</td></tr>
|
||||
<tr><td>18-4</td><td><strong>?뚮씪誘명꽣 ?듬쭅??/strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>jira {?곗폆踰덊샇} ??URL ?쒗뵆由?蹂??移섑솚 (?щ궡 ?꾧뎄 鍮좊Ⅸ ?묎렐)</td>
|
||||
<td>Raycast Quicklinks</td></tr>
|
||||
<tr><td>18-5</td><td><strong>?ㅽ봽?쇱씤 AI (ONNX Runtime)</strong></td><td class="p-low">??쓬</td>
|
||||
<td>?쒕쾭 ?놁씠 踰덉뿭/?붿빟/遺꾨쪟. 紐⑤뜽 蹂꾨룄 諛고룷 (?몄뒪?⑤윭 ?ш린 ?좎?)</td>
|
||||
<td>??/td></tr>
|
||||
<tr><td>18-6</td><td><strong>??寃??AI ?붿빟</strong></td><td class="p-low">??쓬</td>
|
||||
<td>? 寃??寃곌낵瑜?AI濡??붿빟?섏뿬 ?곗쿂???쒖떆</td>
|
||||
<td>??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧???κ린 怨꾪쉷 ?먥븧??-->
|
||||
<h2>?κ린 ??macOS ?щ줈?ㅽ뵆?ロ뤌 (v2.0+) <span class="badge-plan">?κ린</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th></tr>
|
||||
<tr><td>LP-1</td><td><strong>Avalonia UI 留덉씠洹몃젅?댁뀡</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>WPF ??Avalonia UI (.NET ?щ줈?ㅽ뵆?ロ뤌 XAML). Windows/macOS/Linux ?숈씪 肄붾뱶踰좎씠?? Skia ?뚮뜑留?/td></tr>
|
||||
<tr><td>LP-2</td><td><strong>?꾩씠肄??고듃 ?댁옣</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>Segoe MDL2 ??FluentUI System Icons (MIT). macOS?먯꽌???숈씪 ?꾩씠肄?/td></tr>
|
||||
<tr><td>LP-3</td><td><strong>P/Invoke ?뚮옯??遺꾧린</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>RuntimeInformation.IsOSPlatform 遺꾧린. macOS: AppKit, Keychain, CGEventTap, Spotlight</td></tr>
|
||||
<tr><td>LP-4</td><td><strong>?뚮윭洹몄씤 ?몄빋 媛ㅻ윭由?/strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>JSON manifest 湲곕컲 ?뚮윭洹몄씤 寃???ㅼ튂/?낅뜲?댄듃. ?щ궡 NAS ?먮뒗 Git 湲곕컲 ?덉??ㅽ듃由?/td></tr>
|
||||
</table>
|
||||
<p style="margin-top:12px;font-size:12px;color:#6b7280;">
|
||||
<strong>?꾪솚 ?곹뼢</strong>: 鍮꾩쫰?덉뒪 濡쒖쭅 (Services/Agent/Models) 100% ?ъ궗?? UI 怨꾩링 (Views) ??40% ?ъ옉?? 鍮뚮뱶: <code>dotnet publish -r osx-arm64</code>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??蹂대쪟 ?먥븧??-->
|
||||
<h2>蹂대쪟 <span class="badge-hold">?щ궡 ?섍꼍</span></h2>
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><td>?대씪?곕뱶 ?ㅼ젙 ?숆린??/td><td>?몃? ?대씪?곕뱶 ?묎렐 ?쒗븳</td></tr>
|
||||
<tr><td>而ㅼ뒪? ?뚮쭏 留덉폆</td><td>?몃? URL 湲곕컲 ?ㅼ슫濡쒕뱶 ?쒗븳</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧???꾨왂 ?먥븧??-->
|
||||
<h2>?듭떖 ?꾨왂</h2>
|
||||
<div class="card">
|
||||
<h3>1. Windows ?ㅼ씠?곕툕 AI ?뚮옯??/h3>
|
||||
<p>Raycast(macOS/beta), Cursor(IDE), Claw Code(?곕??? ?ъ씠 怨듬갚. ?щ궡 ?섍꼍 ?좎씪??Windows AI ?곗쿂+?먯씠?꾪듃.</p>
|
||||
|
||||
<h3>2. 吏?ν삎 ?먮룞??/h3>
|
||||
<p>?먮룞 紐⑤뜽 ?좏깮 + ?대깽???몃━嫄?+ ?먯씠?꾪듃 硫붾え由????ъ슜??媛쒖엯 理쒖냼?? ?뚮옖 紐⑤뱶(v1.7.0)? ?먭린 ?깆같(v1.8.0)濡??먯씠?꾪듃 ?뺥솗???μ긽. ?멸컙-?먯씠?꾪듃 ?묒뾽 UX??吏묒쨷.</p>
|
||||
|
||||
<h3>3. ?앺깭怨??뺤옣</h3>
|
||||
<p>?뚮윭洹몄씤+?ㅽ궗 ?쒖뒪?쒖쑝濡?而ㅻ??덊떚 湲곗뿬 援ъ“ 留덈젴. Phase 18?먯꽌 ?뚮윭洹몄씤 媛ㅻ윭由??덉??ㅽ듃由? AI ?ㅻ땲?? ?듬쭅?щ줈 ?곗쿂 ?앺깭怨??꾩꽦. ?щ궡 諛고룷??NAS/Git 湲곕컲.</p>
|
||||
|
||||
<h3>4. ?먯씠?꾪듃 ? (v2.0 ?듭떖)</h3>
|
||||
<p>?뱁솕 ?먯씠?꾪듃(肄붾뱶由щ럭, 臾몄꽌?묒꽦, 蹂댁븞媛먯궗)媛 硫붿떆吏 踰꾩뒪濡??묒뾽?섏뿬 蹂듯빀 ?묒뾽??遺꾩뾽 ?섑뻾. Claw Code ?먯씠?꾪듃 ?, CrewAI ??븷 湲곕컲 ? ?⑦꽩 李멸퀬.</p>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??湲곗닠 ?숉뼢 ?먥븧??-->
|
||||
<h2>2026???먯씠?꾪듃 肄붾뵫 湲곗닠 ?숉뼢</h2>
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>?숉뼢</th><th>?곸꽭</th></tr>
|
||||
<tr><td>?쒖옣 移⑦닾</td><td>媛쒕컻??85%媛 AI 肄붾뵫 ?꾧뎄 ?ъ슜</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 ?꾪솚</td><td>?먮룞?꾩꽦 ???먯쑉 ?먯씠?꾪듃(?대줎?믪닔?뺚넂PR?믫뀒?ㅽ듃)</td></tr>
|
||||
<tr><td>硫???먯씠?꾪듃</td><td>Claw Code ?먯씠?꾪듃 ?, Cursor 8媛??대씪?곕뱶 ?먯씠?꾪듃</td></tr>
|
||||
<tr><td>?대깽??湲곕컲</td><td>Slack/GitHub/PagerDuty/?뱁썒 ???먯씠?꾪듃 ?먮룞 ?ㅽ뻾</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 硫붾え由?/td><td>Windsurf 48?쒓컙 ?먮룞 遺꾩꽍, Cursor ?щ떇 硫붾え由?/td></tr>
|
||||
<tr><td>FeatureBench 媛?/td><td>蹂듭옟 湲곕뒫 11~12% vs 踰꾧렇 ?섏젙 80%+. ?멸컙 媛먮룆 ?꾩닔</td></tr>
|
||||
<tr><td>?뚮윭洹몄씤 ?앺깭怨?/td><td>紐⑤뱺 二쇱슂 ?꾧뎄媛 留덉폆?뚮젅?댁뒪 ?곗묶</td></tr>
|
||||
<tr><td>?먮룞 紐⑤뜽 ?좏깮</td><td>Raycast Auto, Copilot Auto ???묒뾽 ?좏삎蹂?理쒖쟻 紐⑤뜽 ?쇱슦??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
AX Copilot v1.6.1 ??李④린 媛쒕컻 怨꾪쉷 · 理쒖쥌 ?낅뜲?댄듃: 2026-03-30
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
60
docs/NEXT_ROADMAP.md
Normal file
60
docs/NEXT_ROADMAP.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# AX Copilot 통합 로드맵 (전면 재작성)
|
||||
|
||||
## 1. 보존 이력 (요약만 유지)
|
||||
- v1.5.x: 에이전트/런처 핵심 기능 확장, MCP/스킬/검증 체계 도입.
|
||||
- v1.6.0: 문서 생성 및 업무 자동화 도구군 확장.
|
||||
- v1.7.0~v1.7.2: Plan Mode, 병렬 도구, 검증 게이트 및 안정화 강화.
|
||||
|
||||
## 2. 재작성 목표
|
||||
- claw-code 수준의 실행 신뢰성, 세션 내구성, 결과 품질 확보.
|
||||
- AX Copilot 고유 제약(사내 운영모드, WPF UX, 로컬 우선)을 유지한 동등 품질 구현.
|
||||
|
||||
## 3. 마일스톤
|
||||
|
||||
| 마일스톤 | 참조 대상 (`claw-code`) | AX 적용 위치 | 완료 조건 | 품질 판정 시나리오 |
|
||||
|---|---|---|---|---|
|
||||
| M1 (v1.7.3) Hook 계약 정식화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts` | `src/AxCopilot/Services/Agent/AgentHookRunner.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Models/AppSettings.cs`, `src/AxCopilot/ViewModels/SettingsViewModel.cs`, `src/AxCopilot/Views/SettingsWindow.xaml` | Hook 출력 계약(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영. 설정값-실행코드-UI 동시 반영. | JSON 훅/텍스트 훅 혼합 환경에서 실행 품질과 하위호환 유지 확인. |
|
||||
| M2 (v1.7.4~v1.7.5) 세션/로그 내구성 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/TaskRunService.cs`, `src/AxCopilot/Services/TaskRunStore.cs`, `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Models/ChatModels.cs` | Plan/Run 상태 영속화. 이벤트 로그 표준화 및 replay 안정성 확보. | 앱 재시작/강제종료 후 동일 세션 재개 시 상태/이력 불일치 0건. |
|
||||
| M3 (v1.7.6) 도구 선택/복구 안정화 | `src/commands.ts`, `src/Tool.ts`, `src/query.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopParallelExecution.cs`, `src/AxCopilot/Services/LlmService.ToolUse.cs` | 도구 선택 실패 루프 억제. 실패 유형별 복구 흐름 정형화. | 오타/비활성/별칭 도구 요청이 반복 실패 없이 정상 경로로 수렴하는지 확인. |
|
||||
| M4 (v1.8.0) 품질 게이트 최종 정렬 | `src/query.ts`, `src/QueryEngine.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs` | 증거 기반 완료 판정 고정. 내부 벤치마크에서 claw-code 동급 품질 달성. | 코드수정/문서생성/권한거부/복구 혼합 시나리오에서 조기완료 없이 근거 기반 종료 확인. |
|
||||
|
||||
## 4. 측정 지표
|
||||
- 반복 실패 루프 발생률.
|
||||
- 세션 재개 성공률.
|
||||
- 완료 응답 근거 누락률.
|
||||
- 빌드/테스트 통과율.
|
||||
|
||||
## 5. 운영 원칙
|
||||
- `internal` 모드: 외부 유출 경로 차단 우선.
|
||||
- 신규 기능은 반드시 설정값 연결 + 실제 동작 반영.
|
||||
- 문서 마스터는 `.md`, HTML은 요청 시만 갱신.
|
||||
|
||||
## 6. 즉시 실행 백로그
|
||||
1. Hook 계약 확장 마무리 및 회귀 테스트.
|
||||
2. 세션 복원 경계조건 테스트 세트 추가.
|
||||
3. 이벤트 로그 스키마 고정 및 분석 리포트 템플릿 정리.
|
||||
|
||||
## 7. 2026-04-03 실행 증적 동기화 (M4 포함)
|
||||
- 기준 시점: 2026-04-03.
|
||||
- 테스트: `dotnet test` 355/355 통과.
|
||||
- M1 증적: Hook 계약 필드(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영 경로 구현 완료.
|
||||
- M2 증적: run 복원/이력 재구성(`RestoreRecentFromExecutionEvents`, `RestoreCurrentAgentRun`, plan 이력 조회) 구현 및 테스트 존재.
|
||||
- M3 증적: unknown-tool 복구 루프/결정 이벤트 처리 경로 구현 및 테스트 존재.
|
||||
- M4 증적: 실행 종료 품질 게이트(`CodeQualityGate`, `ExecutionSuccessGate`, `TerminalEvidenceGate`) 반영 및 관련 테스트 존재.
|
||||
- 스킬/도구 운영 정렬: 40개 스킬 모두 `allowed-tools` 명시 완료, Python 의존 10개는 fallback 분기 적용, 레거시 도구명(`process_run`, `grep_tool`) 참조 제거.
|
||||
|
||||
## 8. 남은 마감 항목 (M4 종료 조건)
|
||||
1. 세션 replay 불일치 0건을 재현 시나리오별 수치로 기록.
|
||||
2. 위 결과를 배포 전 체크리스트로 고정하고 매 릴리즈마다 수치 동기화.
|
||||
|
||||
## 9. 벤치마크 고정 기준 (CLAW 패리티 동기화)
|
||||
- 기준 문서: `docs/CLAW_CODE_PARITY_PLAN.md` 12절.
|
||||
- 고정 시나리오: 기본 loop / unknown-tool 복구 / plan 연결 / 권한 거부 / hook 입력 변형 / allowed-tools 강제 / hook filter.
|
||||
- 합격 게이트: 빌드 경고·오류 0 + 전체 테스트 통과 + 고정 시나리오 회귀 통과.
|
||||
|
||||
## 10. Replay 안정성 검증 연동
|
||||
- 기준 문서: `docs/CLAW_CODE_PARITY_PLAN.md` 13절.
|
||||
- 테스트 태그: `Suite=ReplayStability`.
|
||||
- 운영 기준: 릴리즈 전 `ReplayStability` 시나리오 전건 통과 시 replay 불일치 0건으로 판정.
|
||||
- 최신 실행 증적(2026-04-03): `ParityBenchmark 7/7`, `ReplayStability 8/8`, 전체 `355/355`.
|
||||
- 실행 자동화: `scripts/release-gate.ps1`로 빌드/벤치마크/리플레이/전체 테스트를 일괄 점검.
|
||||
54
docs/PROMPT_CARD_GUIDE.md
Normal file
54
docs/PROMPT_CARD_GUIDE.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# 프롬프트 카드 설정 가이드 (개발자 전용)
|
||||
|
||||
## 개요
|
||||
새 대화 화면의 프롬프트 카드는 **개발자가 미리 설정한 시스템 프롬프트**를 통해
|
||||
AI의 역할과 응답 스타일을 정의합니다. 사용자는 카드를 클릭하면 해당 모드가 자동 적용되고,
|
||||
입력란에 안내 문구가 표시되어 내용을 입력한 후 전송합니다.
|
||||
|
||||
## 수정 방법
|
||||
|
||||
### 파일 위치
|
||||
```
|
||||
src/AxCopilot/Views/ChatWindow.xaml
|
||||
```
|
||||
|
||||
### Tag 형식
|
||||
```
|
||||
Tag="시스템 프롬프트 내용||입력란 안내 문구"
|
||||
```
|
||||
|
||||
- `||` 구분자 앞: AI에게 전달되는 시스템 프롬프트 (사용자에게 노출되지 않음)
|
||||
- `||` 구분자 뒤: 사용자 입력란에 표시될 placeholder 안내 문구
|
||||
|
||||
### 예시
|
||||
```xml
|
||||
<Border Background="{DynamicResource ItemBackground}" CornerRadius="12"
|
||||
Padding="14,12" Margin="4" Cursor="Hand"
|
||||
MouseLeftButtonDown="PromptCard_Click"
|
||||
Tag="당신은 시니어 소프트웨어 엔지니어입니다. 주어진 코드를 리뷰하고...||리뷰할 코드를 붙여넣으세요...">
|
||||
<StackPanel>
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="16"
|
||||
Foreground="{DynamicResource AccentColor}" Margin="0,0,0,8"/>
|
||||
<TextBlock Text="코드 리뷰" FontSize="12" FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"/>
|
||||
<TextBlock Text="코드를 분석하고 개선점을 제안" FontSize="10.5"
|
||||
Foreground="{DynamicResource SecondaryText}" TextWrapping="Wrap"
|
||||
Margin="0,3,0,0"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
```
|
||||
|
||||
### 카드 추가
|
||||
`<UniformGrid x:Name="PromptCards" Columns="3">` 안에 위 형식의 `<Border>` 블록을 추가합니다.
|
||||
카드 수가 3개를 초과하면 `Columns` 값을 조정하세요.
|
||||
|
||||
### 아이콘
|
||||
Segoe MDL2 Assets 폰트 코드를 사용합니다.
|
||||
- 참고: https://learn.microsoft.com/en-us/windows/apps/design/style/segoe-ui-symbol-font
|
||||
|
||||
## 동작 흐름
|
||||
1. 사용자가 카드 클릭
|
||||
2. 새 대화 생성 → `SystemCommand`에 시스템 프롬프트 자동 삽입
|
||||
3. 입력란에 placeholder 안내 문구 표시 (선택 상태)
|
||||
4. 사용자가 내용 입력 후 전송
|
||||
5. AI가 시스템 프롬프트 역할에 맞게 응답
|
||||
290
docs/SEMINAR.md
Normal file
290
docs/SEMINAR.md
Normal file
@@ -0,0 +1,290 @@
|
||||
# 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, Sigmoid.ai)??二쇰쪟?吏留?
|
||||
2026???꾩옱 **二쇱슂 AI 肄붾뵫 ?쒕퉬?ㅺ? 紐⑤몢 ?곗뒪?ы깙 ???곕????ㅼ씠?곕툕**濡??꾪솚?덉뒿?덈떎:
|
||||
|
||||
| ?쒕퉬??| ?뺥깭 | 濡쒖뺄 ?뚯씪 ?묎렐 |
|
||||
|--------|------|:------------:|
|
||||
| **Claw 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쨌Sigmoid (?몃? ?듭뀡) |
|
||||
| ?꾨줈?좎퐳 | 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 / Sigmoid)
|
||||
|
||||
?대갚 泥섎━: 紐⑤뜽 ?ㅻ쪟 ??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??2媛??꾧뎄, 29媛??댁옣 ?ㅽ궗 |
|
||||
| 16 | v1.7.0 | ?뚮옖 紐⑤뱶, 蹂묐젹 ?꾧뎄 ?ㅽ뻾, ?꾨줈?앺듃 洹쒖튃 ?쒖뒪??|
|
||||
|
||||
### ?꾩옱 洹쒕え (v1.6.1)
|
||||
|
||||
```
|
||||
?먯씠?꾪듃 ?꾧뎄: 52媛??댁옣 ?ㅽ궗: 29媛?肄붿썙???꾨━?? 20媛?吏??LLM: 4醫?(Ollama 쨌 vLLM 쨌 Gemini 쨌 Sigmoid)
|
||||
?곗쿂 ?몃뱾?? 44媛?吏???뚮쭏: 10醫?```
|
||||
|
||||
---
|
||||
|
||||
## 9. 李④린 媛쒕컻 諛⑺뼢 (v1.8~2.0)
|
||||
|
||||
### 寃쎌웳 ?쒕퉬???鍮?濡쒕뱶留?
|
||||
| 湲곕뒫 | 寃쎌웳 ?쒕퉬??| AX Copilot 怨꾪쉷 |
|
||||
|------|-------------|-----------------|
|
||||
| ?먭린 ?깆같 猷⑦봽 | Claw Code Reflexion | **v1.8** ?먭린 ?깆같 ?쒕퉬??|
|
||||
| ?곸냽 ?묒뾽 湲곗뼲 | Windsurf Memory | **v1.8** Working Memory |
|
||||
| 硫?고뙆??Diff | Cursor diff view | **v1.8** ?듯빀 Diff UI |
|
||||
| HTTP+SSE MCP | Claw 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? | 臾몄쓽: ?대? 硫붿떊?*
|
||||
|
||||
249
docs/SEMINAR_AGENT_LOOP.md
Normal file
249
docs/SEMINAR_AGENT_LOOP.md
Normal file
@@ -0,0 +1,249 @@
|
||||
# ?먯씠?꾪듃 猷⑦봽 ?꾪궎?띿쿂 ???뚰겕?뚮줈??鍮꾧탳 遺꾩꽍
|
||||
|
||||
> **???*: 湲곗닠 ?꾩썝 쨌 媛쒕컻 由щ뜑
|
||||
> **珥덉젏**: ?먯씠?꾪듃 肄붾뵫 ?쒕퉬?ㅼ쓽 ?듭떖 ?뚰겕?뚮줈??援ъ“? ?덉쭏 蹂댁쬆 ?꾨왂
|
||||
> **?묒꽦??*: 2026-03-31
|
||||
|
||||
---
|
||||
|
||||
## 1. ?먯씠?꾪듃 猷⑦봽??
|
||||
|
||||
AI 肄붾뵫/臾몄꽌 ?앹꽦 ?쒕퉬?ㅼ쓽 ?듭떖 ?붿쭊? **?먯씠?꾪듃 猷⑦봽**?낅땲??
|
||||
|
||||
```
|
||||
?ъ슜???붿껌 ??[LLM ?먮떒] ??[?꾧뎄 ?ㅽ뻾] ??[寃곌낵 愿李? ??[LLM ?ы뙋?? ??... ??理쒖쥌 ?묐떟
|
||||
```
|
||||
|
||||
??諛섎났(iteration)??**?쇰쭏??吏?μ쟻?쇰줈, ?쇰쭏???덉쭏 ?덇쾶 ?섑뻾?섎뒓??*媛 ?쒕퉬??寃쎌웳?μ쓣 寃곗젙?⑸땲??
|
||||
|
||||
---
|
||||
|
||||
## 2. ?낃퀎 二쇱슂 ?쒕퉬???뚰겕?뚮줈??鍮꾧탳
|
||||
|
||||
### 2-1. OpenHands (?ㅽ뵂?뚯뒪, ICLR 2025)
|
||||
|
||||
OpenHands??CodeAct ?쇰Ц 湲곕컲???먯씠?꾪듃 ?꾨젅?꾩썙?ъ엯?덈떎.
|
||||
|
||||
```
|
||||
?뚢????????????????????????????????????????????????????? AgentController ???? ???? while budget > 0: ???? action = agent.step(state) ??1 LLM ?몄텧 ???? observation = runtime.run(action) ???꾧뎄 ?ㅽ뻾???? state.update(action, observation) ???? if action == AgentFinishAction: ???? break ??LLM??"???대씪 ?먮떒?섎㈃ 醫낅즺 ???? ???? ??寃利?寃???④퀎: ?놁쓬 ???? ??怨꾪쉷 ?앹꽦: ?놁쓬 (LLM ?먯쑉 ?먮떒) ???붴???????????????????????????????????????????????????```
|
||||
|
||||
**?듭떖 ?뱀쭠**:
|
||||
- **1 諛섎났 = 1 LLM ?몄텧 + 1 ?꾧뎄 ?ㅽ뻾** (怨좎젙)
|
||||
- 怨꾪쉷(Plan) ?놁쓬 ??LLM??chain-of-thought???섏〈
|
||||
- 寃利?Review) ?놁쓬 ??LLM???뚯븘???ㅼ쓬 諛섎났?먯꽌 ?뺤씤?좎? 寃곗젙
|
||||
- 醫낅즺??`AgentFinishAction` 諛섑솚?쇰줈 寃곗젙 (LLM ?먯쑉)
|
||||
- **SecurityAnalyzer**: ?ㅽ뻾 ???꾪뿕???됯? (LOW/MEDIUM/HIGH) ???덉쭏 寃利앹씠 ?꾨땶 **?덉쟾 寃뚯씠??*
|
||||
|
||||
**?μ젏**: ?⑥닚, 鍮좊쫫, 紐⑤뜽 臾닿?
|
||||
**?쎌젏**: 臾몄꽌 ?앹꽦 ??寃??蹂댁옣 ?놁쓬, LLM??"異⑸텇?섎떎"怨??먮떒?섎㈃ 誘몄셿???곹깭濡?醫낅즺
|
||||
|
||||
### 2-2. Claw Code (Sigmoid)
|
||||
|
||||
```
|
||||
?뚢????????????????????????????????????????????????????? Claw Code Agent Loop ???? ???? while true: ???? response = llm.call(messages) ??1 LLM ?몄텧 ???? if no tool_calls: ???? break ???띿뒪?몃쭔 諛섑솚?섎㈃ 醫낅즺 ???? for tool in tool_calls: ???? result = execute(tool) ???? messages.append(result) ???? ???? ??寃利??④퀎: ?놁쓬 (?쒖뒪???꾨\?꾪듃 沅뚭퀬留? ???? ??怨꾪쉷: SKILL.md ?꾨\?꾪듃濡??좊룄 ???붴???????????????????????????????????????????????????```
|
||||
|
||||
**?듭떖 ?뱀쭠**:
|
||||
- OpenHands? ?숈씪??援ъ“ (1 諛섎났 = 1 LLM ?몄텧)
|
||||
- 醫낅즺: ?꾧뎄 ?몄텧???놁쑝硫?醫낅즺 (OpenHands??AgentFinishAction怨??좎궗)
|
||||
- 寃利? ?쒖뒪???꾨\?꾪듃??"?뺤씤?섎씪"怨??묒꽦 媛?ν븯?? **LLM??臾댁떆?????덉쓬**
|
||||
- 李⑤퀎?? SKILL.md ?쒖??쇰줈 ?꾨찓?몃퀎 ?꾨\?꾪듃 而ㅼ뒪?곕쭏?댁쭠
|
||||
|
||||
### 2-3. Cursor / Windsurf / GitHub Copilot
|
||||
|
||||
紐⑤몢 ?숈씪??**?⑥씪 LLM ?몄텧 猷⑦봽** ?⑦꽩:
|
||||
- Cursor: Tab ??Apply 湲곕컲, ?먯씠?꾪듃 紐⑤뱶?먯꽌??1?몄텧/諛섎났
|
||||
- Windsurf (Cascade): Flow 湲곕컲?댁?留?猷⑦봽 援ъ“???숈씪
|
||||
- GitHub Copilot: 肄붾뱶 ?꾩꽦 ?뱁솕, ?먯씠?꾪듃 紐⑤뱶??Claw Code? ?좎궗
|
||||
|
||||
**怨듯넻 ?쎌젏**: **臾몄꽌/肄붾뱶 ?앹꽦 ??"?쎌뼱???뺤씤"?섎뒗 ?꾪궎?띿쿂媛 ?놁쓬**
|
||||
|
||||
---
|
||||
|
||||
## 3. ??寃利??④퀎媛 ?놁쓣源?
|
||||
|
||||
### 3-1. AgentFinishAction 臾몄젣
|
||||
|
||||
OpenHands??LLM??`AgentFinishAction`??諛섑솚?섎㈃ 猷⑦봽媛 醫낅즺?⑸땲??
|
||||
|
||||
```python
|
||||
# OpenHands??醫낅즺 ?먮떒
|
||||
if isinstance(action, AgentFinishAction):
|
||||
return # LLM??"???대씪怨??섎㈃ ??```
|
||||
|
||||
**臾몄젣**: LLM??"?뚯씪???앹꽦?덉쑝?????대씪怨??먮떒?섎㈃, **?댁슜??遺덉셿?꾪빐??醫낅즺**?⑸땲??
|
||||
|
||||
?곕━????AgentFinishAction???ъ슜?섏? ?딅뒗媛?
|
||||
|
||||
| ??ぉ | AgentFinishAction (OpenHands) | ?꾧뎄 ?몄텧 ?놁쓬 醫낅즺 (AX Copilot) |
|
||||
|------|------------------------------|--------------------------------|
|
||||
| 醫낅즺 ?먮떒 | LLM??紐낆떆?곸쑝濡?"finish" ?≪뀡 諛섑솚 | LLM???띿뒪?몃쭔 諛섑솚 (?꾧뎄 誘명샇異? |
|
||||
| ?μ젏 | 紐낆떆?? 醫낅즺 ?댁쑀 ?ы븿 媛??| 蹂꾨룄 ?≪뀡 ?뺤쓽 遺덊븘?? ?먯뿰?ㅻ윭??????먮쫫 |
|
||||
| ?⑥젏 | finish ?몄텧???딄굅???섎せ ?몄텧 媛??| LLM???꾧뎄瑜?遺瑜댁? ?딆쑝硫??섎룄移??딄쾶 醫낅즺 |
|
||||
| 寃利???대컢 | finish ?꾩뿉 寃利??쎌엯 媛??(誘멸뎄?? | ?꾧뎄 ?ㅽ뻾 ??利됱떆 寃利??쎌엯 (援ы쁽 ?꾨즺) |
|
||||
|
||||
**?듭떖**: ????"LLM???뚯븘???앸궡????援ъ“?대?濡? **寃利앹쓣 LLM?먭쾶 留↔린硫??앸왂???섎컰???놁뒿?덈떎.**
|
||||
|
||||
### 3-2. ?쒖뒪???꾨\?꾪듃留뚯쑝濡쒕뒗 遺議?
|
||||
```
|
||||
?쒖뒪???꾨\?꾪듃: "臾몄꽌 ?묒꽦 ??諛섎뱶??file_read濡?寃곌낵臾쇱쓣 寃?좏븯?몄슂"
|
||||
```
|
||||
|
||||
??吏?쒕? LLM???곕? ?뺣쪧:
|
||||
- GPT-4/Sigmoid: **~60-70%** (蹂듭옟???묒뾽?먯꽌 臾댁떆 寃쏀뼢)
|
||||
- Gemini Flash: **~40-50%** (臾대즺 紐⑤뜽?먯꽌 ???먯< ?앸왂)
|
||||
- 濡쒖뺄 紐⑤뜽 (Ollama): **~30%** (而⑦뀓?ㅽ듃 湲몄뼱吏硫?珥덇린 吏???ъ꽍)
|
||||
|
||||
??**?꾪궎?띿쿂 ?섏??먯꽌 媛뺤젣?댁빞 ?좊ː???뺣낫 媛??*
|
||||
|
||||
---
|
||||
|
||||
## 4. 寃利?媛뺤젣 ?꾪궎?띿쿂 (AX Copilot 援ы쁽)
|
||||
|
||||
### 4-1. 湲곗〈 援ъ“ (v1.7.0)
|
||||
|
||||
```
|
||||
諛섎났 1: LLM ?몄텧 ??"file_read濡??꾩옱 ?뚯씪 ?뺤씤?섍쿋?듬땲??
|
||||
?꾧뎄 ?ㅽ뻾: file_read ???뚯씪 ?댁슜 諛섑솚
|
||||
|
||||
諛섎났 2: LLM ?몄텧 ??"html_create濡?蹂닿퀬?쒕? ?앹꽦?섍쿋?듬땲??
|
||||
?꾧뎄 ?ㅽ뻾: html_create ??"蹂닿퀬??html ?앹꽦 ?꾨즺"
|
||||
|
||||
諛섎났 3: LLM ?몄텧 ??"蹂닿퀬?쒓? ?꾩꽦?섏뿀?듬땲??" (?띿뒪?몃쭔 = 猷⑦봽 醫낅즺)
|
||||
???앹꽦???뚯씪???쎌뼱???뺤씤?섏? ?딆쓬!
|
||||
```
|
||||
|
||||
### 4-2. 媛쒖꽑 援ъ“ (v1.7.1 ??寃利?媛뺤젣)
|
||||
|
||||
```
|
||||
諛섎났 1: LLM ?몄텧 ??"file_read濡??꾩옱 ?뚯씪 ?뺤씤?섍쿋?듬땲??
|
||||
?꾧뎄 ?ㅽ뻾: file_read ???뚯씪 ?댁슜 諛섑솚
|
||||
|
||||
諛섎났 2: LLM ?몄텧 ??"html_create濡?蹂닿퀬?쒕? ?앹꽦?섍쿋?듬땲??
|
||||
?꾧뎄 ?ㅽ뻾: html_create ??"蹂닿퀬??html ?앹꽦 ?꾨즺"
|
||||
?뚢???????????????????????????????????????????????? ????寃利?媛뺤젣 (?먮룞 ?쎌엯) ?? ?? ?? ???쒖뒪?? "?앹꽦???뚯씪??file_read濡??쎄퀬 ?? ?? ?댁슜 ?꾩쟾?? 援ъ“, 留욎땄踰뺤쓣 ?뺤씤?섏꽭?? ?? ?? ?? ??LLM ?몄텧 (寃利??꾩슜) ?? ????file_read ?ㅽ뻾 ???댁슜 ?뺤씤 ?? ????臾몄젣 ?덉쑝硫??섏젙 ?꾧뎄 ?몄텧 ?? ????臾몄젣 ?놁쑝硫?"寃利??꾨즺" 蹂닿퀬 ?? ?붴????????????????????????????????????????????????
|
||||
諛섎났 3: LLM ?몄텧 ??"蹂닿퀬?쒓? ?꾩꽦?섏뿀?듬땲??" (寃利??듦낵 ??醫낅즺)
|
||||
```
|
||||
|
||||
### 4-3. 肄붾뱶 ?먮쫫 (?섏궗肄붾뱶)
|
||||
|
||||
```csharp
|
||||
while (iteration < maxIterations)
|
||||
{
|
||||
var blocks = await llm.SendWithToolsAsync(messages, tools);
|
||||
|
||||
foreach (var call in toolCalls)
|
||||
{
|
||||
var result = await tool.ExecuteAsync(call);
|
||||
messages.Add(CreateToolResult(result));
|
||||
|
||||
// ??寃利?媛뺤젣: 臾몄꽌 ?앹꽦 ?꾧뎄 ?ㅽ뻾 ???먮룞 ?쎌엯
|
||||
if (settings.EnablePostToolVerification
|
||||
&& IsDocumentCreationTool(call.ToolName)
|
||||
&& result.Success)
|
||||
{
|
||||
// 寃利??꾩슜 LLM ?몄텧 (file_read ?좊룄)
|
||||
await RunPostToolVerificationAsync(messages, call, result);
|
||||
iteration++; // 寃利앸룄 諛섎났 ?잛닔???ы븿
|
||||
}
|
||||
}
|
||||
|
||||
if (no tool calls) break; // ?띿뒪?몃쭔 = 醫낅즺
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 遺議깊븳 遺遺꾧낵 ?ν썑 媛쒕컻 諛⑺뼢
|
||||
|
||||
### 5-1. ?꾩옱 遺議깊븳 ?곸뿭
|
||||
|
||||
| ?곸뿭 | ?꾩옱 ?곹깭 | OpenHands 鍮꾧탳 | 媛쒖꽑 ?꾩슂??|
|
||||
|------|----------|---------------|-----------|
|
||||
| **Multi-Agent ?꾩엫** | ??誘멸뎄??| ??AgentDelegateAction | ?믪쓬 ??蹂듭옟???묒뾽???섏쐞 ?먯씠?꾪듃??遺꾪븷 |
|
||||
| **Event-Sourced State** | 遺遺?援ы쁽 (Events 而щ젆?? | ??遺덈? ?대깽???ㅽ듃由?| 以묎컙 ???ъ떎???붾쾭源낆뿉 ?좎슜 |
|
||||
| **SecurityAnalyzer** | Ask 紐⑤뱶 沅뚰븳 ?뺤씤 | ???꾪뿕???먮룞 遺꾨쪟 | ??쓬 ???щ궡 ?섍꼍?먯꽌 ?곗꽑?쒖쐞 ??쓬 |
|
||||
| **CodeAct ?듯빀 ?≪뀡** | ?꾧뎄蹂?遺꾨━ | ??bash+Python ?듯빀 | ??쓬 ???꾩옱 ?꾧뎄 泥닿퀎濡?異⑸텇 |
|
||||
| **寃利?源딆씠** | ?⑥씪 寃利??몄텧 | ?대떦 ?놁쓬 | 以묎컙 ??蹂듭닔 湲곗?蹂?寃利?媛??|
|
||||
| **寃利?????뺣?** | 臾몄꽌 ?앹꽦 ?꾧뎄留?| ?대떦 ?놁쓬 | 以묎컙 ??肄붾뱶 ?앹꽦 ?꾩뿉??寃利??꾩슂 |
|
||||
|
||||
### 5-2. ?ν썑 媛쒕컻 怨꾪쉷
|
||||
|
||||
#### Phase A: 寃利?怨좊룄??(?④린)
|
||||
|
||||
| 湲곕뒫 | ?ㅻ챸 | ?덉긽 怨듭닔 |
|
||||
|------|------|----------|
|
||||
| 寃利?湲곗? 而ㅼ뒪?곕쭏?댁쭠 | ?ㅼ젙?먯꽌 寃利?泥댄겕由ъ뒪?몃? ?ъ슜?먭? ?몄쭛 | ??쓬 |
|
||||
| 肄붾뱶 寃利??뺣? | `script_create`, `file_edit` ?꾩뿉??寃利?(援щЦ ?ㅻ쪟 寃?? | ??쓬 |
|
||||
| 寃利?寃곌낵 UI ?쒖떆 | ?뚰겕?뚮줈????꾨씪?몄뿉 "??寃利??듦낵" / "???섏젙 諛쒖깮" 諛곗? | ??쓬 |
|
||||
| 寃利??듦퀎 | 寃利앹뿉??臾몄젣 諛쒓껄/?섏젙??鍮꾩쑉 異붿쟻 | ??쓬 |
|
||||
|
||||
#### Phase B: 硫?곗뿉?댁쟾???꾩엫 (以묎린)
|
||||
|
||||
OpenHands??`AgentDelegateAction` ?⑦꽩??李멸퀬?섎릺, ?щ궡 ?섍꼍??留욊쾶:
|
||||
|
||||
```
|
||||
[硫붿씤 ?먯씠?꾪듃]
|
||||
?쒋?? [由ъ꽌移??먯씠?꾪듃] ??file_read, grep, folder_map ?꾨떞
|
||||
?쒋?? [臾몄꽌 ?먯씠?꾪듃] ??html_create, docx_create ?꾨떞
|
||||
?붴?? [寃利??먯씠?꾪듃] ??file_read + ?덉쭏 ?됯? ?꾨떞 ??寃利?遺꾨━!
|
||||
```
|
||||
|
||||
| 湲곕뒫 | ?ㅻ챸 | ?덉긽 怨듭닔 |
|
||||
|------|------|----------|
|
||||
| AgentDelegateAction | ?섏쐞 ?먯씠?꾪듃 ?꾩엫 ?≪뀡 ?뺤쓽 | 以묎컙 |
|
||||
| ?먯씠?꾪듃蹂??꾧뎄 ?쒗븳 | 由ъ꽌移??쎄린留? 臾몄꽌=?곌린留???| ??쓬 |
|
||||
| 寃利??먯씠?꾪듃 遺꾨━ | ?앹꽦怨?寃利앹쓣 ?ㅻⅨ ?먯씠?꾪듃濡?| 以묎컙 |
|
||||
|
||||
#### Phase C: Reflexion ?⑦꽩 (?κ린)
|
||||
|
||||
Reflexion ?쇰Ц(Shinn et al., 2023)???먭린 諛섏꽦 ?⑦꽩 媛뺥솕:
|
||||
|
||||
```
|
||||
?ㅽ뻾 ??寃곌낵 ???먭린 ?됯? ??諛섏꽦 硫붾え由???????ㅼ쓬 ?쒕룄??諛섏쁺
|
||||
```
|
||||
|
||||
?꾩옱 Self-Reflection? **?ㅻ쪟 諛쒖깮 ?쒖뿉留?* ?숈옉. ?대? **?깃났 ?쒖뿉??* ?곸슜:
|
||||
- "??臾몄꽌???ъ슜???붽뎄瑜?80% 異⑹”. 誘명씉 ?? ?쒓? ?꾨씫??
|
||||
- 諛섏꽦 寃곌낵瑜?AgentMemory???????媛숈? ?좏삎 ?묒뾽 ??李멸퀬
|
||||
|
||||
---
|
||||
|
||||
## 6. ?뺣━
|
||||
|
||||
### ?듭떖 硫붿떆吏
|
||||
|
||||
```
|
||||
?뚢????????????????????????????????????????????????????????? ???? ?낃퀎 紐⑤뱺 ?먯씠?꾪듃 猷⑦봽??"1諛섎났 = 1 LLM ?몄텧" ???? 寃利?Review)??媛뺤젣?섎뒗 ?꾪궎?띿쿂???대뵒?먮룄 ?놁뿀?? ???? ???? AX Copilot? "寃利?媛뺤젣"瑜??꾪궎?띿쿂 ?섏??먯꽌 援ы쁽 ???? ??臾몄꽌 ?덉쭏 蹂댁쬆??李⑤퀎???ъ씤?? ???? ???붴???????????????????????????????????????????????????????```
|
||||
|
||||
### 鍮꾧탳 ?붿빟
|
||||
|
||||
| ??ぉ | OpenHands | Claw Code | AX Copilot |
|
||||
|------|-----------|-------------|------------|
|
||||
| 諛섎났??LLM ?몄텧 | 1??| 1??| 1??+ 寃利?1??|
|
||||
| 怨꾪쉷 ?앹꽦 | ??| ??| ??PlanMode |
|
||||
| 寃利?媛뺤젣 | ??| ??| ??PostToolVerification |
|
||||
| ?먭린 諛섏꽦 | ??| ??| ??Self-Reflection |
|
||||
| 而⑦뀓?ㅽ듃 ?뺤텞 | ??| ??| ??ContextCondenser |
|
||||
| ?ъ슜???뱀씤 | SecurityAnalyzer | 沅뚰븳 ?꾨\?꾪듃 | UserDecisionCallback |
|
||||
| 吏꾪뻾瑜?異붿쟻 | ??| ??| ??TaskDecomposer |
|
||||
| ?쇰뱶諛??숈뒿 | ??| ??| ??FeedbackContext |
|
||||
|
||||
### ?뚰겕?뚮줈???꾩껜 鍮꾧탳??
|
||||
```
|
||||
OpenHands:
|
||||
?붿껌 ??[LLM] ??[?꾧뎄] ??[LLM] ??[?꾧뎄] ??[LLM: "??] ???묐떟
|
||||
??寃利??놁쓬
|
||||
|
||||
Claw Code:
|
||||
?붿껌 ??[LLM] ??[?꾧뎄] ??[LLM] ??[?꾧뎄] ??[LLM: ?띿뒪?몃쭔] ???묐떟
|
||||
??寃利??놁쓬
|
||||
|
||||
AX Copilot (v1.7.1):
|
||||
?붿껌 ??[怨꾪쉷 LLM] ???뱀씤 ??[LLM] ??[?꾧뎄] ??[?낃?利?LLM?? ??[LLM] ???묐떟
|
||||
??PlanMode ???ㅽ뻾 ???앹꽦 ??媛뺤젣 ?뺤씤 ???꾨즺
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*?묒꽦: AX Copilot 媛쒕컻? 쨌 2026-03-31*
|
||||
|
||||
463
docs/SEMINAR_TREND.md
Normal file
463
docs/SEMINAR_TREND.md
Normal file
@@ -0,0 +1,463 @@
|
||||
# AI ?먯씠?꾪듃 湲곗닠 ?숉뼢 ?몃???### 2026??3??| ?쒖옣 議곗궗 쨌 ?쇰Ц 遺꾩꽍 쨌 ?듭떖 湲곗닠 ?댁꽕
|
||||
|
||||
> **諛쒗몴 ???*: 湲곗닠?꾩썝
|
||||
> **諛쒗몴??*: AX?곌뎄??AI?
|
||||
|
||||
---
|
||||
|
||||
## 1. ?쒖옣 ?몃젋????AI 肄붾뵫 ?꾧뎄???꾩옱
|
||||
|
||||
### ?곗뾽 ?꾪솚: "??梨꾪똿" ??"?곗뒪?ы깙 ?먯씠?꾪듃"
|
||||
|
||||
2024?꾧퉴吏 AI??釉뚮씪?곗? ?덉쓽 梨꾪똿(ChatGPT, Sigmoid.ai)??二쇰쪟??듬땲??
|
||||
2026???꾩옱, **紐⑤뱺 二쇱슂 ?쒕퉬?ㅺ? ?곗뒪?ы깙/?곕????ㅼ씠?곕툕濡??꾪솚**?덉뒿?덈떎.
|
||||
|
||||
```
|
||||
2024 2025 2026
|
||||
??????????????????????????????????????????????????????????????????
|
||||
??梨꾪똿 ?쒕? ?꾪솚湲? ?곗뒪?ы깙 ?먯씠?꾪듃 ?쒕?
|
||||
????????????? ?????? ????????????????
|
||||
肄붾뱶瑜?蹂듭궗?댁꽌 遺숈뿬?j린 Claw Code 異쒖떆 AI媛 濡쒖뺄 ?뚯씪?? 寃곌낵瑜??섎룞?쇰줈 ?곸슜 Cursor ?먯씠?꾪듃 紐⑤뱶 吏곸젒 ?쎄퀬, ?곌퀬, ?ㅽ뻾
|
||||
?뚯씪???낅줈???ㅼ슫濡쒕뱶 Windsurf Cascade 鍮뚮뱶쨌?뚯뒪?맞텴it ?먮룞?? ?ㅽ뻾 ?섍꼍怨??꾩쟾 遺꾨━ GitHub Copilot Agent ?댁뒋?믪퐫?쒋넂PR ?먮룞??```
|
||||
|
||||
**???곗뒪?ы깙?멸??**
|
||||
|
||||
| ??AI???쒓퀎 | ?곗뒪?ы깙 AI???대쾿 |
|
||||
|-------------|-------------------|
|
||||
| 肄붾뱶瑜?蹂듭궗?댁꽌 遺숈뿬?j린 | **?꾨줈?앺듃 ?꾩껜瑜?AI媛 吏곸젒 ?먯깋** |
|
||||
| 寃곌낵瑜??섎룞?쇰줈 ?곸슜 | **?뚯씪??AI媛 吏곸젒 ?섏젙** |
|
||||
| 蹂꾨룄 釉뚮씪?곗? ???꾪솚 | **?곗쿂/?⑥텞?ㅻ줈 利됱떆 ?몄텧** |
|
||||
| ?ㅽ뻾 ?섍꼍怨?遺꾨━ | **鍮뚮뱶쨌?뚯뒪?맞텴it??AI媛 吏곸젒 ?ㅽ뻾** |
|
||||
|
||||
> **?듭떖**: AI媛 ?ㅼ젣 ?앹궛?깆쓣 ?믪씠?ㅻ㈃ **?ъ슜?먯쓽 ?ㅼ젣 ?곗씠?곗뿉 吏곸젒 ?묎렐**?댁빞 ?⑸땲??
|
||||
|
||||
### ?쒖옣 洹쒕え? 梨꾪깮瑜?
|
||||
- 媛쒕컻?먯쓽 **85%媛 AI 肄붾뵫 ?꾧뎄瑜??쇱긽 ?ъ슜** (GitHub Survey 2026)
|
||||
- ?⑥닚 ?먮룞?꾩꽦 ??**?먯쑉 ?먯씠?꾪듃**濡?鍮좊Ⅴ寃??꾪솚 以?- 二쇱슂 ?뚮젅?댁뼱 媛?**?먯씠?꾪듃 吏??寃쎌웳**???듭떖 ?꾩옣
|
||||
|
||||
---
|
||||
|
||||
## 2. 二쇱슂 ?쒕퉬???꾪솴怨??ъ??붾떇
|
||||
|
||||
### ?쒕퉬?ㅻ퀎 ?ъ???留?
|
||||
```
|
||||
怨좎닔以 ?먯쑉?? ?? Claw Code ?? ??Cursor
|
||||
?? ?? ??Windsurf
|
||||
?? GitHub Copilot ?뤴봻
|
||||
?? ??????????????????? ????????????????????????
|
||||
?곕???湲곕컲 ?? IDE ?듯빀
|
||||
?? Raycast ?뤴봻 ??Flow Launcher
|
||||
?? ?⑥닚 ?꾧뎄
|
||||
```
|
||||
|
||||
### Claw Code (Sigmoid) ???곕????먯씠?꾪듃??湲곗?
|
||||
|
||||
| ?듭떖 湲곕뒫 | ?ㅻ챸 |
|
||||
|-----------|------|
|
||||
| **SWE-bench 80.8%** | ?낃퀎 理쒓퀬 ?뚰봽?몄썾???붿??덉뼱留?踰ㅼ튂留덊겕 ?ъ꽦 |
|
||||
| **?쒕툕?먯씠?꾪듃 10? ?숈떆** | 蹂듭옟???묒뾽??10媛?蹂묐젹 ?먯씠?꾪듃濡?遺꾪븷 ?ㅽ뻾 |
|
||||
| **Plan Mode** | ?ㅽ뻾 ??怨꾪쉷 ?섎┰ ???ъ슜???뱀씤 ???ㅽ뻾. ?ㅼ닔瑜??ъ쟾??諛⑹? |
|
||||
| **MCP ?꾨줈?좎퐳** | Model Context Protocol ???몃? ?꾧뎄 ?곌껐 ?쒖? 吏곸젒 ?쒖젙 |
|
||||
| **Skills** | 留덊겕?ㅼ슫 湲곕컲 ?ъ궗???뚰겕?뚮줈???뺤쓽 |
|
||||
| **Hooks** | ?꾧뎄 ?ㅽ뻾 ?꾪썑???ъ슜???ㅽ겕由쏀듃瑜??먮룞 ?ㅽ뻾 |
|
||||
| **1M ?좏겙 而⑦뀓?ㅽ듃** | Opus 4.6 紐⑤뜽濡??洹쒕え 肄붾뱶踰좎씠???꾩껜瑜???踰덉뿉 遺꾩꽍 |
|
||||
|
||||
### Cursor ??IDE ?듯빀 ?먯씠?꾪듃???좊몢
|
||||
|
||||
| ?듭떖 湲곕뒫 | ?ㅻ챸 |
|
||||
|-----------|------|
|
||||
| **硫?고뙆???먯씠?꾪듃** | ?꾨줈?앺듃 ?꾩껜瑜??댄빐?섍퀬 ?щ윭 ?뚯씪???숈떆 ?섏젙 |
|
||||
| **諛깃렇?쇱슫???먯씠?꾪듃 8媛?* | ?대씪?곕뱶?먯꽌 8媛??먯씠?꾪듃瑜?蹂묐젹 ?ㅽ뻾?섏뿬 ?묒뾽 遺꾩궛 |
|
||||
| **Tab ?먮룞?꾩꽦** | ?ㅼ쓬 肄붾뱶 ?먮쫫???덉륫 ??Tab ??踰덉쑝濡??뱀씤 |
|
||||
| **?꾨줈?앺듃 洹쒖튃** | `.cursorrules` ?뚯씪濡??꾨줈?앺듃蹂?AI ?됰룞??而ㅼ뒪?곕쭏?댁쭠 |
|
||||
| **硫?고뙆??Diff** | 蹂寃쎈맂 紐⑤뱺 ?뚯씪?????붾㈃?먯꽌 ?뚯씪蹂??뚰겕蹂??뱀씤/嫄곕? |
|
||||
| **?щ떇 硫붾え由?* | ?ъ슜???쇰뱶諛?湲곕컲?쇰줈 肄붾뵫 ?ㅽ??쇱쓣 ?먮룞 ?숈뒿 |
|
||||
| **LSP ?듯빀** | ?몄뼱 ?쒕쾭 ?꾨줈?좎퐳濡?肄붾뱶 援ъ“瑜??섎? 湲곕컲 遺꾩꽍 |
|
||||
|
||||
### GitHub Copilot ??媛쒕컻 ?뚯씠?꾨씪???먮룞??
|
||||
| ?듭떖 湲곕뒫 | ?ㅻ챸 |
|
||||
|-----------|------|
|
||||
| **肄붾뵫 ?먯씠?꾪듃** | ?댁뒋 ?좊떦 ??肄붾뱶 ?묒꽦 ??PR ?앹꽦 ???뚯뒪?멸퉴吏 ?먮룞 ?뚯씠?꾨씪??|
|
||||
| **?먮룞 PR ?앹꽦** | ?댁뒋 踰덊샇留??좊떦?섎㈃ 肄붾뱶 蹂寃?+ PR???먮룞 ?앹꽦 |
|
||||
| **諛섎났 ?뚯뒪???섏젙** | ?뚯뒪???ㅽ뙣 ???먯씤 遺꾩꽍 ??肄붾뱶 ?섏젙 ???ъ떎?됱쓣 ?먮룞 諛섎났 |
|
||||
| **Multi-Agent** | 肄붾뱶由щ럭쨌?뚯뒪?맞룸Ц???묒꽦??媛곴컖 ?꾨떞?섎뒗 ?먯씠?꾪듃 ?묒뾽 |
|
||||
|
||||
### Windsurf ??而⑦뀓?ㅽ듃 吏??
|
||||
| ?듭떖 湲곕뒫 | ?ㅻ챸 |
|
||||
|-----------|------|
|
||||
| **Cascade** | 蹂듭옟???묒뾽???④퀎蹂꾨줈 遺꾪빐?섏뿬 硫?곗뒪???먯씠?꾪듃媛 ?ㅽ뻾 |
|
||||
| **48?쒓컙 ?먮룞 ?몃뜳??* | 肄붾뱶踰좎씠?ㅻ? 48?쒓컙 二쇨린濡??먮룞 遺꾩꽍, 愿???뚯씪???ъ쟾 ?섏쭛 |
|
||||
| **?곸냽 硫붾え由?* | ?몄뀡???앸굹???댁쟾 ?묒뾽 湲곗뼲???좎?, ?꾨줈?앺듃 而⑦뀓?ㅽ듃 ?꾩쟻 ?숈뒿 |
|
||||
| **釉뚮씪?곗? ?듯빀** | ???섏씠吏 ?댁슜???먯씠?꾪듃媛 吏곸젒 李몄“?섏뿬 肄붾뱶??諛섏쁺 |
|
||||
|
||||
### Raycast ???곗쿂 + AI ?듯빀 (macOS)
|
||||
|
||||
| ?듭떖 湲곕뒫 | ?ㅻ챸 |
|
||||
|-----------|------|
|
||||
| **1,500+ ?뺤옣 ?앺깭怨?* | 而ㅻ??덊떚 湲곕컲 ?뺤옣 ?꾨줈洹몃옩 ?ㅽ넗??|
|
||||
| **Auto 紐⑤뜽** | ?묒뾽 ?좏삎???곕씪 GPT/Sigmoid/Gemini 以?理쒖쟻 紐⑤뜽 ?먮룞 ?좏깮 |
|
||||
| **AI ?ㅻ땲??* | `;email {?섏떊?? {二쇱젣}` ??AI媛 ?대찓??珥덉븞??利됱떆 ?앹꽦 |
|
||||
| **由ъ튂 ?대┰蹂대뱶** | ?대?吏쨌留곹겕 ?꾨━酉걔룹퐫???섏씠?쇱씠?멸? ?덈뒗 怨좉툒 ?대┰蹂대뱶 |
|
||||
|
||||
### ?쒕퉬?ㅻ퀎 湲곕뒫 鍮꾧탳 留ㅽ듃由?뒪
|
||||
|
||||
| 湲곕뒫 | Claw Code | Cursor | Copilot | Windsurf | Raycast |
|
||||
|------|:-----------:|:------:|:-------:|:--------:|:-------:|
|
||||
| ?먯씠?꾪듃 猷⑦봽 | ??| ??| ??| ??| ??|
|
||||
| MCP ?꾨줈?좎퐳 | ??| ??| ??| ??| ??|
|
||||
| ?쒕툕?먯씠?꾪듃 (蹂묐젹) | 10? | 8媛?| ?ㅼ쨷 | ??| ??|
|
||||
| Plan Mode | ??| ??| ??| ??| ??|
|
||||
| LSP 肄붾뱶 遺꾩꽍 | ?먯껜 | ??| ??| ??| ??|
|
||||
| ?먯씠?꾪듃 硫붾え由?| ??| ??| ??| ??| ??|
|
||||
| ?꾨줈?앺듃 洹쒖튃 | ??| ??| ??| ??| ??|
|
||||
| ?먮룞 ?뚯뒪???섏젙 | ??| ??| ??| ??| ??|
|
||||
| ?곗쿂 ?듯빀 | ??| ??| ??| ??| ??|
|
||||
| ?ㅽ봽?쇱씤 ?숈옉 | ??| ??| ??| ??| ??|
|
||||
|
||||
---
|
||||
|
||||
## 3. ?듭떖 湲곗닠 媛쒖슂 ???먯씠?꾪듃瑜?援ъ꽦?섎뒗 7? 異?
|
||||
Agentic Coding Survey (arXiv 2025)??AI 肄붾뵫 ?먯씠?꾪듃??湲곗닠 吏?뺤쓣 **7? 異?*?쇰줈 ?뺣━?⑸땲??
|
||||
|
||||
| # | 湲곗닠 異?| ?듭떖 吏덈Ц | ????쒕퉬??|
|
||||
|---|---------|-----------|-------------|
|
||||
| 1 | **怨꾪쉷 (Planning)** | ?대뼡 ?쒖꽌濡??묒뾽??寃껋씤媛? | Claw Code Plan Mode |
|
||||
| 2 | **?꾧뎄 ?ъ슜 (Tool Use)** | ?뚯씪쨌寃?됀룸퉴?쒕? ?대뼸寃??몄텧?섎뒗媛? | ?꾩껜 (Function Calling) |
|
||||
| 3 | **硫붾え由?(Memory)** | ?댁쟾 ?묒뾽???대뼸寃?湲곗뼲?섎뒗媛? | Windsurf, Cursor |
|
||||
| 4 | **?깆같 (Reflection)** | ?ㅽ뙣瑜??대뼸寃?遺꾩꽍?섍퀬 ?ъ떆?꾪븯?붽?? | Claw Code |
|
||||
| 5 | **?묒뾽 (Multi-Agent)** | ?щ윭 ?먯씠?꾪듃媛 ?대뼸寃?遺꾩뾽?섎뒗媛? | GitHub Copilot, Claw Code |
|
||||
| 6 | **寃??(Retrieval)** | 愿??肄붾뱶瑜??대뼸寃?李얜뒗媛? | Cursor, Windsurf |
|
||||
| 7 | **寃利?(Verification)** | 寃곌낵媛 留욌뒗吏 ?대뼸寃??뺤씤?섎뒗媛? | GitHub Copilot |
|
||||
|
||||
?댄븯 ?뱀뀡?먯꽌 媛?湲곗닠??**?숈닠 洹쇨굅, ?묐룞 ?먮━, ?곸슜 ?쒕퉬?? ?④낵**瑜??ㅻ챸?⑸땲??
|
||||
|
||||
---
|
||||
|
||||
## 4. 湲곗닠蹂??곸꽭
|
||||
|
||||
### 4-1. Function Calling ???먯씠?꾪듃??"?먭낵 諛?
|
||||
|
||||
**媛쒕뀗**: LLM? ?띿뒪?몃쭔 異쒕젰?????덉뒿?덈떎. ?뚯씪???쎄굅??肄붾뱶瑜??ㅽ뻾?섎뒗 寃껋? 遺덇??ν빀?덈떎.
|
||||
Function Calling? LLM??**"???꾧뎄瑜????뚮씪誘명꽣濡??몄텧?댁쨾"?쇰뒗 ?붿껌?쒕? JSON?쇰줈 異쒕젰**?섎㈃, ?깆씠 ?ㅼ젣濡??ㅽ뻾?섎뒗 援ъ“?낅땲??
|
||||
|
||||
```
|
||||
?뚢??????????????????????????????????????????????? ??????LLM ???? ?ъ슜??硫붿떆吏 + ?꾧뎄 紐⑸줉 (JSON Schema) ???? "??以묒뿉 ??寃??덉쑝硫?JSON?쇰줈 異쒕젰?? ???붴?????????????????р???????????????????????????? ???뚢??????????????????????????????????????????????? ??LLM ???띿뒪??異쒕젰 (?닿쾶 ?꾨?) ???? { "tool": "file_write", ???? "arguments": { "path": "report.html",???? "content": "<h1>蹂닿퀬??/h1>..." ???? } ???? } ???? ???닿쾬??洹몃깷 ?띿뒪?? ?ㅼ젣 ?뚯씪??留뚮뱺 ???? 嫄??꾨떂. ???붴?????????????????р???????????????????????????? ???뚢??????????????????????????????????????????????? ???????ㅼ젣 ?ㅽ뻾 ???? 1. JSON ?뚯떛 ???? 2. File.WriteAllText() ?ㅽ뻾 ???? 3. 寃곌낵瑜??ㅼ떆 LLM?먭쾶 ?꾨떖 ???? 4. LLM???ㅼ쓬 ?됰룞 寃곗젙 ???붴?????????????????????????????????????????????```
|
||||
|
||||
**?낃퀎 ?쒖?**: OpenAI, Sigmoid, Google, Ollama ??**紐⑤뱺 LLM API**媛 ?숈씪??諛⑹떇.
|
||||
"Function Calling" ?먮뒗 "Tool Use"?쇨퀬 遺덈━硫? 2024???댄썑 ?먯씠?꾪듃???듭떖 ?명봽??
|
||||
|
||||
| LLM ?쒕퉬??| ?꾧뎄 ?몄텧 諛⑹떇 |
|
||||
|-----------|--------------|
|
||||
| Ollama / vLLM | OpenAI ?명솚 tools ?뚮씪誘명꽣 |
|
||||
| Gemini | functionDeclarations |
|
||||
| Sigmoid | tool_use 釉붾줉 |
|
||||
|
||||
**紐⑤뜽 ?깅뒫???곕Ⅸ 李⑥씠**: ?꾧뎄 ?몄텧? LLM???щ컮瑜?JSON??異쒕젰?댁빞 ?섎?濡?紐⑤뜽 ?깅뒫???섏〈?⑸땲??
|
||||
|
||||
| 紐⑤뜽 ?섏? | ?꾧뎄 ?몄텧 ?뺥솗??| ?덉떆 |
|
||||
|----------|:---:|------|
|
||||
| ???紐⑤뜽 | ???뺥솗 | Sigmoid Opus, GPT-4, Gemini Pro |
|
||||
| 以묓삎 紐⑤뜽 | ?좑툘 ?遺遺?OK | Gemini Flash, Qwen-30B |
|
||||
| 寃쎈웾 紐⑤뜽 | ??醫낆쥌 ?ㅽ뙣 | Gemini Flash Lite, ?뚰삎 濡쒖뺄 紐⑤뜽 |
|
||||
|
||||
**愿???쇰Ц**: SWE-Agent v2 (Yang et al., Princeton 2025) ??**Agent-Computer Interface (ACI)** ?ㅺ퀎
|
||||
|
||||
---
|
||||
|
||||
### 4-2. Plan Mode ??怨꾪쉷 ???ㅽ뻾
|
||||
|
||||
**媛쒕뀗**: ?먯씠?꾪듃媛 ?꾧뎄瑜?利됱떆 ?ㅽ뻾?섏? ?딄퀬, **癒쇱? 援ъ“?붾맂 ?ㅽ뻾 怨꾪쉷???앹꽦 ???ъ슜?먭? 寃???섏젙/?뱀씤 ???뱀씤 ???ㅽ뻾**?섎뒗 ?⑦꽩.
|
||||
|
||||
```
|
||||
?ъ슜???붿껌: "?몄쬆 紐⑤뱢??JWT濡?援먯껜?댁쨾"
|
||||
?? ???뚢? 怨꾪쉷 ?섎┰ (?꾧뎄 ?몄텧 李⑤떒) ?????????????????? 1. ?꾩옱 ?몄쬆 濡쒖쭅 遺꾩꽍 (grep, file_read) ???? 2. JWT ?쇱씠釉뚮윭由??ㅼ튂 (process) ???? 3. ?좏겙 ?앹꽦/寃利?紐⑤뱢 ?묒꽦 (file_write) ???? 4. 湲곗〈 ?몄뀡 濡쒖쭅 援먯껜 (file_edit) ???? 5. ?⑥쐞 ?뚯뒪???묒꽦 諛??ㅽ뻾 (test_loop) ???? 6. Git 而ㅻ컠 (git_tool) ???붴?????????????????р???????????????????????????? ?? [?뱀씤] [?섏젙] [痍⑥냼] ???ъ슜??寃?? ?? ???뱀씤
|
||||
怨꾪쉷?濡??쒖감 ?ㅽ뻾
|
||||
```
|
||||
|
||||
**???꾩슂?쒓??** ??FeatureBench (Sigmoid 2025)
|
||||
|
||||
| 踰ㅼ튂留덊겕 | AI ?깅뒫 | ?섎? |
|
||||
|----------|:------:|------|
|
||||
| SWE-bench (踰꾧렇 ?섏젙) | **80%+** | ?먯씠?꾪듃媛 留ㅼ슦 ?섑븯???곸뿭 |
|
||||
| FeatureBench (?좉린??援ы쁽) | **11~12%** | ?먯씠?꾪듃媛 ?꾩쭅 ?대젮???곸뿭 |
|
||||
|
||||
> ?먯씠?꾪듃??**"湲곗〈 肄붾뱶 ?섏젙"? ?섑븯吏留?"?덈줈??湲곕뒫 ?ㅺ퀎"???멸컙 媛먮룆???꾩닔**.
|
||||
> Plan Mode?????쒓퀎瑜??몄젙?섍퀬 **?멸컙-猷⑦봽(Human-in-the-Loop)** 瑜??꾩젣濡??ㅺ퀎???⑦꽩.
|
||||
|
||||
**?곸슜 ?쒕퉬??*: Claw Code (Plan Mode), GitHub Copilot Workspace
|
||||
|
||||
---
|
||||
|
||||
### 4-3. Reflexion ???ㅽ뙣?먯꽌 諛곗슦???먯씠?꾪듃
|
||||
|
||||
**?쇰Ц**: Reflexion: Language Agents with Verbal Reinforcement Learning (Shinn et al., NeurIPS 2023)
|
||||
|
||||
**?듭떖 ?꾩씠?붿뼱**: ?먯씠?꾪듃媛 ?ㅽ뙣?섎㈃ **"???ㅽ뙣?덈뒗吏" ?먯뿰?대줈 援ъ“?붾맂 ?깆같臾몄쓣 ?앹꽦**?섍퀬, ?대? 硫붾え由ъ뿉 ??ν븯???ㅼ쓬 ?쒕룄???쒖슜?⑸땲??
|
||||
|
||||
```
|
||||
?먯씠?꾪듃 ?ㅽ뻾
|
||||
?? ???ㅽ뻾 寃곌낵 愿李? ?? ?쒋?? ?깃났 ???꾨즺
|
||||
?? ?붴?? ?ㅽ뙣 ??援ъ“?붾맂 ?먭린 ?깆같 (Self-Reflection)
|
||||
?? ?? "?뚯씪 寃쎈줈瑜??곷?寃쎈줈濡?吏?뺥뻽?쇰굹 ?묒뾽 ?대뜑媛
|
||||
?? ?ㅻⅨ ?꾩튂??? ?ㅼ쓬?먮뒗 ?덈? 寃쎈줈瑜??ъ슜?섍굅?? ?? 癒쇱? ?꾩옱 ?묒뾽 ?붾젆?곕━瑜??뺤씤?댁빞 ?쒕떎."
|
||||
?? ?? ?깆같 寃곌낵瑜?硫붾え由ъ뿉 ??? ?? ?? ?ㅼ쓬 ?쒕룄???깆같 寃곌낵 二쇱엯 ???ъ떆??```
|
||||
|
||||
**?④낵**:
|
||||
|
||||
| 踰ㅼ튂留덊겕 | ?쇰컲 ?먯씠?꾪듃 | Reflexion ?곸슜 | ?μ긽 |
|
||||
|----------|:-----------:|:-------------:|:----:|
|
||||
| HumanEval (Python) | 80.1% | **91.0%** | +10.9% |
|
||||
| MBPP (Python) | 72.4% | **77.1%** | +4.7% |
|
||||
| AlfWorld (?묒뾽 ?섑뻾) | 75% | **97%** | +22% |
|
||||
|
||||
**?듭떖 李⑥씠**: 湲곗〈???⑥닚 ?ъ떆??媛숈? ?꾨\?꾪듃濡??ㅼ떆 ?ㅽ뻾)? ?щ━, **?ㅽ뙣 ?먯씤??遺꾩꽍???띿뒪?몃? ?ㅼ쓬 ?꾨\?꾪듃??異붽?**?섏뿬 媛숈? ?ㅼ닔瑜?諛섎났?섏? ?딆쓬.
|
||||
|
||||
**?곸슜 ?쒕퉬??*: Claw Code (?먮윭 ???먮룞 ?깆같), GitHub Copilot (諛섎났 ?섏젙 猷⑦봽)
|
||||
|
||||
---
|
||||
|
||||
### 4-4. Agent-Computer Interface (ACI) ??LLM???꾪븳 ?꾧뎄 ?ㅺ퀎
|
||||
|
||||
**?쇰Ц**: SWE-Agent: Agent-Computer Interfaces Enable Automated Software Engineering (Yang et al., Princeton 2024-2025)
|
||||
|
||||
**?듭떖 ?꾩씠?붿뼱**: ?먯씠?꾪듃???깅뒫? LLM 紐⑤뜽 ?먯껜蹂대떎 **LLM???ъ슜?섎뒗 ?꾧뎄???ㅺ퀎**???ш쾶 醫뚯슦?⑸땲?? ?щ엺???꾪븳 UI(GUI)媛 ?꾨땶, **LLM???꾪빐 理쒖쟻?붾맂 ?꾧뎄 ?명꽣?섏씠??ACI)** 瑜??ㅺ퀎?댁빞 ?⑸땲??
|
||||
|
||||
**ACI ?ㅺ퀎 ?먯튃**:
|
||||
|
||||
| ?먯튃 | ?섏걶 ?ㅺ퀎 | 醫뗭? ?ㅺ퀎 (ACI) |
|
||||
|------|----------|----------------|
|
||||
| 異쒕젰 媛꾧껐??| `ls -la` ?꾩껜 異쒕젰 (?섎갚 以? | ?꾩슂???뺣낫留?援ъ“?뷀븯??諛섑솚 |
|
||||
| 紐낇솗???뚮씪誘명꽣 | 蹂듭옟???뚮옒洹?議고빀 | JSON Schema濡??뺤쓽??紐낇솗???뚮씪誘명꽣 |
|
||||
| ?먮윭 硫붿떆吏 | ?ㅽ깮 ?몃젅?댁뒪 ?꾩껜 | ?먯씤 + ?닿껐 諛⑸쾿????以꾨줈 ?붿빟 |
|
||||
| ?곹깭 ?쇰뱶諛?| "?꾨즺" | "3媛??뚯씪 ?섏젙, ?뚯뒪??5/5 ?듦낵" |
|
||||
|
||||
**?④낵**: ?숈씪??LLM 紐⑤뜽?대씪??ACI瑜????ㅺ퀎?섎㈃ SWE-bench?먯꽌 **12~23%p ?깅뒫 ?μ긽**.
|
||||
|
||||
**?곸슜 ?쒕퉬??*: Claw Code (而ㅼ뒪? CLI ?꾧뎄), SWE-Agent (?꾩슜 ?꾧뎄 ??
|
||||
|
||||
---
|
||||
|
||||
### 4-5. CodeAct ??肄붾뱶濡??됰룞?섎뒗 ?먯씠?꾪듃
|
||||
|
||||
**?쇰Ц**: CodeAct: Code Actions for Multi-Turn Agent Interactions (Wang et al., 2024)
|
||||
|
||||
**?듭떖 ?꾩씠?붿뼱**: ?먯씠?꾪듃???됰룞(Action)??JSON ?꾧뎄 ?몄텧 ???**?ㅽ뻾 媛?ν븳 肄붾뱶**濡??쒗쁽?⑸땲??
|
||||
|
||||
```
|
||||
?쇰컲 ?꾧뎄 ?몄텧 (JSON) CodeAct (肄붾뱶)
|
||||
?????????????????? ??????????????
|
||||
{"tool": "search", import os
|
||||
"args": {"query": "auth"}} results = []
|
||||
for f in os.listdir('src'):
|
||||
{"tool": "file_read", if 'auth' in f.lower():
|
||||
"args": {"path": "src/auth.py"}} with open(f'src/{f}') as fh:
|
||||
results.append(fh.read())
|
||||
??2踰덉쓽 ?꾧뎄 ?몄텧 ?꾩슂 ??1踰덉쓽 肄붾뱶 ?ㅽ뻾?쇰줈 蹂듭옟??濡쒖쭅 ?쒗쁽
|
||||
```
|
||||
|
||||
**?④낵**: 硫?고꽩 ??붿뿉???묒뾽 ?깃났瑜?**20%+ ?μ긽**. 蹂듭옟??議곌굔 遺꾧린, 諛섎났, ?덉쇅 泥섎━瑜???踰덉뿉 ?쒗쁽?????덉뼱 ?꾧뎄 ?몄텧 ?잛닔媛 以꾧퀬 ?뺥솗?꾧? ?щ씪媛?
|
||||
|
||||
**?곸슜 ?쒕퉬??*: Claw Code (bash ?꾧뎄), OpenCode, Aider (肄붾뱶 ?ㅽ뻾 ?먯씠?꾪듃)
|
||||
|
||||
---
|
||||
|
||||
### 4-6. ?먯씠?꾪듃 硫붾え由????몄뀡???섏뼱??湲곗뼲?섎뒗 AI
|
||||
|
||||
**媛쒕뀗**: ??붽? ?앸굹硫?紐⑤뱺 臾몃㎘???щ씪吏??湲곗〈 LLM怨??щ━, **?꾨줈?앺듃 ?섎챸 二쇨린 ?꾩껜??嫄몄퀜 ?숈뒿???댁슜???좎?**?섎뒗 援ъ“.
|
||||
|
||||
```
|
||||
?몄뀡 1: "???꾨줈?앺듃??camelCase瑜??곌퀬, ?뚯뒪?몃뒗 Jest瑜??ъ슜?⑸땲??
|
||||
?? ??????몄뀡 2: (????? AI媛 ?먮룞?쇰줈 camelCase + Jest ?ㅽ??쇰줈 肄붾뱶 ?묒꽦
|
||||
?? ???꾩쟻
|
||||
?몄뀡 N: ?꾨줈?앺듃???꾪궎?띿쿂, 愿濡, ?섏궗寃곗젙 ?대젰??紐⑤몢 湲곗뼲
|
||||
```
|
||||
|
||||
**硫붾え由?怨꾩링** (CrewAI/LangChain ?곌뎄 湲곕컲):
|
||||
|
||||
| 怨꾩링 | ??븷 | ?덉떆 |
|
||||
|------|------|------|
|
||||
| **?④린 湲곗뼲** | ?꾩옱 ??붿쓽 ?꾧뎄 ?몄텧 ?대젰 | "諛⑷툑 auth.py瑜??쎌뿀?쇰땲 ?ㅼ떆 ???쎌뼱???? |
|
||||
| **?먰뵾?뚮뱶 湲곗뼲** | 怨쇨굅 ?묒뾽???깃났/?ㅽ뙣 寃쏀뿕 | "吏?쒕쾲?????⑦꽩?쇰줈 ?섎땲源?鍮뚮뱶 ?ㅽ뙣?덉뿀?? |
|
||||
| **?곸냽 湲곗뼲** | ?꾨줈?앺듃 洹쒖튃, 肄붾뵫 愿濡 | "???꾨줈?앺듃????긽 ESLint瑜??듦낵?댁빞 ?? |
|
||||
|
||||
**?곸슜 ?쒕퉬??*: Windsurf (?곸냽 硫붾え由?, Cursor (?щ떇 硫붾え由?, Claw Code (Sigmoid.md ?꾨줈?앺듃 ?뚯씪)
|
||||
|
||||
---
|
||||
|
||||
### 4-7. MCP (Model Context Protocol) ???꾧뎄 ?곌껐 ?쒖?
|
||||
|
||||
**?쒖젙**: Sigmoid (2025??12??
|
||||
|
||||
**媛쒕뀗**: LLM ?먯씠?꾪듃媛 ?몃? ?꾧뎄/?쒕퉬?ㅼ뿉 ?묎렐?섎뒗 **?쒖? ?꾨줈?좎퐳**.
|
||||
媛??쒕퉬?ㅻ쭏???ㅻⅨ ?곕룞 諛⑹떇???곕뒗 ??? **?섎굹???쒖??쇰줈 ?듭씪**.
|
||||
|
||||
```
|
||||
?뚢???????????????? JSON-RPC 2.0 ?뚢?????????????????? AI ?먯씠?꾪듃 ???꾟????????????????????? MCP ?쒕쾭 A ?? (JIRA)
|
||||
?? (MCP ?대씪?댁뼵?? ?? ?? ???? ???꾟????????????????????? MCP ?쒕쾭 B ?? (Slack)
|
||||
?? ?? ?? ???? ???꾟????????????????????? MCP ?쒕쾭 C ?? (DB 議고쉶)
|
||||
?붴???????????????? ?붴???????????????? ?? ?쒋?? ?쒕쾭???꾧뎄(tools) 紐⑸줉 ?먮룞 諛쒓껄
|
||||
?쒋?? ?먯씠?꾪듃 ?꾧뎄濡??먮룞 ?섑븨 (LLM?먭쾶 援щ텇 ?놁씠 ?몄텧)
|
||||
?붴?? LLM???댁옣 ?꾧뎄? ?숈씪?섍쾶 ?몄텧
|
||||
```
|
||||
|
||||
**LLM ?낆옣?먯꽌**: ?댁옣 ?꾧뎄? MCP ?꾧뎄??援щ텇???놁뒿?덈떎.
|
||||
|
||||
```
|
||||
?꾧뎄 紐⑸줉 (LLM?먭쾶 ?꾨떖):
|
||||
file_read ???댁옣
|
||||
file_write ???댁옣 LLM? ??援щ텇?? jira_search ??MCP 紐⑤쫭?덈떎.
|
||||
slack_send ??MCP 洹몃깷 紐⑸줉?먯꽌
|
||||
db_query ??MCP 怨⑤씪???몄텧??肉?
|
||||
```
|
||||
|
||||
**?낃퀎 梨꾪깮**: Claw Code, Cursor, GitHub Copilot, OpenCode ??紐⑤뱺 二쇱슂 ?쒕퉬?ㅺ? 吏??
|
||||
|
||||
---
|
||||
|
||||
### 4-8. LSP (Language Server Protocol) ???섎? 湲곕컲 肄붾뱶 遺꾩꽍
|
||||
|
||||
**?쒖젙**: Microsoft
|
||||
|
||||
**媛쒕뀗**: ?띿뒪??寃??grep)???꾨땶 **肄붾뱶???섎? 援ъ“**瑜?湲곕컲?쇰줈 遺꾩꽍.
|
||||
|
||||
```
|
||||
?띿뒪??寃??(grep) LSP 湲곕컲 遺꾩꽍
|
||||
?????????????????? ??????????????
|
||||
"authenticate" 湲???ы븿 以?諛섑솚 ?⑥닔 ?뺤쓽 ?꾩튂 ?뺥솗??諛섑솚
|
||||
??二쇱꽍/臾몄옄?댁뿉 ?덈뒗 寃껊룄 ?ы븿 ??"???⑥닔瑜??몄텧?섎뒗 怨? 紐⑸줉
|
||||
???숈쓽??"auth", "login") ?꾨씫 ????? ?쒓렇?덉쿂, 李몄“ 愿怨?遺꾩꽍
|
||||
???몄씠利덇? 留롮쓬 ???뺥솗???믪쓬
|
||||
```
|
||||
|
||||
**?곸슜 ?쒕퉬??*: Cursor (OmniSharp, pyright ??, GitHub Copilot, Windsurf
|
||||
|
||||
---
|
||||
|
||||
### 4-9. Multi-Agent ????븷 湲곕컲 ?먯씠?꾪듃 ?
|
||||
|
||||
**媛쒕뀗**: ?⑥씪 ?먯씠?꾪듃 ???**??븷???ㅻⅨ ?щ윭 ?먯씠?꾪듃媛 硫붿떆吏瑜?二쇨퀬諛쏆쑝硫??묒뾽**.
|
||||
|
||||
```
|
||||
?뚢????????????????????????????????????????????? ?ㅼ??ㅽ듃?덉씠??(Orchestrator) ???? "JWT ?몄쬆 紐⑤뱢濡?援먯껜?댁쨾" ???? ???? ?뚢?????????????뚢?????????????뚢???????????????? ??肄붾뱶 ?묒꽦 ?????뚯뒪?? ????肄붾뱶 由щ럭?????? ???먯씠?꾪듃 ?????먯씠?꾪듃 ?????먯씠?꾪듃 ?????? ?붴??????р???????붴?????р????????붴?????р??????????? ???묒꽦 ?꾨즺 ???뚯뒪???ㅽ뙣 ??由щ럭 ???? ?붴?????????? ???꾟???????? ?? ???? ?? ???? ?섏젙 ???ы뀒?ㅽ듃 ???듦낵 ???붴???????????????????????????????????????????```
|
||||
|
||||
**?곸슜 ?쒕퉬??*: Claw Code (?쒕툕?먯씠?꾪듃 10?), Cursor (諛깃렇?쇱슫???먯씠?꾪듃 8媛?, GitHub Copilot (Multi-Agent)
|
||||
|
||||
---
|
||||
|
||||
## 5. 援ы쁽 諛⑸쾿 ???먯씠?꾪듃???ㅽ뻾 援ъ“
|
||||
|
||||
### ?먯씠?꾪듃 猷⑦봽 (Agent Loop)
|
||||
|
||||
紐⑤뱺 AI 肄붾뵫 ?먯씠?꾪듃???듭떖 ?꾪궎?띿쿂??**?숈씪??諛섎났 猷⑦봽**?낅땲??
|
||||
|
||||
```
|
||||
?ъ슜???붿껌
|
||||
?? ???뚢???????????????????????????????????????????? 諛섎났 (理쒕? N??: ???? ???? ??LLM?먭쾶 ?꾩넚 ???? (?ъ슜??硫붿떆吏 + ?꾧뎄 紐⑸줉 + ?대젰) ???? ???? ??LLM ?묐떟 ?섏떊 ???? ?쒋?? ?띿뒪?몃쭔 ??醫낅즺 (理쒖쥌 ?듬?) ???? ?붴?? ?꾧뎄 ?몄텧 JSON ????쑝濡? ???? ???? ???꾧뎄 ?ㅽ뻾 ???? 쨌 寃쎈줈 寃利?(?묒뾽 ?대뜑 ??) ???? 쨌 沅뚰븳 ?뺤씤 (Ask/Auto/Deny) ???? 쨌 李⑤떒 ?뺤옣??寃?? ???? 쨌 ?ㅽ뻾 ??寃곌낵瑜??대젰??異붽? ???? ???? ??寃곌낵瑜??ㅼ떆 ?좊줈 (?ㅼ쓬 諛섎났) ???? ???? ?덉쟾?μ튂: ???? 쨌 理쒕? 諛섎났 ?잛닔 ?쒗븳 ???? 쨌 ?곗냽 ?ㅻ쪟 ???먮룞 以묐떒 ???? 쨌 痍⑥냼 ?좏겙?쇰줈 ?ъ슜??以묐떒 吏?? ???붴??????????????????????????????????????????```
|
||||
|
||||
### ?ㅽ궗 ?쒖뒪?????낅Т 吏?쒖꽌
|
||||
|
||||
?ㅽ궗? **LLM?먭쾶 二쇰뒗 ?낅Т 吏?쒖꽌**?낅땲?? `.skill.md` ?뚯씪 ?섎굹濡??뺤쓽?⑸땲??
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: report-writer
|
||||
label: 蹂닿퀬???묒꽦
|
||||
allowed-tools: # ???ㅽ궗???ъ슜?????덈뒗 ?꾧뎄瑜??쒗븳
|
||||
- file_read
|
||||
- folder_map
|
||||
- html_create
|
||||
---
|
||||
## 吏?쒖궗??1. ?묒뾽 ?대뜑???곗씠???뚯씪??癒쇱? ?뺤씤?섏꽭??2. ?듭떖 吏?쒕? 異붿텧?섏꽭??3. ?꾨Ц?곸씤 蹂닿퀬?쒕? HTML濡??묒꽦?섏꽭??```
|
||||
|
||||
> ?ㅽ궗? ?꾧뎄瑜?異붽??섍굅????젣????**?놁뒿?덈떎**. "LLM ?쒖뒪???꾨\?꾪듃"濡쒕쭔 ?묐룞?섎ʼn, ?ㅼ젣 ?꾧뎄 紐⑸줉? ?깆씠 愿由ы빀?덈떎. ?곕씪???낆꽦 ?ㅽ궗??濡쒕뱶?대룄 **?깆쓽 蹂댁븞 寃쎄퀎瑜??섏쓣 ???놁뒿?덈떎**.
|
||||
|
||||
**?쒖?**: Sigmoid??**SKILL.md** ?ㅽ뵂 ?щ㎎(agentskills.io)???쒖젙?섏뿬 ?ㅽ궗 ?명솚?깆쓣 ?쒖???
|
||||
|
||||
---
|
||||
|
||||
## 6. ?ъ슜???곗씠??蹂댄샇
|
||||
|
||||
### ?몃? ?쒕퉬?ㅼ쓽 蹂댁븞 援ъ“
|
||||
|
||||
| ?쒕퉬??| ?ㅽ뻾 ?섍꼍 | 寃⑸━ 諛⑹떇 | ?꾪뿕 ?붿냼 |
|
||||
|--------|-----------|-----------|-----------|
|
||||
| **Claw Code** | ?곕???(濡쒖뺄 PC) | ?놁쓬 | ?섎せ??`rm -rf` ?ㅽ뻾 媛??|
|
||||
| **Cursor** | IDE ?댁옣 | ?꾨줈?앺듃 ?대뜑 ?쒖젙 | ?곕???紐낅졊? ?쒗븳 ?놁쓬 |
|
||||
| **Devin / Codex** | **Docker 而⑦뀒?대꼫** | ?꾩쟾 寃⑸━ | 而⑦뀒?대꼫 諛??묎렐 遺덇? |
|
||||
| **GitHub Copilot Workspace** | **?대씪?곕뱶 VM** | ?쒕쾭 寃⑸━ | 濡쒖뺄 ?뚯씪 ?묎렐 ?먯껜 遺덇? |
|
||||
|
||||
> **??Docker?**: ?곕????먯씠?꾪듃(Claw Code)??`rm -rf /`, `curl | bash` 媛숈? ?꾪뿕 紐낅졊??LLM???ㅽ뻾?????덉뒿?덈떎. Devin/Codex???대? ?닿껐?섍린 ?꾪빐 Docker 而⑦뀒?대꼫 ?덉뿉?쒕쭔 肄붾뱶瑜??ㅽ뻾?⑸땲??
|
||||
|
||||
### ?щ궡 ?섍꼍?먯꽌??蹂댁븞 ?먯튃
|
||||
|
||||
?щ궡?먯꽌 AI ?먯씠?꾪듃瑜??댁쁺?섎젮硫?Docker ???**???덈꺼?먯꽌 3以?諛⑹뼱**媛 ?꾩슂?⑸땲??
|
||||
|
||||
```
|
||||
諛⑹뼱 ?? ?뚰겕?ㅽ럹?댁뒪 寃⑸━
|
||||
??????????????????????
|
||||
?ъ슜??PC ?꾩껜 ?붿뒪?? ?쒋?? C:\Windows\ ???슟 李⑤떒
|
||||
?쒋?? C:\Program Files\ ???슟 李⑤떒
|
||||
?쒋?? C:\Users\...\AppData\ ???슟 李⑤떒
|
||||
?붴?? D:\Projects\MyProject\ ?????묒뾽 ?대뜑 (?ъ슜??吏??
|
||||
?붴?? AI媛 ?쎄퀬 ?????덈뒗 ?좎씪???곸뿭
|
||||
|
||||
諛⑹뼱 ?? ?뚯씪 ?묎렐 ?숈쓽 (3?④퀎 沅뚰븳)
|
||||
??????????????????????????????
|
||||
쨌 Ask ???뚯씪?????뚮쭏???ъ슜???뺤씤 ?앹뾽
|
||||
쨌 Auto ???묒뾽 ?대뜑 ???먮룞 ?덉슜 (?숇젴?먯슜)
|
||||
쨌 Deny ??紐⑤뱺 ?뚯씪 ?섏젙 李⑤떒 (?쎄린留??덉슜)
|
||||
|
||||
諛⑹뼱 ?? ??젣 ?꾧뎄 ?먯껜媛 ?놁쓬
|
||||
????????????????????????????
|
||||
쨌 file_read (?쎄린) ?? 쨌 file_write (?앹꽦/??뼱?곌린) ?? 쨌 file_edit (遺遺??섏젙) ?? 쨌 file_delete ???꾧뎄 ?먯껜媛 議댁옱?섏? ?딆쓬 ?? 쨌 .exe, .dll, .sys ???ㅽ뻾 ?뚯씪 ?앹꽦 李⑤떒
|
||||
```
|
||||
|
||||
> **?ㅺ퀎 ?먯튃**: LLM??"???뚯씪 ??젣???쇨퀬 ?먮떒?대룄, ?ㅽ뻾???꾧뎄媛 ?놁쑝誘濡?**臾쇰━?곸쑝濡???젣 遺덇???*.
|
||||
|
||||
---
|
||||
|
||||
## 7. 寃곕줎 ??湲곗닠 諛⑺뼢 ?쒖떆
|
||||
|
||||
### 2026??10? 湲곗닠 ?숉뼢 ?붿빟
|
||||
|
||||
| # | ?숉뼢 | 洹쇨굅 | ?곹뼢??|
|
||||
|---|------|------|:------:|
|
||||
| 1 | **?곗뒪?ы깙 ?ㅼ씠?곕툕 ?꾪솚** | Claw Code쨌Cursor쨌Windsurf 紐⑤몢 濡쒖뺄 ?ㅽ뻾 | ?끸쁾??|
|
||||
| 2 | **?먯쑉 ?먯씠?꾪듃 ?꾪솚** | ?먮룞?꾩꽦 ???댁뒋?믪퐫?쒋넂PR ?먮룞???뚯씠?꾨씪??| ?끸쁾??|
|
||||
| 3 | **怨꾪쉷 ???ㅽ뻾 (Human-in-the-Loop)** | FeatureBench 11% ???멸컙 媛먮룆 ?꾩닔 ?몄떇 ?뺤궛 | ?끸쁾??|
|
||||
| 4 | **?깆같 猷⑦봽 (Reflexion)** | NeurIPS 2023 ???ㅽ뙣 遺꾩꽍?믪옱?쒕룄濡??뺥솗??91% | ?끸쁾??|
|
||||
| 5 | **硫???먯씠?꾪듃 ?묒뾽** | Claw Code 10?, Cursor 8媛?蹂묐젹 ?ㅽ뻾 | ?끸쁾??|
|
||||
| 6 | **?곸냽 硫붾え由?* | ?몄뀡?믫봽濡쒖젥???섎챸 ?꾩껜 湲곗뼲 ?좎? | ?끸쁾??|
|
||||
| 7 | **?쒖? ?꾨줈?좎퐳 (MCP, LSP)** | Sigmoid MCP ?쒖젙, ???쒕퉬??梨꾪깮 | ?끸쁾??|
|
||||
| 8 | **ACI ?꾧뎄 ?ㅺ퀎** | SWE-Agent ???꾧뎄 ?ㅺ퀎留뚯쑝濡?12~23%p ?깅뒫 李⑥씠 | ?끸쁾??|
|
||||
| 9 | **?곗쿂 + AI ?듯빀** | Raycast ???⑥텞?ㅻ줈 AI 利됱떆 ?몄텧 | ?끸쁿??|
|
||||
| 10 | **?ㅽ봽?쇱씤 AI** | ?ㅽ듃?뚰겕 ?놁씠 濡쒖뺄 紐⑤뜽濡?湲곕낯 ?묒뾽 泥섎━ | ?끸쁿??|
|
||||
|
||||
### ?듭떖 硫붿떆吏
|
||||
|
||||
```
|
||||
??AI 肄붾뵫 ?꾧뎄媛 "蹂댁“ ?꾧뎄"?먯꽌 "?먯쑉 ?먯씠?꾪듃"濡??꾪솚?섏뿀?듬땲??
|
||||
???먯씠?꾪듃???듭떖 湲곗닠(怨꾪쉷쨌?꾧뎄쨌硫붾え由?룹꽦李걔룻삊??? ?숈닠?곸쑝濡?寃利앸릺?덉뒿?덈떎.
|
||||
??洹몃윭??FeatureBench 11%媛 蹂댁뿬二쇰벏, ?멸컙 媛먮룆? ?ъ쟾???꾩닔?낅땲??
|
||||
???щ궡 ?섍꼍?먯꽌???곗씠??蹂댄샇(?뚰겕?ㅽ럹?댁뒪 寃⑸━, 沅뚰븳 ?쒖뼱)媛 ?꾩젣 議곌굔?낅땲??
|
||||
????湲곗닠?ㅼ쓣 ?щ궡 ?섍꼍??鍮좊Ⅴ寃??곸슜?섎뒗 寃껋씠 寃쎌웳?μ쓽 ?듭떖?낅땲??
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 李멸퀬 臾명뿄
|
||||
|
||||
| ?쇰Ц/?먮즺 | 異쒖쿂 | ?듭떖 湲곗뿬 |
|
||||
|-----------|------|-----------|
|
||||
| Reflexion: Language Agents with Verbal Reinforcement Learning | Shinn et al., NeurIPS 2023 | ?먭린 ?깆같濡?肄붾뱶 ?앹꽦 ?뺥솗??91% ?ъ꽦 |
|
||||
| SWE-Agent: Agent-Computer Interfaces Enable Automated Software Engineering | Yang et al., Princeton 2024 | ACI ?ㅺ퀎 ?먯튃, SWE-bench 80%+ |
|
||||
| CodeAct: Code Actions for Multi-Turn Agent Interactions | Wang et al., 2024 | 肄붾뱶 湲곕컲 ?됰룞?쇰줈 ?깃났瑜?20%+ ?μ긽 |
|
||||
| A Survey on Agentic AI for Software Engineering | arXiv 2025 | ?먯씠?꾪듃 肄붾뵫 7? 湲곗닠 異?泥닿퀎??|
|
||||
| FeatureBench: Can AI Implement New Features? | Sigmoid Research, 2025 | ?좉린??援ы쁽 11% ???멸컙 媛먮룆 ?꾩닔 洹쇨굅 |
|
||||
| Model Context Protocol Specification | Sigmoid, 2025 | ?꾧뎄 ?곌껐 ?쒖? ?꾨줈?좎퐳 |
|
||||
| SKILL.md Agent Skills Open Format | agentskills.io, 2025 | ?먯씠?꾪듃 ?ㅽ궗 ?쒖? ?щ㎎ |
|
||||
|
||||
---
|
||||
|
||||
*諛쒗몴 ?먮즺 ?묒꽦: AX?곌뎄??AI? | 臾몄쓽: ?대? 硫붿떊?*
|
||||
|
||||
674
docs/USER_MANUAL.md
Normal file
674
docs/USER_MANUAL.md
Normal file
@@ -0,0 +1,674 @@
|
||||
# AX Commander 사용 매뉴얼 (v1.0.3)
|
||||
|
||||
> 사내 전용 런처 프로그램 — 키보드 하나로 파일·명령·클립보드·계산까지
|
||||
|
||||
---
|
||||
|
||||
## 목차
|
||||
|
||||
1. [시작하기](#1-시작하기)
|
||||
2. [기본 사용법](#2-기본-사용법)
|
||||
3. [명령어 프리픽스 가이드](#3-명령어-프리픽스-가이드)
|
||||
4. [파일 및 앱 검색](#4-파일-및-앱-검색)
|
||||
5. [파일 액션 서브메뉴](#5-파일-액션-서브메뉴)
|
||||
6. [Large Type](#6-large-type)
|
||||
7. [클립보드 합치기](#7-클립보드-합치기)
|
||||
8. [설정 변경](#8-설정-변경)
|
||||
9. [잠금 해제 사용시간 알림](#9-잠금-해제-사용시간-알림)
|
||||
10. [전체 키보드 단축키 표](#10-전체-키보드-단축키-표)
|
||||
11. [자주 묻는 질문](#11-자주-묻는-질문)
|
||||
|
||||
> **v1.0 정식 릴리스** — 30개+ 명령어, 9개 테마(모양 포함), 클립보드 DPAPI 암호화, 글로벌 캡처 단축키, 잠금 해제 알림, 다국어(ko/en/ja/zh/vi), 텍스트 통계·즐겨찾기·파일 이름변경·시스템 모니터·프로젝트 스캐폴딩, AX Agent AI 대화(프롬프트 카드, 코드 구문 강조, 토큰 사용량, 타이핑 효과, 지연 캡처)
|
||||
|
||||
---
|
||||
|
||||
## 1. 시작하기
|
||||
|
||||
### 설치 방법
|
||||
|
||||
| 방법 | 파일 | 설명 |
|
||||
|------|------|------|
|
||||
| **오프라인 인스톨러** | `AxCommander_Setup.exe` (~136MB) | 모든 것 내장, 인터넷 불필요. 설치 경로 선택, 바로가기, 프로그램 등록 |
|
||||
| **온라인 인스톨러 (경량)** | `AxCommander_Setup_Online.exe` (**~1MB**) | .NET 4.8 기반 (Windows 기본). .NET 8 Runtime 없으면 자동 다운로드 설치 |
|
||||
| **직접 실행** | `AxCommander\` 폴더 | 폴더째 복사 후 `AxCommander.exe` 실행 (설치 과정 없음) |
|
||||
|
||||
### 런처 열기
|
||||
|
||||
프로그램이 백그라운드에서 실행 중인 상태에서 기본 단축키를 누릅니다.
|
||||
|
||||
```
|
||||
기본 단축키: Alt + Space
|
||||
```
|
||||
|
||||
화면 중앙 상단에 런처 창이 나타납니다.
|
||||
|
||||
### 런처 닫기
|
||||
|
||||
- `Esc` 키
|
||||
- 런처 창 밖을 클릭
|
||||
|
||||
### 시스템 트레이
|
||||
|
||||
작업 표시줄 우측 트레이 아이콘을 우클릭하면 메뉴가 나타납니다.
|
||||
|
||||
| 메뉴 항목 | 아이콘 | 기능 |
|
||||
|----------|--------|------|
|
||||
| AX Commander 열기 | ⚡ | 런처 창 표시 |
|
||||
| 설정 | ⚙ | 설정 창 열기 |
|
||||
| 사용 통계 | 📊 | 런처 사용 현황 통계 창 열기 |
|
||||
| 플러그인 재로드 | 🔌 | 외부 플러그인 다시 불러오기 |
|
||||
| 로그 폴더 열기 | 📁 | 오류 로그 폴더를 탐색기로 열기 |
|
||||
| 정보 | ℹ | 개발자 정보 및 버전 확인 |
|
||||
| Windows 시작 시 자동 실행 | 💡 | 전구 아이콘 — 활성화되면 **앰버색으로 빛나는** 전구 표시. 체크 시 Windows 로그인 시 자동 시작 등록/해제 |
|
||||
| 종료 | ✕ | 프로그램 완전 종료 |
|
||||
|
||||
> 트레이 메뉴 디자인은 현재 테마 색상을 자동으로 따릅니다. Dark 테마면 어두운 배경, Light 테마면 밝은 배경으로 표시됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 2. 기본 사용법
|
||||
|
||||
### 검색하고 실행하기
|
||||
|
||||
1. `Alt+Space`로 런처를 엽니다
|
||||
2. 원하는 파일명, 앱 이름, 또는 명령어를 입력합니다
|
||||
3. `↑` / `↓` 방향키로 결과를 탐색합니다
|
||||
4. `Enter`를 눌러 실행합니다
|
||||
|
||||
```
|
||||
예시:
|
||||
"chrome" → Google Chrome 실행
|
||||
"보고서" → 보고서.xlsx 파일 열기
|
||||
"다운" → 다운로드 폴더 열기
|
||||
```
|
||||
|
||||
### 자동완성
|
||||
|
||||
결과 목록에서 항목이 선택된 상태에서 `Tab`을 누르면 해당 항목의 이름이 입력창에 채워집니다.
|
||||
|
||||
---
|
||||
|
||||
## 3. 명령어 프리픽스 가이드
|
||||
|
||||
특수 문자를 맨 앞에 입력하면 해당 기능 모드로 전환됩니다.
|
||||
입력창 좌측에 컬러 배지가 표시되어 현재 모드를 알려줍니다.
|
||||
|
||||
| 프리픽스 | 모드 | 예시 |
|
||||
|---------|------|------|
|
||||
| `@` | URL 별칭 열기 | `@gh` → GitHub 열기 |
|
||||
| `~` | 폴더 별칭 열기 | `~dl` → 다운로드 폴더 열기 |
|
||||
| `>` | 배치/명령 실행 | `>build` → 빌드 스크립트 실행 |
|
||||
| `$` | 클립보드 텍스트 변환 | `$json` → 클립보드 내용 JSON 정렬 |
|
||||
| `!` | 워크스페이스 관리 | `!save work` → 현재 창 배치 저장 |
|
||||
| `#` | 클립보드 히스토리 | `#` → 최근 복사 내역 표시 |
|
||||
| `;` | 텍스트 스니펫 | `;addr` → 회사 주소 붙여넣기 |
|
||||
| `=` | 계산기·단위·통화 변환 | `=100 USD to KRW`, `=100km in miles` |
|
||||
| `?` | 웹 검색 (10개 엔진) | `? 검색어` → 기본 엔진, `?n 검색어` → 네이버, `?g` 구글, `?y` 유튜브, `?nw` 나무위키 등 |
|
||||
| `/` | 시스템 명령·타이머·알람 | `/timer 5m`, `/alarm 14:30`, `/lock` |
|
||||
| `emoji` | 이모지 피커 | `emoji 하트` → ❤️ 클립보드 복사 |
|
||||
| `color` | 색상 변환기 | `color #FF5500` → HEX/RGB/HSL/HSV |
|
||||
| `recent` | 최근 파일 | `recent 보고서` → 최근 문서 검색 |
|
||||
| `note` | 빠른 메모 | `note 내일 회의` → 저장 / `note` → 목록 |
|
||||
| `uninstall` | 앱 제거 | `uninstall chrome` → 제거 실행 |
|
||||
| `kill` | 프로세스 종료 | `kill chrome` → 크롬 프로세스 강제 종료 |
|
||||
| `media` | 미디어 제어 | `media pause` → 재생/일시정지 |
|
||||
| `info` 또는 `*` | 시스템 정보 | `info` → IP·배터리·볼륨 현황 (`*`로도 동일하게 사용 가능) |
|
||||
| `cap` *(변경 가능)* | 화면 캡처 | `cap region` → 영역 선택, `cap window` → 창 캡처, `cap scroll` → 스크롤, `cap screen` → 전체 화면. Shift+Enter → 지연 캡처 |
|
||||
| `pick` | 스포이드 색상 추출 | `pick` → 스포이드 모드, 클릭으로 HEX 색상 코드 추출 |
|
||||
| `date` | 날짜 계산 · D-day | `date +30d`, `date 2026-12-25`, `date unix` |
|
||||
| `svc` | 서비스 관리 | `svc` → 서비스 목록, `svc restart clipboard` → 클립보드 재시작 |
|
||||
| `stats` | 텍스트 통계 분석 | `stats` → 클립보드 텍스트 글자·단어·줄 수 분석 |
|
||||
| `fav` | 즐겨찾기 | `fav` → 목록, `fav add 보고서 C:\work\report.xlsx` → 등록 |
|
||||
| `rename` | 파일 일괄 이름변경 | `rename C:\work\*.xlsx 보고서_{n}` → 순번 이름변경 |
|
||||
| `monitor` | 시스템 리소스 모니터 | `monitor` → CPU·메모리·디스크·프로세스 현황 |
|
||||
| `scaffold` | 프로젝트 스캐폴딩 | `scaffold webapi` → 프로젝트 폴더 구조 생성 |
|
||||
| `pipe` | 클립보드 파이프라인 | `pipe upper > trim > b64e` → 변환 체이닝 |
|
||||
| `journal` | 업무 일지 자동 생성 | `journal` → 오늘 사용 앱/명령어 기반 마크다운 보고서 |
|
||||
| `routine` | 루틴 자동화 | `routine morning` → 등록된 앱/폴더/URL 일괄 실행 |
|
||||
| `batch` | 텍스트 일괄 처리 | `batch number` → 줄번호, `batch sort` → 정렬 |
|
||||
| `diff` | 텍스트/파일 비교 | `diff` → 클립보드 2개 비교, 파일 선택 비교 지원 |
|
||||
| `win` | 윈도우 스위처 | `win chrome` → 열린 창 검색 후 즉시 전환 |
|
||||
| `help` | 도움말 | `help` → 카테고리별 페이지 전체 기능 목록 창 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 파일 및 앱 검색
|
||||
|
||||
프리픽스 없이 텍스트를 입력하면 인덱싱된 파일과 앱을 검색합니다.
|
||||
|
||||
### 검색 범위
|
||||
|
||||
- 바탕화면
|
||||
- Windows 시작 메뉴 (설치된 앱)
|
||||
- 설정에서 추가한 인덱스 경로
|
||||
|
||||
### 한국어 초성 검색 지원
|
||||
|
||||
| 입력 | 검색되는 예시 |
|
||||
|------|-------------|
|
||||
| `ㅂㄱㅅ` | 보고서.xlsx |
|
||||
| `ㅅㅈ` | 사진 폴더, 설정 |
|
||||
| `ㄱㅅ` | 개선안.docx |
|
||||
|
||||
### 빠른 실행 별칭
|
||||
|
||||
설정 → 빠른 실행 탭에서 자주 쓰는 파일/폴더/URL에 단축 키워드를 등록할 수 있습니다.
|
||||
|
||||
```
|
||||
예시 등록:
|
||||
키워드: vscode → C:\...\Code.exe
|
||||
키워드: gh → https://github.com (@ 없이도 사용 가능)
|
||||
키워드: work → C:\Projects\
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 파일 액션 서브메뉴
|
||||
|
||||
파일이나 앱을 선택한 후 `→` 키를 누르면 해당 항목에 대한 액션 메뉴가 열립니다.
|
||||
|
||||
### 진입 방법
|
||||
|
||||
1. 런처에서 파일 또는 앱을 검색합니다
|
||||
2. 원하는 항목을 `↑` / `↓`로 선택합니다
|
||||
3. **입력 커서가 텍스트 맨 끝에 있는 상태**에서 `→` 키를 누릅니다
|
||||
4. 상단에 파란색 breadcrumb 바가 나타나며 액션 목록이 표시됩니다
|
||||
|
||||
```
|
||||
← 보고서_최종.xlsx 에 대한 액션 · Esc로 돌아가기
|
||||
```
|
||||
|
||||
### 제공 액션
|
||||
|
||||
| 액션 | 설명 |
|
||||
|------|------|
|
||||
| 경로 복사 | 파일의 전체 경로를 클립보드에 복사 |
|
||||
| 파일 탐색기에서 열기 | 탐색기에서 해당 파일을 선택된 상태로 열기 |
|
||||
| 관리자 권한으로 실행 | UAC 권한 상승 후 실행 (파일에만 표시) |
|
||||
| 터미널에서 열기 | Windows Terminal 또는 명령 프롬프트로 해당 경로 열기 |
|
||||
|
||||
### 돌아가기
|
||||
|
||||
- `Esc`: 이전 검색 결과로 복귀 (이전에 입력한 텍스트 자동 복원)
|
||||
- 액션 선택 후 `Enter`: 액션 실행 후 런처 자동 닫힘
|
||||
|
||||
---
|
||||
|
||||
## 6. Large Type
|
||||
|
||||
선택된 텍스트를 전체 화면으로 크게 표시합니다. 발표, 화면 공유, 빠른 메모 확인에 유용합니다.
|
||||
|
||||
### 사용법
|
||||
|
||||
1. 결과 목록에서 항목을 선택합니다
|
||||
2. `Shift+Enter`를 누릅니다
|
||||
3. 전체 화면 검은 오버레이 위에 텍스트가 크게 표시됩니다
|
||||
|
||||
### 표시 내용
|
||||
|
||||
| 선택 항목 유형 | Large Type으로 표시되는 내용 |
|
||||
|--------------|---------------------------|
|
||||
| 계산기 결과 (`=`) | 계산 결과 숫자 |
|
||||
| 클립보드 히스토리 (`#`) | 복사된 텍스트 전체 내용 |
|
||||
| 그 외 모든 항목 | 항목 제목 |
|
||||
|
||||
### 닫기
|
||||
|
||||
- `Esc` 키
|
||||
- 화면 아무 곳이나 클릭
|
||||
- 우상단 `×` 버튼
|
||||
|
||||
> **팁**: `=3.14159265`를 계산기로 입력한 뒤 `Shift+Enter`를 누르면 파이 값을 크게 표시할 수 있습니다.
|
||||
|
||||
---
|
||||
|
||||
## 7. 클립보드 합치기
|
||||
|
||||
클립보드 히스토리에서 여러 항목을 골라 한 번에 합쳐서 복사합니다.
|
||||
|
||||
### 사용법
|
||||
|
||||
1. `#`을 입력해 클립보드 히스토리 모드로 진입합니다
|
||||
2. `Shift+↓` 또는 `Shift+↑`로 합치고 싶은 항목을 선택합니다
|
||||
- 선택할 때마다 하단 힌트 바에 선택 개수가 표시됩니다
|
||||
- 같은 키를 다시 누르면 선택이 해제됩니다
|
||||
3. `Shift+Enter`를 눌러 합치기를 실행합니다
|
||||
4. 선택한 항목들이 줄바꿈(`\n`)으로 연결되어 클립보드에 복사됩니다
|
||||
|
||||
```
|
||||
예시 결과:
|
||||
항목 1: "회의 안건"
|
||||
항목 2: "담당자: 홍길동"
|
||||
항목 3: "일시: 2026-03-24"
|
||||
|
||||
→ 클립보드에 복사되는 내용:
|
||||
회의 안건
|
||||
담당자: 홍길동
|
||||
일시: 2026-03-24
|
||||
```
|
||||
|
||||
### 힌트 바
|
||||
|
||||
선택된 항목이 있으면 화면 하단에 보라색 힌트 바가 나타납니다:
|
||||
|
||||
```
|
||||
✓ 2개 선택됨 · Shift+Enter로 합치기 · Esc로 취소
|
||||
```
|
||||
|
||||
### 선택 취소
|
||||
|
||||
- `Esc`: 모든 선택을 취소하고 런처 닫기
|
||||
- 런처를 다시 열면 선택이 초기화됩니다
|
||||
|
||||
> **주의**: 클립보드 합치기 선택 항목이 있는 상태에서 `Shift+Enter`를 누르면 Large Type 대신 **합치기**가 실행됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 8. 설정 변경
|
||||
|
||||
`Ctrl+,` 또는 시스템 트레이 → 설정으로 설정 창을 엽니다.
|
||||
|
||||
### 일반 탭
|
||||
|
||||
#### 글로벌 단축키 변경
|
||||
|
||||
현재 등록된 단축키 배지를 클릭하면 녹화 모드로 전환됩니다.
|
||||
|
||||
```
|
||||
[클릭] → 녹화 중... → 원하는 키 조합 입력 → 자동 저장
|
||||
```
|
||||
|
||||
- 최소 하나의 보조 키(`Ctrl`, `Alt`, `Shift`, `Win`)가 포함되어야 합니다
|
||||
- `Esc`를 누르면 녹화를 취소합니다
|
||||
- 지원 예시: `Alt+Space`, `Ctrl+Alt+K`, `Win+Space`
|
||||
|
||||
#### 기본 검색 엔진
|
||||
|
||||
`?` 프리픽스로 검색할 때 사용할 기본 검색 엔진을 선택합니다.
|
||||
|
||||
| 옵션 | 검색 엔진 |
|
||||
|------|---------|
|
||||
| Google (기본) | www.google.com |
|
||||
| Naver | search.naver.com |
|
||||
| DuckDuckGo | duckduckgo.com |
|
||||
| YouTube | youtube.com |
|
||||
| Wikipedia | ko.wikipedia.org |
|
||||
|
||||
특정 엔진을 직접 지정하려면 `?g 검색어`, `?n 검색어` 형식으로 입력할 수 있습니다.
|
||||
|
||||
#### 런처 위치
|
||||
|
||||
런처 창이 화면에 나타나는 위치를 선택합니다.
|
||||
|
||||
| 옵션 | 위치 |
|
||||
|------|------|
|
||||
| 상단 중앙 (기본) | 화면 상단 20% 지점 |
|
||||
| 정중앙 | 화면 정가운데 |
|
||||
| 하단 중앙 | 화면 하단 75% 지점 |
|
||||
|
||||
#### 최대 결과 수
|
||||
|
||||
검색 결과로 표시할 최대 항목 수를 설정합니다 (기본: 7개).
|
||||
|
||||
#### 창 투명도
|
||||
|
||||
런처 창의 불투명도를 조정합니다 (0.5 ~ 1.0).
|
||||
|
||||
### 테마 탭
|
||||
|
||||
9가지 내장 테마 중 클릭하면 **즉시 미리보기**가 적용됩니다.
|
||||
저장하지 않고 닫으면 이전 테마로 자동 복원됩니다.
|
||||
|
||||
| 테마 | 특징 |
|
||||
|------|------|
|
||||
| System | Windows 다크/라이트 모드 자동 연동 |
|
||||
| Dark | 기본 다크 모드 — 부드러운 라운딩 |
|
||||
| Light | 밝은 화이트 테마 |
|
||||
| OLED | 순수 검정 배경 (OLED 화면 최적화) — 가장 둥근 모양 |
|
||||
| Nord | 차분한 북유럽 블루 계열 — 약간 각진 느낌 |
|
||||
| Monokai | 에디터 스타일 컬러 — 직각에 가까운 모양 |
|
||||
| Catppuccin | 파스텔 톤 — 둥근 모양 |
|
||||
| Sepia | 따뜻한 베이지 계열 — 클래식한 각진 느낌 |
|
||||
| Alfred | Alfred 앱 영감 다크 |
|
||||
| Alfred Light | Alfred 앱 영감 라이트 |
|
||||
| Custom | 색상 편집 탭에서 직접 지정 |
|
||||
|
||||
> 각 테마는 **색상뿐 아니라 창·항목의 모서리 라운딩 비율도 다르게** 설정됩니다. OLED가 가장 둥글고, Monokai·Sepia가 가장 각집니다.
|
||||
|
||||
### 스니펫 탭 (`;` 프리픽스)
|
||||
|
||||
자주 입력하는 문구를 등록합니다. 런처에서 `;키워드`로 검색 후 `Enter`를 누르면 현재 포커스된 창에 텍스트가 입력됩니다.
|
||||
|
||||
#### 글로벌 스니펫 자동 확장
|
||||
|
||||
탭 최상단의 토글을 켜면 **런처를 열지 않아도** 모든 앱에서 `;키워드 + Space 또는 Enter`를 입력하는 순간 자동으로 텍스트가 치환됩니다.
|
||||
|
||||
```
|
||||
토글 OFF: 런처에서만 스니펫 사용 가능
|
||||
토글 ON: 어떤 앱에서든 ;addr + Space → 회사 주소로 자동 치환
|
||||
```
|
||||
|
||||
**동적 변수 사용 가능**:
|
||||
|
||||
| 변수 | 치환 내용 |
|
||||
|------|----------|
|
||||
| `{date}` | 오늘 날짜 (예: 2026-03-24) |
|
||||
| `{time}` | 현재 시간 (예: 14:30) |
|
||||
| `{datetime}` | 날짜+시간 |
|
||||
| `{year}` / `{month}` / `{day}` | 연/월/일 |
|
||||
|
||||
```
|
||||
예시 스니펫:
|
||||
키: sign
|
||||
내용: 안녕하세요, {date} 작성한 홍길동입니다.
|
||||
```
|
||||
|
||||
### 클립보드 탭
|
||||
|
||||
| 설정 | 설명 |
|
||||
|------|------|
|
||||
| 클립보드 히스토리 활성화 | `#` 모드 사용 여부 |
|
||||
| 최대 보관 개수 | 저장할 히스토리 항목 수 (기본: 50개) |
|
||||
| 보안 제외 패턴 | 신용카드·주민번호 등 민감 데이터 자동 차단 패턴 |
|
||||
|
||||
### 시스템 탭
|
||||
|
||||
`/` 프리픽스 시스템 명령의 표시 여부를 항목별로 켜거나 끌 수 있습니다.
|
||||
|
||||
### 빠른 실행 탭
|
||||
|
||||
키워드 → 파일/URL/폴더 단축키를 추가/삭제합니다.
|
||||
|
||||
| 타입 | 예시 |
|
||||
|------|------|
|
||||
| 앱 | `vscode` → `C:\...\Code.exe` |
|
||||
| URL | `gh` → `https://github.com` |
|
||||
| 폴더 | `dl` → `%USERPROFILE%\Downloads` |
|
||||
|
||||
### 배치 명령 탭
|
||||
|
||||
`>` 프리픽스 명령 단축키를 관리합니다.
|
||||
|
||||
| 항목 | 설명 |
|
||||
|------|------|
|
||||
| 키워드 | `>` 이후 입력할 키워드 (예: `build`, `test`) |
|
||||
| 명령어 | 실행할 PowerShell 또는 cmd 명령어 |
|
||||
| 창 표시 | 체크 시 터미널 창이 화면에 표시됨 |
|
||||
|
||||
```
|
||||
예시 등록:
|
||||
키워드: build → dotnet build (창 표시: ✓)
|
||||
키워드: open → explorer . (창 표시: ✗)
|
||||
```
|
||||
|
||||
### 캡처 탭
|
||||
|
||||
화면 캡처(`cap`) 기능의 세부 설정을 변경합니다.
|
||||
캡처 결과는 보안 정책에 따라 **클립보드에만 복사**되며, 파일로 저장하는 기능은 제공하지 않습니다.
|
||||
|
||||
| 설정 | 설명 |
|
||||
|------|------|
|
||||
| 캡처 프리픽스 | `cap` 대신 사용할 다른 단어를 입력합니다 (예: `sc`, `screenshot`). 변경 후 저장하면 즉시 적용됩니다 |
|
||||
| 글로벌 캡처 단축키 사용 | 런처를 열지 않고 단축키만으로 바로 캡처합니다 (기본: **비활성화**) |
|
||||
| 캡처 단축키 | 글로벌 단축키 키 조합 (기본: `PrintScreen`). 클릭 후 원하는 키를 누르면 변경됩니다 |
|
||||
| 단축키 실행 모드 | 단축키를 눌렀을 때 실행할 캡처 모드 — 전체 화면 / 활성 창 / 영역 선택 |
|
||||
| 스크롤 캡처 대기 시간 | 스크롤 캡처 시 프레임 간 대기 시간 (80~500ms). 느린 페이지에서 누락이 발생하면 값을 높이세요 |
|
||||
|
||||
#### 지연 캡처 (Shift+Enter)
|
||||
|
||||
캡처 모드에서 항목을 선택한 상태로 `Shift+Enter`를 누르면 지연 캡처 타이머 선택 화면이 표시됩니다.
|
||||
|
||||
1. `cap`을 입력해 캡처 모드로 진입합니다
|
||||
2. 원하는 캡처 모드(영역 선택, 활성 창, 스크롤, 전체 화면)를 선택합니다
|
||||
3. `Shift+Enter`를 누르면 타이머 선택 목록(3초/5초/10초)이 표시됩니다
|
||||
4. 원하는 시간을 선택하고 `Enter`를 누르면 카운트다운 알림 후 캡처가 실행됩니다
|
||||
|
||||
> **팁**: 메뉴가 숨겨져야 하는 상황이나 특정 UI 상태를 캡처할 때 유용합니다.
|
||||
|
||||
#### 영역 선택 캡처 (cap region) 키보드 미세조정
|
||||
|
||||
마우스 드래그로 영역을 선택한 뒤 키보드로 미세 조정할 수 있습니다:
|
||||
|
||||
| 키 | 동작 |
|
||||
|----|------|
|
||||
| `←` `→` `↑` `↓` | 선택 영역 1px 미세 조정 |
|
||||
| `Shift+방향키` | 10px 단위 조정 |
|
||||
| `Enter` | 현재 선택 확정 |
|
||||
| `Esc` | 취소 |
|
||||
|
||||
### 알림 탭
|
||||
|
||||
PC 잠금 해제 시 오늘 누적 사용 시간을 알려주는 팝업 기능을 설정합니다.
|
||||
|
||||
| 설정 | 설명 |
|
||||
|------|------|
|
||||
| 잠금 해제 알림 활성화 | 기능 전체를 켜거나 끕니다 |
|
||||
| 표시 위치 | 팝업이 나타날 화면 모서리를 선택합니다 (우하단/좌하단/우상단/좌상단) |
|
||||
| 표시 간격 | 알림을 너무 자주 표시하지 않도록 최소 간격을 설정합니다 (30분/1시간/2시간/4시간) |
|
||||
| 자동 닫힘 | 팝업이 자동으로 닫히기까지의 시간을 설정합니다 (5~30초) |
|
||||
|
||||
### 설정 내보내기 / 불러오기
|
||||
|
||||
설정 창 하단 좌측의 **내보내기** / **불러오기** 버튼으로 설정을 공유할 수 있습니다.
|
||||
|
||||
| 기능 | 설명 |
|
||||
|------|------|
|
||||
| 내보내기 | 현재 settings.json을 `.axsettings` 파일로 저장 |
|
||||
| 불러오기 | `.axsettings` 파일에서 설정을 덮어쓰기 (앱 재시작 필요) |
|
||||
|
||||
> 동료에게 설정 파일을 공유하면 동일한 단축키, 스니펫, 별칭을 즉시 사용할 수 있습니다.
|
||||
|
||||
### 예약어 충돌 방지
|
||||
|
||||
캡처 프리픽스, 빠른 실행 키워드, 배치 명령 키워드가 시스템 예약어(=, ?, #, $, ;, help, cap 등)와 충돌하면 **저장이 거부되고 알림 팝업**이 표시됩니다.
|
||||
|
||||
### Windows 시작 시 자동 실행
|
||||
|
||||
트레이 아이콘 우클릭 → **Windows 시작 시 자동 실행** 항목을 체크/해제합니다.
|
||||
|
||||
- 체크 시: Windows 로그인할 때마다 AX Commander가 자동으로 시작됩니다
|
||||
- 해제 시: 수동으로 EXE를 실행해야 합니다
|
||||
- 설정은 Windows 레지스트리(`HKCU\...\Run`)에 저장되며 관리자 권한이 필요하지 않습니다
|
||||
|
||||
### 정보 창
|
||||
|
||||
트레이 아이콘 우클릭 → **정보**를 클릭하면 개발자 정보와 버전을 확인할 수 있습니다.
|
||||
|
||||
- 상단에 **다이아몬드 픽셀 보석** 앱 아이콘이 표시됩니다 (Blue/Green/Red/Green 4색 보석 컷 디자인)
|
||||
- 개발자 이름을 클릭하면 마스코트 이미지가 오버레이로 표시됩니다
|
||||
|
||||
---
|
||||
|
||||
## 9. 잠금 해제 사용시간 알림
|
||||
|
||||
PC 잠금을 해제할 때 오늘 하루 누적 사용 시간을 작은 팝업으로 알려주는 기능입니다.
|
||||
|
||||
### 팝업 내용
|
||||
|
||||
```
|
||||
┌─────────────────────────────────┐
|
||||
│ 오늘 누적 사용 시간 │
|
||||
│ 3시간 42분 │
|
||||
│ │
|
||||
│ "삶이란 자전거를 타는 것과 같다. │
|
||||
│ 계속 움직여야 균형을 잡을 수 있다" │
|
||||
│ — 아인슈타인│
|
||||
└─────────────────────────────────┘
|
||||
```
|
||||
|
||||
- 매번 잠금 해제 시 표시되는 것이 아니라, **설정한 간격 이상** 시간이 지난 경우에만 나타납니다
|
||||
- 팝업은 런처와 완전히 별개로 동작하며 포커스를 빼앗지 않습니다
|
||||
- 클릭하거나 설정한 시간이 지나면 자동으로 닫힙니다
|
||||
|
||||
### 활성화 방법
|
||||
|
||||
`설정(Ctrl+,)` → **알림 탭** → "잠금 해제 알림 활성화" 토글을 켭니다.
|
||||
|
||||
### 팝업 위치 설정
|
||||
|
||||
| 옵션 | 위치 |
|
||||
|------|------|
|
||||
| 우하단 (기본) | 화면 오른쪽 아래 모서리 |
|
||||
| 좌하단 | 화면 왼쪽 아래 모서리 |
|
||||
| 우상단 | 화면 오른쪽 위 모서리 |
|
||||
| 좌상단 | 화면 왼쪽 위 모서리 |
|
||||
|
||||
---
|
||||
|
||||
## 10. 전체 키보드 단축키 표
|
||||
|
||||
### 런처 창
|
||||
|
||||
| 단축키 | 동작 |
|
||||
|--------|------|
|
||||
| `Alt+Space` | 런처 열기 / 닫기 (기본, 변경 가능) |
|
||||
| `↑` / `↓` | 결과 목록 위아래 이동 |
|
||||
| `Enter` | 선택 항목 실행 |
|
||||
| `Shift+Enter` | Large Type 표시 / 병합 대기 항목 있으면 합치기 실행 / 캡처 모드에서는 지연 캡처(3초/5초/10초) 타이머 선택 |
|
||||
| `→` | 파일 액션 서브메뉴 진입 (커서가 텍스트 끝에 있을 때) |
|
||||
| `Shift+↓` | 현재 항목 병합 선택/해제 후 다음 항목으로 이동 |
|
||||
| `Shift+↑` | 현재 항목 병합 선택/해제 후 이전 항목으로 이동 |
|
||||
| `Tab` | 선택 항목 제목을 입력창에 자동완성 |
|
||||
| `Esc` | 액션 서브메뉴 중이면 이전으로 / 아니면 런처 닫기 |
|
||||
| `Ctrl+,` | 설정 창 열기 |
|
||||
|
||||
### Large Type 창
|
||||
|
||||
| 단축키 | 동작 |
|
||||
|--------|------|
|
||||
| `Esc` | 닫기 |
|
||||
| 마우스 클릭 | 닫기 |
|
||||
|
||||
---
|
||||
|
||||
## 11. 자주 묻는 질문
|
||||
|
||||
**Q. 단축키를 눌러도 런처가 열리지 않습니다.**
|
||||
|
||||
다른 프로그램이 같은 단축키를 사용하고 있을 수 있습니다. 트레이 아이콘에 경고 알림이 표시됩니다. 설정(`Ctrl+,`) → 일반 탭에서 단축키를 변경하세요.
|
||||
|
||||
---
|
||||
|
||||
**Q. 검색해도 파일이 나오지 않습니다.**
|
||||
|
||||
파일이 인덱스 경로에 포함되어 있지 않을 수 있습니다. 설정 → 일반 탭에서 인덱스 경로를 추가하세요 (기본: 바탕화면, 시작 메뉴).
|
||||
|
||||
또한 해당 파일의 확장자가 검색 확장자 목록에 포함되어야 합니다. 설정 → 일반 탭 하단의 **검색할 확장자** 섹션에서 확장자를 추가할 수 있습니다. 기본값에는 실행 파일, 문서, 이미지, 텍스트 파일이 포함되어 있습니다. 폴더도 검색 가능하며 Enter로 탐색기에서 열 수 있습니다.
|
||||
|
||||
인덱스는 앱 시작 시 자동으로 빌드되며, 이후 파일/폴더 변경을 감지해 자동 갱신됩니다. 설정 저장 시 인덱스가 재빌드되며 프로그레스바가 표시됩니다.
|
||||
|
||||
---
|
||||
|
||||
**Q. 클립보드 히스토리(`#`)에 내용이 보이지 않습니다.**
|
||||
|
||||
설정 → 클립보드 탭에서 "클립보드 히스토리 활성화"가 켜져 있는지 확인하세요. 또한 복사한 내용이 보안 제외 패턴(신용카드 번호 등)에 해당하면 자동으로 저장되지 않습니다.
|
||||
|
||||
> **보안 참고**: 클립보드 히스토리는 Windows DPAPI 암호화로 저장됩니다. 현재 Windows 사용자 계정에서만 복호화할 수 있으며, 다른 사용자나 PC에서는 파일을 열어도 내용을 볼 수 없습니다.
|
||||
|
||||
---
|
||||
|
||||
**Q. 계산기(`=`)에서 어떤 수식을 사용할 수 있나요?**
|
||||
|
||||
| 종류 | 예시 |
|
||||
|------|------|
|
||||
| 기본 연산 | `=100*12+50` |
|
||||
| 거듭제곱 | `=2^10` |
|
||||
| 나머지 | `=17%5` |
|
||||
| 수학 함수 | `=sqrt(144)`, `=sin(pi/2)` |
|
||||
| 로그 | `=log(1000)`, `=ln(e)` |
|
||||
| 상수 | `pi`, `e` |
|
||||
| 16진수 | `=0xFF+1` |
|
||||
| 과학적 표기 | `=1.5e3*2` |
|
||||
| 단위 변환 | `=100km in miles`, `=32f in c`, `=5lb to kg` |
|
||||
| 통화 변환 | `=100 USD to KRW`, `=50 EUR in JPY` (실시간 환율) |
|
||||
|
||||
---
|
||||
|
||||
**Q. 타이머는 어떻게 사용하나요?**
|
||||
|
||||
`/` 프리픽스를 사용합니다:
|
||||
|
||||
| 입력 | 동작 |
|
||||
|------|------|
|
||||
| `/timer 5m` | 5분 후 트레이 알림 |
|
||||
| `/timer 1h30m` | 1시간 30분 후 알림 |
|
||||
| `/timer 30s 회의 준비` | 30초 후 "회의 준비" 알림 |
|
||||
| `/alarm 14:30` | 오후 2시 30분에 알림 (지나면 다음날로 자동 설정) |
|
||||
|
||||
Enter로 시작하면 백그라운드에서 카운트가 진행되고, 완료 시 트레이 아이콘에서 풍선 알림이 나타납니다.
|
||||
|
||||
---
|
||||
|
||||
**Q. 이모지를 빠르게 복사하려면?**
|
||||
|
||||
`emoji` 를 입력한 뒤 검색어를 입력하세요:
|
||||
|
||||
```
|
||||
emoji 하트 → ❤️ 빨간 하트, 🧡 주황 하트, 💜 보라 하트 …
|
||||
emoji 웃음 → 😀 😂 🤣 …
|
||||
emoji thumbs → 👍 👎
|
||||
emoji → 자주 쓰는 이모지 30개 기본 표시
|
||||
```
|
||||
|
||||
Enter를 누르면 해당 이모지가 클립보드에 복사됩니다.
|
||||
|
||||
---
|
||||
|
||||
**Q. `→` 키를 눌러도 액션 메뉴가 열리지 않습니다.**
|
||||
|
||||
두 가지 조건을 모두 충족해야 합니다:
|
||||
1. 검색 결과 중 파일 또는 앱 항목이 선택되어 있어야 합니다 (URL, 스니펫, 계산기 결과 불가)
|
||||
2. 입력 커서가 텍스트의 **맨 끝**에 위치해 있어야 합니다 (`End` 키로 이동 후 시도)
|
||||
|
||||
---
|
||||
|
||||
**Q. 플러그인을 추가하려면 어떻게 하나요?**
|
||||
|
||||
DLL 플러그인은 `IActionHandler` 인터페이스를 구현한 후 트레이 → 설정 → (settings.json의 `plugins` 배열)에 경로를 등록합니다. 등록 후 트레이 → 플러그인 재로드를 클릭하면 즉시 적용됩니다.
|
||||
|
||||
---
|
||||
|
||||
**Q. `cap` 명령어를 다른 이름으로 바꾸려면?**
|
||||
|
||||
설정(`Ctrl+,`) → **캡처 탭** → "캡처 프리픽스" 입력란에 원하는 단어를 입력한 뒤 저장합니다. 예) `sc` → `sc screen`, `sc window`.
|
||||
|
||||
---
|
||||
|
||||
**Q. 잠금 해제 알림이 너무 자주 나타납니다.**
|
||||
|
||||
설정(`Ctrl+,`) → **알림 탭** → "표시 간격"을 더 긴 시간(2시간 또는 4시간)으로 변경하세요.
|
||||
|
||||
---
|
||||
|
||||
**Q. `*` 입력이 `info`와 같은 건가요?**
|
||||
|
||||
네, `*` 단독 입력 또는 `* ip`, `* battery`처럼 사용하면 `info`, `info ip`와 완전히 동일하게 동작합니다.
|
||||
|
||||
---
|
||||
|
||||
**Q. `help`는 어떻게 사용하나요?**
|
||||
|
||||
- `help` → 전체 기능 목록 창 열기
|
||||
- `help 계산` → 계산 관련 명령어만 필터
|
||||
- `help clip` → 클립보드 관련 명령어만 필터
|
||||
- 항목 선택 후 `Enter` → 해당 예시를 클립보드에 복사
|
||||
|
||||
---
|
||||
|
||||
**Q. 설정이나 히스토리 파일은 어디에 저장되나요?**
|
||||
|
||||
모든 데이터는 `%APPDATA%\AxCommander\` 폴더에 저장됩니다. EXE 파일 옆에는 아무것도 생성되지 않으므로 USB나 네트워크 드라이브에서 실행해도 깨끗합니다.
|
||||
|
||||
| 파일 | 설명 | 자동 삭제 |
|
||||
|------|------|----------|
|
||||
| `settings.json` | 전체 설정 | 수동 |
|
||||
| `clipboard_history.dat` | 클립보드 히스토리 (DPAPI 암호화) | 최대 개수 제한 |
|
||||
| `logs/app-*.log` | 일별 로그 | **14일** 후 자동 삭제 |
|
||||
| `stats/*.json` | 일별 사용 통계 | **30일** 후 자동 삭제 |
|
||||
| `favorites.json` | 즐겨찾기 | 수동 |
|
||||
| `routines.json` | 루틴 정의 | 수동 |
|
||||
| `notes.txt` | 빠른 메모 | 수동 (`note clear`로 삭제) |
|
||||
|
||||
---
|
||||
|
||||
*AX Commander — 사내 전용 프로그램*
|
||||
30
docs/claw-code-parity-plan.md
Normal file
30
docs/claw-code-parity-plan.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Claw Code Parity Plan (Rewritten)
|
||||
|
||||
## Scope
|
||||
- Align AX Copilot with claw-code quality for loop reliability, permission/hook behavior, and session durability.
|
||||
|
||||
## Preserved History (Summary)
|
||||
- Core loop guards and post-tool verification gates are already partially implemented.
|
||||
- Plan Mode, parallel tool execution, and unknown-tool recovery are in place.
|
||||
- Session restore hardening is ongoing.
|
||||
|
||||
## Execution Tracks
|
||||
1. Hook contract parity
|
||||
- Structured hook output support (`updatedInput`, `updatedPermissions`, `additionalContext`).
|
||||
- Runtime gating through settings toggles.
|
||||
|
||||
2. Session/state parity
|
||||
- Deterministic run resume rules.
|
||||
- Stable jsonl event schema + replay compatibility.
|
||||
|
||||
3. Recovery parity
|
||||
- Failure-type classification and standardized retry guidance.
|
||||
- Reduced repeated wrong-tool loops.
|
||||
|
||||
4. Completion parity
|
||||
- Evidence-based finalization criteria for code/document tasks.
|
||||
|
||||
## Done Criteria
|
||||
- Internal parity scenarios pass target threshold.
|
||||
- Resume/replay failures: zero.
|
||||
- `dotnet build` warnings/errors: zero.
|
||||
244
docs/generate_blog.js
Normal file
244
docs/generate_blog.js
Normal file
@@ -0,0 +1,244 @@
|
||||
const fs = require("fs");
|
||||
const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
|
||||
Header, Footer, AlignmentType, LevelFormat, HeadingLevel,
|
||||
BorderStyle, WidthType, ShadingType, PageNumber, PageBreak,
|
||||
TabStopType, TabStopPosition } = require("docx");
|
||||
|
||||
const border = { style: BorderStyle.SINGLE, size: 1, color: "D0D0D0" };
|
||||
const borders = { top: border, bottom: border, left: border, right: border };
|
||||
const cellMargins = { top: 80, bottom: 80, left: 120, right: 120 };
|
||||
|
||||
function h1(text) {
|
||||
return new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(text)] });
|
||||
}
|
||||
function h2(text) {
|
||||
return new Paragraph({ heading: HeadingLevel.HEADING_2, children: [new TextRun(text)] });
|
||||
}
|
||||
function h3(text) {
|
||||
return new Paragraph({ heading: HeadingLevel.HEADING_3, children: [new TextRun(text)] });
|
||||
}
|
||||
function p(text, opts = {}) {
|
||||
return new Paragraph({ spacing: { after: 120 }, children: [new TextRun({ text, ...opts })] });
|
||||
}
|
||||
function bold(text) {
|
||||
return new TextRun({ text, bold: true });
|
||||
}
|
||||
function para(...runs) {
|
||||
return new Paragraph({ spacing: { after: 120 }, children: runs });
|
||||
}
|
||||
function bullet(text, ref = "bullets") {
|
||||
return new Paragraph({ numbering: { reference: ref, level: 0 }, spacing: { after: 60 },
|
||||
children: [new TextRun(text)] });
|
||||
}
|
||||
function bulletBold(label, desc) {
|
||||
return new Paragraph({ numbering: { reference: "bullets", level: 0 }, spacing: { after: 60 },
|
||||
children: [new TextRun({ text: label, bold: true }), new TextRun(` ${desc}`)] });
|
||||
}
|
||||
|
||||
function featureTable(rows) {
|
||||
const colW = [1800, 2400, 5160];
|
||||
return new Table({
|
||||
width: { size: 9360, type: WidthType.DXA },
|
||||
columnWidths: colW,
|
||||
rows: [
|
||||
new TableRow({ children: ["Category", "Prefix", "Description"].map((t, i) =>
|
||||
new TableCell({ borders, width: { size: colW[i], type: WidthType.DXA }, margins: cellMargins,
|
||||
shading: { fill: "2E3A8C", type: ShadingType.CLEAR },
|
||||
children: [new Paragraph({ children: [new TextRun({ text: t, bold: true, color: "FFFFFF", font: "Malgun Gothic", size: 20 })] })] }))
|
||||
}),
|
||||
...rows.map(([cat, prefix, desc]) =>
|
||||
new TableRow({ children: [cat, prefix, desc].map((t, i) =>
|
||||
new TableCell({ borders, width: { size: colW[i], type: WidthType.DXA }, margins: cellMargins,
|
||||
children: [new Paragraph({ children: [new TextRun({ text: t, font: "Malgun Gothic", size: 20, ...(i === 1 ? { font: "Consolas" } : {}) })] })] }))
|
||||
})
|
||||
)
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
const doc = new Document({
|
||||
styles: {
|
||||
default: { document: { run: { font: "Malgun Gothic", size: 22 } } },
|
||||
paragraphStyles: [
|
||||
{ id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
|
||||
run: { size: 36, bold: true, font: "Malgun Gothic", color: "1A1B2E" },
|
||||
paragraph: { spacing: { before: 360, after: 200 }, outlineLevel: 0 } },
|
||||
{ id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
|
||||
run: { size: 28, bold: true, font: "Malgun Gothic", color: "2E3A8C" },
|
||||
paragraph: { spacing: { before: 280, after: 160 }, outlineLevel: 1 } },
|
||||
{ id: "Heading3", name: "Heading 3", basedOn: "Normal", next: "Normal", quickFormat: true,
|
||||
run: { size: 24, bold: true, font: "Malgun Gothic", color: "4B5EFC" },
|
||||
paragraph: { spacing: { before: 200, after: 120 }, outlineLevel: 2 } },
|
||||
]
|
||||
},
|
||||
numbering: {
|
||||
config: [
|
||||
{ reference: "bullets",
|
||||
levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022", alignment: AlignmentType.LEFT,
|
||||
style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
|
||||
{ reference: "numbers",
|
||||
levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT,
|
||||
style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
|
||||
]
|
||||
},
|
||||
sections: [{
|
||||
properties: {
|
||||
page: {
|
||||
size: { width: 11906, height: 16838 },
|
||||
margin: { top: 1440, right: 1260, bottom: 1440, left: 1260 }
|
||||
}
|
||||
},
|
||||
headers: {
|
||||
default: new Header({ children: [
|
||||
new Paragraph({ children: [
|
||||
new TextRun({ text: "AX Commander \u2014 Blog Post", font: "Malgun Gothic", size: 16, color: "999999" })
|
||||
], alignment: AlignmentType.RIGHT })
|
||||
]})
|
||||
},
|
||||
footers: {
|
||||
default: new Footer({ children: [
|
||||
new Paragraph({ alignment: AlignmentType.CENTER, children: [
|
||||
new TextRun({ text: "Page ", font: "Malgun Gothic", size: 16, color: "999999" }),
|
||||
new TextRun({ children: [PageNumber.CURRENT], font: "Malgun Gothic", size: 16, color: "999999" })
|
||||
]})
|
||||
]})
|
||||
},
|
||||
children: [
|
||||
|
||||
// ??? ??댄? ???
|
||||
new Paragraph({ spacing: { after: 80 }, alignment: AlignmentType.CENTER, children: [
|
||||
new TextRun({ text: "AX Commander", font: "Malgun Gothic", size: 48, bold: true, color: "1A1B2E" })
|
||||
]}),
|
||||
new Paragraph({ spacing: { after: 40 }, alignment: AlignmentType.CENTER,
|
||||
border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: "4B5EFC", space: 8 } },
|
||||
children: [
|
||||
new TextRun({ text: "\ud0a4\ubcf4\ub4dc \ud558\ub098\ub85c \ubaa8\ub4e0 \uc5c5\ubb34\ub97c \uc81c\uc5b4\ud558\ub294 \uc0ac\ub0b4 \uc804\uc6a9 \ub7f0\ucc98", font: "Malgun Gothic", size: 26, color: "555577" })
|
||||
]}),
|
||||
new Paragraph({ spacing: { after: 300 }, alignment: AlignmentType.CENTER, children: [
|
||||
new TextRun({ text: "\ubc31\uc2b9\uc7ac \u00b7 AX\uc5f0\uad6c\uc18c AI\ud300 \u00b7 SW Architect", font: "Malgun Gothic", size: 20, color: "888899" })
|
||||
]}),
|
||||
|
||||
// ??? 1. ?쒕Ц ???
|
||||
h1("1. \uc65c \ub9cc\ub4e4\uc5c8\ub294\uac00"),
|
||||
p("\uc5c5\ubb34 \uc911 \uac00\uc7a5 \ub9ce\uc774 \ubc18\ubcf5\ud558\ub294 \ub3d9\uc791\uc774 \ubb50\ub0d0\uace0 \ubb3c\uc73c\uba74, \ub300\ubd80\ubd84\uc758 \uc0ac\ubb34\uc9c1 \uc9c1\uc6d0\uc774 \uc774\ub807\uac8c \ub300\ub2f5\ud569\ub2c8\ub2e4:"),
|
||||
bullet("\uc571\uc744 \ucc3e\uc544\uc11c \uc2e4\ud589\ud558\uae30"),
|
||||
bullet("\ud30c\uc77c\uc744 \ucc3e\uc544\uc11c \uc5f4\uae30"),
|
||||
bullet("\ud074\ub9bd\ubcf4\ub4dc\uc5d0\uc11c \ubcf5\uc0ac\ud55c \ub0b4\uc6a9 \ub2e4\uc2dc \ucc3e\uae30"),
|
||||
bullet("\uacc4\uc0b0\uae30 \uc5f4\uace0 \uac04\ub2e8\ud55c \uacc4\uc0b0\ud558\uae30"),
|
||||
p("\uc774 \ubaa8\ub4e0 \ub3d9\uc791\uc5d0 \ub9c8\uc6b0\uc2a4\ub97c \ub4e4\uace0, \ud0d0\uc0c9\uae30\ub97c \uc5f4\uace0, \ud074\ub9ad\ud558\uace0\u2026 \ud0a4\ubcf4\ub4dc\uc5d0\uc11c \uc190\uc744 \ub5bc \uc218\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."),
|
||||
para(bold("AX Commander"), new TextRun("\ub294 \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud569\ub2c8\ub2e4. Alt+Space \ud55c \ubc88\uc73c\ub85c \ubaa8\ub4e0 \uac83\uc744 \ud0a4\ubcf4\ub4dc\ub85c \uc81c\uc5b4\ud560 \uc218 \uc788\ub294 \ub7f0\ucc98\uc785\ub2c8\ub2e4.")),
|
||||
p("\ud2b9\ud788 \uc774 \ud504\ub85c\uc81d\ud2b8\ub294 LLM(Sigmoid)\uacfc \ud568\uaed8 \uae30\ud68d\ubd80\ud130 \uad6c\ud604\uae4c\uc9c0 \uc9c4\ud589\ud55c \uc0ac\ub840\ub85c, AI\uc640 \ud611\uc5c5\ud558\ub294 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uac1c\ubc1c\uc758 \uc2e4\uc81c \uacbd\ud5d8\uc744 \ub2f4\uace0 \uc788\uc2b5\ub2c8\ub2e4."),
|
||||
|
||||
new Paragraph({ children: [new PageBreak()] }),
|
||||
|
||||
// ??? 2. AX Commander?? ???
|
||||
h1("2. AX Commander\ub780?"),
|
||||
para(new TextRun({ text: "Alt+Space", bold: true, font: "Consolas" }), new TextRun("\ub97c \ub204\ub974\uba74 \ud654\uba74 \uc0c1\ub2e8\uc5d0 \uae54\ub054\ud55c \ub7f0\ucc98 \ucc3d\uc774 \ub098\ud0c0\ub0a9\ub2c8\ub2e4. \uc5ec\uae30\uc5d0 \uc6d0\ud558\ub294 \uba85\ub839\uc744 \uc785\ub825\ud558\uba74 \ub429\ub2c8\ub2e4.")),
|
||||
bullet("\uc571 \uc774\ub984\uc744 \uce58\uba74 \uc571\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4"),
|
||||
bullet("= \ub97c \uce58\uba74 \uacc4\uc0b0\uae30\uac00 \ub429\ub2c8\ub2e4"),
|
||||
bullet("# \uc744 \uce58\uba74 \ud074\ub9bd\ubcf4\ub4dc \ud788\uc2a4\ud1a0\ub9ac\uac00 \ub098\ud0c0\ub0a9\ub2c8\ub2e4"),
|
||||
bullet("cap screen \uc744 \uce58\uba74 \ud654\uba74\uc774 \ucea1\ucc98\ub429\ub2c8\ub2e4"),
|
||||
bullet("win chrome \uc744 \uce58\uba74 \ud06c\ub86c \ucc3d\uc73c\ub85c \uc989\uc2dc \uc804\ud658\ub429\ub2c8\ub2e4"),
|
||||
p("\ud504\ub9ac\ud53d\uc2a4(\uc811\ub450\uc5b4) \uae30\ubc18\uc73c\ub85c 40\uac1c \uc774\uc0c1\uc758 \uba85\ub839\uc5b4\ub97c \uc9c0\uc6d0\ud558\uba70, \ud55c\uad6d\uc5b4 \ucd08\uc131 \uac80\uc0c9\ub3c4 \ub429\ub2c8\ub2e4 (\u3145\u3137 \u2192 \uc124\uc815)."),
|
||||
|
||||
// ??? 3. ?듭떖 湲곕뒫 ???
|
||||
h1("3. \ud575\uc2ec \uae30\ub2a5 \uc18c\uac1c"),
|
||||
p("AX Commander\ub294 \ub2e8\uc21c\ud55c \uc571 \ub7f0\ucc98\uac00 \uc544\ub2d9\ub2c8\ub2e4. \uc544\ub798\ub294 \uce74\ud14c\uace0\ub9ac\ubcc4 \uc8fc\uc694 \uae30\ub2a5\uc785\ub2c8\ub2e4."),
|
||||
|
||||
h3("\uac80\uc0c9"),
|
||||
bullet("\ud37c\uc9c0 \uac80\uc0c9: \uc571/\ud30c\uc77c\uba85\uc744 \uc77c\ubd80\ub9cc \uc785\ub825\ud574\ub3c4 \ucc3e\uc544\uc90c"),
|
||||
bullet("\ud55c\uad6d\uc5b4 \ucd08\uc131: \u3147\u314e\u3134 \u2192 \uc544\ud55c\uae00 \uac80\uc0c9"),
|
||||
bullet("\uc2e4\ud589 \ube48\ub3c4 \ud559\uc2b5: \uc790\uc8fc \uc4f0\ub294 \uc571\uc774 \uc0c1\ub2e8\uc73c\ub85c"),
|
||||
|
||||
h3("\uacc4\uc0b0 \u00b7 \ubcc0\ud658"),
|
||||
bullet("= sqrt(144), = 0xFF + 1, = 100km in miles"),
|
||||
bullet("= 100 USD to KRW (\uc2e4\uc2dc\uac04 \ud658\uc728)"),
|
||||
bullet("date +30d (30\uc77c \ud6c4 \ub0a0\uc9dc), date unix (\ud0c0\uc784\uc2a4\ud0ec\ud504)"),
|
||||
|
||||
h3("\ud074\ub9bd\ubcf4\ub4dc"),
|
||||
bullet("# \ud788\uc2a4\ud1a0\ub9ac: \ubcf5\uc0ac \uc774\ub825 \uac80\uc0c9 \u00b7 \uc7ac\uc0ac\uc6a9 \u00b7 \ubcd1\ud569"),
|
||||
bullet("$ \ubcc0\ud658: JSON \uc815\ub82c, Base64, URL \uc778\ucf54\ub529 \ub4f1 12\uc885"),
|
||||
bullet("pipe \ud30c\uc774\ud504\ub77c\uc778: pipe upper > trim > b64e"),
|
||||
bullet("batch \uc77c\uad04 \ucc98\ub9ac: \uc904\ubc88\ud638, \uc815\ub82c, \uc911\ubcf5\uc81c\uac70, \ucebc\ub2f8\uc138 \uac10\uc2f8\uae30"),
|
||||
bullet("DPAPI \uc554\ud638\ud654: \ud074\ub9bd\ubcf4\ub4dc \ud788\uc2a4\ud1a0\ub9ac \ud30c\uc77c\uc774 \ud604\uc7ac Windows \uacc4\uc815\uc5d0\uc11c\ub9cc \ubcf5\ud638\ud654 \uac00\ub2a5"),
|
||||
|
||||
h3("\uac1c\ubc1c\uc790 \ub3c4\uad6c"),
|
||||
bullet("json format / minify / validate"),
|
||||
bullet("encode base64 / url / sha256"),
|
||||
bullet("color #FF5500 \u2192 HEX/RGB/HSL/HSV 4\uc885 \ubcc0\ud658"),
|
||||
bullet("port 3000 \u2192 \uc810\uc720 \ud504\ub85c\uc138\uc2a4 \ud655\uc778"),
|
||||
bullet("env PATH \u2192 \ud658\uacbd\ubcc0\uc218 \uac80\uc0c9"),
|
||||
bullet("pick \u2192 \uc2a4\ud3ec\uc774\ub4dc\ub85c \ud654\uba74 \uc0c9\uc0c1 HEX \ucf54\ub4dc \ucd94\ucd9c"),
|
||||
|
||||
h3("\ud654\uba74 \ucea1\ucc98"),
|
||||
bullet("cap screen / window / scroll / region"),
|
||||
bullet("\uc2a4\ud3ec\uc774\ub4dc(pick): \ub3cb\ubcf4\uae30 + \uc2e4\uc2dc\uac04 HEX \ud45c\uc2dc + 5\ucd08 \uacb0\uacfc\ucc3d"),
|
||||
bullet("\uae00\ub85c\ubc8c \ub2e8\ucd95\ud0a4(PrintScreen \ub4f1) \uc9c0\uc6d0"),
|
||||
bullet("\ubcf4\uc548: \ud074\ub9bd\ubcf4\ub4dc\uc5d0\ub9cc \ubcf5\uc0ac (\ud30c\uc77c \uc800\uc7a5 \uae30\ub2a5 \uc5c6\uc74c)"),
|
||||
|
||||
h3("\ucc3d \uad00\ub9ac \u00b7 \uc2dc\uc2a4\ud15c"),
|
||||
bullet("! save/restore: \ucc3d \ubc30\uce58 \uc2a4\ub0c5\uc0f7"),
|
||||
bullet("snap left/right/full: \ucc3d \ubd84\ud560 \ub808\uc774\uc544\uc6c3"),
|
||||
bullet("win: \uc5f4\ub9b0 \ucc3d \uac80\uc0c9 \u2192 \uc989\uc2dc \uc804\ud658 (Alt+Tab \ub300\uccb4)"),
|
||||
bullet("/lock, /timer 5m, /alarm 14:30"),
|
||||
bullet("svc: Windows \uc11c\ube44\uc2a4 \uad00\ub9ac + \ud074\ub9bd\ubcf4\ub4dc \uac15\uc81c \uc7ac\uc2dc\uc791"),
|
||||
|
||||
h3("\uc5c5\ubb34 \uc790\ub3d9\ud654"),
|
||||
bullet("journal: \uc624\ub298 \uc0ac\uc6a9\ud55c \uc571/\uba85\ub839\uc5b4 \uae30\ubc18 \uc5c5\ubb34 \uc77c\uc9c0 \ub9c8\ud06c\ub2e4\uc6b4 \uc790\ub3d9 \uc0dd\uc131"),
|
||||
bullet("routine: \ucd9c\uadfc/\ud1f4\uadfc \ub8e8\ud2f4 \ub4f1\ub85d \u2192 \ud55c \ubc88\uc5d0 \uc2e4\ud589"),
|
||||
bullet("scaffold: \ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354 \uad6c\uc870 \ud15c\ud50c\ub9bf \uc77c\uad04 \uc0dd\uc131"),
|
||||
|
||||
new Paragraph({ children: [new PageBreak()] }),
|
||||
|
||||
// ??? 4. 蹂댁븞 ???
|
||||
h1("4. \ubcf4\uc548 \u2014 \uc0ac\ub0b4 \uc804\uc6a9 \uc6d0\uce59"),
|
||||
p("AX Commander\ub294 \uc0ac\ub0b4 \uc804\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc73c\ub85c, \uc678\ubd80 \ub124\ud2b8\uc6cc\ud06c \ud1b5\uc2e0\uc744 \uc77c\uccb4 \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."),
|
||||
bullet("\uc678\ubd80 HTTP/HTTPS \ud638\ucd9c \uae08\uc9c0 \u2014 HttpClient, WebClient \ub4f1 \uc0ac\uc6a9 \ubd88\uac00"),
|
||||
bullet("\uc678\ubd80 SDK \uc5f0\ub3d9 \uae08\uc9c0 \u2014 \ud074\ub77c\uc6b0\ub4dc AI, SaaS \ub77c\uc774\ube0c\ub7ec\ub9ac \ubd88\uac00"),
|
||||
bullet("\ud074\ub9bd\ubcf4\ub4dc \ud788\uc2a4\ud1a0\ub9ac \u2014 Windows DPAPI \uc554\ud638\ud654 (CurrentUser \ubc94\uc704)"),
|
||||
bullet("\ud654\uba74 \ucea1\ucc98 \u2014 \ud074\ub9bd\ubcf4\ub4dc\uc5d0\ub9cc \ubcf5\uc0ac, \ud30c\uc77c \uc800\uc7a5 \uae30\ub2a5 \uc644\uc804 \uc81c\uac70"),
|
||||
bullet("\uc2dc\uc2a4\ud15c \uba85\ub839 \u2014 \uc7ac\uc2dc\uc791/\uc885\ub8cc \ub4f1 \uc704\ud5d8 \uba85\ub839 \uc2e4\ud589 \uc804 2\ub2e8\uacc4 \ud655\uc778 \ub2e4\uc774\uc5bc\ub85c\uadf8"),
|
||||
|
||||
// ??? 5. ?뚮쭏 ???
|
||||
h1("5. \ud14c\ub9c8 \uc2dc\uc2a4\ud15c"),
|
||||
p("9\uac1c \ub0b4\uc7a5 \ud14c\ub9c8(Dark, Light, OLED, Nord, Monokai, Catppuccin, Sepia, Alfred, Alfred Light) + \ucee4\uc2a4\ud140 \ud14c\ub9c8\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4."),
|
||||
bullet("\uac01 \ud14c\ub9c8\ub294 \uc0c9\uc0c1\ubfd0 \uc544\ub2c8\ub77c \ubaa8\uc11c\ub9ac \ub77c\uc6b4\ub529 \ube44\uc728\ub3c4 \ub2e4\ub985\ub2c8\ub2e4 (OLED\uac00 \uac00\uc7a5 \ub465\uae00\uace0, Monokai\uac00 \uac00\uc7a5 \uac01\uc9d0)"),
|
||||
bullet("\ucee4\uc2a4\ud140 \ud14c\ub9c8\ub294 14\uac1c \uc0c9\uc0c1 + \ubaa8\uc11c\ub9ac \ub77c\uc6b4\ub529 \uc2ac\ub77c\uc774\ub354\ub85c \uc790\uc720\ub86d\uac8c \ud3b8\uc9d1"),
|
||||
bullet("\ud2b8\ub808\uc774 \uba54\ub274\ub3c4 \ud604\uc7ac \ud14c\ub9c8\ub97c \uc790\ub3d9\uc73c\ub85c \ub530\ub77c\uac10"),
|
||||
|
||||
// ??? 6. 湲곗닠 ?ㅽ깮 ???
|
||||
h1("6. \uae30\uc220 \uc2a4\ud0dd"),
|
||||
bullet(".NET 8, WPF (UseWPF=true), WinForms (ColorDialog/FolderBrowser \ub4f1 \uc81c\ud55c\uc801 \uc0ac\uc6a9)"),
|
||||
bullet("P/Invoke: SetWindowPos, PrintWindow, GlobalMemoryStatusEx, EnumWindows, GetPixel \ub4f1 Windows API \uc9c1\uc811 \ud638\ucd9c"),
|
||||
bullet("\ub2e8\uc77c EXE \ubc30\ud3ec: Self-Contained + PublishSingleFile + IncludeNativeLibrariesForSelfExtract"),
|
||||
bullet("\ubcf4\uc548: DPAPI(System.Security.Cryptography.ProtectedData), HKCU \ub808\uc9c0\uc2a4\ud2b8\ub9ac"),
|
||||
bullet("\ud14c\uc2a4\ud2b8: xUnit 2.9.0 + FluentAssertions (57\uac1c \ub2e8\uc704 \ud14c\uc2a4\ud2b8)"),
|
||||
|
||||
// ??? 7. 留덈Т由????
|
||||
h1("7. \ub9c8\ubb34\ub9ac \u2014 LLM\uacfc \ud568\uaed8 \ub9cc\ub4e0 \ud504\ub85c\uc81d\ud2b8"),
|
||||
p("AX Commander\ub294 \uae30\ud68d\ubd80\ud130 \uad6c\ud604, \ud14c\uc2a4\ud2b8, \ubb38\uc11c\ud654\uae4c\uc9c0 LLM(Sigmoid)\uacfc \ud568\uaed8 \uc9c4\ud589\ud55c \ud504\ub85c\uc81d\ud2b8\uc785\ub2c8\ub2e4."),
|
||||
bullet("\uae30\ud68d: Alfred, Raycast \ub4f1 \uae30\uc874 \ub7f0\ucc98\uc758 \uc7a5\uc810\uc744 \ubd84\uc11d\ud558\uace0, \uc0ac\ub0b4 \ud658\uacbd\uc5d0 \ub9de\ub294 \uae30\ub2a5 \uc120\ubcc4"),
|
||||
bullet("\uad6c\ud604: WPF + P/Invoke \uae30\ubc18\uc73c\ub85c \uc678\ubd80 \uc758\uc874\uc131 \uc5c6\uc774 40\uac1c+ \uae30\ub2a5 \uad6c\ud604"),
|
||||
bullet("\uac80\uc218: \ucf54\ub4dc \ub9ac\ubdf0, \uc624\ub958 \ubd84\uc11d, \ubcf4\uc548 \uc810\uac80, \uc131\ub2a5 \ucd5c\uc801\ud654\ub97c LLM\uacfc \ud568\uaed8 \ubc18\ubcf5"),
|
||||
bullet("\ubb38\uc11c: \uac1c\ubc1c \ubb38\uc11c, \uc0ac\uc6a9\uc790 \ub9e4\ub274\uc5bc, \ube14\ub85c\uadf8 \uae00\uae4c\uc9c0 LLM\uc774 \uc791\uc131"),
|
||||
p(""),
|
||||
para(new TextRun({ text: "\uac1c\uc778\uc801\uc73c\ub85c \ub290\ub080 \uac83\uc740, LLM\uc740 \u2018\ucf54\ub4dc \uc0dd\uc131\uae30\u2019\uac00 \uc544\ub2c8\ub77c \u2018\ud568\uaed8 \uc0dd\uac01\ud558\ub294 \ub3d9\ub8cc\u2019\uc5d0 \uac00\uae5d\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4.", italics: true })),
|
||||
para(new TextRun({ text: "\u201c\uc774 \uae30\ub2a5\uc740 \uc774\ub807\uac8c \ud558\uba74 \uc5b4\ub5a0\ub0d0?\u201d \u201c\uc774 \ubd80\ubd84\uc740 \ubcf4\uc548 \ub9ac\uc2a4\ud06c\uac00 \uc788\uc5b4\u201d \u201c\uc0ac\uc6a9\uc790\uac00 \uc774\ub807\uac8c \uc4f0\uba74 \ubb38\uc81c\ub420 \uc218 \uc788\uc5b4\u201d \u2014 \uc774\ub7f0 \ud53c\ub4dc\ubc31\uc744 \uc8fc\uace0\ubc1b\uc73c\uba70 \ud504\ub85c\uc81d\ud2b8\ub97c \uc644\uc131\ud588\uc2b5\ub2c8\ub2e4.", italics: true })),
|
||||
p(""),
|
||||
p("AX Commander v1.0 \u2014 \ubaa8\ub4e0 \uc5c5\ubb34\ub97c \ud0a4\ubcf4\ub4dc \ud558\ub098\ub85c.", { bold: true }),
|
||||
|
||||
new Paragraph({ spacing: { before: 400 },
|
||||
border: { top: { style: BorderStyle.SINGLE, size: 2, color: "CCCCCC", space: 8 } },
|
||||
children: [
|
||||
new TextRun({ text: "\ubc31\uc2b9\uc7ac \u00b7 AX\uc5f0\uad6c\uc18c AI\ud300 \u00b7 SW Architect \u00b7 www.swarchitect.net", size: 18, color: "999999" })
|
||||
]
|
||||
}),
|
||||
]
|
||||
}]
|
||||
});
|
||||
|
||||
Packer.toBuffer(doc).then(buffer => {
|
||||
fs.writeFileSync("E:\\AX Commander\\docs\\AX_Commander_釉붾줈洹??뚭컻湲.docx", buffer);
|
||||
console.log("Blog post DOCX created successfully!");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user