diff --git a/.tools/agent_tool_files.txt b/.tools/agent_tool_files.txt new file mode 100644 index 0000000..1b97460 --- /dev/null +++ b/.tools/agent_tool_files.txt @@ -0,0 +1,75 @@ +Base64Tool.cs +BuildRunTool.cs +CheckpointTool.cs +ClipboardTool.cs +CodeReviewTool.cs +CodeSearchTool.cs +CronCreateTool.cs +CronDeleteTool.cs +CronListTool.cs +DataPivotTool.cs +DateTimeTool.cs +DevEnvDetectTool.cs +DiffPreviewTool.cs +DiffTool.cs +DocumentAssemblerTool.cs +DocumentPlannerTool.cs +DocumentReaderTool.cs +DocumentReviewTool.cs +EncodingTool.cs +EnterPlanModeTool.cs +EnterWorktreeTool.cs +EnvTool.cs +ExitPlanModeTool.cs +ExitWorktreeTool.cs +FileEditTool.cs +FileInfoTool.cs +FileManageTool.cs +FileReadTool.cs +FileWatchTool.cs +FileWriteTool.cs +FolderMapTool.cs +FormatConvertTool.cs +GitTool.cs +GlobTool.cs +GrepTool.cs +HashTool.cs +HttpTool.cs +IAgentTool.cs +ImageAnalyzeTool.cs +JsonTool.cs +LspTool.cs +MathTool.cs +McpListResourcesTool.cs +McpReadResourceTool.cs +McpTool.cs +MemoryTool.cs +MultiReadTool.cs +NotifyTool.cs +OpenExternalTool.cs +PlaybookTool.cs +ProcessTool.cs +ProjectRuleTool.cs +RegexTool.cs +SkillManagerTool.cs +SnippetRunnerTool.cs +SqlTool.cs +SubAgentTool.cs +SuggestActionsTool.cs +TaskCreateTool.cs +TaskGetTool.cs +TaskListTool.cs +TaskOutputTool.cs +TaskStopTool.cs +TaskTrackerTool.cs +TaskUpdateTool.cs +TeamCreateTool.cs +TeamDeleteTool.cs +TemplateRenderTool.cs +TestLoopTool.cs +TextSummarizeTool.cs +TodoWriteTool.cs +ToolSearchTool.cs +UserAskTool.cs +XmlTool.cs +ZipTool.cs diff --git a/.tools/claw_doc_slash.txt b/.tools/claw_doc_slash.txt new file mode 100644 index 0000000..4f3caf2 --- /dev/null +++ b/.tools/claw_doc_slash.txt @@ -0,0 +1,216 @@ +/absolute +/accordion +/accordiongroup +/agent-memory +/agent-memory-local +/allowed-tools +/api +/api-conventions +/api-key +/architecture +/authentication +/await +/bash +/bashclassifier +/bashpermissions +/bashtool +/bin +/blob +/block +/c +/card +/cardgroup +/cd +/changelog +/ci-mcp +/ci-tools +/claude +/claude-code +/claude-config +/claude-debug +/claude-event +/claudemd +/claw-code +/clear +/cli +/cli-flags +/cloud +/command +/commands +/commit +/compact +/company-standards +/components +/concepts +/config +/configs +/configuration +/console +/container +/conventions +/core +/cost +/credential +/credentials +/data +/database +/db +/db-tools +/deny +/deploy +/deployment +/describe +/dev +/developer +/dir +/disable +/docs +/en +/en-us +/environ +/etc +/exit +/expandable +/extra +/fail +/fetch +/filename +/file-operations +/fix-issue +/fnm +/generated +/get-claude-key +/github +/guides +/handlers +/help +/home +/hook +/hooks +/hooks-reference +/how-it-works +/in +/index +/info +/init +/ink +/install +/installation +/instructkr +/library +/libs +/lint +/lint-changed-file +/llms +/local +/local-tools +/logger +/login +/logout +/main +/max +/mcp +/mcp-server +/mcp-server-postgres +/mcp-servers +/memoize +/memory +/memory-context +/mintlify +/mnt +/model +/modelcontextprotocol +/monorepo +/multi-agent +/my +/my-mcp-config +/my-memory-store +/my-proxy +/myrole +/my-server +/my-service +/my-skill +/new +/new-component +/nodejs +/non-interactive +/note +/null +/nvm +/nvm-sh +/off +/opt +/otel +/output +/paramfield +/path +/permissions +/permissions-api +/plan +/preferences +/proc +/project +/projects +/prompt +/quickstart +/raw +/reference +/relative +/reset +/responsefield +/resume +/review +/rules +/schemas +/schniz +/sdk +/search +/server-filesystem +/server-postgres +/services +/session +/settings +/sh +/shared +/shouc001 +/skill +/skill-name +/skills +/slash-commands +/some-lib +/some-org +/sse +/standup +/stderr +/stdout +/step +/steps +/style-guide +/sudo +/sudoers +/tab +/tabs +/team-settings +/test +/third-party +/time +/tip +/tmp +/to +/tools +/typescript +/user +/usr +/utils +/v0 +/v1 +/v4 +/vendor +/verify +/vineetagarwal-code +/vineetagarwal-code-claude-code +/warning +/web +/x +/you +/zsh diff --git a/.tools/current_slash.txt b/.tools/current_slash.txt new file mode 100644 index 0000000..306d2f7 --- /dev/null +++ b/.tools/current_slash.txt @@ -0,0 +1,79 @@ +/add-dir +/advisor +/agents +/branch +/btw +/build +/chrome +/clear +/color +/compact +/config +/context +/copy +/cost +/desktop +/diff +/doctor +/effort +/exit +/explain +/export +/fast +/feedback +/files +/fix +/heapdump +/help +/hooks +/ide +/init +/init-verifiers +/install-github-app +/install-slack-app +/keybindings +/login +/logout +/mcp +/memory +/mobile +/model +/output-style +/passes +/permissions +/plan +/plugin +/pr +/pr-comments +/privacy-settings +/rate-limit-options +/release-notes +/reload-plugins +/remote-env +/rename +/resume +/review +/rewind +/sandbox-toggle +/search +/security-review +/session +/skills +/stats +/status +/statusline +/stickers +/structure +/summary +/tag +/tasks +/terminal-setup +/test +/theme +/thinkback +/thinkback-play +/translate +/ultrareview +/upgrade +/usage +/vim diff --git a/.tools/current_tools.txt b/.tools/current_tools.txt new file mode 100644 index 0000000..1b97460 --- /dev/null +++ b/.tools/current_tools.txt @@ -0,0 +1,75 @@ +Base64Tool.cs +BuildRunTool.cs +CheckpointTool.cs +ClipboardTool.cs +CodeReviewTool.cs +CodeSearchTool.cs +CronCreateTool.cs +CronDeleteTool.cs +CronListTool.cs +DataPivotTool.cs +DateTimeTool.cs +DevEnvDetectTool.cs +DiffPreviewTool.cs +DiffTool.cs +DocumentAssemblerTool.cs +DocumentPlannerTool.cs +DocumentReaderTool.cs +DocumentReviewTool.cs +EncodingTool.cs +EnterPlanModeTool.cs +EnterWorktreeTool.cs +EnvTool.cs +ExitPlanModeTool.cs +ExitWorktreeTool.cs +FileEditTool.cs +FileInfoTool.cs +FileManageTool.cs +FileReadTool.cs +FileWatchTool.cs +FileWriteTool.cs +FolderMapTool.cs +FormatConvertTool.cs +GitTool.cs +GlobTool.cs +GrepTool.cs +HashTool.cs +HttpTool.cs +IAgentTool.cs +ImageAnalyzeTool.cs +JsonTool.cs +LspTool.cs +MathTool.cs +McpListResourcesTool.cs +McpReadResourceTool.cs +McpTool.cs +MemoryTool.cs +MultiReadTool.cs +NotifyTool.cs +OpenExternalTool.cs +PlaybookTool.cs +ProcessTool.cs +ProjectRuleTool.cs +RegexTool.cs +SkillManagerTool.cs +SnippetRunnerTool.cs +SqlTool.cs +SubAgentTool.cs +SuggestActionsTool.cs +TaskCreateTool.cs +TaskGetTool.cs +TaskListTool.cs +TaskOutputTool.cs +TaskStopTool.cs +TaskTrackerTool.cs +TaskUpdateTool.cs +TeamCreateTool.cs +TeamDeleteTool.cs +TemplateRenderTool.cs +TestLoopTool.cs +TextSummarizeTool.cs +TodoWriteTool.cs +ToolSearchTool.cs +UserAskTool.cs +XmlTool.cs +ZipTool.cs diff --git a/build_output.txt b/build_output.txt deleted file mode 100644 index c5242cd..0000000 --- a/build_output.txt +++ /dev/null @@ -1,14 +0,0 @@ - 복원할 프로젝트를 확인하는 중... - E:\AX Copilot\src\AxCopilot\AxCopilot.csproj을(를) 1.41초 동안 복원했습니다. - E:\AX Copilot\src\AxCopilot.Tests\AxCopilot.Tests.csproj을(를) 1.41초 동안 복원했습니다. - 복원할 4 프로젝트의 2이(가) 최신 상태입니다. - AxCopilot.SDK -> E:\AX Copilot\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.dll - AxCopilot -> E:\AX Copilot\src\AxCopilot\bin\Debug\net8.0-windows\win-x64\AxCopilot.dll - AxKeyEncryptor -> E:\AX Copilot\src\AxKeyEncryptor\bin\Debug\net8.0-windows\AxKeyEncryptor.dll - AxCopilot.Tests -> E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.dll - -빌드했습니다. - 경고 0개 - 오류 0개 - -경과 시간: 00:00:07.34 diff --git a/dist/AxCopilot/Assets/guide_dev.enc b/dist/AxCopilot/Assets/guide_dev.enc index e798fe5..86e411f 100644 Binary files a/dist/AxCopilot/Assets/guide_dev.enc and b/dist/AxCopilot/Assets/guide_dev.enc differ diff --git a/dist/AxCopilot/Assets/guide_user.enc b/dist/AxCopilot/Assets/guide_user.enc index d1264f8..1f3f25b 100644 Binary files a/dist/AxCopilot/Assets/guide_user.enc and b/dist/AxCopilot/Assets/guide_user.enc differ diff --git a/dist/AxCopilot/AxCopilot.SDK.dll b/dist/AxCopilot/AxCopilot.SDK.dll index c1fcb64..bb039f0 100644 Binary files a/dist/AxCopilot/AxCopilot.SDK.dll and b/dist/AxCopilot/AxCopilot.SDK.dll differ diff --git a/dist/AxCopilot/AxCopilot.deps.json b/dist/AxCopilot/AxCopilot.deps.json index b6901f3..90e952a 100644 --- a/dist/AxCopilot/AxCopilot.deps.json +++ b/dist/AxCopilot/AxCopilot.deps.json @@ -7,7 +7,7 @@ "targets": { ".NETCoreApp,Version=v8.0": {}, ".NETCoreApp,Version=v8.0/win-x64": { - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "dependencies": { "AxCopilot.SDK": "1.0.0", "DocumentFormat.OpenXml": "3.2.0", @@ -1161,7 +1161,7 @@ } }, "libraries": { - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "type": "project", "serviceable": false, "sha512": "" diff --git a/dist/AxCopilot/AxCopilot.dll b/dist/AxCopilot/AxCopilot.dll index d09d67f..bf651e3 100644 Binary files a/dist/AxCopilot/AxCopilot.dll and b/dist/AxCopilot/AxCopilot.dll differ diff --git a/dist/AxCopilot/AxCopilot.exe b/dist/AxCopilot/AxCopilot.exe index 96dbd2c..08b5f28 100644 Binary files a/dist/AxCopilot/AxCopilot.exe and b/dist/AxCopilot/AxCopilot.exe differ diff --git a/dist/AxCopilot/skills/adr-writer.skill.md b/dist/AxCopilot/skills/adr-writer.skill.md index e746d27..1d2feef 100644 --- a/dist/AxCopilot/skills/adr-writer.skill.md +++ b/dist/AxCopilot/skills/adr-writer.skill.md @@ -1,4 +1,4 @@ ---- +--- name: adr-writer label: 아키텍처 결정 기록 (ADR) description: 아키텍처 결정 사항을 표준 ADR 형식으로 문서화합니다. diff --git a/dist/AxCopilot/skills/api-docs.skill.md b/dist/AxCopilot/skills/api-docs.skill.md index dc8c12e..0e72bde 100644 --- a/dist/AxCopilot/skills/api-docs.skill.md +++ b/dist/AxCopilot/skills/api-docs.skill.md @@ -1,8 +1,14 @@ ---- +--- name: api-docs label: API 문서 생성 description: 코드에서 API 엔드포인트를 분석하여 마크다운/HTML API 문서를 자동 생성합니다. icon: \uE8A1 +allowed-tools: + - folder_map + - grep + - file_read + - file_write + - search_codebase tabs: code --- @@ -16,9 +22,9 @@ tabs: code ## 작업 절차 1. `folder_map` — 프로젝트 구조 파악 -2. `grep_tool` — API 엔드포인트 패턴 검색 (`[HttpGet]`, `@GetMapping`, `router.get`, `@app.route` 등) +2. `grep` — API 엔드포인트 패턴 검색 (`[HttpGet]`, `@GetMapping`, `router.get`, `@app.route` 등) 3. `file_read` — 컨트롤러/라우터 파일 분석 -4. `grep_tool` — 요청/응답 모델 클래스 검색 +4. `grep` — 요청/응답 모델 클래스 검색 5. `file_read` — 모델 구조 분석 6. `file_write` — API 문서 생성 diff --git a/dist/AxCopilot/skills/batch-rename.skill.md b/dist/AxCopilot/skills/batch-rename.skill.md index 0598dbc..b81115e 100644 --- a/dist/AxCopilot/skills/batch-rename.skill.md +++ b/dist/AxCopilot/skills/batch-rename.skill.md @@ -1,4 +1,4 @@ ---- +--- name: batch-rename label: 파일 일괄 이름 변경 description: 패턴 매칭, 번호 붙이기, 날짜 추가 등 파일 이름을 일괄 변경합니다. diff --git a/dist/AxCopilot/skills/changelog.skill.md b/dist/AxCopilot/skills/changelog.skill.md index a40539b..bcd4195 100644 --- a/dist/AxCopilot/skills/changelog.skill.md +++ b/dist/AxCopilot/skills/changelog.skill.md @@ -1,4 +1,4 @@ ---- +--- name: changelog label: 변경 이력 / 릴리즈 노트 description: Git 커밋 이력에서 자동으로 변경 이력과 릴리즈 노트를 생성합니다. diff --git a/dist/AxCopilot/skills/code-scaffold.skill.md b/dist/AxCopilot/skills/code-scaffold.skill.md index 35e4a74..d5e12e0 100644 --- a/dist/AxCopilot/skills/code-scaffold.skill.md +++ b/dist/AxCopilot/skills/code-scaffold.skill.md @@ -1,8 +1,14 @@ ---- +--- name: code-scaffold label: 코드 스캐폴딩 description: 프로젝트 구조를 분석하고 새 기능의 코드 뼈대를 자동 생성합니다. icon: \uE943 +allowed-tools: + - folder_map + - file_read + - grep + - file_write + - search_codebase tabs: code --- @@ -11,7 +17,7 @@ tabs: code 다음 도구를 사용하세요: 1. folder_map — 프로젝트 구조 파악 2. file_read — 기존 코드 패턴 분석 -3. grep_tool — 코딩 컨벤션 확인 +3. grep — 코딩 컨벤션 확인 4. file_write — 새 파일 생성 작업 순서: diff --git a/dist/AxCopilot/skills/commit-review.skill.md b/dist/AxCopilot/skills/commit-review.skill.md index 0f8663b..ce3f9c5 100644 --- a/dist/AxCopilot/skills/commit-review.skill.md +++ b/dist/AxCopilot/skills/commit-review.skill.md @@ -1,17 +1,22 @@ ---- +--- name: commit-review label: 커밋 메시지 리뷰 description: Git 커밋 메시지를 Conventional Commits 기준으로 검토하고 개선을 제안합니다. icon: \uE8CB +allowed-tools: + - process + - git_tool + - file_read + - text_summarize tabs: code --- 작업 폴더의 최근 Git 커밋 메시지를 검토하고 개선안을 제시하세요. ## 작업 절차 -1. `process_run` — `git log --oneline -20` 으로 최근 커밋 목록 확인 -2. `process_run` — `git log --format="%H%n%s%n%b%n---" -10` 으로 상세 메시지 확인 -3. `process_run` — `git diff HEAD~1` 으로 최신 커밋 변경 내용 확인 (필요 시) +1. `process` — `git log --oneline -20` 으로 최근 커밋 목록 확인 +2. `process` — `git log --format="%H%n%s%n%b%n---" -10` 으로 상세 메시지 확인 +3. `process` — `git diff HEAD~1` 으로 최신 커밋 변경 내용 확인 (필요 시) 4. 각 커밋을 Conventional Commits 기준으로 분석 5. 결과를 정리하여 출력 diff --git a/dist/AxCopilot/skills/compare.skill.md b/dist/AxCopilot/skills/compare.skill.md index 6538dd7..1143dac 100644 --- a/dist/AxCopilot/skills/compare.skill.md +++ b/dist/AxCopilot/skills/compare.skill.md @@ -1,4 +1,4 @@ ---- +--- name: compare label: 비교 분석표 description: 2개 이상 항목의 비교 분석 매트릭스를 생성합니다. diff --git a/dist/AxCopilot/skills/csv-to-xlsx.skill.md b/dist/AxCopilot/skills/csv-to-xlsx.skill.md index fb819ac..49a401e 100644 --- a/dist/AxCopilot/skills/csv-to-xlsx.skill.md +++ b/dist/AxCopilot/skills/csv-to-xlsx.skill.md @@ -1,18 +1,30 @@ ---- +--- name: csv-to-xlsx label: CSV → Excel 변환 description: CSV 파일을 서식이 완성된 Excel(.xlsx)로 변환합니다. 헤더 고정, 필터, 조건부 서식, 자동 열 너비를 적용합니다. icon: \uE9F9 +allowed-tools: + - folder_map + - file_read + - file_write + - process + - format_convert + - data_pivot + - template_render tabs: cowork -requires: python --- CSV 파일을 전문적인 서식이 적용된 Excel 파일로 변환하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 Python 스크립트 경로로 변환/서식 자동화를 수행하세요. +- Python 불가: `format_convert`로 CSV를 XLSX로 변환하고, `data_pivot`으로 핵심 요약 시트를 구성한 뒤 `file_write`로 사용 안내를 남기세요. + ## 사전 준비 먼저 필요한 패키지가 설치되어 있는지 확인하고, 없으면 설치하세요: ``` -process_run: pip install openpyxl pandas +process: pip install openpyxl pandas ``` ## 작업 절차 @@ -25,7 +37,7 @@ process_run: pip install openpyxl pandas - 조건부 서식 대상 컬럼 (숫자 컬럼 자동 감지) - 시트 이름 (기본: 파일명) 4. **Python 스크립트 작성**: file_write로 변환 스크립트 생성 -5. **스크립트 실행**: process_run으로 Python 스크립트 실행 +5. **스크립트 실행**: `process`로 Python 스크립트 실행 6. **결과 확인**: 생성된 .xlsx 파일 경로와 요약 정보를 안내 ## Python 스크립트 템플릿 diff --git a/dist/AxCopilot/skills/data-convert.skill.md b/dist/AxCopilot/skills/data-convert.skill.md index edd84f6..43a46bb 100644 --- a/dist/AxCopilot/skills/data-convert.skill.md +++ b/dist/AxCopilot/skills/data-convert.skill.md @@ -1,4 +1,4 @@ ---- +--- name: data-convert label: 데이터 변환기 description: 데이터 포맷 간 변환, 정제, 필터링, 통계 요약을 수행합니다. diff --git a/dist/AxCopilot/skills/data-visualize-adv.skill.md b/dist/AxCopilot/skills/data-visualize-adv.skill.md index 53817d4..17b39ba 100644 --- a/dist/AxCopilot/skills/data-visualize-adv.skill.md +++ b/dist/AxCopilot/skills/data-visualize-adv.skill.md @@ -1,25 +1,37 @@ ---- +--- name: data-visualize-adv label: 고급 데이터 시각화 description: Python matplotlib/seaborn을 사용하여 히트맵, 산점도, 상관관계 등 고급 시각화를 생성합니다. icon: \uE9D9 -requires: python +allowed-tools: + - folder_map + - file_read + - file_write + - process + - data_pivot + - chart_create + - template_render tabs: cowork --- 데이터를 고급 시각화 차트로 변환하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 matplotlib/seaborn 경로를 사용하세요. +- Python 불가: `data_pivot`으로 통계를 계산하고 `chart_create` + `template_render` + `file_write`로 HTML/SVG 리포트를 생성하세요. + ## 사전 준비 필요한 패키지를 설치하세요: ``` -process_run: pip install matplotlib seaborn pandas numpy +process: pip install matplotlib seaborn pandas numpy ``` ## 작업 절차 1. **데이터 확인**: 사용자가 제공한 CSV/JSON/Excel 데이터 파일 확인 2. **데이터 로드**: pandas로 데이터 읽기 3. **Python 스크립트 작성**: file_write로 시각화 스크립트 생성 -4. **스크립트 실행**: process_run으로 실행 +4. **스크립트 실행**: `process`로 실행 5. **결과 확인**: 생성된 차트 이미지 경로를 사용자에게 안내 ## 시각화 유형별 템플릿 diff --git a/dist/AxCopilot/skills/data-visualize.skill.md b/dist/AxCopilot/skills/data-visualize.skill.md index 965bf8b..be65f8e 100644 --- a/dist/AxCopilot/skills/data-visualize.skill.md +++ b/dist/AxCopilot/skills/data-visualize.skill.md @@ -1,8 +1,15 @@ ---- +--- name: data-visualize label: 데이터 시각화 description: CSV/Excel 데이터를 분석하여 차트가 포함된 HTML 보고서를 생성합니다. icon: \uE9D9 +allowed-tools: + - folder_map + - file_read + - file_write + - data_pivot + - chart_create + - template_render tabs: cowork --- diff --git a/dist/AxCopilot/skills/db-schema.skill.md b/dist/AxCopilot/skills/db-schema.skill.md index 446d5e1..e94ab56 100644 --- a/dist/AxCopilot/skills/db-schema.skill.md +++ b/dist/AxCopilot/skills/db-schema.skill.md @@ -1,8 +1,14 @@ ---- +--- name: db-schema label: DB 스키마 분석 description: 데이터베이스 스키마를 분석하여 ERD 다이어그램과 테이블 문서를 생성합니다. icon: \uE968 +allowed-tools: + - folder_map + - grep + - file_read + - file_write + - search_codebase tabs: code --- @@ -16,9 +22,9 @@ tabs: code ## 작업 절차 1. `folder_map` — 프로젝트 구조 파악 -2. `grep_tool` — 엔티티/모델 클래스 검색 (`DbSet`, `@Entity`, `Model.define`, `CREATE TABLE` 등) +2. `grep` — 엔티티/모델 클래스 검색 (`DbSet`, `@Entity`, `Model.define`, `CREATE TABLE` 등) 3. `file_read` — 모델 파일 분석 (컬럼, 타입, 관계) -4. `grep_tool` — 인덱스, 제약 조건 검색 +4. `grep` — 인덱스, 제약 조건 검색 5. `file_write` — 스키마 문서 + Mermaid ERD 생성 ## 출력 형식 diff --git a/dist/AxCopilot/skills/dependency-audit.skill.md b/dist/AxCopilot/skills/dependency-audit.skill.md index 73dbb2e..d62e416 100644 --- a/dist/AxCopilot/skills/dependency-audit.skill.md +++ b/dist/AxCopilot/skills/dependency-audit.skill.md @@ -1,4 +1,4 @@ ---- +--- name: dependency-audit label: 의존성 분석 description: 프로젝트 의존성 그래프를 분석하고 보안 취약점, 라이선스, 업데이트 현황을 보고합니다. diff --git a/dist/AxCopilot/skills/diagram-generator.skill.md b/dist/AxCopilot/skills/diagram-generator.skill.md index 9d887e0..9c09021 100644 --- a/dist/AxCopilot/skills/diagram-generator.skill.md +++ b/dist/AxCopilot/skills/diagram-generator.skill.md @@ -1,25 +1,35 @@ ---- +--- name: diagram-generator label: 다이어그램 생성 description: Python matplotlib/graphviz를 사용하여 플로차트, 시퀀스, ER 다이어그램 등을 생성합니다. icon: \uE9D9 -requires: python +allowed-tools: + - file_read + - file_write + - process + - chart_create + - template_render tabs: cowork --- 사용자의 요구에 맞는 다이어그램을 Python으로 생성하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 Graphviz/matplotlib 경로를 사용하세요. +- Python 불가: `template_render`와 `file_write`로 Mermaid 기반 다이어그램 문서를 생성하고, 필요 시 `chart_create`로 대체 시각화를 제공하세요. + ## 사전 준비 필요한 패키지를 설치하세요: ``` -process_run: pip install matplotlib graphviz +process: pip install matplotlib graphviz ``` 시스템에 Graphviz가 설치되어 있어야 합니다 (https://graphviz.org/download/). ## 작업 절차 1. **요구사항 파악**: 다이어그램 유형, 노드/관계, 스타일 확인 2. **Python 스크립트 작성**: file_write로 .py 파일 생성 -3. **스크립트 실행**: process_run으로 Python 스크립트 실행 +3. **스크립트 실행**: `process`로 Python 스크립트 실행 4. **결과 확인**: 생성된 이미지 파일 경로를 사용자에게 안내 ## 다이어그램 유형별 템플릿 diff --git a/dist/AxCopilot/skills/docx-creator.skill.md b/dist/AxCopilot/skills/docx-creator.skill.md index 74a62ce..4bd15fd 100644 --- a/dist/AxCopilot/skills/docx-creator.skill.md +++ b/dist/AxCopilot/skills/docx-creator.skill.md @@ -1,18 +1,30 @@ ---- +--- name: docx-creator label: Word 문서 생성 description: Python을 사용하여 전문적인 Word 문서(.docx)를 생성합니다. 작업 폴더의 양식 파일을 자동 활용합니다. icon: \uE8A5 -requires: python +allowed-tools: + - folder_map + - document_read + - file_read + - file_write + - process + - document_assemble + - format_convert tabs: cowork --- 사용자의 요구에 맞는 전문적인 Word 문서를 Python으로 생성하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 python-docx 경로를 사용하세요. +- Python 불가: `document_assemble`로 문서 본문을 구성하고 `format_convert`로 docx 산출을 시도하세요. 실패 시 Markdown/HTML 결과와 변환 가이드를 함께 제공하세요. + ## 사전 준비 먼저 python-docx 패키지가 설치되어 있는지 확인하고, 없으면 설치하세요: ``` -process_run: pip install python-docx +process: pip install python-docx ``` ## 양식 활용 (템플릿 모드) @@ -39,7 +51,7 @@ process_run: pip install python-docx 1. **요구사항 파악**: 사용자가 원하는 문서의 종류, 구조, 내용을 확인 2. **양식 확인**: folder_map으로 작업 폴더에 양식 .docx 파일이 있는지 확인 3. **Python 스크립트 작성**: file_write로 .py 파일 생성 -4. **스크립트 실행**: process_run으로 Python 스크립트 실행 +4. **스크립트 실행**: `process`로 Python 스크립트 실행 5. **결과 확인**: 생성된 .docx 파일 경로를 사용자에게 안내 ## Python 스크립트 템플릿 diff --git a/dist/AxCopilot/skills/email-draft.skill.md b/dist/AxCopilot/skills/email-draft.skill.md index 62f4e5f..a5c1be2 100644 --- a/dist/AxCopilot/skills/email-draft.skill.md +++ b/dist/AxCopilot/skills/email-draft.skill.md @@ -1,4 +1,4 @@ ---- +--- name: email-draft label: 비즈니스 이메일 작성 description: 상황과 톤에 맞는 전문적인 비즈니스 이메일 초안을 생성합니다. diff --git a/dist/AxCopilot/skills/env-setup.skill.md b/dist/AxCopilot/skills/env-setup.skill.md index f1b397e..a6445ed 100644 --- a/dist/AxCopilot/skills/env-setup.skill.md +++ b/dist/AxCopilot/skills/env-setup.skill.md @@ -1,4 +1,4 @@ ---- +--- name: env-setup label: 프로젝트 환경 설정 description: .gitignore, requirements.txt, .editorconfig 등 프로젝트 환경 설정 파일을 자동 생성합니다. @@ -8,7 +8,7 @@ allowed-tools: - folder_map - file_read - file_write - - process_run + - process --- 프로젝트 유형에 맞는 환경 설정 파일을 자동으로 생성하세요. diff --git a/dist/AxCopilot/skills/gen-test.skill.md b/dist/AxCopilot/skills/gen-test.skill.md index ede8c8d..7440869 100644 --- a/dist/AxCopilot/skills/gen-test.skill.md +++ b/dist/AxCopilot/skills/gen-test.skill.md @@ -1,4 +1,4 @@ ---- +--- name: gen-test label: 테스트 생성기 description: 지정 파일의 단위 테스트를 자동 생성하고 실행하여 커버리지를 분석합니다. diff --git a/dist/AxCopilot/skills/hook-policy-demo.skill.md b/dist/AxCopilot/skills/hook-policy-demo.skill.md new file mode 100644 index 0000000..cfc8d62 --- /dev/null +++ b/dist/AxCopilot/skills/hook-policy-demo.skill.md @@ -0,0 +1,45 @@ +--- +name: hook-policy-demo +label: Hook Policy Demo +description: hooks/hook_filters 런타임 정책 적용 예시 스킬입니다. +icon: \uE943 +tabs: code +allowed-tools: + - file_read + - file_edit + - grep + - build_run +when_to_use: 코드 수정 후 특정 훅만 pre/post로 선택 적용하고 싶을 때 +argument-hint: 대상 파일 경로 또는 변경 목적 +context: fork +agent: worker +effort: medium +sample: true +hooks: + file_edit: + pre: + - lint-pre + post: + - verify-post + build_run: + post: + - verify-post +hook_filters: lint-pre@pre@file_edit, verify-post@post@file_edit, verify-post@post@build_run +--- + +이 스킬은 `hooks`/`hook_filters` 정책을 함께 사용하는 예시입니다. + +## 목표 +- 수정 전에는 `lint-pre` 훅만 실행 +- 수정 후/빌드 후에는 `verify-post` 훅만 실행 + +## 실행 가이드 +1. `grep` + `file_read`로 대상 코드와 관련 호출부를 확인합니다. +2. 필요한 최소 범위만 `file_edit`로 수정합니다. +3. 수정 후 `build_run`으로 빌드/테스트를 실행해 검증합니다. +4. 변경 내용/검증 결과/남은 리스크를 간단히 보고합니다. + +## 제약 +- `allowed-tools` 목록 외 도구 호출 금지 +- 불필요한 전면 리팩토링 금지 +- 동일 실패 재시도 전에 원인/대안 먼저 제시 diff --git a/dist/AxCopilot/skills/image-processor.skill.md b/dist/AxCopilot/skills/image-processor.skill.md index 86c6c31..d73f60b 100644 --- a/dist/AxCopilot/skills/image-processor.skill.md +++ b/dist/AxCopilot/skills/image-processor.skill.md @@ -1,24 +1,36 @@ ---- +--- name: image-processor label: 이미지 처리 description: Python Pillow를 사용하여 이미지 리사이즈, 크롭, 워터마크, 포맷 변환을 수행합니다. icon: \uEB9F -requires: python +allowed-tools: + - folder_map + - file_read + - file_write + - process + - image_analyze + - format_convert + - file_manage tabs: cowork --- 사용자의 요구에 맞게 이미지를 처리하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 Pillow 경로를 사용하세요. +- Python 불가: `image_analyze`로 이미지 상태를 점검하고, `file_manage`/`format_convert`/`file_write`로 가능한 변환 및 수동 처리 지침을 제공하세요. + ## 사전 준비 먼저 Pillow 패키지가 설치되어 있��지 확인하고, 없으면 설���하세요: ``` -process_run: pip install Pillow +process: pip install Pillow ``` ## 작업 절�� 1. **요구사항 파악**: 처리할 이미지 파일과 원하는 작업 확인 2. **Python 스크립트 작성**: file_write로 .py 파일 생성 -3. **스크립트 실행**: process_run으로 Python 스크립�� 실행 +3. **스크립트 실행**: `process`로 Python 스크립�� 실행 4. **결과 확인**: 처리된 이미지 파일 경로를 사용자에게 안내 ## 지원 기능 diff --git a/dist/AxCopilot/skills/impact.skill.md b/dist/AxCopilot/skills/impact.skill.md index 1b0d56b..89e17bc 100644 --- a/dist/AxCopilot/skills/impact.skill.md +++ b/dist/AxCopilot/skills/impact.skill.md @@ -1,4 +1,4 @@ ---- +--- name: impact label: 변경 영향 분석 description: 코드 변경 시 영향받는 파일, 함수, 테스트를 식별합니다. diff --git a/dist/AxCopilot/skills/json-schema.skill.md b/dist/AxCopilot/skills/json-schema.skill.md index 821dbf4..55b4fae 100644 --- a/dist/AxCopilot/skills/json-schema.skill.md +++ b/dist/AxCopilot/skills/json-schema.skill.md @@ -1,4 +1,4 @@ ---- +--- name: json-schema label: JSON/YAML 스키마 도구 description: JSON 또는 YAML 데이터에서 스키마를 생성하고, 데이터의 유효성을 검증합니다. diff --git a/dist/AxCopilot/skills/log-analyze.skill.md b/dist/AxCopilot/skills/log-analyze.skill.md index 0ac33d9..cba086b 100644 --- a/dist/AxCopilot/skills/log-analyze.skill.md +++ b/dist/AxCopilot/skills/log-analyze.skill.md @@ -1,4 +1,4 @@ ---- +--- name: log-analyze label: 로그 분석기 description: 로그 파일의 패턴을 분석하고 에러를 요약하며 타임라인을 시각화합니다. diff --git a/dist/AxCopilot/skills/markdown-to-doc.skill.md b/dist/AxCopilot/skills/markdown-to-doc.skill.md index 7a852d8..94004f3 100644 --- a/dist/AxCopilot/skills/markdown-to-doc.skill.md +++ b/dist/AxCopilot/skills/markdown-to-doc.skill.md @@ -1,18 +1,28 @@ ---- +--- name: markdown-to-doc label: Markdown → 문서 변환 description: Markdown 파일을 서식이 적용된 Word(.docx) 또는 PDF 문서로 변환합니다. icon: \uE8A5 +allowed-tools: + - file_read + - file_write + - process + - format_convert + - document_assemble tabs: cowork -requires: python --- Markdown 파일을 전문적인 Word 또는 PDF 문서로 변환하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 python-docx 경로를 사용하세요. +- Python 불가: `format_convert`를 우선 사용해 Markdown을 docx/pdf로 변환하고, 변환 제한 시 `file_write`로 보정 가이드를 생성하세요. + ## 사전 준비 먼저 필요한 패키지가 설치되어 있는지 확인하고, 없으면 설치하세요: ``` -process_run: pip install python-docx markdown +process: pip install python-docx markdown ``` ## 작업 절차 @@ -24,7 +34,7 @@ process_run: pip install python-docx markdown - 여백, 페이지 크기 설정 - 머리글/바닥글 포함 여부 3. **Python 스크립트 작성**: file_write로 변환 스크립트 생성 -4. **스크립트 실행**: process_run으로 Python 스크립트 실행 +4. **스크립트 실행**: `process`로 Python 스크립트 실행 5. **결과 확인**: 생성된 문서 파일 경로와 페이지 수를 안내 ## 스타일 매핑 diff --git a/dist/AxCopilot/skills/meeting-minutes.skill.md b/dist/AxCopilot/skills/meeting-minutes.skill.md index e3ec988..9ba9439 100644 --- a/dist/AxCopilot/skills/meeting-minutes.skill.md +++ b/dist/AxCopilot/skills/meeting-minutes.skill.md @@ -1,8 +1,13 @@ ---- +--- name: meeting-minutes label: 회의록 정리 description: 회의 내용을 체계적으로 정리하여 회의록을 생성합니다. icon: \uE771 +allowed-tools: + - file_read + - file_write + - text_summarize + - template_render tabs: cowork --- diff --git a/dist/AxCopilot/skills/ocr-extract.skill.md b/dist/AxCopilot/skills/ocr-extract.skill.md index 8c7e71d..31e1876 100644 --- a/dist/AxCopilot/skills/ocr-extract.skill.md +++ b/dist/AxCopilot/skills/ocr-extract.skill.md @@ -1,13 +1,23 @@ ---- +--- name: ocr-extract label: OCR 텍스트 추출 description: Python pytesseract를 사용하여 이미지/스캔 문서에서 텍스트를 추출합니다. icon: \uE8D4 -requires: python +allowed-tools: + - file_read + - file_write + - process + - image_analyze + - text_summarize tabs: cowork --- 이미지 또는 스캔된 문서에서 텍스트를 추출하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 pytesseract 경로를 사용하세요. +- Python 불가: `image_analyze`로 텍스트 후보를 추출하고 `text_summarize` + `file_write`로 정제본을 제공하세요. + ## 사전 준비 1. Tesseract OCR 엔진이 시스템에 설치되어 있어야 합니다. @@ -15,7 +25,7 @@ tabs: cowork - 한국어 지원: 설치 시 "Korean" 언어 데이터 선택 2. Python 패키지 설치: ``` -process_run: pip install pytesseract Pillow +process: pip install pytesseract Pillow ``` ## 작업 절차 diff --git a/dist/AxCopilot/skills/paper-review.skill.md b/dist/AxCopilot/skills/paper-review.skill.md index 72b558c..440fb26 100644 --- a/dist/AxCopilot/skills/paper-review.skill.md +++ b/dist/AxCopilot/skills/paper-review.skill.md @@ -1,8 +1,13 @@ ---- +--- name: paper-review label: 논문 분석 description: 논문 또는 기술 문서를 체계적으로 분석하고 핵심 내용을 정리합니다. icon: \uE736 +allowed-tools: + - document_read + - file_read + - file_write + - text_summarize tabs: cowork --- diff --git a/dist/AxCopilot/skills/pdf-processor.skill.md b/dist/AxCopilot/skills/pdf-processor.skill.md index 4076e47..631e7ee 100644 --- a/dist/AxCopilot/skills/pdf-processor.skill.md +++ b/dist/AxCopilot/skills/pdf-processor.skill.md @@ -1,18 +1,29 @@ ---- +--- name: pdf-processor label: PDF 처리 description: Python을 사용하여 PDF에서 텍스트/표를 추출하거나 PDF를 생성합니다. icon: \uE9F9 -requires: python +allowed-tools: + - folder_map + - document_read + - file_read + - file_write + - process + - format_convert tabs: cowork --- PDF 파일을 읽거나 새 PDF를 생성하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 pypdf/pdfplumber/reportlab 경로를 사용하세요. +- Python 불가: `document_read`로 텍스트/구조를 추출하고, 생성 작업은 `format_convert` + `file_write` 기반으로 대체하세요. + ## 사전 준비 필요한 패키지를 확인하고 설치하세요: ``` -process_run: pip install pypdf pdfplumber reportlab +process: pip install pypdf pdfplumber reportlab ``` ## 작업 절차 @@ -20,13 +31,13 @@ process_run: pip install pypdf pdfplumber reportlab ### PDF 텍스트 추출 1. **파일 확인**: folder_map으로 PDF 파일 위치 확인 2. **추출 스크립트 작성**: file_write로 Python 스크립트 생성 -3. **실행**: process_run으로 실행 +3. **실행**: `process`로 실행 4. **결과 전달**: 추출된 텍스트를 사용자에게 전달 ### PDF 생성 1. **내용 파악**: 사용자가 원하는 문서 내용 확인 2. **생성 스크립트 작성**: file_write로 Python 스크립트 생성 -3. **실행 및 확인**: process_run으로 실행 +3. **실행 및 확인**: `process`로 실행 ## 텍스트 추출 템플릿 ```python diff --git a/dist/AxCopilot/skills/perf-audit.skill.md b/dist/AxCopilot/skills/perf-audit.skill.md index 9db18d8..6c74697 100644 --- a/dist/AxCopilot/skills/perf-audit.skill.md +++ b/dist/AxCopilot/skills/perf-audit.skill.md @@ -1,4 +1,4 @@ ---- +--- name: perf-audit label: 성능 감사 description: 코드 복잡도, 성능 병목, 메모리 이슈를 분석하고 최적화 방안을 제시합니다. diff --git a/dist/AxCopilot/skills/pptx-creator.skill.md b/dist/AxCopilot/skills/pptx-creator.skill.md index eeea93c..a8670e8 100644 --- a/dist/AxCopilot/skills/pptx-creator.skill.md +++ b/dist/AxCopilot/skills/pptx-creator.skill.md @@ -1,18 +1,30 @@ ---- +--- name: pptx-creator label: PPT 프레젠테이션 생성 description: Python을 사용하여 전문적인 PowerPoint 프레젠테이션을 생성합니다. 작업 폴더의 양식 파일을 자동 활용합니다. icon: \uE7BE -requires: python +allowed-tools: + - folder_map + - document_read + - file_read + - file_write + - process + - pptx_create + - template_render tabs: cowork --- 사용자의 요구에 맞는 PowerPoint 프레젠테이션을 Python으로 생성하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 python-pptx 경로를 사용하세요. +- Python 불가: `pptx_create`로 슬라이드 초안을 생성하고 `template_render` + `file_write`로 발표자료 구조를 보강하세요. + ## 사전 준비 필요한 패키지를 확인하고 설치하세요: ``` -process_run: pip install python-pptx +process: pip install python-pptx ``` ## 양식 활용 (마스터 슬라이드 템플릿) @@ -45,7 +57,7 @@ process_run: pip install python-pptx 1. **요구사항 파악**: 발표 주제, 슬라이드 수, 스타일 확인 2. **양식 확인**: folder_map으로 작업 폴더에 양식 .pptx 파일이 있는지 확인 3. **스크립트 작성**: file_write로 Python 스크립트 생성 -4. **실행**: process_run으로 스크립트 실행 +4. **실행**: `process`로 스크립트 실행 5. **결과 안내**: 생성된 .pptx 파일 경로를 사용자에게 전달 ## 스크립트 템플릿 diff --git a/dist/AxCopilot/skills/prd-generator.skill.md b/dist/AxCopilot/skills/prd-generator.skill.md index 8236401..e284096 100644 --- a/dist/AxCopilot/skills/prd-generator.skill.md +++ b/dist/AxCopilot/skills/prd-generator.skill.md @@ -1,4 +1,4 @@ ---- +--- name: prd-generator label: 요구사항 정의서 (PRD) description: 제품 요구사항 정의서, 유저 스토리, 수용 기준을 체계적으로 생성합니다. diff --git a/dist/AxCopilot/skills/refactor.skill.md b/dist/AxCopilot/skills/refactor.skill.md index a58d54e..529cb97 100644 --- a/dist/AxCopilot/skills/refactor.skill.md +++ b/dist/AxCopilot/skills/refactor.skill.md @@ -1,4 +1,4 @@ ---- +--- name: refactor label: 리팩토링 가이드 description: 코드베이스를 분석하여 리팩토링 포인트를 식별하고 실행 계획을 생성합니다. @@ -11,6 +11,13 @@ allowed-tools: - folder_map - lsp_code_intel tabs: code +# hooks / hook_filters 예시 (옵션): +# hooks: +# file_edit: +# pre: +# - lint-pre +# post: verify-post +# hook_filters: lint-pre@pre@file_edit, verify-post@post@* --- 코드베이스를 분석하여 리팩토링이 필요한 부분을 식별하고 개선 계획을 수립하세요. diff --git a/dist/AxCopilot/skills/regex-helper.skill.md b/dist/AxCopilot/skills/regex-helper.skill.md index 91e10dd..5d5442e 100644 --- a/dist/AxCopilot/skills/regex-helper.skill.md +++ b/dist/AxCopilot/skills/regex-helper.skill.md @@ -1,4 +1,4 @@ ---- +--- name: regex-helper label: 정규식 도우미 description: 정규식 패턴을 생성하고, 기존 패턴을 해석하며, 테스트 케이스로 검증합니다. diff --git a/dist/AxCopilot/skills/release-note.skill.md b/dist/AxCopilot/skills/release-note.skill.md index 2dc122a..e4a2f59 100644 --- a/dist/AxCopilot/skills/release-note.skill.md +++ b/dist/AxCopilot/skills/release-note.skill.md @@ -1,4 +1,4 @@ ---- +--- name: release-note label: 릴리즈 노트 생성 description: 비개발자 대상의 사용자 친화적인 릴리즈 노트를 자동 생성합니다. diff --git a/dist/AxCopilot/skills/report-writer.skill.md b/dist/AxCopilot/skills/report-writer.skill.md index f5e9181..664802b 100644 --- a/dist/AxCopilot/skills/report-writer.skill.md +++ b/dist/AxCopilot/skills/report-writer.skill.md @@ -1,8 +1,16 @@ ---- +--- name: report-writer label: 보고서 작성 description: 작업 폴더의 데이터를 분석하여 체계적인 업무 보고서를 생성합��다. icon: \uE9F9 +allowed-tools: + - folder_map + - file_read + - file_write + - data_pivot + - chart_create + - template_render + - text_summarize tabs: cowork --- diff --git a/dist/AxCopilot/skills/security-audit.skill.md b/dist/AxCopilot/skills/security-audit.skill.md index d32ed32..0fb9144 100644 --- a/dist/AxCopilot/skills/security-audit.skill.md +++ b/dist/AxCopilot/skills/security-audit.skill.md @@ -1,4 +1,4 @@ ---- +--- name: security-audit label: 보안 코드 감사 description: 코드베이스의 보안 취약점을 점검하고 OWASP 기반 보안 보고서를 생성합니다. diff --git a/dist/AxCopilot/skills/sql-report.skill.md b/dist/AxCopilot/skills/sql-report.skill.md index 76efeca..c385378 100644 --- a/dist/AxCopilot/skills/sql-report.skill.md +++ b/dist/AxCopilot/skills/sql-report.skill.md @@ -1,4 +1,4 @@ ---- +--- name: sql-report label: SQL 리포트 description: DB 쿼리를 실행하고 결과를 차트화하여 HTML/Excel 보고서로 생성합니다. diff --git a/dist/AxCopilot/skills/translate.skill.md b/dist/AxCopilot/skills/translate.skill.md index bc793de..1ec0f4d 100644 --- a/dist/AxCopilot/skills/translate.skill.md +++ b/dist/AxCopilot/skills/translate.skill.md @@ -1,4 +1,4 @@ ---- +--- name: translate label: 번역 + 교정 description: 문서나 텍스트를 번역하고 전문 용어를 보존하며 교정합니다. diff --git a/dist/AxCopilot/skills/weekly-report.skill.md b/dist/AxCopilot/skills/weekly-report.skill.md index 342449e..304d257 100644 --- a/dist/AxCopilot/skills/weekly-report.skill.md +++ b/dist/AxCopilot/skills/weekly-report.skill.md @@ -1,4 +1,4 @@ ---- +--- name: weekly-report label: 주간 보고서 description: 작업 폴더의 변경 이력을 기반으로 자동 주간보고 초안을 생성합니다. diff --git a/dist/AxCopilot/skills/xlsx-analyzer.skill.md b/dist/AxCopilot/skills/xlsx-analyzer.skill.md index 267a312..2ede30f 100644 --- a/dist/AxCopilot/skills/xlsx-analyzer.skill.md +++ b/dist/AxCopilot/skills/xlsx-analyzer.skill.md @@ -1,18 +1,31 @@ ---- +--- name: xlsx-analyzer label: Excel 데이터 분석 description: Python을 사용하여 Excel/CSV 데이터를 분석하고 보고서를 생성합니다. 작업 폴더의 양식 파일을 자동 활용합니다. icon: \uE9F9 -requires: python +allowed-tools: + - folder_map + - document_read + - file_read + - file_write + - process + - data_pivot + - chart_create + - template_render tabs: cowork --- 작업 폴더의 Excel 또는 CSV 데이터를 Python으로 분석하세요. +## 실행 경로 선택 (Python 가능/불가) +- 먼저 `process`로 `python --version`을 확인하세요. +- Python 가능: 기존 pandas/openpyxl 경로를 사용하세요. +- Python 불가: `data_pivot`으로 분석 요약을 만들고 `chart_create` + `file_write`로 결과 리포트를 생성하세요. + ## 사전 준비 필요한 패키지를 확인하고 설치하세요: ``` -process_run: pip install pandas openpyxl +process: pip install pandas openpyxl ``` ## 양식 활용 (Excel 보고서 템플릿) @@ -41,7 +54,7 @@ process_run: pip install pandas openpyxl 2. **양식 확인**: 양식 .xlsx 파일이 있는지 확인 (데이터 파일과 양식 파일 구분) 3. **데이터 읽기**: file_read 또는 document_read로 파일 구조 파악 4. **분석 스크립트 작성**: file_write로 Python 분석 스크립트 생성 -5. **실행**: process_run으로 스크립트 실행 +5. **실행**: `process`로 스크립트 실행 6. **결과 보고**: 분석 결과를 사용자에게 정리하여 전달 ## 분석 스크립트 템플릿 diff --git a/dist/AxCopilot/skills/yield-analysis.skill.md b/dist/AxCopilot/skills/yield-analysis.skill.md index 408ba31..a9b6038 100644 --- a/dist/AxCopilot/skills/yield-analysis.skill.md +++ b/dist/AxCopilot/skills/yield-analysis.skill.md @@ -1,8 +1,16 @@ ---- +--- name: yield-analysis label: 수율 분석 description: 제조/연구 데이터의 수율을 분석하고 개선 포인트를 도출합니다. icon: \uE9D2 +allowed-tools: + - folder_map + - file_read + - file_write + - data_pivot + - chart_create + - text_summarize + - template_render tabs: cowork --- diff --git a/dist/AxCopilot/system_prompt.txt b/dist/AxCopilot/system_prompt.txt index 5a999d3..527f32d 100644 --- a/dist/AxCopilot/system_prompt.txt +++ b/dist/AxCopilot/system_prompt.txt @@ -1 +1 @@ -[역할] 당신은 회사 업무의 도움을 주는 매우 유능한 비서입니다. 말투는 정중하게 하며, 욕을 해서는 안됩니다. \ No newline at end of file +[역할] 당신은 회사 업무의 도움을 주는 매우 유능한 비서입니다. 말투는 정중하게 하며, 욕을 해서는 안됩니다. \ No newline at end of file diff --git a/dist/AxCopilot_Setup.exe b/dist/AxCopilot_Setup.exe index 2a4bc44..1cb80b6 100644 Binary files a/dist/AxCopilot_Setup.exe and b/dist/AxCopilot_Setup.exe differ diff --git a/dist/AxKeyEncryptor/AxKeyEncryptor.dll b/dist/AxKeyEncryptor/AxKeyEncryptor.dll index a28db68..c93a5ca 100644 Binary files a/dist/AxKeyEncryptor/AxKeyEncryptor.dll and b/dist/AxKeyEncryptor/AxKeyEncryptor.dll differ diff --git a/dist/AxKeyEncryptor/AxKeyEncryptor.exe b/dist/AxKeyEncryptor/AxKeyEncryptor.exe index 2410db0..0ff46b9 100644 Binary files a/dist/AxKeyEncryptor/AxKeyEncryptor.exe and b/dist/AxKeyEncryptor/AxKeyEncryptor.exe differ diff --git a/docs/26-03-29 report.txt b/docs/26-03-29 report.txt deleted file mode 100644 index 84c24d0..0000000 --- a/docs/26-03-29 report.txt +++ /dev/null @@ -1,164 +0,0 @@ -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: 硫€?고뙣??臾몄꽌 ?앹꽦 ?꾩껜 ?ъ슜 媛€??(媛쒖슂?믪꽮?섎퀎 ?곸꽭?믪“由? diff --git a/docs/AGENT_ROADMAP.html b/docs/AGENT_ROADMAP.html deleted file mode 100644 index bbf4761..0000000 --- a/docs/AGENT_ROADMAP.html +++ /dev/null @@ -1,1605 +0,0 @@ - - - - - -AX Agent ?€???쒕퉬??怨좊룄????醫낇빀 怨꾪쉷 諛?肄붾뱶 由щ럭 - - - -
- - - -
-
COMPREHENSIVE PLAN & CODE REVIEW
-

AX Agent ?€???쒕퉬??怨좊룄??br>??醫낇빀 怨꾪쉷 諛?肄붾뱶 由щ럭

-

- 肄붾뱶 由щ럭 ?꾪솴 + ?꾨즺??怨좊룄??+ 李④린 濡쒕뱶留듭쓣 ?섎굹??臾몄꽌濡??듯빀
- LlmService · ChatWindow · ChatStorageService · AgentLoopService · McpClientService -

-
2026-03-30 · v1.6.1
-
- - - -
-

紐⑹감 (Table of Contents)

-
-

Part 1 ??肄붾뱶 由щ럭 諛??꾪솴

-
    -
  1. ?꾩옱 援ы쁽 ?곹깭
  2. -
  3. ?꾪궎?띿쿂 媛쒖슂
  4. -
  5. 吏€??諛깆뿏??/a>
  6. -
  7. ?뚯씪蹂??곸꽭 遺꾩꽍
  8. -
  9. 寃쎌웳 ?쒕퉬??鍮꾧탳
  10. -
  11. Sigmoid Desktop 遺꾩꽍
  12. -
  13. ?ㅽ뵂?뚯뒪 肄붿뼱 遺꾩꽍
  14. -
  15. ?먯씠?꾪듃 ?쇰Ц 諛??ㅽ뵂?뚯뒪 ?ъ링 遺꾩꽍
  16. -
  17. 3??媛쒕컻 濡쒕뱶留?/a>
  18. -
  19. 怨듯넻 媛쒕컻 吏€移?/a>
  20. -
-

Part 2 ???꾨즺??怨좊룄??/p> -

    -
  1. Phase 2.5~7 (v1.1.0 ~ v1.2.1) ?꾨즺
  2. -
  3. Phase 7.5 (v1.2.2) ?꾨즺
  4. -
  5. Phase 8 (v1.3.0) ?꾨즺
  6. -
  7. 媛쒕컻 吏꾪뻾 濡쒓렇 (v1.0.5~v1.0.7)
  8. -
-

Part 3 ???ㅼ쓬 怨좊룄??怨꾪쉷

-
    -
  1. Phase 9 ??李⑥꽭?€ 怨좊룄??(v1.5.0)
  2. -
  3. Phase 10 ??吏€?ν삎 ?먯씠?꾪듃 (v1.5.0)
  4. -
  5. Phase 11 ???앺깭怨??뺤옣 (v1.5.0)
  6. -
  7. Phase 12 ???먯쑉 ?먯씠?꾪듃 (v2.0+)
  8. -
  9. Phase 13 ???ㅽ궗 ?앺깭怨?+ 遺꾩꽍 怨좊룄??/a>
  10. -
  11. Phase 14 ???먯씠?꾪듃 ?꾧뎄 + ?ㅽ궗 ?€?뺤옣 (v1.5.4)
  12. -
  13. Phase 15 ??硫€?고뙣??臾몄꽌 ?붿쭊 (v1.6.0)
  14. -
-

Part 4 ??李⑥꽭?€ 怨좊룄??怨꾪쉷

-
    -
  1. Phase 16 ???먯씠?꾪듃 吏€??媛뺥솕 (v1.7.0)
  2. -
  3. Phase 17 ???ы솕 吏€??+ UX ?곸떊 (v1.8.0)
  4. -
  5. Phase 18 ???먯퐫?쒖뒪??+ 李⑤퀎??(v2.0)
  6. -
  7. 湲곗닠 遺€梨?/a>
  8. -
-
-
- - - - - -
Part 1 ??肄붾뱶 由щ럭 諛??꾪솴
- - -

1. ?꾩옱 援ы쁽 ?곹깭

-
- 諛깆뿏??LlmService, ChatStorageService, CryptoService)??100% 援ы쁽 ?꾨즺.
- ?ㅼ젙 UI(SettingsWindow AI ???€ DEPLOY_STUB ?댁젣 ?꾨즺. ?듭떖 湲곕뒫?€ 利됱떆 ?ъ슜 媛€???곹깭. -
- - - - - - - - - -
?뚯씪?쇱씤 ??/th>?곹깭??븷
LlmService.cs362?꾨즺Ollama/vLLM/Gemini 3醫?LLM API ?듭떊
ChatStorageService.cs260+?꾨즺AES-256-GCM ?뷀샇???€???€??濡쒕뱶 + ?붿뒪???⑸웾 愿€由?/td>
ChatWindow.xaml(.cs)209 + 650+?꾨즺梨꾪똿 UI · ?ㅽ듃由щ컢 · ?쇰뱶諛?· ?뚰꽣留덊겕
ChatHandler.cs154?꾨즺"!" ?꾨━?쎌뒪 ?몃뱾??/td>
SettingsWindow (AI ??~120?꾨즺?쒕퉬??紐⑤뜽/???⑤룄 ?ㅼ젙 UI
CryptoService.cs200+?꾨즺Portable + Local ?댁쨷 ?뷀샇??/td>
- - - -

2. ?꾪궎?띿쿂 媛쒖슂

- -
-

硫붿떆吏€ ?먮쫫

-
-?ъ슜???낅젰 (! ?덉빟??
-  ??ChatHandler.GetItemsAsync()
-  ??(Enter)
-ChatHandler.ExecuteAsync() ??ChatWindow ?닿린
-  ???ъ슜??硫붿떆吏€ ?낅젰 ??SendMessageAsync()
-  ??LlmService.StreamAsync() / SendAsync()
-  ??諛깆뿏???좏깮 (Ollama / vLLM / Gemini)
-  ??HTTP ?붿껌 (Messages + SystemPrompt)
-  ???ㅽ듃由щ컢 ?묐떟 ??UI ?ㅼ떆媛?媛깆떊
-  ??ChatStorageService.Save() (AES-256-GCM ?뷀샇??
-    
-
- -
-

?뷀샇??援ъ“

- - - - -
?⑸룄?뚭퀬由ъ쬁???뚯깮?댁떇??/th>
?ㅼ젙媛?(API ??AES-256-CBCPBKDF2(AppSeed, 100K)紐⑤뱺 PC ?숈씪
?€???뚯씪 (.axchat)AES-256-GCMDPAPI 留덉뒪????/td>?대떦 PC留?/td>
-
- -
-

3???듯빀 ?꾪궎?띿쿂 (C# ?ㅼ씠?곕툕)

-
-?뚢??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€????                   AX Agent (WPF Desktop)                    ???쒋??€?€?€?€?€?€?€?€?€?р??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?р??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€???? Chat    ??   Cowork        ??        Code                   ???? (?€??  ?? (?먯쑉 ?묒뾽)     ??      (肄붾뵫 ?먯씠?꾪듃)          ???쒋??€?€?€?€?€?€?€?€?€?닳??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?닳??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€????              怨듯넻 UI: ?대뜑 ?좏깮 諛?+ 沅뚰븳 ?쒖뒪??            ???쒋??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€????        C# AgentLoopService (怨꾪쉷?믪떎?됤넂愿€李겸넂?ы룊媛€)          ???쒋??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€????LlmService (Function Calling)  ?? PermissionService         ????4醫?LLM ?듯빀 + Tool-use ?꾨줈?좎퐳?? Ask / Auto / Deny         ???쒋??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€????              C# ?ㅼ씠?곕툕 ?꾧뎄 ?쒖뒪??(IAgentTool)            ????FileRead?괚ileWrite?괚ileEdit?괦rocess?괛lob?괛rep              ???쒋??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€???? LibGit2Sharp  ?? AvalonEdit  ?? StreamJsonRpc (LSP)        ???? Git ?ㅻ깄??    ?? 肄붾뱶 ?먮뵒?? ?? ?몄뼱 ?쒕쾭 ?곕룞             ???쒋??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€????               ?묒뾽 ?대뜑 (?ъ슜???좏깮)                        ????       ?뚯씪 ?쎄린/?곌린 쨌 cmd/powershell 쨌 Git ?ㅻ깄??         ???붴??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€??    
-
- - - -

3. 吏€??諛깆뿏??/h2> - - - - - - - -
?쒕퉬??/th>API ?뺤떇湲곕낯 ?붾뱶?ъ씤??/th>API ??/th>??蹂댁븞
OllamaPOST /api/chathttp://localhost:11434?좏깮AES-256-CBC ?뷀샇??/td>
vLLMPOST /v1/chat/completionshttp://localhost:8000?좏깮AES-256-CBC ?뷀샇??/td>
GeminiGoogle GenerateContent APIgenerativelanguage.googleapis.com?꾩닔?됰Ц (?щ궡 ?곌껐 ?쒗븳)
SigmoidSigmoid Messages APIapi.Sigmoid.com?꾩닔?됰Ц (?щ궡 ?곌껐 ?쒗븳)
- - - -

4. ?뚯씪蹂??곸꽭 遺꾩꽍

- -
-諛쒓껄???댁뒋 諛??닿껐 ?꾪솴 (?대┃?섏뿬 ?쇱튂湲? - - - - - - - - - - - - - -
?ш컖??/th>?뚯씪?댁뒋?닿껐
HIGHLlmServiceJSON ?뚯떛 ??null 泥댄겕 ?놁쓬?닿껐 SafeParseJson ?섑띁
HIGHLlmServiceAPI ?먮윭 ???곸꽭 而⑦뀓?ㅽ듃 遺€??/td>?닿껐 ClassifyHttpError
HIGHChatWindowMessages 而щ젆??硫€?곗뒪?덈뱶 ?묎렐?닿껐 _convLock
HIGHChatWindow?ㅽ듃由щ컢 留?泥?겕 UI 媛깆떊 ?ы솕?닿껐 50ms ?곕줈?€留?/td>
HIGHChatStorageSave/Load/Delete ?숈떆 ?ㅽ뻾 寃쎌웳?닿껐 ReaderWriterLockSlim
MEDIUMLlmService?ㅽ듃由щ컢 ?€?꾩븘??怨좎젙?닿껐 30珥?泥?겕 ?€?꾩븘??/td>
MEDIUMChatStorage?먯옄???곌린 誘몄궗??/td>?닿껐 tmp?뭨ename
MEDIUMChatHandler李??앹꽦 ?ㅻ젅???덉쟾 ?놁쓬?닿껐 lock(_windowLock)
LOWLlmServiceGemini ?ㅽ듃由щ컢 ?뚯떛 ?ㅻ쪟 臾댁떆?닿껐 LogService.Warn
LOWChatWindowBrush ?좊떦 罹먯떛 ????/td>?닿껐 CacheBrushes()
-
- -
-?뚯씪蹂??곸꽭 遺꾩꽍 (?대┃?섏뿬 ?쇱튂湲? - -
-

LlmService.cs

-
src/AxCommander/Services/LlmService.cs
-
    -
  • JSON ?뚯떛 ?덉쟾??/strong> ??紐⑤뱺 API ?묐떟??SafeParseJson ?섑띁 ?곸슜, 諛곗뿴 湲몄씠 寃€利?/li> -
  • ?먮윭 硫붿떆吏€ ??ClassifyHttpError濡?401/403/404/429/500 遺꾨쪟
  • -
  • ?ъ떆??/strong> ??PostJsonWithRetryAsync?먯꽌 429/?€?꾩븘????理쒕? 2??/li> -
  • 泥?겕 ?€?꾩븘??/strong> ??ReadLineWithTimeoutAsync 30珥?/li> -
  • Gemini ?뚯떛 ?ㅻ쪟 ??catch?먯꽌 LogService.Warn 湲곕줉
  • -
-
- -
-

ChatWindow.xaml.cs

-
src/AxCommander/Views/ChatWindow.xaml.cs
-
    -
  • UI ?곕줈?€留?/strong> ??DispatcherTimer 50ms 媛꾧꺽?쇰줈 ?ㅽ듃由щ컢 ?띿뒪??媛깆떊
  • -
  • ?ㅻ젅???덉쟾 ??_convLock?쇰줈 Messages ?묎렐 蹂댄샇
  • -
  • Brush 罹먯떛 ??CacheBrushes()?먯꽌 濡쒕뱶 ????踰덈쭔 議고쉶
  • -
  • 李??リ린 蹂댄샇 ??Closed ?대깽?몄뿉??_streamCts.Cancel() ?몄텧
  • -
-
- -
-

ChatStorageService.cs

-
src/AxCommander/Services/ChatStorageService.cs
-
    -
  • ?뚯씪 ?숆린??/strong> ??ReaderWriterLockSlim?쇰줈 Save/Load/Delete 蹂댄샇
  • -
  • ?먯옄???곌린 ??.tmp ?뚯씪??????rename
  • -
  • ?먮윭 濡쒓퉭 ??catch?먯꽌 LogService.Warn?쇰줈 援ъ껜???뚯씪紐?湲곕줉
  • -
-
- -
-

ChatHandler.cs

-
src/AxCommander/Handlers/ChatHandler.cs
-
    -
  • ?깃???/strong> ??lock(_windowLock)?쇰줈 以묐났 ChatWindow ?앹꽦 諛⑹?
  • -
-
-
- -
-?щ줈??泥댄겕 ?ㅻ쪟 寃€利??덉감 (?대┃?섏뿬 ?쇱튂湲? -
-
- ?먯튃: ?섎굹??LLM 諛깆뿏?쒖뿉???ㅻ쪟媛€ 諛쒖깮?섎㈃, 諛섎뱶???ㅻⅨ 紐⑤뱺 諛깆뿏?쒖뿉?쒕룄 ?숈씪 臾몄젣媛€ 諛쒖깮?섎뒗吏€ ?щ줈??泥댄겕?????섏젙?⑸땲?? -
- - - - - - - -
寃€利???ぉSigmoidGeminiOllamavLLM
Function Calling ?묐떟 ?뚯떛tool_use 釉붾줉functionCall 釉붾줉tool_calls 諛곗뿴tool_calls 諛곗뿴
Tool Result 硫붿떆吏€ 援ъ꽦tool_result contentfunctionResponsetool role messagetool role message
Assistant tool_use 釉붾줉 ?ъ쟾??/td>_tool_use_blocks JSON_tool_use_blocks JSON_tool_use_blocks JSON_tool_use_blocks JSON
Array ?뚮씪誘명꽣 items ?ㅽ궎留?/td>遺덊븘??(?먮룞 異붾줎)?꾩닔遺덊븘??/td>遺덊븘??/td>
GetProperty ?덉쟾??/td>?꾩껜 TryGetProperty濡?援먯껜 ?꾨즺 (2026-03-28)
-

- ?щ줈??泥댄겕 ?덉감:
- 1. ?ㅻ쪟 諛쒖깮 ???대떦 諛깆뿏?쒖쓽 API ?묐떟 JSON 援ъ“瑜?濡쒓렇濡??뺤씤
- 2. ?숈씪 ?쒕굹由ъ삤瑜??ㅻⅨ 3媛?諛깆뿏?쒖뿉???뚯뒪??br> - 3. JSON ?뚯떛 肄붾뱶?먯꽌 GetProperty ??TryGetProperty ?꾪솚 ?щ? ?뺤씤
- 4. ?묐떟 援ъ“媛€ ?ㅻⅨ 遺€遺??? Gemini=functionCall vs Sigmoid=tool_use)?€ 蹂꾨룄 泥섎━ 寃€利?br> - 5. ?섏젙 ???꾩껜 諛깆뿏??鍮뚮뱶 + 湲곕낯 ?꾧뎄 ?몄텧 ?뚯뒪??

-
-
- - - -

5. 寃쎌웳 ?쒕퉬???ъ링 鍮꾧탳

- -
- ChatGPT, Sigmoid, Open WebUI, LobeChat ??二쇱슂 ?쒕퉬?ㅼ???湲곕뒫/?붿옄???깅뒫 寃⑹감 遺꾩꽍. -
- -
-UX/?붿옄??由щ뜑??鍮꾧탳 + ?ㅽ겕 紐⑤뱶 媛€?대뱶 (?대┃?섏뿬 ?쇱튂湲? -
-

UX/?붿옄??由щ뜑??鍮꾧탳

- - - - - - - - - - -
?곸뿭?낃퀎 由щ뜑AX Copilot ?꾪솴寃⑹감
?꾩껜 UX ?꾩꽦??/td>Sigmoid (?꾨줈?앺듃/?꾪떚?⑺듃)湲곕낯 梨꾪똿 UIHIGH
留덊겕?ㅼ슫/肄붾뱶 ?뚮뜑留?/td>ChatGPT, Sigmoid, LobeChat?뚮젅???띿뒪?몃쭔HIGH
?대?吏€ ?앹꽦/遺꾩꽍ChatGPT (DALL-E/GPT Image)誘몄???/td>MEDIUM
?뚯꽦 ?€??/td>ChatGPT (Advanced Voice)誘몄???/td>LOW
?ㅽ겕 紐⑤뱶 ?됱긽 ?덉쭏Sigmoid, LobeChat?뚮쭏 由ъ냼???곕룞 ?꾨즺?닿껐
?ъ씠?쒕컮 + ?꾩씠肄?諛?/td>Sigmoid Desktop援ы쁽 ?꾨즺?닿껐
硫€??LLM 吏€??/td>Open WebUI, LibreChat4醫?吏€??/td>?닿껐
?뷀샇???€??/td>?놁쓬 (???쒕퉬??AES-256-GCM?곗쐞
-
- -
-

?ㅽ겕 紐⑤뱶 ?붿옄??媛€?대뱶 (2026 ?낃퀎 ?쒖?)

-
    -
  • ?쒖닔 寃€??#000) 湲덉? ??諛곌꼍?€ #0D0D14~#1A1B2E ?ъ슜, ???쇰줈 媛먯냼
  • -
  • ?€鍮꾩쑉 WCAG 4.5:1 ?댁긽 ??蹂몃Ц ?띿뒪?? 踰꾪듉 ?쇰꺼 ?꾩닔 異⑹”
  • -
  • ?몄븞???€鍮?/strong> ???덈Т 媛뺥븳 ?€鍮??쒕갚 #FFF)???쇰줈 ?좊컻, 諛앹? ?뚯깋(#E0E4F0) 沅뚯옣
  • -
  • ?쒕㎤???됱긽 ?좏겙 ??PrimaryText, SecondaryText, HintText ???섎? 湲곕컲 ?ㅼ씠諛?/li> -
  • 湲€?섏뒪紐⑦뵾利?/strong> ??AI 異쒕젰 ?곸뿭??諛섑닾紐??⑤꼸 + blur ?④낵濡??쒓컖??遺꾨━
  • -
  • ?곸쓳???됱긽 ??OS ?ㅼ젙 議댁쨷(prefers-color-scheme), ?섎룞 ?좉? ??긽 ?쒓났
  • -
-
-
- -
-寃쎌웳???듭떖 湲곕뒫 ?곸꽭 鍮꾧탳 (?대┃?섏뿬 ?쇱튂湲? -
-

寃쎌웳???듭떖 湲곕뒫 ?곸꽭

- - - - - - - - - - - - - - - - - - - - -
湲곕뒫ChatGPTSigmoidOpen WebUILobeChatAX Cmd
留덊겕?ㅼ슫 ?뚮뜑留?/td>OOOOO
肄붾뱶 援щЦ 媛뺤“OOOOO
肄붾뱶 釉붾줉 蹂듭궗OOOOO
?대?吏€ ?앹꽦OX?쇰??뚮윭洹몄씤X
?뚯씪 泥⑤? 遺꾩꽍OOOOX
??寃€???곕룞OX?뚮윭洹몄씤?뚮윭洹몄씤X
?묐떟 ?ъ깮??/td>OOOOO
硫붿떆吏€ ?몄쭛OOOOO
?꾨\?꾪듃 ?쒗뵆由?/td>O (GPTs)O (?꾨줈?앺듃)OOO
?€???대낫?닿린OXOOO
?좏겙 ?ъ슜??/td>?쇰?XOOO
醫뗭븘???レ뼱??/td>OOOXO
?€??遺꾨쪟?대뜑?꾨줈?앺듃?쒓렇?쒓렇O (6醫?
?€??怨좎젙(?€)XOXXO
?쒕ぉ ?몃씪???몄쭛OOOOO
硫€??LLM 諛깆뿏??/td>XXOOO (4醫?
?뷀샇???€??/td>XXXXO (AES)
?щ궡 ?낅┰ 諛고룷XXOOO
-
-
- -
-AI ?쒕퉬??媛쒖꽑 ?먯튃 + 媛쒖꽑 濡쒕뱶留?(?대┃?섏뿬 ?쇱튂湲? -
-

AI ?쒕퉬??媛쒖꽑 ?먯튃

- - - - - -
#?먯튃?ㅻ챸
1?꾨??????붿옄??/strong>?붿옄?몄? ?꾨??곸씤 ???붿옄???몃젋?쒕? ?곕Ⅴ硫? ChatGPT·Sigmoid·Open WebUI ???€ ?쒕퉬?ㅼ????붿옄?몄쓣 怨좊젮?섏뿬 ?щ??곸쑝濡??μ긽?쒗궓??
2?ㅽ뵂?뚯뒪 ?곴레 ?쒖슜?ㅽ뵂?뚯뒪瑜??곴레 ?쒖슜?섍퀬 ?ㅽ뵂?뚯뒪?ㅼ쓽 ?듭떖 湲곕뒫 諛??곗닔??肄붾뱶瑜??묐ぉ?섏뿬 媛쒖꽑?쒕떎.
3?뺤옣 媛€?ν븳 ?쒕퉬???ㅺ퀎?⑥닚??梨꾪똿???꾨땶, 二쇨퀬諛쏅뒗 ?섏궗?뚰넻 諛??낅Т 議곗쑉, 蹂닿퀬??middot;?뚯씪 ?묒꽦 ?€?? PC ?쒖뼱 ???ν썑 ?쒕퉬???뺤옣(AX Copilot)??怨좊젮?섏뿬 ?ㅺ퀎?쒕떎.
-
- -
-

P0 ???듭떖 湲곕뒫 (v1.0.6 紐⑺몴)

- - - - - - - - - - - -
??ぉ?꾩옱紐⑺몴
留덊겕?ㅼ슫 ?뚮뜑留?/td>?꾨즺蹂쇰뱶/?댄깶由??ㅻ뜑/由ъ뒪??肄붾뱶釉붾줉 + 肄붾뱶 蹂듭궗
肄붾뱶 釉붾줉 蹂듭궗 踰꾪듉?꾨즺肄붾뱶 釉붾줉 ?ㅻ뜑???몄뼱 ?쒖떆 + 蹂듭궗 踰꾪듉
?€???쒕ぉ ?몃씪???몄쭛?꾨즺?쒕ぉ ?대┃ ??利됱떆 ?몄쭛
?묐떟 ?ъ깮??踰꾪듉?꾨즺AI ?묐떟 ?섎떒 "?ㅼ떆 ?앹꽦" 踰꾪듉
?앹꽦 以묒? 踰꾪듉?꾨즺?ㅽ듃由щ컢 以?鍮④컙 ?뺤? 踰꾪듉, ESC 吏€??/td>
?€???대낫?닿린?꾨즺Markdown/TXT ?뚯씪濡??€??(Ctrl+E)
?곌껐 ?뚯뒪??/td>?꾨즺?ㅼ젙?먯꽌 LLM ?쒕쾭 ?곹깭 ?뺤씤 踰꾪듉
?ㅻ낫???⑥텞??/td>?꾨즺Ctrl+N/W/E, Ctrl+Shift+C, ESC 以묒?
?ㅽ겕濡?媛쒖꽑?꾨즺?ъ슜???ㅽ겕濡????먮룞 ?ㅽ겕濡??쇱떆?뺤?
-
- -
-

P0.5 ??UI/UX ?붿옄???곸떊 (v1.0.7 紐⑺몴)

- - - - - - - - - -
??ぉ?꾩옱紐⑺몴李멸퀬
AI ?щ낵 濡쒕뵫 ?좊땲硫붿씠??/td>?띿뒪??"?앷컖 以?.."?뚯쟾/?꾩뒪 AI ?꾩씠肄?+ 洹몃씪?붿뼵???④낵Siri 臾댁?媛??먰삎
臾댁?媛??뚮몢由??④낵?놁쓬AI ?묐떟 ???낅젰 諛??먮뒗 AI ?꾩씠肄섏뿉 臾댁?媛?洹몃씪?붿뼵??湲€濡쒖슦Apple Siri
?꾩씠肄??몃쾭 ?좊땲硫붿씠??/td>諛곌꼍??蹂€寃?(?ㅻえ)?꾩씠肄??먯껜 諛앷린 ?꾪솚 + 誘몄꽭 諛붿슫??Y異?-2px) ?먮뒗 ?ㅼ???1.1x)LobeChat
醫뗭븘???レ뼱???쇰뱶諛?/td>?꾨즺?대┃ ???꾩씠肄?梨꾩?(filled) + ?됱긽 ?꾪솚 + ?곹샇 諛고? ?좉?ChatGPT
硫붿떆吏€ ?섏씠?쒖씤利됱떆 ?쒖떆??硫붿떆吏€ Opacity 0?? + Y異??щ씪?대뱶(10px) 300msSigmoid Desktop
?ㅽ듃由щ컢 而ㅼ꽌?꾨즺?띿뒪???앹뿉 源쒕묀?대뒗 釉붾줉 而ㅼ꽌 (?€?댄븨 ?④낵)ChatGPT
?ㅽ듃由щ컢 湲€???⑥쐞 ?쒖떆?꾨즺泥?겕 ?⑥쐞 ?ㅼ떆媛?媛깆떊 + Dispatcher.InvokeAsync(Background)ChatGPT, Sigmoid
-
- -
-

P1 ???앹궛???μ긽 (v1.0.7 紐⑺몴)

- - - - - - - -
??ぉ?곹깭?ㅻ챸
硫붿떆吏€ ?몄쭛?꾨즺蹂대궦 硫붿떆吏€ ?섏젙 ???ъ쟾??/td>
?꾨\?꾪듃 ?쒗뵆由?/td>?꾨즺?꾨\?꾪듃 移대뱶 3醫?+ ?뚰꽣留덊겕 placeholder
?щ옒??紐낅졊??/td>?꾨즺/?붿빟, /踰덉뿭, /肄붾뱶由щ럭 ??鍮좊Ⅸ 紐낅졊
?좏겙 ?ъ슜???쒖떆?꾨즺?붿껌/?묐떟 ?좏겙 ??+ ?붿뿬 而⑦뀓?ㅽ듃
紐⑤뜽 ?꾪솚 (梨꾪똿 ???꾨즺?€??以?紐⑤뜽??諛붾줈 蹂€寃?/td>
-
- -
-

P2 ??怨좉툒 湲곕뒫 (v1.1.0 ?댄썑)

- - - - - - - - -
??ぉ?ㅻ챸
?뚯씪 泥⑤? 遺꾩꽍PDF/?대?吏€/臾몄꽌 ?낅줈????AI 遺꾩꽍
??寃€???곕룞誘멸뎄?????щ궡 蹂댁븞 ?뺤콉?쇰줈 ?먯씠?꾪듃 ??寃€??李⑤떒
?€??遺꾧린/?ы겕?뱀젙 硫붿떆吏€?먯꽌 ???€??遺꾧린
?€????寃€??/td>硫붿떆吏€ ?댁슜 寃€??(?쒕ぉ肉??꾨땲??
硫€???€??鍮꾧탳???€?붾? ?섎???鍮꾧탳
?κ린 硫붾え由?/td>?€??媛??ъ슜???좏샇 湲곗뼲
-
-
- - - -

6. Sigmoid Desktop ?ъ링 遺꾩꽍 ??Chat · Cowork · Code

- -
- Sigmoid Desktop??3媛???Chat, Cowork, Code)???ъ링 遺꾩꽍?섍퀬,
- AX Copilot???숇벑??湲곕뒫??援ы쁽?섍린 ?꾪븳 ?꾪궎?띿쿂 諛?媛쒕컻 濡쒕뱶留듭쓣 ?섎┰?⑸땲?? -
- -
-Sigmoid Desktop 3??湲곕뒫 鍮꾧탳 + ?듭떖 ?⑦꽩 遺꾩꽍 (?대┃?섏뿬 ?쇱튂湲? -
-

Sigmoid Desktop 3??湲곕뒫 鍮꾧탳

- - - - - - - - - -
援щ텇ChatCoworkCode
?€???ъ슜??/strong>?꾩껜 ?ъ슜??/td>吏€???몃룞??(湲고쉷, 遺꾩꽍, 臾몄꽌)媛쒕컻??/td>
?곹샇?묒슜 紐⑤뜽?€?뷀삎 Q&A?먯쑉??硫€?곗뒪???묒뾽 ?섑뻾?먯씠?꾪떛 肄붾뵫
?뚯씪 ?묎렐?놁쓬?좏깮???대뜑 (VM ?뚮뱶諛뺤뒪)?좏깮???꾨줈?앺듃 ?대뜑
?ㅽ뻾 ?섍꼍N/A濡쒖뺄 VM (寃⑸━)濡쒖뺄 / 由щえ??/ SSH
?듭떖 湲곕뒫??寃€?? 而ㅻ꽖?? ?꾪떚?⑺듃臾몄꽌 ?묒꽦, ?곗씠??遺꾩꽍, ?ㅽ봽?덈뱶?쒗듃Visual Diff, Git Worktree, ???꾨━酉?/td>
沅뚰븳 紐⑤뜽?쎄린 ?꾩슜?대뜑 ?좏깮 + ?쎄린/?곌린 遺꾨━ + ??젣 ?뺤씤?꾧뎄蹂??덉슜/李⑤떒 + ?뚮뱶諛뺤뒪
蹂댁븞湲곕낯VM 寃⑸━ + ?ㅽ듃?뚰겕 李⑤떒SecurityAnalyzer + ConfirmationPolicy
-
- -
-

Sigmoid Desktop ?듭떖 ?⑦꽩 遺꾩꽍

- - - - - - - - -
?⑦꽩?ㅻ챸AX Copilot ?곸슜 諛⑺뼢
?대뜑 ?좏깮梨꾪똿 ?섎떒???묒뾽 ?대뜑 ?좏깮 UI. ?좏깮???대뜑留??묎렐 媛€??/td>Chat ?섎떒??FolderBrowserDialog + 寃쎈줈 ?쒖떆 諛?/td>
沅뚰븳 ?④퀎?쎄린/?곌린 遺꾨━, ??젣 ???뺤씤 ?꾨\?꾪듃, ?ㅽ듃?뚰겕 李⑤떒3?④퀎: Ask(留ㅻ쾲 ?뺤씤) / Auto(?먮룞 ?덉슜) / Deny(李⑤떒)
?먯씠?꾪듃 猷⑦봽怨꾪쉷 ???꾧뎄 ?ㅽ뻾 ??愿€李????ы룊媛€ 諛섎났OpenHands/OpenCode 肄붿뼱 ?붿쭊 ?쒖슜
?꾧뎄 ?쒖뒪??/strong>?뚯씪 ?쎄린/?곌린, Bash, 釉뚮씪?곗?, ??寃€??/td>WPF ?ㅼ씠?곕툕 ?꾧뎄 + MCP ?듯빀 (??寃€???쒖쇅)
Git ?ㅻ깄??/strong>留??묒뾽 ?④퀎留덈떎 Git 而ㅻ컠?쇰줈 濡ㅻ갚 媛€??/td>OpenCode??Git snapshot ?쒖뒪???쒖슜
LSP 寃€利?/strong>?뚯씪 ?섏젙 ??Language Server濡??ㅻ쪟 ?먮룞 寃€利?/td>OpenCode??LSP ?듯빀 ?쒖슜
-
- -
-

Sigmoid Cowork vs AX Copilot ???꾨왂??李⑤퀎??/h3> - - - - - - - - -
??ぉSigmoid CoworkAX Copilot 李⑤퀎??/th>
?ㅽ뻾 ?섍꼍?대씪?곕뱶 VM ?뚮뱶諛뺤뒪?꾩쟾 濡쒖뺄 ?ㅽ뻾 ???곗씠?곌? ?몃?濡??꾩넚?섏? ?딆쓬
LLM ?좏깮 ?먯쑀Sigmoid留??ъ슜 媛€??/td>4醫?LLM 吏€??/strong> ??Ollama/vLLM/Gemini/Sigmoid
蹂댁븞 ?듭젣Ask/Auto 2?④퀎Ask/Auto/Deny 3?④퀎 + 李⑤떒 寃쎈줈/?뺤옣???꾪뿕 紐낅졊
諛고룷Electron 湲곕컲?⑥씪 EXE + NuGet DLL
鍮꾩슜Pro $20/?? Max $100/??/td>臾대즺 + API 鍮꾩슜留?/strong>
?ㅽ듃?뚰겕 ?섏〈?곸떆 ?명꽣???꾩슂Ollama/vLLM ?ъ슜 ???명듃?쇰꽬留뚯쑝濡??숈옉
-

-
- - - -

7. ?ㅽ뵂?뚯뒪 肄붿뼱 ?붿쭊 遺꾩꽍

- -
-OpenHands + OpenCode + 鍮꾧탳 (?대┃?섏뿬 ?쇱튂湲? - -
-

OpenHands ??Cowork 肄붿뼱 (MIT ?쇱씠?좎뒪)

-
github.com/All-Hands-AI/OpenHands · Python 72% / TypeScript 25% · 64k+
- - - - - - -
援ъ꽦 ?붿냼??븷?댁옣 諛⑹떇
openhands.sdkAgent, Conversation, LLM, Tool, ?대깽???쒖뒪??/td>Python subprocess ?먮뒗 HTTP API
openhands.tools?뚯씪 議곗옉, Bash, 釉뚮씪?곗?, ??寃€??/td>?꾩슂???꾧뎄留??좊퀎 ?댁옣 (??寃€???쒖쇅)
openhands.workspace?ㅽ뻾 ?섍꼍 (濡쒖뺄/Docker/由щえ??LocalWorkspace (Docker ?놁씠 吏곸젒 ?ㅽ뻾)
agent_serverREST/WebSocket API ?쒕쾭濡쒖뺄 HTTP ?쒕쾭濡?WPF?€ ?듭떊
-
    -
  • ?먯씠?꾪듃 猷⑦봽: ?ъ슜??硫붿떆吏€ ??LLM ??Action ??Runtime(?뚮뱶諛뺤뒪) ??Observation ??諛섎났
  • -
  • 蹂댁븞: SecurityAnalyzer(?꾪뿕???됯?) + ConfirmationPolicy(?뱀씤 ?붽뎄) + SecretRegistry(鍮꾨? 愿€由?
  • -
  • 而⑦뀓?ㅽ듃 愿€由?/strong>: LLMSummarizingCondenser ??而⑦뀓?ㅽ듃 珥덇낵 ???먮룞 ?붿빟 (鍮꾩슜 2x ?덇컧)
  • -
-
- -
-

OpenCode ??Code 肄붿뼱 (MIT ?쇱씠?좎뒪)

-
github.com/opencode-ai/opencode · Go(TUI) / JavaScript+Bun(?쒕쾭) · 95k+
- - - - - - - -
援ъ꽦 ?붿냼??븷?댁옣 諛⑹떇
Bun HTTP ?쒕쾭 (Hono)?먯씠?꾪듃 猷⑦봽, ?꾧뎄 ?ㅽ뻾, LLM ?듭떊諛깃렇?쇱슫???꾨줈?몄뒪 + REST API
?꾧뎄 ?쒖뒪??/td>?뚯씪 ?쎄린/?곌린, Bash, Glob, Grep, ??寃€??/td>HTTP API濡??몄텧 (??寃€???쒖쇅)
LSP ?듯빀?뚯씪 ?섏젙 ??Language Server 吏꾨떒?쒕쾭 ?댁옣 LSP 洹몃?濡??쒖슜
Git Snapshot留??④퀎 ?꾩떆 而ㅻ컠 ??undo/redo 吏€??/td>?쒕쾭 ?댁옣 湲곕뒫 洹몃?濡??쒖슜
?대깽??踰꾩뒪 (SSE)?ㅼ떆媛??ㅽ듃由щ컢 (tool-call, text-delta ??WPF HttpClient + SSE ?뚯떛
-
    -
  • ?먯씠?꾪듃 猷⑦봽: ?꾨\?꾪듃 ??LLM streamText ???꾧뎄 ?몄텧 ??寃곌낵 ?쇰뱶諛???LSP 寃€利???諛섎났
  • -
  • ?먯씠?꾪듃 紐⑤뱶: Plan 紐⑤뱶(?쎄린 ?꾩슜) / Build 紐⑤뱶(?뚯씪 ?섏젙 ?덉슜)
  • -
  • ?쒕툕?먯씠?꾪듃: task ?꾧뎄濡????몄뀡 ?앹꽦 (蹂꾨룄 而⑦뀓?ㅽ듃, ?ㅻⅨ LLM 媛€??
  • -
-
- -
-

?ㅽ뵂?뚯뒪 肄붿뼱 鍮꾧탳

- - - - - - - - - -
??ぉOpenHandsOpenCode
二??몄뼱Python + TypeScriptGo + JavaScript(Bun)
?꾪궎?띿쿂?대깽???뚯떛 + Docker ?뚮뱶諛뺤뒪?대씪?댁뼵???쒕쾭 + HTTP API + SSE
寃⑸━ ?섏?Docker 而⑦뀒?대꼫 (?꾩쟾 寃⑸━)?놁쓬 (Git ?ㅻ깄?룹쑝濡?濡ㅻ갚)
LLM 吏€??/td>100+ (LiteLLM)75+ (AI SDK)
.NET ?듯빀 ?쒖씠??/td>以묎컙 (Python subprocess + HTTP)??쓬 (?쒖닔 HTTP REST + SSE)
Windows 吏€??/td>Docker ?꾩슂WSL 沅뚯옣, ?ㅼ씠?곕툕 媛€??/td>
?곹빀 ?⑸룄Cowork (臾몄꽌/?곗씠??遺꾩꽍 ?묒뾽)Code (肄붾뱶 ?몄쭛/?앹꽦/由ы뙥?좊쭅)
-
-
- - - -

8. ?먯씠?꾪듃 怨좊룄?붾? ?꾪븳 ?쇰Ц 諛??ㅽ뵂?뚯뒪 ?ъ링 遺꾩꽍

- -
- AX Copilot???먯껜 援ы쁽 ?먯씠?꾪듃 肄붿뼱(AgentLoopService)瑜?怨좊룄?뷀븯湲??꾪빐
- 愿€???숈닠 ?쇰Ц怨??좎궗 ?ㅽ뵂?뚯뒪 ?꾨젅?꾩썙?щ? 遺꾩꽍?섍퀬, ?곸슜 媛€?ν븳 湲곕쾿???꾩텧?⑸땲?? -
- -
-12.1 ?듭떖 ?쇰Ц 遺꾩꽍 (ReAct, Reflexion, SWE-Agent ??10?? (?대┃?섏뿬 ?쇱튂湲? -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?쇰Ц/媛쒕뀗?듭떖 ?꾩씠?붿뼱二쇱슂 湲곕쾿AX Copilot ?곸슜 諛⑹븞
ReAct
Yao et al., 2023
Reasoning + Acting ?명꽣由щ튃Thought-Action-Observation ?몃━??諛섎났?꾩옱 遺€遺??곸슜. Thought ?④퀎瑜?紐낆떆?곸쑝濡?遺꾨━?섏뿬 UI???쒖떆.
Toolformer
Schick et al., 2023
LLM???ㅼ뒪濡??꾧뎄 ?ъ슜 ?쒖젏怨?諛⑸쾿???숈뒿Self-supervised API call insertion?쒖뒪???꾨\?꾪듃?먯꽌 ?꾧뎄 ?ъ슜 洹쒖튃 ?뺤쓽. 異붽? 議곗튂 遺덊븘??
MRKL Systems
Karpas et al., 2022
LLM???쇱슦?곕줈, ?꾨Ц 紐⑤뱢???ㅽ뻾湲곕줈 遺꾨━Neural + Symbolic 紐⑤뱢 ?섏씠釉뚮━??/td> - ?대? ?곸슜. ToolRegistry媛€ MRKL??紐⑤뱢 ?덉??ㅽ듃由???븷.
HuggingGPT / TaskMatrix
Shen et al., 2023
LLM???묒뾽??遺꾪빐?섍퀬 ?꾨Ц 紐⑤뜽???꾩엫?섎뒗 ?ㅼ??ㅽ듃?덉씠???⑦꽩Task Planning ??Model Selection ??Execution ??Response?듭떖 ?곸슜 ?€?? Task Decomposition ?④퀎 異붽? ??蹂듭옟???붿껌???섏쐞 ?묒뾽?쇰줈 遺꾪빐.
Voyager
Wang et al., 2023
?먮룞 而ㅻ━?섎읆 + ?ㅽ궗 ?쇱씠釉뚮윭由?/td> - Skill Library + Self-verification + Iterative Refinement?κ린 ?곸슜 ?€?? 而ㅼ뒪?€ ?ㅽ궗 ?€???쒖뒪??
SWE-Agent
Yang et al., 2024
Agent-Computer Interface (ACI) ?ㅺ퀎 ?먯튃Linting, Window-based file viewing, Search & NavigateCode ??뿉 ?듭떖 ?곸슜. FileEditTool ?ㅽ뻾 ???먮룞 援щЦ 寃€利?異붽?.
Reflexion
Shinn et al., 2023
?먭린 諛섏꽦???듯븳 ?먯씠?꾪듃 ?깅뒫 ?μ긽Evaluator ??Self-Reflection ??Memory ??Retry with insight以묒슂 媛쒖꽑 ?€?? ?꾧뎄 ?ㅽ뙣 ??諛섏꽦 ?꾨\?꾪듃 異붽?. 理쒕? N???먮룞 ?ъ떆??
Plan-and-Solve
Wang et al., 2023
癒쇱? 怨꾪쉷???몄슦怨??④퀎蹂꾨줈 ?ㅽ뻾怨꾪쉷 ??蹂€??異붿텧 ???④퀎蹂?怨꾩궛?쒖뒪???꾨\?꾪듃 媛쒖꽑??利됱떆 ?곸슜 媛€??
MemGPT / LLM OS
Packer et al., 2023
LLM 而⑦뀓?ㅽ듃 ?덈룄?곕? 媛€??硫붾え由ъ쿂??愿€由?/td> - Main context ??Archival storage ??Recall storage 怨꾩링Context Condenser???대줎??湲곕컲. 3怨꾩링 硫붾え由??쒖뒪??
AutoGPT
Richards, 2023
?꾩쟾 ?먯쑉 ?먯씠?꾪듃Self-criticism, Budget/Step limit, Persistent memory媛€?쒕젅???ㅺ퀎 李멸퀬. ?먯씠?꾪듃 猷⑦봽 理쒕? 諛섎났 ?잛닔 ?쒗븳.
Tree of Thoughts
Yao et al., 2023
?щ윭 異붾줎 寃쎈줈瑜??몃━濡??먯깋BFS/DFS 湲곕컲 ?먯깋, 諛깊듃?섑궧?κ린 ?곌뎄 ?€??
-
-
- -
-12.2 ?ㅽ뵂?뚯뒪 ?먯씠?꾪듃 ?꾨젅?꾩썙??鍮꾧탳 (OpenHands, Aider, Cline, Cursor ?? (?대┃?섏뿬 ?쇱튂湲? -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
?꾨줈?앺듃Stars?꾪궎?띿쿂?듭떖 李⑤퀎??/th>AX Copilot ?곸슜 ?ъ씤??/th>
OpenHands64k+?대깽???뚯떛 + Docker ?뚮뱶諛뺤뒪SecurityAnalyzer, LLMSummarizingCondenser, ?대깽???뚯떛ContextCondenser 援ы쁽, ?꾪뿕???됯?, ?대깽??濡쒓렇
Aider30k+Git 湲곕컲 diff ?몄쭛 + 肄붾뱶留?/td> - Repository Map, Unified Diff, Auto-commitRepo Map (?묒뾽 ?대뜑 ?몃━ ?붿빟), Git ?ㅻ깄??/td> -
Cline35k+VS Code ?뺤옣 + ?먯씠?꾪듃 猷⑦봽Diff 誘몃━蹂닿린, 鍮꾩슜 異붿쟻, MCP 吏€??/td> - Diff 誘몃━蹂닿린 UI, ?꾩쟻 鍮꾩슜 ?쒖떆
Cursor?곸슜IDE ?댁옣 ?먯씠?꾪듃 + Shadow WorkspaceShadow Workspace, Tab Completion, @-mentionsShadow Workspace, @-李몄“ 而⑦뀓?ㅽ듃 泥⑤?
Devon4k+?몄뀡 湲곕컲 ?먯씠?꾪듃 + ?먮룞 ?뚯뒪??/td> - ?먮룞 ?뚯뒪???ㅽ뻾, ?몄뀡 ?대젰, Interrupt & Resume?몄뀡 吏곷젹?? ?먮룞 ?뚯뒪??/td> -
Sweep8k+GitHub Issue ??PR ?먮룞 ?앹꽦肄붾뱶 寃€???몃뜳?? Self-reviewSelf-review 2-pass ?⑦꽩
Mentat3k+?곕???湲곕컲 肄붾뵫 ?먯씠?꾪듃Auto Context (import/dependency ?먮룞 ?섏쭛)Auto Context ?뚯씪 ?몄쭛 ??愿€???뚯씪 ?먮룞 異붽?
-
-
- -
-12.3 怨좊룄??湲곗닠 ?곸뿭 ???곸슜 ?곗꽑?쒖쐞 (12??ぉ) (?대┃?섏뿬 ?쇱튂湲? -
- - - - - - - - - - - - - - -
#湲곗닠 ?곸뿭?꾩옱 ?곹깭紐⑺몴 援ы쁽李멸퀬?곗꽑?쒖쐞
1Task Decomposition?놁쓬蹂듭옟???붿껌???섏쐞 ?묒뾽?쇰줈 遺꾪빐 + 吏꾪뻾瑜?UIHuggingGPT, Plan-and-SolveP1
2Self-Reflection?먮윭 硫붿떆吏€留?/td>諛섏꽦 ?꾨\?꾪듃 + 理쒕? 3???먮룞 ?ъ떆??/td>Reflexion, SWE-AgentP1
3Context Condenser?놁쓬?좏겙 ?꾧퀎媛???LLM ?붿빟?쇰줈 ?뺤텞OpenHandsP1
4Repo/Folder Map?놁쓬?뚯씪 ?몃━瑜??쒖뒪???꾨\?꾪듃???먮룞 ?ы븿Aider RepoMapP2
5Risk AssessmentAsk/Auto/Deny留?/td>?꾧뎄蹂??꾪뿕???먮룞 遺꾨쪟OpenHands SecurityAnalyzerP2
6Diff Preview利됱떆 ?섏젙?뚯씪 ?섏젙 ??diff 酉?+ ?ъ슜???뱀씤Cline, CursorP2
7Session Serialization?€?붾쭔 ?€??/td>?먯씠?꾪듃 猷⑦봽 ?꾩껜 ?곹깭 JSON ?€??蹂듭썝Devon, OpenHandsP2
8Custom Skill Library?댁옣 12媛?怨좎젙?ъ슜???뺤쓽 ?ㅽ궗 ?€??愿€由?/td>VoyagerP3
9Self-Review?놁쓬2-pass ?덉쭏 寃€利??⑦꽩Sweep, ReflexionP3
10Parallel Tool Execution?쒖감 1媛쒖뵫Task.WhenAll 蹂묐젹 ?ㅽ뻾Sigmoid API parallel tool_useP3
11Auto Context?놁쓬?몄쭛 ?€???뚯씪??import/李몄“ ?뚯씪 ?먮룞 媛먯?Mentat, CursorP3
12Shadow Workspace?놁쓬?꾩떆 蹂듭궗蹂몄뿉???몄쭛 ??寃€利????곸슜CursorP3
-
- ?듭떖 ?먯튃: 紐⑤뱺 怨좊룄?붾뒗 C# ?ㅼ씠?곕툕濡?援ы쁽. Python/Node.js ?섏〈???놁쓬.
- 理쒖슦??3媛? Task Decomposition + Self-Reflection + Context Condenser -
-
-
- -
-12.5 UX 怨좊룄??怨꾪쉷 + 12.7 寃쎌웳 ?쒕퉬???ㅼ젙 遺꾩꽍 (?대┃?섏뿬 ?쇱튂湲? -
-

UX 怨좊룄??怨꾪쉷

- - - - - - - -
#湲곕뒫?ㅻ챸?곗꽑?쒖쐞
1?뚯씪 ?щ㎎ ?좏깮 UI?ъ슜?먭? 寃곌낵臾??뺤떇(Excel/Word/HTML/Markdown/CSV)??吏곸젒 ?좏깮P1
2?ㅽ뻾 ?대젰 ?곸꽭 ?쒖떆?먯씠?꾪듃 ?꾩껜 ?대젰???€?꾨씪?몄쑝濡??쒖떆 (?묒씠???대깽??移대뱶)P1
3臾몄꽌 ?ㅼ떆媛?誘몃━蹂닿린Sigmoid Artifacts ?ㅽ????ㅻⅨ履??⑤꼸 誘몃━蹂닿린P1
4?붿옄???쒗뵆由??쒖뒪??/strong>怨좏뭹吏??붿옄???쒗뵆由??댁옣 (蹂닿퀬?? 遺꾩꽍?? ?€?쒕낫????P2
5Suggestion Chips 怨좊룄??/strong>?ㅼ뼇???좏깮吏€ ?⑦꽩 媛먯??섏뿬 移??쒖떆P2
-
- -
-

寃쎌웳 ?쒕퉬???ㅼ젙 遺꾩꽍 ???ъ슜???먯쑀 ?ㅼ젙 洹밸???/h3> - - - - - - - - -
?ㅼ젙 移댄뀒怨좊━寃쎌웳 ?쒕퉬???꾪솴AX Copilot 援ы쁽 怨꾪쉷?곗꽑?쒖쐞
誘몃━蹂닿린 ?먮룞 ?닿린Sigmoid Artifact ?먮룞 ?쒖떆AutoPreview: Auto / Manual / OffP1
湲곕낯 異쒕젰 ?щ㎎AI媛€ ?먮룞 ?좏깮DefaultOutputFormat: ?먮룞 / Excel / Word / HTML / MD / CSVP1
?먯씠?꾪듃 沅뚰븳 ?몃??꾨줈?앺듃蹂?沅뚰븳 ?꾨줈??/td>?꾧뎄蹂?媛쒕퀎 沅뚰븳, 寃쎈줈蹂?沅뚰븳, ?꾪뿕??湲곕컲 ?먮룞 遺꾨쪟P2
?대깽??濡쒓렇 ?섏??곸꽭/媛꾨왂 紐⑤뱶 ?꾪솚AgentLogLevel: 媛꾨왂 / ?곸꽭 / ?붾쾭洹?/td>P2
?먯씠?꾪듃 猷⑦봽 ?쒗븳湲곕낯 25??/td>MaxAgentIterations: 1~50 ?щ씪?대뜑P2
??퀎 紐⑤뜽 ?ㅼ젙?⑥씪 紐⑤뜽Chat/Cowork/Code ??퀎 ?ㅻⅨ LLM 吏€??媛€??/td>P3
-

-
- -
-12.8 而ㅼ뒪?€ UI 媛€?대뱶?쇱씤 (?대┃?섏뿬 ?쇱튂湲? -
-

而ㅼ뒪?€ UI 媛€?대뱶?쇱씤 ???щ????쇨????먯튃

- - - - - - - -
UI ?붿냼臾몄젣??/th>而ㅼ뒪?€ 援ы쁽 諛⑹븞?곹깭
ContextMenu?쒖뒪??湲곕낯 ?곗깋 硫붾돱WPF Popup 湲곕컲 而ㅼ뒪?€ 硫붾돱 + DynamicResource?꾨즺
MessageBoxWin32 ?ㅽ????뚮쭏 遺덉씪移?/td>CustomMessageBox ?대옒?ㅻ줈 ?€泥?/td>?꾨즺
ComboBox ?쒕∼?ㅼ슫?ㅽ겕 ?뚮쭏?먯꽌 遺덉씪移?/td>Popup 湲곕컲 而ㅼ뒪?€ ?쒕∼?ㅼ슫P2 ?덉젙
FolderBrowserDialog?뚮쭏 ?곸슜 遺덇??먯껜 理쒓렐 ?대뜑 硫붾돱瑜?1李??묒젏?쇰줈 ?쒓났?꾨즺
ToolTip?쒖뒪??湲곕낯 ?몃???/td>而ㅼ뒪?€ ToolTip ???ㅽ겕 諛곌꼍, ?쇱슫??肄붾꼫P2 ?덉젙
-
- 媛쒕컻 洹쒖튃:
- 1. ???앹뾽/硫붾돱/?€?붿긽?????쒖뒪??湲곕낯 而⑦듃濡??ъ슜 湲덉?, 諛섎뱶??而ㅼ뒪?€ 援ы쁽
- 2. 紐⑤뱺 ?됱긽?€ DynamicResource ???ъ슜 (?섎뱶肄붾뵫 ?덈? 湲덉?)
- 3. ?고듃 ?ш린: 硫붾돱 ??ぉ 13px ?댁긽, ?ㅻ챸 ?띿뒪??12px ?댁긽
- 4. ?몃쾭/?대┃ ?④낵 ?꾩닔 ??#18FFFFFF 諛섑닾紐?諛곌꼍 + ?몃뱶 而ㅼ꽌
- 5. Popup ?대???Button ?ъ슜 湲덉? ??Border + MouseLeftButtonUp ?ъ슜 -
-
-
- - - -

9. AX Agent 3??媛쒕컻 濡쒕뱶留?/h2> - -
- AX Agent瑜?Chat · Cowork · Code 3??援ъ“濡??뺤옣.
- ?쒕쾭 湲곕컲 ?ㅽ뵂?뚯뒪 ?뚮옯?쇱쓽 怨꾪쉷?믪떎?됤넂寃€利?猷⑦봽瑜??곗뒪?ы넲 ?깆뿉 ?댁옣. -
- -
-Phase 1~3 + 怨듯넻 ?명봽??+ ?꾩껜 ?ㅽ궗 紐⑸줉 (?대┃?섏뿬 ?쇱튂湲? - -
-

Phase 1 ??Chat ??怨좊룄??(v1.0.7)

- - - - - - -
??ぉ?ㅻ챸?곗꽑?쒖쐞
??UI 援ъ“ChatWindow ?곷떒??Chat | Cowork | Code 3??異붽?P0
?묒뾽 ?대뜑 ?좏깮梨꾪똿 ?섎떒 ?대뜑 寃쎈줈 ?쒖떆 諛?+ ?좏깮 踰꾪듉P0
沅뚰븳 ?쒖뒪???ㅺ퀎3?④퀎: Ask / Auto / DenyP0
?뚯씪 而⑦뀓?ㅽ듃 泥⑤??쒕옒洹?amp;?쒕∼ ?먮뒗 踰꾪듉?쇰줈 ?뚯씪 泥⑤?P1
-
- -
-

?섍꼍 ?쒖빟: Docker/WSL ?ъ슜 遺덇?

-

- ?щ궡 蹂댁븞 ?뺤콉?쇰줈 Docker 諛?WSL??李⑤떒. ??寃€??湲곕뒫?€ 蹂댁븞 ?뺤콉??援ы쁽?섏? ?딆뒿?덈떎.
- ?€???꾨왂: ?ㅽ뵂?뚯뒪 ?듭떖 濡쒖쭅??C# ?ㅼ씠?곕툕 肄붾뱶濡??ш뎄??/strong>. -

-
- -
-

Phase 2 ??Cowork ??(v1.1.0) ??C# ?ㅼ씠?곕툕 ?먯씠?꾪듃 ?붿쭊

- - - - - - - - -
??ぉ?ㅻ챸援ы쁽 諛⑹떇
?먯씠?꾪듃 猷⑦봽 ?붿쭊怨꾪쉷?믩룄援ъ떎?됤넂愿€李겸넂?ы룊媛€ 諛섎났C# AgentLoopService
湲곕낯 ?꾧뎄 (Tools)FileRead/Write/Edit, Process, Glob, GrepC# IAgentTool ?명꽣?섏씠??/td>
?댁옣 ?ㅽ궗ExcelSkill, DocxSkill, CsvSkill, MarkdownSkill, HtmlSkill, BatchSkill???댁옣 ?ㅽ궗 ?쒖뒪??/td>
LLM ?⑥닔 ?몄텧Tool-use / Function-calling ?꾨줈?좎퐳湲곗〈 LlmService ?뺤옣
沅뚰븳 ?뱀씤 UI?몃씪???뱀씤 UI + 寃쎈줈 ?쒖떆 諛곕꼫C# PermissionService
而⑦뀓?ㅽ듃 ?붿빟?좏겙 珥덇낵 ???먮룞 ?붿빟C# ContextCondenser
-
- -
-

Phase 2.5 ??Cowork 湲곕뒫 怨좊룄??(v1.1.x)

- - - - - - - -
??ぉ?ㅻ챸?곹깭
?꾨━酉????쒖뒪??/td>?ㅼ쨷 ?뚯씪 ?꾨━酉? 梨꾪똿?뷀봽由щ럭 ?쒕옒洹?由ъ궗?댁쫰?꾨즺
?쒕∼?ㅼ슫 硫붾돱 ?⑦꽩而댄뙥???쒕∼?ㅼ슫 + Popup 諛⑹떇?꾨즺
?꾨━酉??숈쟻 媛깆떊?먯씠?꾪듃 ?뚯씪 ?섏젙 ???먮룞 ?덈줈怨좎묠?꾨즺
臾몄꽌 ?쎄린 ?꾧뎄PDF, DOCX, XLSX, CSV, TXT ?띿뒪??異붿텧?꾨즺
?대뜑留??꾧뎄?묒뾽 ?대뜑 ?붾젆?좊━ ?몃━ ?앹꽦?꾨즺
-
- -
-

Phase 3 ??Code ??(v1.2.0) ??C# ?ㅼ씠?곕툕 肄붾뵫 ?먯씠?꾪듃

- - - - - - - - - -
??ぉ?ㅻ챸援ы쁽 諛⑹떇
肄붾뵫 ?먯씠?꾪듃 ?붿쭊?꾨\?꾪듃?묹LM?믩룄援ы샇異쒋넂寃곌낵?쇰뱶諛기넂寃€利?猷⑦봽Phase 2 AgentLoopService ?뺤옣
肄붾뱶 ?꾧뎄 ?쒖뒪??/td>Glob, Grep, FileEdit, Bash, 肄붾뱶 遺꾩꽍C# GlobTool, GrepTool, FileEditTool
肄붾뱶 ?먮뵒??酉?/td>?뚯씪 ?몃━ + 肄붾뱶 酉곗뼱 + diff ?쒖떆AvalonEdit NuGet
Git Snapshot留??묒뾽 ?④퀎 ?먮룞 而ㅻ컠 + undo/redoLibGit2Sharp
LSP 吏꾨떒?뚯씪 ?섏젙 ???ㅻ쪟/寃쎄퀬 ?몃씪???쒖떆StreamJsonRpc (LSP JSON-RPC)
?먯씠?꾪듃 紐⑤뱶 ?꾪솚Plan 紐⑤뱶(?쎄린 ?꾩슜) ??Build 紐⑤뱶(?ㅼ젣 ?섏젙)?꾧뎄 沅뚰븳 ?덈꺼濡?援щ텇
?쒕툕?먯씠?꾪듃蹂듭옟???묒뾽???섏쐞 ?먯씠?꾪듃???꾩엫SubAgentService + Task.WhenAll
-
- -
-

怨듯넻 ?명봽??(??Phase 怨듭쑀)

- - - - - - - - -
??ぉ?ㅻ챸
?묒뾽 ?대뜑 ?쒖뒪??/strong>Chat ?섎떒???대뜑 ?좏깮 諛? Cowork/Code ???꾪솚 ???숈씪 ?대뜑 ?좎?
沅뚰븳 3?④퀎Ask(留ㅻ쾲 ?뺤씤) / Auto(?먮룞 ?덉슜, 寃쎄퀬 諛곕꼫) / Deny(?꾩쟾 李⑤떒)
??퀎 ?€??遺꾨━Chat · Cowork · Code ??퀎 ?€???대젰 ?꾩쟾 遺꾨━
?몃? ?고???遺덊븘??/strong>?쒖닔 C#/.NET 8.0?쇰줈 紐⑤뱺 湲곕뒫 援ы쁽
??寃€??李⑤떒?щ궡 蹂댁븞 ?뺤콉?쇰줈 ?먯씠?꾪듃???몃? ???묒냽 李⑤떒
NuGet ?⑦궎吏€留??ъ슜LibGit2Sharp, AvalonEdit, StreamJsonRpc, FileSystemGlobbing
-
- -
-

?꾩껜 ?ㅽ궗 紐⑸줉 (?뺤옣 怨꾪쉷)

- - - - - - - - - - - - - - - - - - -
遺꾨쪟?곗꽑?쒖쐞?ㅽ궗湲곕뒫蹂댁븞
臾몄꽌P0ExcelSkill 怨좊룄??/strong>?€ ?쒖떇, ?섏떇, ?ㅼ쨷 ?쒗듃?덉쟾
P0DocxSkillWord 臾몄꽌 ?앹꽦?덉쟾
P1PptxSkill?꾨젅?좏뀒?댁뀡 ?앹꽦?덉쟾
P0HtmlSkill 怨좊룄??/strong>JS 吏€?? Chart.js 李⑦듃, Mermaid?덉쟾
?곗씠??/td>P0CsvSkillCSV ?쎄린/?곌린/?꾪꽣留?/td>?덉쟾
P1JsonSkillJSON 荑쇰━/蹂€??寃€利?/td>?덉쟾
P2SqliteSkill濡쒖뺄 DB ?앹꽦/荑쇰━SQL ?몄젥??諛⑹?
?쒓컖??/td>P1ChartSkillBar/Line/Pie 李⑦듃?덉쟾
P1MermaidSkillMermaid ?ㅼ씠?닿렇??/td>?덉쟾
PDFP1PdfReadSkillPDF ?띿뒪??異붿텧?쎄린 ?꾩슜
P2PdfCreateSkill蹂닿퀬??PDF ?앹꽦?덉쟾
?좏떥P0ZipSkill?뺤텞/?댁젣Zip-slip 寃€利?/td>
P1DiffSkill???뚯씪 鍮꾧탳?쎄린 ?꾩슜
?ㅽ겕由쏀듃P0BatchSkill.bat ?뚯씪 ?앹꽦 (?ㅽ뻾 X)?쒖뒪??紐낅졊 李⑤떒
P1PowerShellSkill.ps1 ?ㅽ겕由쏀듃 ?앹꽦?쒖뒪??紐낅졊 李⑤떒
媛쒕컻P1GitSkillstatus/log/diff/commit + ?ㅻ깄??/td>?곌린 ?묒뾽 ?뺤씤
-
-
- -
-Cowork · Code ???ㅼ젙 ??ぉ 怨꾪쉷 (?대┃?섏뿬 ?쇱튂湲? -
- - - - - - - - - - - -
?ㅼ젙 ??ぉSigmoid DesktopAX Copilot 怨꾪쉷?곹깭
湲곕낯 ?뚯씪 ?묎렐 沅뚰븳Ask / Auto ?좏깮Ask / Auto / Deny 3?④퀎?꾨즺
??퀎 ?€??遺꾨━??퀎 蹂꾨룄 ?€???대젰??퀎 ?€???꾩쟾 遺꾨━ ?€??/td>?꾨즺
?덉슜 ?꾧뎄 紐⑸줉?꾧뎄蹂??쒖꽦/鍮꾪솢???좉??ㅼ젙?먯꽌 ?꾧뎄蹂?泥댄겕諛뺤뒪Phase 2
?댁옣 ?ㅽ궗?놁쓬 (Artifacts濡??€泥?ExcelSkill, MarkdownSkill, HtmlSkill ??/td>Phase 2
理쒕? ?먯씠?꾪듃 諛섎났 ?잛닔?대? ?쒗븳 (~100???ㅼ젙?먯꽌 25~100 吏€??/td>Phase 2
?먮룞 而⑦뀓?ㅽ듃 ?붿빟?먮룞 (?좏겙 珥덇낵 ???꾧퀎移?議곗젅 媛€??/td>Phase 2
??퀎 紐⑤뜽 ?좏깮?꾩뿭 紐⑤뜽 ?좏깮Chat / Cowork / Code ??퀎 湲곕낯 紐⑤뜽Phase 2
Git ?ㅻ깄??/strong>?먮룞 而ㅻ컠/?섎룎由ш린?묒뾽 ???먮룞 ?ㅻ깄?? ?먰겢由?濡ㅻ갚Phase 3
肄붾뱶 ?먮뵒???ㅼ젙?놁쓬AvalonEdit ?뚮쭏, ?고듃/?ш린, 以꾨쾲??/td>Phase 3
-
-
- - - -

10. 怨듯넻 媛쒕컻 吏€移?/h2> -
- 紐⑤뱺 湲곕뒫 媛쒕컻 ???꾨옒 5媛€吏€ 怨듯넻 ?먯튃??以€?섑빀?덈떎. -
- -
-吏€移?1~5 ?곸꽭 (?대┃?섏뿬 ?쇱튂湲? - -
-

吏€移?1. 而ㅼ뒪?€ UI ?곴레 媛쒕컻

-

?붾㈃ ?붿옄??媛쒖꽑???꾪빐 而ㅼ뒪?€ ?붾㈃???곴레 媛쒕컻?섏뿬 ?ъ슜?⑸땲??

-
    -
  • WPF 湲곕낯 ?쒓났 而⑦듃濡?ContextMenu, MessageBox, Dialog ?? ?ъ슜??吏€??/strong>?⑸땲??
  • -
  • ?ㅽ겕/?쇱씠???뚮쭏 紐⑤몢?먯꽌 ?щ컮瑜닿쾶 ?숈옉?섎룄濡?DynamicResource 湲곕컲?쇰줈 援ы쁽?⑸땲??
  • -
-
- -
-

吏€移?2. ?ъ슜??紐⑤뜽 ?곹샇 ?쇰뱶諛?援ъ“

-

?ъ슜?먯? ?€??紐⑤뜽???곹샇 ?쇰뱶諛깊븯??援ъ“濡?媛쒕컻?⑸땲??

- - - - - -
?④퀎AI ?됰룞?ъ슜???쇰뱶諛?諛⑹떇
怨꾪쉷?묒뾽 紐⑸줉 + ?덉긽 寃곌낵 ?쒖떆?뱀씤 / ?섏젙 / 痍⑥냼 踰꾪듉
?ㅽ뻾?꾧뎄 ?몄텧 ???뺤씤 ?붿껌?ㅽ뻾 / 嫄대꼫?곌린 踰꾪듉
寃€??/td>寃곌낵 誘몃━蹂닿린 + ?붿빟 ?쒖떆?뱀씤 / ?ъ옉??/ 硫붿떆吏€
-
- -
-

吏€移?3. 理쒖떊 ?쇰Ц 諛??ㅽ뵂?뚯뒪 ?곴레 ?쒖슜

-

理쒖떊 ?쇰Ц 諛??ㅽ뵂?뚯뒪瑜??쒖슜?섏뿬 湲곕뒫 怨좊룄?붾? ?곴레 異붿쭊?⑸땲??

-
    -
  • ?먯씠?꾪듃 ?꾪궎?띿쿂, ?꾧뎄 ?ъ슜 ?⑦꽩, RAG 湲곕쾿 ???숈닠 ?곌뎄 寃곌낵瑜?援ы쁽??諛섏쁺?⑸땲??
  • -
  • ?덈줈??湲곕뒫 湲고쉷 ??愿€???쇰Ц/?ㅽ뵂?뚯뒪瑜?癒쇱? 議곗궗?섍퀬 踰ㅼ튂留덊겕?⑸땲??
  • -
-
- -
-

吏€移?4. NuGet 怨좎꽦???쇱씠釉뚮윭由??곴레 梨꾩슜 + ?ы븿諛고룷

-

?꾩슂??寃쎌슦 怨좎꽦??NuGet ?쇱씠釉뚮윭由?/strong>瑜??곴레 梨꾩슜?섍퀬, ?ы븿諛고룷(self-contained)濡??명듃?쇰꽬 ?명솚?깆쓣 蹂댁옣?⑸땲??

- - - - - - - -
?곸뿭?꾩옱寃€???€??NuGet?⑸룄
DOCX/XLSXDocumentFormat.OpenXml?대? 梨꾪깮Word/Excel ?앹꽦
PDF ?앹꽦誘멸뎄??/td>QuestPDF, itext7PDF 蹂닿퀬??吏곸젒 ?앹꽦
Excel 怨좉툒OpenXml 吏곸젒ClosedXML??媛꾪렪??Excel API
李⑦듃 ?대?吏€CSS 李⑦듃ScottPlot, LiveCharts2李⑦듃瑜??대?吏€濡??뚮뜑留?/td>
留덊겕?ㅼ슫吏곸젒 ?뚯떛MarkdigMD?묱TML 怨좏뭹吏?蹂€??/td>
-
- -
-

吏€移?5. 留덉슦???ㅻ쾭 ?좊땲硫붿씠???꾩닔 ?곸슜

-

?€?붿갹?먯꽌 留덉슦???ㅻ쾭媛€ 媛€?ν븳 紐⑤뱺 踰꾪듉, ?꾩씠肄?/strong>???몃쾭 ???좊땲硫붿씠?섏쓣 ?곸슜?⑸땲??

- - - - - - - -
?€??/th>?몃쾭 ?④낵援ы쁽 諛⑸쾿
GhostBtn (?ъ씠?쒕컮 踰꾪듉)1.08x ?뺣?XAML Style.Triggers + ScaleTransform
TopTabBtn (??踰꾪듉)1.06x ?뺣?XAML Style.Triggers + ScaleTransform
BtnSend, BtnStop, BtnAttach1.10~1.12x ?뺣?肄붾뱶鍮꾪븯?몃뱶 ApplyHoverScaleAnimation()
BtnModelSelectorY異?-2.5px 諛붿슫??/td>肄붾뱶鍮꾪븯?몃뱶 ApplyHoverBounceAnimation()
?≪뀡 踰꾪듉 (蹂듭궗, ?몄쭛 ??1.15x ?뺣?CreateActionButton ???곸슜
-
- 湲덉? ?ы빆: ?몄젒 ?붿냼(??踰꾪듉, 媛€濡??섏뿴 硫붾돱, ?대컮 ?꾩씠肄?????ScaleTransform ?뺣? ?④낵 ?ъ슜 湲덉? ???댁썐 ?붿냼瑜?媛€由ш굅???덉씠?꾩썐 源⑥쭚. ?€?? TranslateTransform(諛붿슫??, 諛곌꼍??蹂€寃? Opacity 蹂€寃??ъ슜. -
-
- ?붿옄???듭씪 ?먯튃: 紐⑤뱺 ?좏깮 ?쒖떆???ы뵆??V 泥댄겕 Path(CreateSimpleCheck())濡??듭씪. Segoe MDL2 Assets ?고듃 泥댄겕留덊겕 ?ъ슜 湲덉?. ?쇰뵒??踰꾪듉 ?뺥깭(???? ?ъ슜 湲덉?. -
-
-
- - - - - -
Part 2 ???꾨즺??怨좊룄??/div> - - - -

11. Phase 2.5~7 (v1.1.0 ~ v1.2.1) ?꾨즺

-
-
    -
  • ?먯씠?꾪듃 猷⑦봽 ?붿쭊 (21媛??꾧뎄), 10醫?臾대뱶, 而ㅼ뒪?€ ?꾨━??/li> -
  • 留덊겕?ㅼ슫 ?뚮뜑留?(?뚯씠釉??몄슜/留곹겕/痍⑥냼??, 肄붾뱶 釉붾줉 媛뺥솕
  • -
  • Code ??(5?꾨━??, DevEnvDetect/BuildRun/GitTool, Nexus ?곕룞
  • -
  • 8?④퀎 ?뚰겕?뚮줈???쒖뒪???꾨\?꾪듃, AX.md ?꾨줈?앺듃 而⑦뀓?ㅽ듃
  • -
-
- - - -

12. Phase 7.5 (v1.2.2) ?꾨즺

-
-
    -
  • 臾댁?媛?湲€濡쒖슦 ?④낵 (?곗쿂/梨꾪똿), 而ㅼ뒪?€ UI (而⑦뀓?ㅽ듃 硫붾돱, InputDialog)
  • -
  • ?ㅼ젙 援ъ“ 媛쒗렪 (怨듯넻 ???듯빀), ?ㅽ겕 ?뚮쭏 6醫?媛€?낆꽦 媛쒖꽑
  • -
  • ?뚮┝ ?ㅻ쪟 ?섏젙 (ShowTips/NotifyOnComplete), ViewModel 諛붿씤???뺣퉬
  • -
-
- - - -

13. Phase 8 (v1.3.0) ??寃쎌웳 ?쒕퉬??踰ㅼ튂留덊겕 湲곕컲 ?꾨즺

-
- - - - - - - - - - - - -
#湲곕뒫援ы쁽 ?댁슜
8-1MCP ?대씪?댁뼵??/td>McpClientService (stdio/JSON-RPC), McpTool ?섑븨, ?ㅼ젙 UI
8-2紐⑤뜽 ?대갚FallbackModels ?쒖감 ?쒕룄, ?대갚 ?뚮┝, ?ㅼ젙 ?몄쭛 UI
8-3?€??遺꾧린ParentId/BranchLabel, ?고겢由?"?ш린??遺꾧린", ?ъ씠?쒕컮 遺꾧린 ?꾩씠肄?/td>
8-4?ㅽ뵆由?酉?/td>?먮룞 ?꾨━酉?(?먯씠?꾪듃 ?뚯씪 ?섏젙 ??, AutoPreview ?ㅼ젙
8-5而ㅻ㎤???붾젅??/td>Ctrl+Shift+P, 16媛?紐낅졊, ?쒓? 珥덉꽦 寃€??/td>
8-6?좏겙 愿€由?/td>TokenEstimator (鍮꾩슜 異붿젙, CJK 媛€以묒튂), ?곹깭諛?鍮꾩슜 ?쒖떆
8-7?먯씠?꾪듃 ?먯쑉??/td>?숈쟻 諛섎났 ?쒕룄 (?꾧뎄 15+ ??2諛?, ?ㅻ떒怨?諛섏꽦
8-8媛쒕컻??紐⑤뱶怨듯넻 ?? 鍮꾨?踰덊샇 蹂댄샇, ?ㅽ뀦 ?뱀씤
8-9蹂댁븞 媛먯궗 濡쒓렇AuditLogService (JSON ?곸냽??, ?ㅼ젙 ?좉? + ?대뜑 ?닿린
異붽??ㅼ쨷 ?쒕쾭RegisteredModel??endpoint/apiKey ?꾨뱶, 紐⑤뜽蹂??쒕쾭 ?쇱슦??/td>
-
- - - -

14. 媛쒕컻 吏꾪뻾 濡쒓렇 (v1.0.5 ~ v1.0.7)

- -
-v1.0.5 AI ?쒕퉬???꾨㈃ 媛쒖꽑 (?대┃?섏뿬 ?쇱튂湲? -
-

2026-03-28 ??v1.0.5 AI ?쒕퉬???꾨㈃ 媛쒖꽑

- - - - - - - - - - - - -
??ぉ?곹깭蹂€寃??댁슜
LlmService JSON ?뚯떛 ?덉쟾?꾨즺SafeParseJson ?섑띁, 諛곗뿴 湲몄씠 寃€?? API error ?묐떟 媛먯?
API ?먮윭 遺꾨쪟?꾨즺HTTP ?곹깭 肄붾뱶蹂?硫붿떆吏€ (401/403/404/429/500)
?ъ떆??濡쒖쭅?꾨즺PostJsonWithRetryAsync ??429/?€?꾩븘????理쒕? 2??/td>
泥?겕 ?€?꾩븘??/td>?꾨즺ReadLineWithTimeoutAsync ??30珥?臾댁쓳?????ㅽ듃由?醫낅즺
ChatStorageService ?숆린??/td>?꾨즺ReaderWriterLockSlim, ?먯옄???곌린(tmp?뭨ename)
ChatHandler ?깃???/td>?꾨즺lock(_windowLock)?쇰줈 以묐났 李??앹꽦 諛⑹?
ChatWindow UI ?곕줈?€留?/td>?꾨즺DispatcherTimer 50ms 媛꾧꺽 媛깆떊, Brush 罹먯떛
Sigmoid API 諛깆뿏??/td>?꾨즺Sigmoid Messages API, ?ㅽ듃由щ컢(content_block_delta)
API ??蹂댁븞 遺꾨━?꾨즺Ollama/vLLM=?뷀샇?? Gemini/Sigmoid=?됰Ц
?ㅼ젙 UI AI ??/td>?꾨즺4醫??쒕퉬???좏깮, ?쒕퉬?ㅻ퀎 ???낅젰 ?덈궡 ?띿뒪??遺꾨━
-
-
- -
-v1.0.6 梨꾪똿 ?쒕퉬???덉쭏 吏묒쨷 媛쒖꽑 (?대┃?섏뿬 ?쇱튂湲? -
-

2026-03-28 ??v1.0.6 梨꾪똿 ?쒕퉬???덉쭏 吏묒쨷 媛쒖꽑

- - - - - - - - - -
??ぉ?곹깭蹂€寃??댁슜
?ㅽ듃由щ컢 ?ㅼ떆媛??쒖떆 ?섏젙?꾨즺泥?겕 ?⑥쐞 媛깆떊 + Dispatcher.InvokeAsync(Background) 諛⑹떇
Shift+Enter 以꾨컮轅?/td>?꾨즺AcceptsReturn="True" + PreviewKeyDown ?몃뱾??/td>
?꾨\?꾪듃 移대뱶 ?뚰꽣留덊겕?꾨즺?뚰꽣留덊겕(placeholder) ?ㅻ쾭?덉씠 ?쒖떆
醫뗭븘???レ뼱???곹샇 諛고??꾨즺resetSibling/registerReset 肄쒕갚 ?⑦꽩
?붿뒪???⑸웾 珥덇낵 ?먮룞 ??젣?꾨즺?쒕씪?대툕 ?ъ슜瑜?98% 珥덇낵 ???ㅻ옒???€???먮룞 ??젣
?고겢由?而⑦뀓?ㅽ듃 硫붾돱?꾨즺?€???쒕ぉ?먯꽌 ?고겢由???諛붾줈 而ㅼ뒪?€ 硫붾돱 ?쒖떆
?€???붾툝?대┃ ?ㅻ쪟 ?섏젙?꾨즺RemoveAt+Insert ?⑦꽩?쇰줈 ?덉쟾 援먯껜
-
-
- -
-v1.0.7 Chat 1?④퀎 媛쒕컻 (3??· ?대뜑 · 泥⑤? · ?꾨━?? (?대┃?섏뿬 ?쇱튂湲? -
-

2026-03-28 ??v1.0.7 Chat 1?④퀎 媛쒕컻

- - - - - - - - - - - -
??ぉ?곹깭蹂€寃??댁슜
Chat/Cowork/Code 3??UI?꾨즺?곷떒 RadioButton ??쓣 Agent ?⑥씪 ??3??쑝濡??꾪솚
?묒뾽 ?대뜑 ?좏깮 諛?/td>?꾨즺?대뜑 寃쎈줈 ?쒖떆 + ?좏깮/?댁젣 踰꾪듉. 理쒓렐 ?대뜑 10媛??€??/td>
?뚯씪 而⑦뀓?ㅽ듃 泥⑤??꾨즺?뚯씪 泥⑤? 踰꾪듉 + ?쒕옒洹????쒕∼. 10MB ?쒗븳
沅뚰븳 ?쒖뒪???ㅺ퀎?꾨즺3?④퀎 ?뚯씪 ?묎렐 沅뚰븳: Ask / Auto / Deny
?€??二쇱젣 ?꾨━??7醫?/td>?꾨즺?쇰컲/寃쎌쁺/?곌뎄媛쒕컻/?쒗뭹遺꾩꽍/?섏쑉遺꾩꽍/?쒖“湲곗닠/?쒖뒪??/td>
?€???대낫?닿린 ?뺤옣?꾨즺Markdown + JSON + HTML + Text 4醫??щ㎎
硫붿떆吏€ ?€?꾩뒪?ы봽?꾨즺?ъ슜??AI 硫붿떆吏€??HH:mm ?쒓컙 ?쒖떆
寃⑸젮 ?뚮┝ 二쇨린 ?€?대㉧?꾨즺System.Timers.Timer 湲곕컲 二쇨린???뚮┝
而ㅼ뒪?€ 硫붿떆吏€ 諛뺤뒪?꾨즺???꾩껜 湲곕낯 MessageBox ???뚮쭏 ?듯빀 而ㅼ뒪?€ ?ㅼ씠?쇰줈洹?/td>
-
-
- - - - - -
Part 3 ???ㅼ쓬 怨좊룄??怨꾪쉷
- - - -

15. Phase 9 ??李⑥꽭?€ 怨좊룄??(v1.5.0) ???꾨즺

- -
-

Context (2026??3??湲곗?)

-
    -
  • Claw Code: SWE-bench 80.8%, Opus 4.6 1M 而⑦뀓?ㅽ듃, ?쒕툕?먯씠?꾪듃, MCP ?쒖??? ?먭꺽 ?몃━嫄?/li> -
  • Cursor: Tab ?먮룞?꾩꽦, Multi-file ?먯씠?꾪듃, 諛깃렇?쇱슫???먯씠?꾪듃, LSP ?듯빀
  • -
  • OpenCode: Go 湲곕컲 ?ㅽ뵂?뚯뒪 131K★, Tree-of-Thought, MCP, 踰≫꽣 DB 而⑦뀓?ㅽ듃
  • -
  • GitHub Copilot: 肄붾뵫 ?먯씠?꾪듃, ?먮룞 PR, ?댁뒋?믪퐫???뚯씠?꾨씪??/li> -
  • Windsurf: Cascade 硫€?곗뒪???먯씠?꾪듃, 釉뚮씪?곗? ?듯빀
  • -
  • ?쇰Ц: Agentic Coding Survey (arXiv 2025), SWE-Agent v2, CodeAct, Reflexion
  • -
-
- -
-
-

9-1. 肄붾뱶 ?명뀛由ъ쟾??(LSP ?곕룞)

- ???꾨즺 -
-

媛? 肄붾뱶 遺꾩꽍 ?놁씠 ?띿뒪??湲곕컲?쇰줈留?肄붾뱶 ?댄빐

-

援ы쁽: Language Server Protocol ?대씪?댁뼵?몃줈 ?뺤쓽 ?대룞, 李몄“ 寃€?? ?щ낵 紐⑸줉 ?쒖슜

-

?먯씠?꾪듃 ?꾧뎄: lsp_goto_definition, lsp_find_references, lsp_symbols

-

湲곗닠: OmniSharp (C#), typescript-language-server, pyright

-
- -
-
-

9-2. 蹂묐젹 ?먯씠?꾪듃 (?쒕툕?먯씠?꾪듃) ?????꾨즺

- ?믪쓬 -
-

媛? ?⑥씪 ?먯씠?꾪듃媛€ ?쒖감 泥섎━, ???묒뾽?먯꽌 ?먮┝

-

援ы쁽:

-
    -
  • 硫붿씤 ?먯씠?꾪듃媛€ ?쒕툕?쒖뒪??遺꾪븷 ???쒕툕?먯씠?꾪듃 ?낅┰ ?ㅽ뻾 ??寃곌낵 蹂묓빀
  • -
  • ?먯씠?꾪듃 ?꾧뎄: spawn_agent, wait_agents
  • -
-

?⑦꽩: Claw Code??Agent tool, OpenCode??parallel execution

-
- -
-
-

9-3. 肄붾뱶 ?쒕㎤??寃€??(TF-IDF) ?????꾨즺

- ?믪쓬 -
-

媛? ?€洹쒕え ?꾨줈?앺듃?먯꽌 愿€???뚯씪??李얠? 紐삵븿

-
    -
  • ?꾨줈?앺듃 ?뚯씪???꾨쿋??踰≫꽣濡??몃뜳????吏덈Ц 愿€???뚯씪 ?먮룞 寃€??/li> -
  • ?먯씠?꾪듃 ?꾧뎄: search_codebase (?쒕㎤??寃€??
  • -
-

湲곗닠: SQLite-vec ?먮뒗 Hnswlib (濡쒖뺄 踰≫꽣 DB, ?쒕쾭 遺덊븘??

-
- -
-
-

9-4. ?먮룞 ?뚯뒪??猷⑦봽 ?????꾨즺

- 以묎컙 -
-

援ы쁽: 肄붾뱶 蹂€寃?媛먯? ??愿€???뚯뒪???먮룞 ?앹꽦 ???ㅽ뻾 ??寃곌낵 湲곕컲 ?섏젙

-

?먯씠?꾪듃 ?꾧뎄: test_generate, test_run, test_analyze

-
- -
-
-

9-5. ?대깽???몃━嫄??먯씠?꾪듃 ?????꾨즺

- 以묎컙 -
-

援ы쁽: ?ㅼ?以꾨맂 ?묒뾽 ?ㅽ뻾 (肄붾뱶 由щ럭, 蹂댁븞 ?ㅼ틪, ?쇱씪 蹂닿퀬??

-

?몃━嫄??뚯뒪: ?€?대㉧, ?뚯씪 蹂€寃?媛먯?, Git push/pull ?대깽??/p> -

- -
-
-

9-6. PDF/臾몄꽌 ?대낫?닿린 ?????꾨즺

- 以묎컙 -
-

援ы쁽: ?€????PDF, 蹂닿퀬????Word/PDF 蹂€??/p> -

湲곗닠: HTML ??PDF (PuppeteerSharp ?먮뒗 wkhtmltopdf)

-
- -
-
-

9-7. ?ㅼ떆媛?diff 酉곗뼱 ?????꾨즺

- 以묎컙 -
-
    -
  • ?섏젙 ????鍮꾧탳 (?쇱씤 湲곕컲 diff, ?됱긽 ?섏씠?쇱씠??
  • -
  • ?꾨━酉??⑤꼸??diff ???먮룞 異붽?
  • -
  • Accept/Reject 踰꾪듉?쇰줈 蹂€寃??뱀씤/痍⑥냼
  • -
-
- -
-
-

9-8. ?€??遺꾧린 ?몃━ ?먯깋湲?/h4> - ??쓬 -

-

援ы쁽: ?몃━ ?뺥깭 ?€???먯깋湲?(?몃뱶 = 硫붿떆吏€, 媛꾩꽑 = 遺꾧린, ?꾩옱 ?꾩튂 ?섏씠?쇱씠??

-
- -
-
-

9-9. ?묎렐??(A11y)

- 以묎컙 -
-

援ы쁽: WPF AutomationPeer, ?ㅻ낫???대퉬寃뚯씠?? 怨좊?鍮?紐⑤뱶 (WCAG 2.1 AA)

-
- - - -

16. Phase 10 ??吏€?ν삎 ?먯씠?꾪듃 (v1.5.0) ???꾨즺

- -
- - - - - - - - -
#湲곕뒫援ы쁽 ?댁슜?곹깭
10-1?먮룞 紐⑤뜽 ?좏깮 (Auto Router)吏덈Ц ?좏삎 媛먯? ??理쒖쟻 紐⑤뜽 ?먮룞 ?쇱슦?? ?좉툑 紐⑤뱶???꾨즺
10-2?먯씠?꾪듃 硫붾え由?(?곸냽 ?숈뒿)?꾨줈?앺듃 洹쒖튃/肄붾뵫 ?좏샇???먮룞 湲곗뼲, ?€??媛??좎????꾨즺
10-3?뱁썒 ?몃━嫄??뺤옣Git push/PR, Jira/Slack ?뱁썒 ???먯씠?꾪듃 ?먮룞 ?ㅽ뻾?믪쓬
10-4硫€?곕え???낅젰 (Vision)Ctrl+V ?대?吏€ 遺숈뿬?j린 ??Gemini/Sigmoid/Ollama/OpenAI Vision API???꾨즺
10-5肄붾뱶 寃€??媛쒖꽑TF-IDF + SQLite ?곸냽 ?몃뜳?? 利앸텇 ?낅뜲?댄듃, 諛붿씠洹몃옩???꾨즺
10-6?먯씠?꾪듃 ???쒖뒪??/td>?꾧뎄 ?몄텧 ?????ъ슜???ㅽ겕由쏀듃 ?ㅽ뻾???꾨즺
-
- - -

17. Phase 11 ???앺깭怨??뺤옣 (v1.5.0) ???꾨즺

- -
- - - - - - - -
#湲곕뒫援ы쁽 ?댁슜?곹깭
11-1?ㅽ궗 ?쒖뒪??/td>*.skill.md YAML ?꾨줎?몃ℓ?????щ옒??紐낅졊 ?먮룞 ?깅줉. 3?대뜑 ?곗꽑?쒖쐞. 湲곕낯 ?ㅽ궗 3醫?/td>???꾨즺
11-2AI 肄붾뱶 由щ럭 ?먮룞??/td>CodeReviewTool ??diff_review/file_review/pr_summary. ?뺤쟻 遺꾩꽍 + diff ?뚯꽌???꾨즺
11-3?쒕옒洹??쒕∼ AI 泥섎━?뚯씪 ?좏삎蹂?AI ?≪뀡 ?앹뾽 (肄붾뱶/臾몄꽌/?곗씠???대?吏€)???꾨즺
異붽??꾨줈?앺듃 吏€移?(AX.md)ProjectRuleTool ??read/append/write, ?ъ슜???뱀씤???꾨즺
異붽??щ옒??紐낅졊??媛뺥솕??퀎 ?꾪꽣留? /help ?꾩?留?李? 12媛??댁옣 紐낅졊???꾨즺
-
- - -

18. Phase 12 ???ㅽ궗/而ㅻ꽖??怨좊룄??+ ?먯쑉 ?먯씠?꾪듃 (v2.0+) 李④린 媛쒕컻

- -
- - - - - - - - - - - - - -
#湲곕뒫?ㅻ챸?곗꽑?쒖쐞
12-1?꾧뎄/而ㅻ꽖??愿€由?UI?ㅼ젙 ??湲고???29媛??꾧뎄 移대뱶 由ъ뒪?? ?쒖꽦/鍮꾪솢???좉?, 沅뚰븳 ?쒖떆理쒓퀬
12-2SKILL.md ?쒖? ?명솚agentskills.io ?ㅽ럺 吏€?? *.skill.md + ?대뜑/SKILL.md ?묒そ ?명솚. ?꾧뎄紐?留ㅽ븨理쒓퀬
12-3?ㅽ궗 ?쒓컖???몄쭛湲?/strong>??湲곕컲 UI濡??ㅽ궗 ?앹꽦 (?대쫫/?ㅻ챸/吏€?쒖궗???꾧뎄 ?좏깮). SKILL.md ?€??/td>???꾨즺
12-4?고????섏〈 ?ㅽ궗Python/Node 媛먯? ??怨좉툒 ?ㅽ궗 ?먮룞 ?쒖꽦?? 4醫?踰덈뱾???꾨즺
12-5?뚰겕?뚮줈??遺꾩꽍湲?/strong>?먯씠?꾪듃 ?ㅽ뻾 ?ㅼ떆媛??쒓컖??李? AgentLogLevel ?곕룞, ?€?대컢/?좏겙 異붿쟻???꾨즺
12-6?ㅽ궗 媛ㅻ윭由?UI?ㅼ튂???ㅽ궗 移대뱶 酉? 移댄뀒怨좊━ ?꾪꽣, ?댁옣/?ъ슜??諭껋?, ?몄쭛/蹂듭젣/??젣???꾨즺
12-7?ㅽ궗 媛€?몄삤湲??대낫?닿린濡쒖뺄 zip 湲곕컲 ?ㅽ궗 ?⑦궎吏€ ?ㅼ튂/?대낫?닿린 (?⑤씪??留덉폆 ?쒖쇅)???꾨즺
12-8?먯씠?꾪듃 ?€ (?ㅼ쨷 ?몄뀡 ?묒뾽)?щ윭 ?먯씠?꾪듃 硫붿떆吏€ 援먰솚 + 遺꾩뾽以묎컙
12-9?ㅽ봽?쇱씤 AI (濡쒖뺄 SLM)ONNX Runtime + phi-3, ?쒕쾭 ?놁씠 踰덉뿭/?붿빟??쓬
12-10?뚯꽦 ?낆텧??/td>Whisper STT + TTS??쓬
12-11?묎렐??(A11y)WCAG 2.1 AA, ?ㅻ낫???대퉬寃뚯씠??/td>??쓬
-
- - -

19. Phase 13 ???ㅽ궗 ?앺깭怨?+ ?먯씠?꾪듃 遺꾩꽍 怨좊룄??(v1.5.3+) 李④린 媛쒕컻

- -
- - - - - - - -
#湲곕뒫?ㅻ챸?곗꽑?쒖쐞
13-1?ㅽ궗 媛ㅻ윭由?UI?ㅼ튂???ㅽ궗 移대뱶 酉? 移댄뀒怨좊━ ?꾪꽣, ?댁옣/?ъ슜??怨좉툒 諭껋?, ?몄쭛/蹂듭젣/??젣???꾨즺
13-2?ㅽ궗 ?쒓컖???몄쭛湲?/strong>??湲곕컲 UI濡??ㅽ궗 ?앹꽦 (?대쫫/?ㅻ챸/吏€?쒖궗???꾧뎄 ?좏깮), SKILL.md ?€??/td>???꾨즺
13-3?ㅽ궗 媛€?몄삤湲??대낫?닿린濡쒖뺄 zip 湲곕컲 ?ㅽ궗 ?⑦궎吏€ ?ㅼ튂/?대낫?닿린???꾨즺
13-4?먯씠?꾪듃 ?ㅽ뻾 ?듦퀎 ?€?쒕낫??/strong>?쇰퀎/二쇰퀎 ?좏겙 ?ъ슜?? ?꾧뎄 ?몄텧 鍮덈룄, 紐⑤뜽蹂?鍮꾩슜, ?깃났瑜?李⑦듃???꾨즺
13-5AgentLogLevel 梨꾪똿 UI ?곕룞?ㅽ뻾 ?대젰 ?곸꽭?꾨? 肄붿썙??肄붾뱶 ??쑝濡??대룞, 梨꾪똿 蹂몃Ц ?쒖떆??諛섏쁺???꾨즺
-

- 援ы쁽 ?쒖꽌: 13-A (13-5 + 13-3) ??13-B (13-1 + 13-4) ??13-C (13-2) -

-
- - -

20. Phase 14 ???먯씠?꾪듃 ?꾧뎄 + ?ㅽ궗 ?€?뺤옣 (v1.5.4+) ???꾨즺

- -
-

諛⑺뼢

-
    -
  • ?먯씠?꾪듃 ?꾧뎄 ?뺤옣: 25醫???42醫?. ?ㅻТ ?묒뾽 80% ?댁긽???먯씠?꾪듃媛€ ?먯쑉 ?섑뻾
  • -
  • ?몃? 寃€利??ㅽ궗 踰덈뱾: Sigmoid 怨듭떇, 而ㅻ??덊떚 寃€利??ㅽ궗???깆뿉 ?댁옣 (13媛???29媛?
  • -
  • ???명봽??/strong>: 媛€?대뱶 ?쒖뒪?? ?ㅼ젙 UI 媛쒖꽑, About 蹂댁븞
  • -
-
- -
-

14-A. ?곗씠??泥섎━ ?꾧뎄 (5醫? ???꾨즺

- - - - - - - -
#?꾧뎄?ㅻ챸?곹깭
14-A1json_toolJSON ?뚯떛쨌蹂€?샕룰?利씲룻룷留룻똿 (jq ?ㅽ???荑쇰━)???꾨즺
14-A2regex_tool?뺢퇋???뚯뒪?맞룹텛異쑣룹튂??(?⑦꽩 ?ㅻ챸 ?ы븿)???꾨즺
14-A3diff_tool???뚯씪/?띿뒪??鍮꾧탳 ???듯빀 diff 異쒕젰???꾨즺
14-A4base64_toolBase64/URL ?몄퐫?㈑룸뵒肄붾뵫???꾨즺
14-A5hash_tool?뚯씪쨌?띿뒪??MD5/SHA256 ?댁떆 怨꾩궛???꾨즺
-
- -
-

14-B. ?쒖뒪???섍꼍 ?꾧뎄 (6醫? ???꾨즺

- - - - - - - - -
#?꾧뎄?ㅻ챸?곹깭
14-B1clipboard_toolWindows ?대┰蹂대뱶 ?쎄린쨌?곌린 (?띿뒪???대?吏€)???꾨즺
14-B2notify_toolWindows ?뚮┝ ?꾩넚 (?μ떆媛??묒뾽 ?꾨즺 ?뚮┝)???꾨즺
14-B3env_tool?섍꼍蹂€???쎄린쨌?ㅼ젙 (?꾨줈?몄뒪 踰붿쐞)???꾨즺
14-B4zip_tool?뚯씪 ?뺤텞(zip) / ?댁젣???꾨즺
14-B5log_searchWindows ?대깽??濡쒓렇쨌?좏뵆由ъ??댁뀡 濡쒓렇 寃€??/td>??쓬
14-B6datetime_tool?좎쭨쨌?쒓컙 蹂€?? ?€?꾩〈, 湲곌컙 怨꾩궛???꾨즺
-
- -
-

14-C. ?ㅽ듃?뚰겕/API ?꾧뎄

- - - - - -
#?꾧뎄?ㅻ챸?곹깭
14-C1http_tool濡쒖뺄/?щ궡 HTTP API ?몄텧 (GET/POST, JSON ?뚯떛)???꾨즺
14-C2sql_toolSQLite DB 荑쇰━ ?ㅽ뻾 (濡쒖뺄 ?뚯씪 湲곕컲)???꾨즺
14-C3network_tool?ы듃 ?대┝ ?뺤씤, DNS 議고쉶, ping (?щ궡 留???쓬
-
- -
-

14-E. UX 媛쒖꽑 (?щ옒??紐낅졊??怨좊룄??

- - - - - -
#??ぉ?ㅻ챸?곹깭
14-E1?щ옒??移??쒖떆紐낅졊 ?좏깮 ???낅젰李쎌뿉 ?뚮? 移⑹쑝濡??쒖떆???꾨즺
14-E2?앹뾽 ?섏씠吏?/td>理쒕? N媛??쒖떆 + ?꿎뼹 ?ㅻ퉬寃뚯씠??/td>???꾨즺
14-E3compact 紐낅졊??/td>/init, /ctx, /pr, /todo, /clean, /refactor ??/td>李④린
-
- -
-

14-F. ?몃? 寃€利??ㅽ궗 ?댁옣 踰덈뱾 (12醫? ???꾨즺

- - - - - - - - - - - - - - -
#?ㅽ궗?ㅻ챸requires
14-F1code-scaffold?꾨줈?앺듃 援ъ“ ?먮룞 ?앹꽦??/td>
14-F2meeting-minutes?뚯쓽濡??뺣━ (李몄꽍??寃곗젙?ы빆/?≪뀡?꾩씠????/td>
14-F3paper-review?쇰Ц ?붿빟, 媛뺤젏/?쎌젏 遺꾩꽍??/td>
14-F4data-visualize?곗씠???쒓컖??李⑦듃 (CSV/JSON ??HTML)??/td>
14-F5docx-creatorWord 臾몄꽌 ?먮룞 ?앹꽦python
14-F6xlsx-analyzerExcel ?곗씠??遺꾩꽍쨌?쇰쿁쨌李⑦듃python
14-F7pdf-processorPDF ?띿뒪??異붿텧쨌蹂묓빀쨌遺꾪븷python
14-F8pptx-creatorPPT ?꾨젅?좏뀒?댁뀡 ?먮룞 ?앹꽦node
14-F9report-writer援ъ“?붾맂 蹂닿퀬???먮룞 ?묒꽦??/td>
14-F10api-docsAPI 臾몄꽌 ?먮룞 ?앹꽦??/td>
14-F11db-schemaDB ?ㅽ궎留???ERD ?앹꽦??/td>
14-F12commit-reviewGit 而ㅻ컠 硫붿떆吏€ 寃€??+ 媛쒖꽑??/td>
-

?ш린 ?곹뼢: .skill.md 12媛?????130KB (?몄뒪?⑤윭 ?ш린 ?곹뼢 ?놁쓬)

-
- -
-

14-G. ???명봽??媛쒖꽑 (v1.5.3) ???꾨즺

- - - - - -
#??ぉ?ㅻ챸
14-G1媛€?대뱶 ?쒖뒪???좎꽕?ъ슜??媛쒕컻??媛€?대뱶 遺꾨━, AES-256-CBC ?뷀샇?? GuideViewerWindow ?댁옣 酉곗뼱
14-G2?ㅼ젙 UI 媛쒖꽑??諛???3踰덉㎏ ?대룞, 湲고? ???묎린/?닿린 ?뱀뀡
14-G3About ?뺣낫 蹂댁븞湲곗닠 ?ㅽ깮 鍮꾨끂異? "Commander + Agent" ?쒖떆
-
- - - -

21. Phase 15 ??硫€?고뙣??臾몄꽌 ?붿쭊 + ?ㅽ궗/?꾧뎄 ?€?뺤옣 (v1.6.0) ???꾨즺

- -
- - - - - - - - - - - -
#湲곕뒫援ы쁽 ?댁슜
15-A硫€?고뙣??臾몄꽌 ?앹꽦document_plan (媛쒖슂 援ъ“?? + document_assemble (?뱀뀡 議곕┰). 3?섏씠吏€+ 臾몄꽌瑜?媛쒖슂?믪꽮?섎퀎 ?곸꽭?믪“由?諛⑹떇?쇰줈 ?덉쭏 ?μ긽
15-BPPT ?ㅼ씠?곕툕 ?앹꽦pptx_create ??OpenXML 湲곕컲, Python 臾댁쓽議? 5醫??덉씠?꾩썐, 4醫??뚮쭏
15-C?곗씠???쇰쿁/吏묎퀎data_pivot ??CSV/JSON 洹몃9?붋룻븘?걔룹젙??룹쭛怨?(LINQ 湲곕컲)
15-D?쒗뵆由??뚮뜑留?/strong>template_render ??Mustache ?ㅽ???蹂€??移섑솚쨌諛섎났쨌議곌굔遺€
15-E?대?吏€ 遺꾩꽍image_analyze ??LLM 硫€?곕え??describe/OCR/?곗씠??異붿텧/鍮꾧탳
15-F?뚯씪 蹂€寃?媛먯?file_watch ???대뜑 媛먯떆, ?곷? ?쒓컙(1h/7d), ?좏삎蹂??듦퀎
15-G?띿뒪???붿빟text_summarize ??泥?겕 遺꾪븷?믫빑??異붿텧 ?붿빟 (4醫??ㅽ???
15-H?댁옣 ?ㅽ궗 16醫?異붽?鍮꾩쫰?덉뒪 4醫?+ ?곗씠??3醫?+ 媛쒕컻 3醫?+ ?몃? 寃€利?6醫???珥?29醫?/td>
15-I?ㅼ젙EnableMultiPassDocument, MultiPassThresholdPages
-

?꾧뎄: 34媛???42媛?/strong> (+8), ?ㅽ궗: 13媛???29媛?/strong> (+16)

-
- - - - - -
Part 4 ??李⑥꽭?€ 怨좊룄??怨꾪쉷 (v1.7.0 ~ v2.0)
- -
-

怨꾪쉷 湲곗? (2026??3??

-
    -
  • Claw Code: Plan mode, Hooks, 蹂묐젹 ?꾧뎄, ?쒕툕?먯씠?꾪듃 ?€
  • -
  • Cursor: ?꾨줈?앺듃 洹쒖튃(.cursor/rules), 硫€?고뙆??diff, 諛깃렇?쇱슫???먯씠?꾪듃
  • -
  • GitHub Copilot: 諛섎났 ?뚯뒪???섏젙, Workspace plan, ?댁뒋?믪퐫???뚯씠?꾨씪??/li> -
  • Windsurf: ?먮룞 而⑦뀓?ㅽ듃 ?섏쭛, ?곸냽 硫붾え由? Cascade 硫€?곗뒪??/li> -
  • ?쇰Ц: Reflexion (?먭린 ?깆같), CodeAct (肄붾뱶 湲곕컲 ?≪뀡), SWE-Agent v2
  • -
-
- - - -

22. Phase 16 ???먯씠?꾪듃 吏€??媛뺥솕 + 媛쒕컻??寃쏀뿕 (v1.7.0) 李④린 媛쒕컻

- -
- - - - - - - - - -
#湲곕뒫?ㅻ챸?곗꽑?쒖쐞
16-1?뚮옖 紐⑤뱶 (Plan Mode)?먯씠?꾪듃媛€ ?꾧뎄 ?ㅽ뻾 ??援ъ“?붾맂 怨꾪쉷 ?앹꽦 ???ъ슜??寃€???몄쭛/?뱀씤 ???뱀씤 ???ㅽ뻾. PlanMode: off/always/auto理쒓퀬
16-2?꾧뎄/而ㅻ꽖??愿€由?UI?ㅼ젙?먯꽌 52媛??꾧뎄 移댄뀒怨좊━蹂?移대뱶, ?쒖꽦/鍮꾪솢???좉?, MCP ?쒕쾭 ?곌껐 ?곹깭 ?쒖떆?믪쓬
16-3?꾨줈?앺듃 洹쒖튃 ?쒖뒪??/strong>.ax/rules/*.md ?붾젆?좊━ ???뚯씪 ?⑦꽩쨌?묒뾽 ?좏삎蹂?洹쒖튃???쒖뒪???꾨\?꾪듃???먮룞 二쇱엯?믪쓬
16-4諛섎났 ?뚯뒪???섏젙 猷⑦봽TestLoopTool auto_fix 紐⑤뱶 ???뚯뒪???ㅽ뻾?믪떎???뚯떛?믪닔?뺚넂?ъ떎???먮룞 諛섎났?믪쓬
16-5蹂묐젹 ?꾧뎄 ?ㅽ뻾LLM ?ㅼ닔 ?꾧뎄 ?숈떆 ?몄텧 ???섏〈??遺꾩꽍 ??Task.WhenAll() 蹂묐젹 ?ㅽ뻾以묎컙
16-6SKILL.md ?쒖? ?꾩쟾 ?명솚agentskills.io ?ㅽ럺 ?꾩껜 ?뚯떛, ?몃??붾궡遺€ ?꾧뎄 ?대쫫 留ㅽ븨以묎컙
16-R?고???怨좉툒 ?ㅽ궗 ?뺤옣4醫?異붽?: image-processor, diagram-generator, ocr-extract, data-visualize-adv (珥?8醫?以묎컙
-
- -
-

16-1. ?뚮옖 紐⑤뱶 (Plan Mode) ???듭떖 湲곕뒫

-

寃쎌웳 ?€?? Claw Code Plan mode, GitHub Copilot Workspace plan

-

援ы쁽:

-
    -
  • AppSettings.cs ??PlanMode ?ㅼ젙: off / always / auto
  • -
  • AgentLoopService.cs ??泥?諛섎났?먯꽌 plan-only ?쒖뒪???꾨\?꾪듃 二쇱엯, ?꾧뎄 ?몄텧 李⑤떒
  • -
  • ChatWindow.xaml ??PlanReviewPanel (怨꾪쉷 ?④퀎蹂??몄쭛/?쒖꽌蹂€寃???젣 UI)
  • -
  • TaskDecomposer.cs ??援ъ“?붾맂 JSON 怨꾪쉷 ?щ㎎ ?뚯떛 媛뺥솕
  • -
-
- -
-

16-3. ?꾨줈?앺듃 洹쒖튃 ?쒖뒪??(.ax/rules/)

-

寃쎌웳 ?€?? Cursor .cursor/rules, Claw Code custom commands

-

援ы쁽:

-
    -
  • ProjectRulesService.cs ??洹쒖튃 濡쒕뱶, YAML ?꾨줎?몃ℓ???뚯떛 (applies-to: *.cs, when: code-review)
  • -
  • AgentLoopService.cs ??而⑦뀓?ㅽ듃??留욌뒗 洹쒖튃留??쒖뒪???꾨\?꾪듃???먮룞 二쇱엯
  • -
-
- - - -

23. Phase 17 ???ы솕 吏€??+ UX ?곸떊 (v1.8.0) 怨꾪쉷

- -
- - - - - - - - -
#湲곕뒫?ㅻ챸?곗꽑?쒖쐞
17-1?먭린 ?깆같 (Self-Reflection)?꾧뎄 ?ㅽ뙣 ??援ъ“?붾맂 ?깆같 ?꾨\?꾪듃 二쇱엯, ?먮윭 ?⑦꽩 異붿쟻 (Reflexion ?⑦꽩)理쒓퀬
17-2?묒뾽 湲곗뼲 (Working Memory)?€???뺤텞 ?쒖뿉???좎??섎뒗 援ъ“?붾맂 ?쒖뒪???곹깭 (?꾩옱 ?묒뾽, 李몄“ ?뚯씪, ?섏궗寃곗젙 濡쒓렇)?믪쓬
17-3硫€?고뙆???듯빀 Diff 酉?/strong>?먯씠?꾪듃 ?ㅼ닔 ?뚯씪 ?섏젙 ???꾩껜 蹂€寃쎌궗??쓣 ?섎굹???⑤꼸?먯꽌 ?뚯씪蹂??뚰겕蹂??뱀씤/嫄곕??믪쓬
17-4?먮룞 而⑦뀓?ㅽ듃 ?섏쭛?ъ슜??硫붿떆吏€?먯꽌 ?뚯씪紐?媛먯? ???먮룞 ?쎄린, Git diff, 愿€??肄붾뱶 寃€????而⑦뀓?ㅽ듃 二쇱엯以묎컙
17-5MCP HTTP+SSE ?꾩넚stdio ?꾩슜 ??HTTP+SSE ?몃옖?ㅽ룷??異붽?, ?먭꺽 MCP ?쒕쾭 ?곌껐 吏€??/td>以묎컙
17-6?€???붿빟 ?⑤뵒留⑤뱶/summarize-chat ?щ옒??紐낅졊?쇰줈 ?꾩옱 ?€??援ъ“???붿빟??쓬
-
- -
-

17-1. ?먭린 ?깆같 (Self-Reflection) ???듭떖 湲곕뒫

-

?꾪솴: ?꾩옱 ?⑥닚 ?ъ떆?꾨쭔 議댁옱 (consecutiveErrors 移댁슫??

-

援ы쁽:

-
    -
  • ReflectionService.cs ???먮윭 ?⑦꽩 異붿쟻, ?깆같 ?꾨\?꾪듃 ?앹꽦
  • -
  • AgentLoopService.cs ???먮윭 ???깆같 二쇱엯
  • -
  • IAgentTool.cs ??AgentEventType.Reflecting 異붽?
  • -
-
- -
-

17-2. ?묒뾽 湲곗뼲 (Working Memory)

-

寃쎌웳 ?€?? Windsurf persistent memory, CrewAI structured memory layers

-

援ы쁽:

-
    -
  • WorkingMemoryService.cs ??援ъ“?붾맂 ?쒖뒪???곹깭 異붿쟻
  • -
  • ContextCondenser.cs ???뺤텞 ???묒뾽 湲곗뼲 蹂댁〈
  • -
-
- - - -

24. Phase 18 ???먯퐫?쒖뒪??+ 李⑤퀎??(v2.0) 怨꾪쉷

- -
- - - - - - - - -
#湲곕뒫?ㅻ챸?곗꽑?쒖쐞
18-1?먯씠?꾪듃 ?€ (Multi-Agent)?뱁솕 ?먯씠?꾪듃(肄붾뱶由щ럭, 臾몄꽌?묒꽦, 蹂댁븞媛먯궗)媛€ 硫붿떆吏€ 踰꾩뒪濡??묒뾽, 怨듬룞 ?묒뾽 ?섑뻾理쒓퀬
18-2?뚮윭洹몄씤 媛ㅻ윭由?+ ?덉??ㅽ듃由?/strong>濡쒖뺄 NAS/Git ?덉??ㅽ듃由?湲곕컲 ?뚮윭洹몄씤/?ㅽ궗 ?먯깋, ?ㅼ튂, ?낅뜲?댄듃 ?몄빋 媛ㅻ윭由?/td>?믪쓬
18-3AI ?ㅻ땲??/strong>;email {?섏떊?? {二쇱젣} ??LLM???대찓??珥덉븞 ?먮룞 ?앹꽦. 湲곗〈 ?ㅻ땲?レ뿉 AI ?뺤옣以묎컙
18-4?뚮씪誘명꽣 ?듬쭅??/strong>jira {?곗폆踰덊샇} ??URL ?쒗뵆由?蹂€??移섑솚 (?щ궡 ?꾧뎄 鍮좊Ⅸ ?묎렐)以묎컙
18-5?ㅽ봽?쇱씤 AI (ONNX Runtime)?쒕쾭 ?놁씠 踰덉뿭/?붿빟/遺꾨쪟 媛€?ν븳 濡쒖뺄 ?뚰삎 紐⑤뜽, 紐⑤뜽 蹂꾨룄 諛고룷??쓬
18-6??寃€??AI ?붿빟? 寃€??寃곌낵瑜?AI濡??붿빟?섏뿬 ?곗쿂???쒖떆??쓬
-
- -
-

18-1. ?먯씠?꾪듃 ?€ (Multi-Agent) ??李⑤퀎???듭떖

-

寃쎌웳 ?€?? GitHub Copilot workspace agents, CrewAI role-based teams

-

援ы쁽:

-
    -
  • AgentTeamService.cs ???€ ?ㅼ??ㅽ듃?덉씠??/li> -
  • AgentMessageBus.cs ???먯씠?꾪듃 媛??듭떊
  • -
  • AgentTeamConfig.cs ???€ 援ъ꽦 紐⑤뜽
  • -
  • ChatWindow.xaml ???€ 紐⑤뱶 UI
  • -
-
- - - -

25. 湲곗〈 湲곕뒫 蹂댁셿 (v1.3.0~v1.5.0 ?꾨즺) ???꾨즺

- -
- - - - - - - - - - - - - -
??ぉ?곹깭
MCP UI (?쒕쾭 愿€由??붾㈃)??鍮꾩<??移대뱶 由ъ뒪??+ ?쒖꽦/鍮꾪솢???좉? + ?쒕쾭 異붽?/??젣 UI 援ы쁽
?€??遺꾧린 ?몃━ UI???ъ씠?쒕컮???ㅼ뿬?곌린(16px) + 蹂대씪??遺꾧린 ?꾩씠肄??쒖떆
?ㅽ뵆由?酉?diff??DiffService (LCS 湲곕컲 ?쇱씤 diff) 援ы쁽 ??Added/Removed/Equal 遺꾨쪟
english.json ?뺤옣??101 ??150媛??꾨즺
movies.json ?뺤옣??~90 ??150媛??꾨즺
McpClientService nullable warning??CS8603 ?닿껐 ???꾩껜 寃쎄퀬 0媛? ?ㅻ쪟 0媛?/td>
?€?붾퀎 ?섎떒 ?ㅼ젙 ?€??/td>??沅뚰븳/?곗씠?고솢??臾대뱶瑜??€?붾퀎 ?낅┰ ?€??蹂듭썝
vLLM ?ㅼ쨷 ?쒕쾭 吏€??/td>??RegisteredModel??endpoint/apiKey ?꾨뱶, 紐⑤뜽蹂??쒕쾭 ?쇱슦??/td>
?ㅼ젙李?OutlineHoverBtn ?щ옒??/td>???몃씪???ㅽ??쇰줈 援먯껜
Auto 沅뚰븳 寃쎄퀬 以묐났 ?쒖떆??湲곗〈 ?€?붿뿉??Auto?€?쇰㈃ 寃쎄퀬 ?④? 泥섎━
ShowTips/NotifyOnComplete 諛붿씤??/td>??SettingsViewModel ?띿꽦 異붽?, ?ㅼ젙媛??€???뺤긽??/td>
-
- - - - - -
- - - - - diff --git a/docs/AGENT_ROADMAP.md b/docs/AGENT_ROADMAP.md index ef770c2..00d4100 100644 --- a/docs/AGENT_ROADMAP.md +++ b/docs/AGENT_ROADMAP.md @@ -1,27 +1,27 @@ # 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/성능 보완. +- v0.5.0: MCP 연동, 모델 폴백, 대화 분기, 프리뷰/토큰 관리, 에이전트 루프 강화. +- v0.5.1: 고급 스킬 확장, 워크플로우 분석기, 런타임 감지. +- v0.6.0: 멀티패스 문서 생성, 데이터 피벗/템플릿/이미지 분석 계열 도구 확장. +- v0.7.0: Plan Mode, 병렬 도구 실행, 프로젝트 규칙 주입, 테스트 루프 자동화. +- v0.7.1: 도구 실행 후 검증 게이트 강화, 피드백 컨텍스트 개선. +- v0.7.2: 컨텍스트 압축/복원 안정화, UX/성능 보완. ## 2. 재작성 기준 - 기준 레퍼런스: `claw-code/claw-code-f5a40b86dede580f6543bf8926c9af017eea9409/src`. - 목표: 동작 순서, 예외/검증 흐름, 세션 내구성에서 동일 품질 달성. - 원칙: AX 코드 스타일로 재구성(표현/구조 변경), 기능적 동등성 유지. -## 3. 2026 실행 계획 (v1.7.3 ~ v1.8.0) +## 3. 2026 실행 계획 (v0.7.3 ~ v0.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` | 코드/문서 작업별 완료 게이트를 증거 기반으로 고정. 내부 벤치마크 목표 성공률 충족. 완료 응답 근거 누락률 최소화. | 코드수정/문서생성/권한거부/실패복구 혼합 시나리오에서 조기 완료 없이 근거 기반 종료하는지 검증. | +| A (v0.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 (v0.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 (v0.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 (v0.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 (v0.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. @@ -63,3 +63,4 @@ - 2026-04-04(추가): `/mcp add/remove/reset` 확장, `tool_search` 기반 복구 프롬프트 강화, 슬래시 힌트 밀도(`rich/balanced/simple`) 연동. - 2026-04-04(추가2): /mcp login/logout 세션 인증 토큰 지원, /mcp status·/chrome 진단에 Auth(Session) 반영. - 2026-04-04(추가3): 권한 UX 통합(/permissions·/allowed-tools·/settings permissions), 복구 혼합 테스트 보강, 좌측 패널 실패 필터 노출 정책 rich 전용으로 정렬. + diff --git a/docs/AUTO_ROUTER_DEV_GUIDE.md b/docs/AUTO_ROUTER_DEV_GUIDE.md deleted file mode 100644 index 8b9ab6f..0000000 --- a/docs/AUTO_ROUTER_DEV_GUIDE.md +++ /dev/null @@ -1,132 +0,0 @@ -# 자동 모델 라우팅 (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 → [모델명]" 표시 확인 diff --git a/docs/AX_AGENT_UI_CHECKLIST.md b/docs/AX_AGENT_UI_CHECKLIST.md new file mode 100644 index 0000000..57ccbb9 --- /dev/null +++ b/docs/AX_AGENT_UI_CHECKLIST.md @@ -0,0 +1,38 @@ +# AX Agent UI/UX 점검 체크리스트 (2026-04-04) + +## A. 레이아웃 단순화 +- [x] Cowork 좌측 메뉴는 `작업 유형 선택` 1개만 노출된다. +- [x] Code 좌측 메뉴는 `코드 작업 유형` 1개만 노출된다. +- [x] Chat 좌측의 실패/진행 필터 행은 기본 숨김이다. +- [x] 상단 우측 설정 버튼은 제거되고 좌측 하단 설정 아이콘으로 이동했다. + +## B. 권한 UX +- [x] 권한 목록에서 `Deny`가 맨 위에 노출된다. +- [x] Deny 설명은 `읽기만 허용, 생성/수정/삭제 차단` 문구로 통일된다. +- [x] Deny 색상은 녹색 계열로 표시된다. +- [x] Auto/권한 경고는 하단 바가 아닌 상단 배너로 표시된다. +- [x] 권한 변경 시 1회 클릭으로 즉시 UI가 반영된다. + +## C. AX Agent 설정창 +- [x] 깨진 문자열 없이 한국어 라벨로 정상 노출된다. +- [x] 표현 수준 `풍부하게/적절하게/간단하게`를 선택할 수 있다. +- [x] `vLLM SSL 인증서 검증 생략 허용` 토글이 있다. +- [x] `자동 compact`, `압축 임계치`, `최대 토큰`, `오류 재시도` 값을 저장할 수 있다. + +## D. 전체 설정창 +- [x] 좌측 사이드바에 `설정 표현`(풍부/적절/간단) 전환 UI가 추가됐다. +- [x] 표현 수준에 따라 탭 가시성이 조절된다. +- [x] 표현 수준에 따라 AX Agent 서브탭 가시성이 조절된다. +- [x] AI 비활성 시 AX Agent 탭 숨김 정책과 충돌하지 않는다. + +## E. 빌드/테스트 +- [x] `dotnet build` 경고 0 / 오류 0. +- [x] `dotnet test` 통과 (425 passed, 0 failed). + +## F. 수동 시나리오 (다음 점검) +- [x] External 모드 전환 후 `? 검색` 동작 확인. (자동 테스트: OperationModeReadinessTests) +- [x] Internal 모드 복귀 후 외부 검색 차단 확인. (자동 테스트: OperationModeReadinessTests + OperationModePolicyTests) +- [x] vLLM SSL 우회 플래그 연동 확인. (자동 테스트: LlmRuntimeOverrideTests ResolveServerInfo 2건) +- [x] `/compact` 명령 파싱/라우팅 확인. (자동 테스트: ChatWindowSlashPolicyTests) +- [ ] 모델 등록(vLLM + SSL 우회) 후 실제 네트워크 호출 성공 확인. (실환경 수동 점검 필요) +- [ ] `/compact` 실행 후 UI 토큰/요약 표시 갱신 확인. (UI 수동 점검 필요) diff --git a/docs/AX_Commander_개발문서.html b/docs/AX_Commander_개발문서.html deleted file mode 100644 index 5cb10ee..0000000 --- a/docs/AX_Commander_개발문서.html +++ /dev/null @@ -1,253 +0,0 @@ - - -AX_Commander_개발문서 - -

<b>AX Commander</b>

-

개발 문서

-

Windows 전용 시맨틱 런처 & 워크스페이스 매니저

- -

사내 전용 프로그램 개발 원칙

-

AX Commander는 사내 전용 프로그램입니다. 아래 원칙을 반드시 준수하여 개발하세요.

-

외부 연결 금지

- - - - - - - -
금지 항목설명
외부 HTTP/HTTPS 호출HttpClient, WebClient, HttpWebRequest 등으로 외부 서버에 요청 금지
외부 SDK 연동서드파티 클라우드 SDK, AI API, SaaS 라이브러리 사용 금지
원격 플러그인 다운로드런타임에 외부에서 DLL/코드 다운로드 금지
텔레메트리 / 오류 수집사용 데이터를 외부 서버로 전송하는 일체의 코드 금지
NuGet 패키지외부 네트워크 통신이 내장된 패키지 신규 도입 금지
-

허용: 로컬 파일 시스템 접근, Windows API (P/Invoke), 사내 인트라넷 URL, 로컬 프로세스 실행

- -

아키텍처 개요

-

핵심 컴포넌트

- - - - - - - - - - - -
컴포넌트역할
App.xaml.cs앱 진입점, 서비스 초기화, 트레이 아이콘 관리
LauncherWindowWPF 메인 UI (AllowsTransparency, WindowStyle=None)
CommandResolver프리픽스 기반 핸들러 라우팅 테이블
FuzzyEngine퍼지 검색 + 한국어 초성(ㅅㄷ) 매칭
IndexService파일 시스템 인덱서 + FileSystemWatcher
SettingsServicesettings.json 로드/저장 (자동 백업)
ClipboardHistoryServiceWM_CLIPBOARDUPDATE 훅 기반 히스토리
PluginHostDLL/JSON 스킬 플러그인 로더
NotificationService트레이 풍선 알림 (타이머/알람)
- -

프리픽스 핸들러 치트시트

- - - - - - - - - - - - - - - - - - - - - - - - -
프리픽스핸들러기능
(없음)FuzzyEngine앱·파일 퍼지 검색 + 한국어 초성
=CalculatorHandler수식 계산, 단위/통화 변환
/SystemCommandHandlerlock, sleep, restart, shutdown, timer, alarm
;SnippetHandler텍스트 스니펫 키워드 검색 & 붙여넣기
#ClipboardHistoryHandler클립보드 히스토리 검색 & 병합
@UrlAliasHandlerURL 단축키
~FolderAliasHandler폴더 단축키
>BatchHandler명령 실행 / 배치 단축키
$ClipboardHandler클립보드 텍스트 12종 변환
!WorkspaceHandler워크스페이스 저장·복원
emojiEmojiHandler이모지 피커 (300+)
colorColorHandlerHEX/RGB/HSL/HSV 색상 변환
recentRecentFilesHandlerWindows 최근 파일
noteNoteHandler빠른 메모 저장·조회
uninstallUninstallHandler앱 제거 (레지스트리)
portPortHandlerTCP 포트/프로세스 점검
envEnvHandler환경변수 조회
jsonJsonHandlerJSON 검증/포맷/미니파이
encodeEncodeHandlerbase64/url/hex/md5/sha256 인코딩
snapSnapHandler창 배치 레이아웃
capScreenCaptureHandler화면/창/스크롤 캡처
helpHelpHandler도움말
- -

설정 스키마 (settings.json)

-

경로: %APPDATA%\AxCommander\settings.json

- - - - - - - - - - - - - - - - -
타입설명
versionstring설정 버전
hotkeystring글로벌 단축키 (기본: Alt+Space)
launcher.opacityfloat창 투명도 (0.0~1.0, 기본 0.96)
launcher.maxResultsint최대 결과 수 (기본 7)
launcher.themestring테마 (system|dark|light|oled|nord|monokai|catppuccin|sepia|alfred|alfredlight|custom)
launcher.positionstring런처 위치 (center-top|center|bottom)
launcher.webSearchEnginestring기본 검색 엔진 (g|n|d|y|w)
launcher.snippetAutoExpandbool스니펫 자동 확장 활성화
indexPathsstring[]인덱싱할 폴더 경로 목록
aliasesobject[]URL/폴더/배치 단축키 목록
snippetsobject[]텍스트 스니펫 목록
clipboardHistory.enabledbool클립보드 히스토리 활성화
clipboardHistory.maxItemsint최대 보관 개수 (기본 50)
pluginsobject[]DLL 플러그인 경로 목록
- -

테마 시스템

-

내장 테마 목록

- - - - - - - - - - - - - -
테마 키이름특징
system시스템Windows 다크/라이트 모드 자동 감지
darkDark딥 네이비 다크 (기본)
lightLight클린 화이트 라이트
oledOLED순수 블랙 (OLED 절전)
nordNordArctic 컬러 팔레트
monokaiMonokaiSublime Text 스타일
catppuccinCatppuccinMocha 따뜻한 파스텔
sepiaSepia황갈색 아날로그 감성
alfredAlfred DarkAlfred 5 다크 팔레트 (딥 퍼플-차콜)
alfredlightAlfred LightAlfred 5 라이트 팔레트 (클린 화이트)
custom커스텀14개 색상 완전 커스터마이징
-

테마 ResourceKey 목록 (14개)

- - - - - - - - - - - - - - - - -
용도
LauncherBackground전체 배경
ItemBackground항목 기본 배경
ItemSelectedBackground선택된 항목 배경
ItemHoverBackground호버 배경
PrimaryText주 텍스트 색상
SecondaryText보조 텍스트 색상
PlaceholderText플레이스홀더 텍스트
AccentColor강조색 (선택 바, 배지 등)
SeparatorColor구분선 색상
HintBackgroundESC 힌트 배경
HintTextESC 힌트 텍스트
BorderColor창 테두리
ScrollbarThumb스크롤바 색상
ShadowColor드롭 섀도우 색상
-

새 테마 추가 절차

-
    -
  • 1. Themes/MyTheme.xaml 작성 (위 14개 키 모두 정의)
  • -
  • 2. AxCommander.csproj에 <Resource Include="Themes/MyTheme.xaml"/> 추가
  • -
  • 3. LauncherWindow.xaml.cs → GetEffectiveThemeName() switch에 케이스 추가
  • -
  • 4. SettingsViewModel.ThemeCards 목록에 ThemeCardModel 항목 추가
  • -
- -

보안 고려사항

- - - - - - - - - -
항목구현
URL 스킴 검증http, https, ftp, ms-settings, mailto, file 허용. javascript: 등 차단
PowerShell 인젝션 방지> 명령어 입력의 " 이스케이프 처리
ReDoS 방지사용자 정의 Regex에 TimeSpan 타임아웃 적용
자격증명 저장Windows Credential Manager (advapi32.dll, DPAPI 암호화)
클립보드 민감 데이터Regex 기반 제외 패턴 — 신용카드·IP 등 기본 차단
API 타임아웃JSON 스킬 HTTP 요청 3초 제한
시스템 명령 확인재시작·종료·로그아웃 실행 전 MessageBox.Show 2단계 확인
- -

단위 테스트

- - - - - -
파일테스트 수대상
FuzzyEngineTests.cs19CalculateScore, FuzzyMatch, 초성 검색
ClipboardTransformTests.cs2112개 내장 변환기
SettingsServiceTests.cs17기본값, JSON 직렬화 라운드트립
- -

v1.6 3차 전체 점검 수정

-

빌드 오류 3건, 컴파일 경고 1건, 런타임 버그 6건, 보안 이슈 2건을 수정하였습니다.

-

컴파일 오류 수정

- - - - - -
파일수정 내용오류 코드
UsageRankingService.csusing System.IO; 누락 추가CS0103
SettingsWindow.xaml.csKey.Enter or Key.Return 단일 arm으로 통합CS8510
ContextManager.csEnumDisplayMonitors 람다 타입 혼합 수정CS0748
-

런타임 버그 수정

- - - - - - - -
파일버그수정
JsonSkillLoader.csfield[0 형식 오류 방지 (IndexOf 반환 -1)closingIdx < 0 가드 추가
ClipboardHistoryService.cs_ignoreNext 스레드 비안전, 이중 초기화volatile + 이중 초기화 가드
IndexService.csScheduleRebuild 타이머 비원자적 교체_timerLock으로 원자적 교체
SettingsService.cs백업 실패 무음 catchLogService.Warn으로 기록
LauncherWindow.xaml.csWindow에 RenderTransform 설정 시 InvalidOperationExceptionContent(루트 Border)에 적용
-

보안 수정

- - - - -
파일수정 내용
JsonSkillLoader.csActionUrl 실행 전 http/https 스킴 검증 추가
SettingsWindow.xaml.csNewIndexPathBox null 역참조 방어 처리
- -

빌드 및 배포

-

빌드 명령

-

# 개발 실행

-

dotnet run --project src/AxCommander

- -

# Release 단일 파일 빌드 (self-contained)

-

dotnet publish src/AxCommander -c Release -r win-x64 --self-contained

- -

# 단위 테스트

-

dotnet test src/AxCommander.Tests

-

데이터 경로

- - - - - - - - -
용도경로
설정 파일%APPDATA%\AxCommander\settings.json
로그%APPDATA%\AxCommander\logs\app-YYYY-MM-DD.log
스킬 파일%APPDATA%\AxCommander\skills\*.skill.json
메모%APPDATA%\AxCommander\notes.txt
사용 빈도%APPDATA%\AxCommander\usage.json
크래시 덤프%APPDATA%\AxCommander\crashes\
-

요구 사항

-
    -
  • OS: Windows 10 20H2 이상 (Windows 11 권장)
  • -
  • .NET 8.0 Runtime (Self-contained 빌드 시 불필요)
  • -
- -

플러그인 개발

-

DLL 플러그인

-

AxCommander.SDK를 참조하여 IActionHandler 인터페이스를 구현합니다.

-

using AxCommander.SDK;

- -

public class MyHandler : IActionHandler

-

{

-

public string? Prefix => "?"; // 트리거 프리픽스

-

public PluginMetadata Metadata => new("MyPlugin", "설명", "1.0");

- -

public async Task<IEnumerable<LauncherItem>> GetItemsAsync(string query, CancellationToken ct)

-

{

-

return [ new LauncherItem("제목", "부제목", null, myData, Symbol: "\uE721") ];

-

}

- -

public Task ExecuteAsync(LauncherItem item, CancellationToken ct)

-

{

-

return Task.CompletedTask;

-

}

-

}

-

JSON 스킬 (코드 없이 HTTP API 연동)

-

경로: %APPDATA%\AxCommander\skills\*.skill.json

-

{

-

"id": "my-api",

-

"name": "API 연동",

-

"prefix": "?",

-

"request": {

-

"method": "GET",

-

"url": "https://intranet.example.com/api?q={{INPUT}}"

-

},

-

"response": {

-

"resultsPath": "items",

-

"titleField": "name",

-

"subtitleField": "description",

-

"actionUrl": "url"

-

},

-

"cache": 30

-

}

- -

AX Commander · .NET 8.0 · WPF · MIT License

- - diff --git a/docs/AX_Copilot_블로그_워드프레스.html b/docs/AX_Copilot_블로그_워드프레스.html deleted file mode 100644 index 2a1bffb..0000000 --- a/docs/AX_Copilot_블로그_워드프레스.html +++ /dev/null @@ -1,282 +0,0 @@ - - -
- - -
-

AX Copilot

-

?ㅻ낫???섎굹濡?紐⑤뱺 ?낅Т瑜??쒖뼱?섎뒗 ?щ궡 ?꾩슜 AI ?곗쿂

-

諛깆듅??쨌 AX?곌뎄??AI?€ 쨌 SW Architect

-
- - -

1. ??留뚮뱾?덈뒗媛€

- -

?낅Т 以?媛€??留롮씠 諛섎났?섎뒗 ?숈옉??萸먮깘怨?臾쇱쑝硫? ?€遺€遺꾩쓽 ?щТ吏?吏곸썝???대젃寃??€?듯빀?덈떎:

- -
    -
  • ?깆쓣 李얠븘???ㅽ뻾?섍린
  • -
  • ?뚯씪??李얠븘???닿린
  • -
  • ?대┰蹂대뱶?먯꽌 蹂듭궗???댁슜 ?ㅼ떆 李얘린
  • -
  • 怨꾩궛湲??닿퀬 媛꾨떒??怨꾩궛?섍린
  • -
  • AI?먭쾶 吏덈Ц?섎젮硫?釉뚮씪?곗? ?닿퀬 蹂꾨룄 ?쒕퉬???묒냽?섍린
  • -
- -

??紐⑤뱺 ?숈옉??留덉슦?ㅻ? ?ㅺ퀬, ?먯깋湲곕? ?닿퀬, ?대┃?섍퀬???ㅻ낫?쒖뿉???먯쓣 ???섍? ?놁뒿?덈떎.

- -

AX Copilot?€ ??臾몄젣瑜??닿껐?⑸땲?? Alt+Space ??踰덉쑝濡?紐⑤뱺 寃껋쓣 ?ㅻ낫?쒕줈 ?쒖뼱?????덈뒗 ?곗쿂?댁옄, AI ?€??AX Agent)源뚯? ?듯빀???щ궡 ?꾩슜 ?낅Т ?꾩슦誘몄엯?덈떎.

- -

???꾨줈?앺듃??LLM(Sigmoid)怨??④퍡 湲고쉷遺€??援ы쁽源뚯? 吏꾪뻾???щ?濡? AI?€ ?묒뾽?섎뒗 ?뚰봽?몄썾??媛쒕컻???ㅼ젣 寃쏀뿕???닿퀬 ?덉뒿?덈떎.

- - -

2. AX Copilot?대??

- -

Alt+Space瑜??꾨Ⅴ硫??붾㈃ ?곷떒??源붾걫???곗쿂 李?AX Commander)???섑??⑸땲?? ?ш린???먰븯??紐낅졊???낅젰?섎㈃ ?⑸땲??

- -
    -
  • ???대쫫??移섎㈃ ?깆씠 ?ㅽ뻾?⑸땲??(?쒓뎅??珥덉꽦 寃€?됰룄 媛€??)
  • -
  • = 瑜?移섎㈃ 怨꾩궛湲곌? ?⑸땲??/li> -
  • # ??移섎㈃ ?대┰蹂대뱶 ?덉뒪?좊━媛€ ?섑??⑸땲??/li> -
  • cap region ??移섎㈃ ?곸뿭 罹≪쿂媛€ ?쒖옉?⑸땲??/li> -
  • win chrome ??移섎㈃ ?щ\ 李쎌쑝濡?利됱떆 ?꾪솚?⑸땲??/li> -
  • ! ??移섎㈃ AI ?€??AX Agent)媛€ ?대┰?덈떎
  • -
- -

?꾨━?쎌뒪(?묐몢?? 湲곕컲?쇰줈 45媛??댁긽??紐낅졊??/strong>瑜?吏€?먰븯硫? ?쒓뎅??珥덉꽦 寃€???끹꽬 ???ㅼ젙)怨??쇱? 留ㅼ묶???⑸땲??

- - -

3. ?듭떖 湲곕뒫 ?뚭컻

- -

AX Copilot?€ ?⑥닚?????곗쿂媛€ ?꾨떃?덈떎. ?꾨옒??移댄뀒怨좊━蹂?二쇱슂 湲곕뒫?낅땲??

- - -

AI ?€????AX Agent NEW v1.0.5

- -
    -
  • ! ?덉빟?대줈 AI ?€??李?吏꾩엯
  • -
  • 4醫?LLM 吏€??/strong>: Ollama, vLLM(OpenAI ?명솚), Gemini, Sigmoid API
  • -
  • ?ㅽ듃由щ컢 + ?€?댄븨 ?④낵: SSE 湲곕컲 ?ㅼ떆媛??묐떟, 12ms ?€?대㉧濡??€?댄븨 ?좊땲硫붿씠??/li> -
  • 留덊겕?ㅼ슫 + 肄붾뱶 援щЦ 媛뺤“: 10媛??몄뼱 ?ㅼ썙???섏씠?쇱씠?? 肄붾뱶 釉붾줉 蹂듭궗 踰꾪듉
  • -
  • ?좏겙 ?ъ슜??/strong>: k/m ?⑥쐞 ?ㅼ떆媛??쒖떆 + ?묐떟 ?뚯슂?쒓컙
  • -
  • ?꾨\?꾪듃 移대뱶: 誘몃━ ?ㅼ젙???쒖뒪???꾨\?꾪듃 + ?ъ슜???뺤쓽 ?쒗뵆由?/li> -
  • ?€??愿€由?/strong>: 怨좎젙/?대쫫蹂€寃?遺꾨쪟(6醫?/??젣, ?좎쭨蹂?洹몃9, 30???먮룞 ?뺣━
  • -
  • 硫붿떆吏€ ?몄쭛: ?ъ슜??硫붿떆吏€ ?몄쭛/蹂듭궗, 醫뗭븘???レ뼱???쇰뱶諛?/li> -
- - -

寃€??/h3> - -
    -
  • ?쇱? 寃€??/strong>: ???뚯씪紐낆쓣 ?쇰?留??낅젰?대룄 李얠븘以?/li> -
  • ?쒓뎅??珥덉꽦: ?뉎뀕?????꾪븳湲€ 寃€??/li> -
  • ?ㅽ뻾 鍮덈룄 ?숈뒿: ?먯< ?곕뒗 ?깆씠 ?곷떒?쇰줈
  • -
  • 湲곕낯 ??蹂꾩묶: 硫붾え?? 怨꾩궛湲? ?묒? ???쒓?+?곷Ц 利됱떆 ?ㅽ뻾
  • -
  • ?대뜑 寃€??/strong>: ?몃뜳??寃쎈줈???섏쐞 ?대뜑??寃€??媛€??/li> -
- - -

怨꾩궛 쨌 蹂€??/h3> - -
    -
  • = sqrt(144), = 0xFF + 1, = 100km in miles
  • -
  • = 100 USD to KRW (?ㅼ떆媛??섏쑉)
  • -
  • date +30d (30?????좎쭨), date unix (?€?꾩뒪?ы봽)
  • -
- - -

?대┰蹂대뱶

- -
    -
  • # ?덉뒪?좊━: 蹂듭궗 ?대젰 寃€??쨌 ?ъ궗??쨌 蹂묓빀 (Shift+?묅넃 ?좏깮 ??Shift+Enter 蹂묓빀)
  • -
  • $ 蹂€??/strong>: JSON ?뺣젹, Base64, URL ?몄퐫????12醫?/li> -
  • pipe ?뚯씠?꾨씪??/strong>: pipe upper > trim > b64e (19醫??꾪꽣 泥댁씠??
  • -
  • batch ?쇨큵 泥섎━: 以꾨쾲?? ?뺣젹, 以묐났?쒓굅, 媛먯떥湲???14醫?/li> -
  • DPAPI ?뷀샇??/strong>: ?대┰蹂대뱶 ?덉뒪?좊━ ?뚯씪???꾩옱 Windows 怨꾩젙?먯꽌留?蹂듯샇??媛€??/li> -
- - -

媛쒕컻???꾧뎄

- -
    -
  • json format / minify / validate
  • -
  • encode base64 / url / sha256
  • -
  • color #FF5500 ??HEX/RGB/HSL/HSV 4醫?蹂€??/li> -
  • port 3000 ???먯쑀 ?꾨줈?몄뒪 ?뺤씤
  • -
  • env PATH ???섍꼍蹂€??寃€??/li> -
  • pick ???ㅽ룷?대뱶濡??붾㈃ ?됱긽 HEX 肄붾뱶 異붿텧 (?뗫낫湲?+ ?ㅼ떆媛?誘몃━蹂닿린)
  • -
  • diff ???대┰蹂대뱶 理쒓렐 2媛??먮뒗 ?뚯씪 2媛?鍮꾧탳
  • -
  • stats ???띿뒪???듦퀎 (湲€?먯닔/?⑥뼱???쎄린?쒓컙/?ㅼ썙??鍮덈룄)
  • -
- - -

?붾㈃ 罹≪쿂

- -
    -
  • cap region / window / scroll / screen (?ъ슜 鍮덈룄???뺣젹)
  • -
  • 吏€??罹≪쿂: Shift+Enter ??3珥?5珥?10珥??€?대㉧ ??罹≪쿂 NEW
  • -
  • ?ㅽ겕濡?罹≪쿂: ?쒖꽦 李쎌쓣 ?앷퉴吏€ ?ㅽ겕濡ㅽ븯硫??섏씠吏€ ?꾩껜 罹≪쿂
  • -
  • 湲€濡쒕쾶 ?⑥텞??/strong>(PrintScreen ?? 吏€??/li> -
  • 蹂댁븞: ?대┰蹂대뱶?먮쭔 蹂듭궗 (?뚯씪 ?€?μ? ?ㅼ젙?먯꽌 ?좏깮)
  • -
- - -

李?愿€由?쨌 ?쒖뒪??/h3> - -
    -
  • ~save / ~restore: 李?諛곗튂 ?ㅻ깄??/li> -
  • snap left/right/full: 李?遺꾪븷 ?덉씠?꾩썐
  • -
  • win: ?대┛ 李?寃€????利됱떆 ?꾪솚 (Alt+Tab ?€泥?
  • -
  • /lock, /timer 5m, /alarm 14:30
  • -
  • svc: Windows ?쒕퉬??愿€由?+ ?대┰蹂대뱶 媛뺤젣 ?ъ떆??/li> -
  • monitor: CPU쨌硫붾え由?룸뵒?ㅽ겕쨌媛€?숈떆媛??ㅼ떆媛?紐⑤땲?곕쭅
  • -
- - -

?낅Т ?먮룞??/h3> - -
    -
  • journal: ?ㅻ뒛 ?ъ슜????紐낅졊??湲곕컲 ?낅Т ?쇱? 留덊겕?ㅼ슫 ?먮룞 ?앹꽦
  • -
  • routine: 異쒓렐/?닿렐 猷⑦떞 ?깅줉 ????踰덉뿉 ?ㅽ뻾
  • -
  • scaffold: ?꾨줈?앺듃 ?대뜑 援ъ“ ?쒗뵆由??쇨큵 ?앹꽦
  • -
  • rename: ?뚯씪 ?쇨큵 ?대쫫 蹂€寃?(?쒕쾲/?좎쭨 ?쒗뵆由?
  • -
  • fav: ?먯< ?곕뒗 ?뚯씪쨌?대뜑 利먭꺼李얘린
  • -
- - -

?ㅻ낫???⑥텞??16醫?/h3> - - - - - - - - - - - - - -
?⑥텞??/th> - 湲곕뒫
F1?꾩?留?/td>
Ctrl+K?⑥텞???꾩?留?/td>
Ctrl+H / R / B?덉뒪?좊━ / 理쒓렐 ?뚯씪 / 利먭꺼李얘린
Ctrl+1~9N踰덉㎏ ??ぉ 利됱떆 ?ㅽ뻾
Ctrl+Enter愿€由ъ옄 沅뚰븳 ?ㅽ뻾
Shift+EnterLarge Type / 蹂묓빀 ?ㅽ뻾 / 吏€??罹≪쿂
??(?붿궡???뚯씪 ?≪뀡 紐⑤뱶 (寃쎈줈蹂듭궗/?먯깋湲??곕?????7醫?
Delete??ぉ ?쒓굅 (?뺤씤 ?ㅼ씠?쇰줈洹?
- - -

4. 蹂댁븞 ???щ궡 ?꾩슜 ?먯튃

- -

AX Copilot?€ ?щ궡 ?꾩슜 ?꾨줈洹몃옩?쇰줈, ?몃? ?ㅽ듃?뚰겕 ?듭떊???먯튃?곸쑝濡??섏? ?딆뒿?덈떎.

- -
    -
  • ?몃? HTTP/HTTPS ?몄텧 湲덉? ??HttpClient, WebClient ???ъ슜 遺덇? (AI ?쒕퉬?ㅻ뒗 ?щ궡 Ollama/vLLM ?곕룞)
  • -
  • ?대┰蹂대뱶 ?덉뒪?좊━ ??Windows DPAPI ?뷀샇??(CurrentUser 踰붿쐞)
  • -
  • API ??蹂댄샇 ??AES-256-CBC ?뷀샇??紐⑤뱶 吏€??(?ㅼ젙?쇰줈 ?꾪솚 媛€??
  • -
  • ?붾㈃ 罹≪쿂 ???대┰蹂대뱶?먮쭔 蹂듭궗, ?뚯씪 ?€?μ? ?ъ슜???ㅼ젙?먯꽌 ?좏깮
  • -
  • ?쒖뒪??紐낅졊 ???ъ떆??醫낅즺 ???꾪뿕 紐낅졊 ?ㅽ뻾 ??2?④퀎 ?뺤씤 ?ㅼ씠?쇰줈洹?/li> -
  • ?€???€??/strong> ??紐⑤뱺 AI ?€???댁뿭?€ 濡쒖뺄(%APPDATA%)?먮쭔 ?€?? ?몃? ?꾩넚 ?놁쓬
  • -
- - -

5. ?뚮쭏 ?쒖뒪??/h2> - -

9媛??댁옣 ?뚮쭏(Dark, Light, OLED, Nord, Monokai, Catppuccin, Sepia, Alfred, Alfred Light) + 而ㅼ뒪?€ ?뚮쭏瑜?吏€?먰빀?덈떎.

- -
    -
  • 媛??뚮쭏???됱긽肉??꾨땲??紐⑥꽌由??쇱슫??鍮꾩쑉???ㅻ쫭?덈떎 (OLED媛€ 媛€???κ?怨? Monokai媛€ 媛€??媛곸쭚)
  • -
  • 而ㅼ뒪?€ ?뚮쭏??14媛??됱긽 + 紐⑥꽌由??쇱슫???щ씪?대뜑濡??먯쑀濡?쾶 ?몄쭛
  • -
  • ?몃젅??硫붾돱, AI ?€??李?紐⑤몢 ?꾩옱 ?뚮쭏瑜??먮룞?쇰줈 ?곕씪媛?/li> -
- - -

6. ?ъ슜 ?듦퀎 & ?뚮┝

- -
    -
  • ?곗쿂 ?몄텧 ?잛닔: 理쒓렐 14??留됰? 李⑦듃
  • -
  • PC ?쒖꽦 ?쒓컙: 理쒓렐 14??留됰? 李⑦듃
  • -
  • ?곸쐞 紐낅졊: 30???⑹궛 Top 10 ?쒖쐞
  • -
  • ?좉툑 ?댁젣 ?뚮┝: PC ?좉툑 ?댁젣 ???꾩쟻 ?ъ슜?쒓컙 + 紐낆뼵 ?앹뾽 (30遺?4?쒓컙 媛꾧꺽, 5珥?3遺??쒖떆)
  • -
- - -

7. 二쇱슂 紐낅졊???붿빟

- - - - - - - - - - - - - - - - - - - - - - - -
?꾨━?쎌뒪湲곕뒫?덉떆
!AI ?€??(AX Agent)!nginx ?ㅼ젙 諛⑸쾿
=怨꾩궛湲?+ ?⑥쐞/?듯솕 蹂€??/td>= 100 USD to KRW
#?대┰蹂대뱶 ?덉뒪?좊━# api
$?대┰蹂대뱶 蹂€??(12醫?$ base64
cap?붾㈃ 罹≪쿂cap region, cap scroll
win李??꾪솚 (Alt+Tab ?€泥?win excel
snap李?遺꾪븷 ?덉씠?꾩썐snap left, snap full
jsonJSON 寃€利??щ㎎/誘몃땲?뚯씠json format
pipe?대┰蹂대뱶 ?뚯씠?꾨씪??/td>pipe upper > trim
date?좎쭨 怨꾩궛/D-day/?€?꾩뒪?ы봽date +30d
???寃€??(10媛??붿쭊)?n 留쏆쭛 (?ㅼ씠踰?
;?띿뒪???ㅻ땲??/td>;addr ???먮룞 ?뺤옣
/?쒖뒪??紐낅졊 + ?€?대㉧/?뚮엺/timer 5m ?뚯쓽
emoji?대え吏€ ?쇱빱 (300+)emoji ?껋쓬
journal?낅Т ?쇱? ?먮룞 ?앹꽦journal
routine異쒗눜洹?猷⑦떞 ?ㅽ뻾routine morning
- - -

8. 湲곗닠 ?ㅽ깮

- -
    -
  • .NET 8, WPF (UseWPF=true), WinForms (?쇰? ?ㅼ씠?쇰줈洹?
  • -
  • P/Invoke: SetWindowPos, PrintWindow, GlobalMemoryStatusEx, EnumWindows, GetPixel ??Windows API 吏곸젒 ?몄텧
  • -
  • ?⑥씪 EXE 諛고룷: Self-Contained + PublishSingleFile + IncludeNativeLibrariesForSelfExtract
  • -
  • 蹂댁븞: DPAPI(System.Security.Cryptography.ProtectedData), AES-256-CBC, HKCU ?덉??ㅽ듃由?/li> -
  • LLM ?듭떊: HttpClient SSE ?ㅽ듃由щ컢 (Ollama/vLLM/Gemini/Sigmoid API)
  • -
  • ?뚯뒪??/strong>: xUnit 2.9.0 + FluentAssertions (57媛??⑥쐞 ?뚯뒪??
  • -
- - -

9. v1.0.5 二쇱슂 蹂€寃??ы빆

- - - - - - - - - - - - - - - - -
援щ텇?댁슜
AX Agent! ?덉빟?대줈 AI ?€??李? Sigmoid Desktop ?ㅽ???2?⑤꼸 援ъ“
LLM 4醫?/td>Ollama, vLLM, Gemini, Sigmoid API ?듯빀 吏€??/td>
?ㅽ듃由щ컢SSE 湲곕컲 ?ㅽ듃由щ컢 + 12ms ?€?댄븨 ?④낵 + 而ㅼ꽌 源쒕묀??/td>
肄붾뱶 媛뺤“10媛??몄뼱 ?ㅼ썙???섏씠?쇱씠??+ 肄붾뱶 釉붾줉 蹂듭궗
?좏겙 ?쒖떆k/m ?⑥쐞 ?ъ슜??+ ?묐떟 ?뚯슂?쒓컙(珥?
?꾨\?꾪듃 移대뱶?쒖뒪???꾨\?꾪듃 ?꾨━??+ ?ъ슜???뺤쓽 ?쒗뵆由?/td>
?€??愿€由?/td>怨좎젙/?대쫫蹂€寃?遺꾨쪟/??젣, ?쇰뱶諛? 硫붿떆吏€ ?몄쭛
吏€??罹≪쿂Shift+Enter ??3/5/10珥??€?대㉧ ??罹≪쿂
而ㅼ뒪?€ Popup紐⑤뱺 ?쒕∼?ㅼ슫 硫붾돱瑜??쇱슫??而ㅼ뒪?€ Popup?쇰줈 ?듭씪
?뚮┝ ?뺤옣湲곕낯 15珥? 1遺?2遺?3遺??쒖떆 ?쒓컙 異붽?
- - -

10. 留덈Т由???LLM怨??④퍡 留뚮뱺 ?꾨줈?앺듃

- -

AX Copilot?€ 湲고쉷遺€??援ы쁽, ?뚯뒪?? 臾몄꽌?붽퉴吏€ LLM(Sigmoid)怨??④퍡 吏꾪뻾???꾨줈?앺듃?낅땲??

- -
    -
  • 湲고쉷: Alfred, Raycast ??湲곗〈 ?곗쿂???μ젏??遺꾩꽍?섍퀬, ?щ궡 ?섍꼍??留욌뒗 湲곕뒫 ?좊퀎
  • -
  • 援ы쁽: WPF + P/Invoke 湲곕컲?쇰줈 ?몃? ?섏〈???놁씠 45媛? 湲곕뒫 援ы쁽
  • -
  • AI ?듯빀: Ollama/vLLM/Gemini/Sigmoid 4醫?LLM ?쒕퉬?ㅻ? ?щ궡 ?섍꼍??留욊쾶 ?듯빀
  • -
  • 寃€??/strong>: 肄붾뱶 由щ럭, ?ㅻ쪟 遺꾩꽍, 蹂댁븞 ?먭?, ?깅뒫 理쒖쟻?붾? LLM怨??④퍡 諛섎났
  • -
  • 臾몄꽌: 媛쒕컻 臾몄꽌, ?ъ슜??留ㅻ돱?? 釉붾줈洹?湲€源뚯? LLM???묒꽦
  • -
- -

-"媛쒖씤?곸쑝濡??먮? 寃껋?, LLM?€ '肄붾뱶 ?앹꽦湲?媛€ ?꾨땲??'?④퍡 ?앷컖?섎뒗 ?숇즺'??媛€源앸떎??寃껋엯?덈떎."

-"??湲곕뒫?€ ?대젃寃??섎㈃ ?대뼚??" "??遺€遺꾩? 蹂댁븞 由ъ뒪?ш? ?덉뼱" "?ъ슜?먭? ?대젃寃??곕㈃ 臾몄젣?????덉뼱" ???대윴 ?쇰뱶諛깆쓣 二쇨퀬諛쏆쑝硫??꾨줈?앺듃瑜??꾩꽦?덉뒿?덈떎. -

- - -
-

AX Copilot v1.0.5 ??紐⑤뱺 ?낅Т瑜??ㅻ낫???섎굹濡?

-

諛깆듅??쨌 AX?곌뎄??AI?€ 쨌 SW Architect 쨌 www.swarchitect.net

-
- -

- diff --git a/docs/Cowork_업무활용_계획보고서.md b/docs/Cowork_업무활용_계획보고서.md deleted file mode 100644 index 4f28e14..0000000 --- a/docs/Cowork_업무활용_계획보고서.md +++ /dev/null @@ -1,188 +0,0 @@ -# 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 기준으로 작성되었으며, 향후 기능 업데이트에 따라 활용 범위가 확대될 예정입니다.* diff --git a/docs/DEVELOPMENT_2026-04-04_CONTINUOUS.md b/docs/DEVELOPMENT_2026-04-04_CONTINUOUS.md new file mode 100644 index 0000000..17ca490 --- /dev/null +++ b/docs/DEVELOPMENT_2026-04-04_CONTINUOUS.md @@ -0,0 +1,54 @@ +# 연속 진행 기록 (2026-04-04) + +## 1) 안정화 점검 결과 +- 빌드: `dotnet build` 성공 (경고 0, 오류 0) +- 테스트: `dotnet test` 성공 (425 passed, 0 failed) + +## 2) 설정-런타임 연동 확인 +아래 설정값은 런타임 코드 경로에서 실제 참조됨. + +- `MaxRetryOnError` + - 사용: `AgentLoopService` 재시도 상한 +- `EnableProactiveContextCompact` + - 사용: 수동/자동 compact 판단 경로 +- `ContextCompactTriggerPercent` + - 사용: compact 임계치 계산 +- `MaxContextTokens` + - 사용: LLM 요청 `max_tokens`/`maxOutputTokens` +- `VllmAllowInsecureTls` + - 사용: vLLM HTTP 호출 TLS 검증 우회 분기 +- `AgentUiExpressionLevel` + - 사용: slash 도움말/필터 가시성/설정 화면 표현 수준 + +## 3) 도구/스킬 상태 스냅샷 +- `IAgentTool` 구현 클래스 수: 83 +- `ToolRegistry.Register(...)` 호출 수: 84 +- `skills/*.skill.md` 파일 수: 41 +- Slash 명령 매핑 엔트리 수: 85 + +## 4) claw-code 비교 포인트 (실행 반영 기준) +- claw-code 문서 기준 핵심 slash: `/permissions`, `/mcp` 확인 +- AX 현재 매핑에 `/permissions`, `/allowed-tools`, `/mcp`, `/chrome`, `/compact` 포함 +- 다음 보강 우선순위: + 1. 수동 시나리오 기반 MCP/Chrome 진단 품질 강화 + 2. Internal/External 정책 전환 시 외부 도구 차단/허용 회귀 테스트 + 3. 권한 모드 전환과 도구 실행 결과의 사용자 피드백 일관화 + +## 5) 다음 연속 작업 큐 (실행 순서) +1. 수동 시나리오 체크리스트 4건 완료 +2. 실패 시나리오 로그 정형화 및 메시지 개선 +3. 설정 항목 도움말 문구를 표현 수준별(풍부/적절/간단) 차등 노출 +4. 도구/스킬 비교 리포트 자동 생성 스크립트 추가 + +## 6) 추가 검증 반영 (2026-04-04 2차) +- 테스트 보강: + - `LlmRuntimeOverrideTests` + - `ResolveServerInfo_VllmGlobalInsecureTls_ShouldBeApplied` + - `ResolveServerInfo_RegisteredModelOverride_ShouldUseEndpointAndApiKey` + - `ChatWindowSlashPolicyTests` + - `/compact` 파싱 케이스 추가 +- 부분 회귀 실행: + - OperationMode/Compact/RuntimeOverride 관련 45건 통과 +- 남은 수동 항목: + - 실제 사내 vLLM 엔드포인트 연결 성공 확인 + - `/compact` 실행 후 UI 토큰/요약 표시 갱신 확인 diff --git a/docs/LAUNCHER_ROADMAP.html b/docs/LAUNCHER_ROADMAP.html deleted file mode 100644 index 9b12620..0000000 --- a/docs/LAUNCHER_ROADMAP.html +++ /dev/null @@ -1,619 +0,0 @@ - - - - - -AX Commander (런처) 고도화 계획 | AX Copilot - - - - -
-
-
- -
-

AX Commander (런처) 고도화 계획

-
AX Copilot Launcher Roadmap
-
-
-
- Version: v1.6.1 - Last Updated: 2026-03-30 - Status: Active -
-
-
- -
- - - - - -
-
-
-

현재 상태 (v1.5.0) — 핵심 기능 44개 핸들러

- 현재 -
-
-
-
    -
  • 퍼지 검색 + 한글 초성 검색 (FuzzyEngine)
  • -
  • 44개 프리픽스 명령 (계산기, 이모지, 웹검색, 스니펫, 클립보드, 프로세스 등)
  • -
  • 10가지 테마 + 커스텀 테마
  • -
  • 플러그인 시스템 (DLL + JSON 스킬)
  • -
  • AX Agent AI 대화 통합
  • -
  • 글로벌 핫키 (Alt+Space), 무지개 글로우 효과
  • -
  • 파일/앱 인덱싱, 북마크 검색, 사용 빈도 랭킹
  • -
  • 워크스페이스 프로파일 (창 레이아웃 저장/복원)
  • -
  • 클립보드 히스토리, 스니펫 확장
  • -
  • 스크린 캡처, 컬러 피커, JSON 도구
  • -
-
-
- - -
-
-
-

경쟁 서비스 비교 (2026년 3월 기준)

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
기능AX CommanderRaycastAlfred 5Flow LauncherPowerToys
AI 대화O (AX Agent)O (멀티모델)워크플로우XX
MCP 프로토콜OXXXX
에이전트 코딩O (Code 탭)OXXX
플러그인DLL+JSON1500+ 스토어워크플로우 갤러리200+모듈
클립보드 히스토리OO (리치)파워팩플러그인X
윈도우 관리O (22 레이아웃)70+ 레이아웃XXFancyZones
파일 탐색기 통합XXXXX
Everything 연동O (es 프리픽스)XXOX
선택 텍스트 AIO (텍스트 액션)O (AI Commands)XXX
영구 독 UIO (독 바)XXXO
클라우드 동기화XProDropboxXX
다국어5개국어영어영어영어다국어
-
-
-
- -
- - -
-
-
-

Phase L1 — 차세대 런처 고도화 (v1.5.0)

- ✓ 완료 -
-
-
- - -
-
-

L1-1. 선택 텍스트 AI 명령 (AI Commands)

- 최고 -
-

갭: 런처에서만 AI 사용 가능, 시스템 전역 텍스트 처리 불가

-

구현: 글로벌 핫키(예: Alt+A) → 선택된 텍스트에 AI 명령 실행

-

명령 예시: 번역, 문법 교정, 요약, 코드 설명, 포맷 변환

-

참고: Raycast AI Commands

-

기술: InputListener 확장 + Clipboard 읽기 + LLM 호출 + 결과 Popup

-
- - -
-
-

L1-2. Everything (voidtools) 연동

- 높음 -
-

갭: 자체 인덱싱은 설정된 폴더만 검색, 전체 디스크 검색 불가

-

구현: Everything SDK (IPC/HTTP API) 연동으로 NTFS 전체 즉시 검색

-

폴백: Everything 미설치 시 기존 IndexService 사용

-

참고: Flow Launcher, Wox의 Everything 통합

-

기술: Everything.dll P/Invoke 또는 HTTP API (http://localhost:8080)

-
- - -
-
-

L1-3. 윈도우 타일링 레이아웃 확장

- 높음 -
-

갭: 기본 snap만 지원, 복잡한 레이아웃 불가

-

구현: 2분할, 3분할, 4분할, 그리드 레이아웃 (halves/thirds/quarters)

-

UI: snap 프리픽스에 레이아웃 선택 UI 추가

-

참고: Raycast Window Management (70+ 레이아웃)

-

기술: SnapHandler 확장 + Win32 SetWindowPos

-
- - -
-
-

L1-4. 플러그인 스토어 (인앱 갤러리)

- 중간 -
-

갭: 플러그인 설치가 수동 (DLL 파일 복사)

-

구현: 인앱 플러그인 브라우저 + 원클릭 설치/업데이트

-

소스: GitHub 리포지토리 기반 플러그인 레지스트리 (JSON manifest)

-

참고: Raycast Extension Store, Flow Launcher pm install

-

기술: PluginHost 확장 + GitHub API + 다운로드/설치 자동화

-
- - -
-
-

L1-5. 영구 독/위젯 모드

- 중간 -
-

갭: 런처는 호출 시에만 나타남, 상시 접근 불가

-

구현: 화면 하단/측면에 고정되는 미니 바 (핀 고정 명령, CPU/메모리, 시계)

-

참고: PowerToys Command Palette Dock

-

기술: 별도 Window (TopMost, 자동 숨김 옵션)

-
- - -
-
-

L1-6. 파일 탐색기 대화상자 통합

- 중간 -
-

갭: 열기/저장 대화상자에서 빠른 검색 불가

-

구현: Windows 열기/저장 대화상자 감지 → 런처 오버레이 표시

-

참고: Listary의 대화상자 하이재킹

-

기술: SetWinEventHook + 대화상자 감지 + 경로 주입

-
- - -
-
-

L1-7. 클립보드 히스토리 강화

- 중간 -
-

갭: 텍스트만 저장, 이미지/파일 클립보드 미지원

-

구현: 이미지 클립보드 저장, 리치 텍스트, 핀 고정, 카테고리 분류

-

참고: Raycast Clipboard (리치 컨텐츠)

-

기술: ClipboardHistoryHandler 확장 + 이미지 직렬화

-
- - -
-
-

L1-8. 클라우드 설정 동기화

- 보류 -
-

갭: 여러 PC에서 설정 수동 복사 필요

-

구현: settings.json + 스니펫 + 별칭을 클라우드 저장소에 동기화

-

후보: OneDrive / Google Drive / 사내 NAS 공유 폴더

-

참고: Raycast Pro Cloud Sync

-
- - -
-
-

L1-9. 커스텀 테마 마켓

- 보류 -
-

갭: 10개 내장 테마만 사용 가능

-

구현: 사용자 테마 공유/다운로드 시스템

-

기술: 테마 JSON 파일 → GitHub 기반 레지스트리

-
- -
-
- -
- - -
-
-
-

Phase L1 추가 완료 (v1.5.0)

- ✓ 완료 -
-
-
- - - - - - - - - - -
기능상태
Windows 탐색기 셸 확장✓ ShellExtensionService — HKCU 레지스트리 우클릭 메뉴 등록/해제
저장 공간 관리 UI✓ StorageAnalyzer — 사용량 분석, 드라이브 여유, 7/14/30일 정리
설정 도움말 아이콘✓ AI 관련 설정 17개에 ? 아이콘 + 커스텀 다크 툴팁
독 바 실시간 설정✓ 설정 변경 즉시 반영, 자동 표시, 위치 기억, 히트 테스트 수정
클립보드 이미지 썸네일✓ 런처에서 이미지 항목 썸네일 미리보기 표시
런처 독 바 명령어✓ /dock 명령으로 독 바 표시/숨기기
-
-
- -
- - -
-
-
-

Phase L2 — 클립보드 고도화 + UX 개선 (v1.5.3)

- 계획 -
-
-
-

- 방향: 클립보드 히스토리의 실용성 극대화 (이미지 원본 품질, 자동 복사 워크플로우). - Raycast의 리치 클립보드, Alfred의 Snippet 확장을 참고하되 사내 로컬 환경에 최적화. -

- - - - - - - - - - - -
#기능설명우선순위
L2-1클립보드 이미지 원본 해상도 보존원본 PNG/BMP 그대로 DPAPI 저장. 썸네일은 표시용으로만 생성. 캐시 정리 정책 (30일/500MB)높음
L2-2Shift+Enter 실행 시 자동 클립보드 복사클립보드 히스토리에서 미리보기 시 해당 항목을 시스템 클립보드에 자동 복사높음
L2-3클립보드 이미지 미리보기 창이미지 항목 선택 시 별도 팝업으로 원본 크기 미리보기. 확대/축소, 복사 버튼중간
L2-4클립보드 검색 강화이미지 OCR 텍스트 추출 → 텍스트 기반 이미지 검색. Windows OCR API (로컬)중간
L2-5클립보드 항목 병합여러 텍스트 항목을 선택하여 하나로 병합 (줄바꿈 구분). Ctrl+Click 다중 선택낮음
-
-
- -
- - -
-
-
-

Phase L3 — 차세대 런처 (v2.0) + Agent Phase 18 교차

- 계획 -
-
-
-

- 방향: 경쟁 런처(Raycast 1500+ 확장, PowerToys Run)의 에코시스템 수준을 참고하되, - 사내 보안/오프라인 환경에서 동작하는 자체 완결형 기능으로 구현.
- 참고: AX Agent Phase 18 (v2.0)과 교차 — 플러그인 갤러리(18-2), AI 스니펫(18-3), 퀵링크(18-4), 웹 검색 AI 요약(18-6). -

- - - - - - - - - - - - - - - -
#기능참고우선순위
L3-1플러그인 인앱 갤러리 + 레지스트리로컬 NAS/Git 레지스트리 기반 탐색/설치/업데이트. → Agent Phase 18-2높음
L3-2웹 검색 AI 요약? 검색 결과를 AI로 요약. → Agent Phase 18-6중간
L3-3AI 스니펫;email {수신자} {주제} → LLM 초안 자동 생성. → Agent Phase 18-3중간
L3-4파라미터 퀵링크jira {티켓번호} → URL 템플릿 변수 치환. → Agent Phase 18-4중간
L3-5파일 태그 시스템사용자 태그 부여, 태그 기반 검색중간
L3-6오프라인 AI (로컬 SLM)ONNX Runtime + phi-3. → Agent Phase 18-5낮음
L3-7다중 디스플레이모니터별 런처/독 바 위치 기억낮음
L3-8알림 센터 통합Windows 알림과 연동낮음
L3-9런처 미니 위젯날씨/일정/할일 카드형 표시. 로컬 데이터 기반낮음
-
-
- -
- - -
-
-
-

기술 부채 (v1.5.0 해결)

- ✓ 완료 -
-
-
- - - - - - - - - - -
항목상태
SnapHandler 기본 기능만✓ 22개 레이아웃으로 확장 (3등분, 2/3, 3분할 조합)
Everything 미연동✓ EverythingHandler 구현 (es 프리픽스, P/Invoke, graceful fallback)
플러그인 설치 수동✓ PluginHost.InstallFromZip() 로컬 zip 자동 추출·등록 (URL 제외: 사내 보안)
이미지 클립보드 미지원✓ PNG→Base64 DPAPI 암호화 저장/복원, 앱 재시작 후 이미지 유지
-
-
- -
- - - - - - - diff --git a/docs/NEXT_ROADMAP.html b/docs/NEXT_ROADMAP.html deleted file mode 100644 index bbe05dd..0000000 --- a/docs/NEXT_ROADMAP.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - -AX Copilot ??李④린 媛쒕컻 怨꾪쉷 (v1.6.1~v2.0) - - - -
- -
-
AX Copilot 李④린 媛쒕컻 怨꾪쉷
-

v1.6.1 ~ v2.0 濡쒕뱶留?/h1> -

- 2026??3??寃쎌웳 ?쒕퉬??遺꾩꽍 (Claw Code, Cursor, Copilot, Windsurf, Raycast, PowerToys) 諛??먯씠?꾪듃 肄붾뵫 ?숉뼢 湲곕컲
- ?꾩옱 v1.6.1 ??52媛??먯씠?꾪듃 ?꾧뎄, 29媛??댁옣 ?ㅽ궗, 20媛?肄붿썙???꾨━?? 4醫?LLM ?쒕퉬??

-

- - -

v1.6.1 ?꾨즺 ?꾪솴

- -
-
-

?곗쿂 (Phase L1) ?꾨즺

- - - - - - - - -
?좏깮 ?띿뒪??AI 紐낅졊O
??諛?(?ㅼ젙 湲곕컲)O
?대┰蹂대뱶 ?€/移댄뀒怨좊━O
?뚯씪 ?€?붿긽???곕룞O
Everything ?곕룞O
SnapHandler 22醫?/td>O
?꾩씠肄??꾨㈃ 援먯껜O
-
-
-

?€???쒕퉬??(Phase 8~15) ?꾨즺

- - - - - - - - - - - - - - - - -
MCP ?대씪?댁뼵??+ 紐⑤뜽 ?대갚O
LSP 肄붾뱶 ?명뀛由ъ쟾??/td>O
?쒕툕?먯씠?꾪듃 + 肄붾뱶 ?쒕㎤??寃€??/td>O
diff 酉곗뼱 + PDF ?대낫?닿린O
?대깽???몃━嫄?+ ?먮룞 ?뚯뒪??猷⑦봽O
?먮룞 紐⑤뜽 ?좏깮 (Auto Router)O
?먯씠?꾪듃 硫붾え由?+ 硫€?곕え??(Vision)O
?먯씠?꾪듃 ???쒖뒪??/td>O
?ㅽ궗 ?쒖뒪??29醫?(媛ㅻ윭由??몄쭛湲?媛€?몄삤湲?O
AI 肄붾뱶 由щ럭 + ?쒕옒洹??쒕∼ AIO
?먯씠?꾪듃 ?꾧뎄 52醫?(?곗씠???쒖뒪???ㅽ듃?뚰겕)O
?뚰겕?뚮줈??遺꾩꽍湲?+ ?ㅽ뻾 ?듦퀎 ?€?쒕낫??/td>O
硫€?고뙣??臾몄꽌 ?앹꽦 (plan?뭓ssemble)O
PPT ?ㅼ씠?곕툕 ?앹꽦 + ?대?吏€ 遺꾩꽍O
媛€?대뱶 ?쒖뒪??(?뷀샇??酉곗뼱)O
-
-
- - -

寃쎌웳 ?쒕퉬???€鍮??ъ???(2026??3??

- -
- - - - - - - - - - - - - - - - -
湲곕뒫AX CopilotClaw CodeCursorCopilotRaycast媛?/th>
MCPO?쒕쾭 紐⑤뱶OO@硫섏뀡??/td>
?쒕툕?먯씠?꾪듃O10媛??€8媛??대씪?곕뱶?ㅼ쨷X?먯씠?꾪듃 ?€
?대깽???몃━嫄?/td>O?뱁썒+?ㅼ?以?/td>Automations?댁뒋?뭁RX??/td>
?먯씠?꾪듃 硫붾え由?/td>OOOOX??/td>
?먮룞 紐⑤뜽 ?좏깮OXOOAuto??/td>
硫€?곕え??/td>OVisionOOX??/td>
?ㅽ궗 ?쒖뒪??/td>OSkillsXXX李⑤퀎??/td>
AI 肄붾뱶 由щ럭OXXReviewX??/td>
?뚮윭洹몄씤 留덉폆zip+媛ㅻ윭由?/td>留덉폆30+Extensions1500+?몄빋 ?덉??ㅽ듃由?/td>
硫€?고뙣??臾몄꽌O (plan?뭓ssemble)XXXX李⑤퀎??/td>
?뚰겕?뚮줈??遺꾩꽍O (?ㅼ떆媛??쒓컖??XXXX李⑤퀎??/td>
?먯깋湲????뺤옣OXXXX李⑤퀎??/td>
??諛?/td>OXXXX李⑤퀎??/td>
Windows ?ㅼ씠?곕툕O?곕???/td>IDEIDEbeta李⑤퀎??/td>
-
- - -

Phase 16 ???먯씠?꾪듃 吏€??媛뺥솕 + 媛쒕컻??寃쏀뿕 (v1.7.0) 李④린 媛쒕컻

- -
- - - - - - - - - - - - - - - - - - - - - - - -
#湲곕뒫?곗꽑?쒖쐞?듭떖 ?댁슜李멸퀬
16-1?뚮옖 紐⑤뱶 (Plan Mode)理쒓퀬?먯씠?꾪듃媛€ ?꾧뎄 ?ㅽ뻾 ??援ъ“?붾맂 怨꾪쉷 ?앹꽦 ???ъ슜??寃€???몄쭛/?뱀씤 ???뱀씤 ???ㅽ뻾Claw Code Plan mode
16-2?꾧뎄/而ㅻ꽖??愿€由?UI?믪쓬52媛??꾧뎄 移댄뀒怨좊━蹂?移대뱶, ?쒖꽦/鍮꾪솢???좉?, MCP ?쒕쾭 ?곌껐 ?곹깭Sigmoid 而ㅻ꽖??UI
16-3?꾨줈?앺듃 洹쒖튃 ?쒖뒪??/strong>?믪쓬.ax/rules/*.md ???뚯씪 ?⑦꽩쨌?묒뾽 ?좏삎蹂?洹쒖튃 ?먮룞 二쇱엯Cursor .cursor/rules
16-4諛섎났 ?뚯뒪???섏젙 猷⑦봽?믪쓬TestLoopTool auto_fix 紐⑤뱶 ???뚯뒪?멤넂?ㅽ뙣 ?뚯떛?믪닔?뺚넂?ъ떎???먮룞 諛섎났GitHub Copilot
16-5蹂묐젹 ?꾧뎄 ?ㅽ뻾以묎컙LLM ?ㅼ닔 ?꾧뎄 ?숈떆 ?몄텧 ???섏〈??遺꾩꽍 ??Task.WhenAll() 蹂묐젹 ?ㅽ뻾Claw Code parallel
16-6SKILL.md ?쒖? ?꾩쟾 ?명솚以묎컙agentskills.io ?ㅽ럺 ?꾩껜 ?뚯떛, ?몃??붾궡遺€ ?꾧뎄 ?대쫫 留ㅽ븨16媛? ?꾧뎄 梨꾪깮
16-R?고???怨좉툒 ?ㅽ궗 ?뺤옣以묎컙4醫?異붽?: image-processor, diagram-generator, ocr-extract, data-visualize-advPillow, Tesseract
-
- - -

Phase 17 ???ы솕 吏€??+ UX ?곸떊 (v1.8.0) 怨꾪쉷

- -
- - - - - - - - - - - - - - - - - - - - -
#湲곕뒫?곗꽑?쒖쐞?듭떖 ?댁슜李멸퀬
17-1?먭린 ?깆같 (Self-Reflection)理쒓퀬?꾧뎄 ?ㅽ뙣 ??援ъ“?붾맂 ?깆같 ?꾨\?꾪듃, ?먮윭 ?⑦꽩 異붿쟻 (Reflexion ?⑦꽩)Reflexion ?쇰Ц
17-2?묒뾽 湲곗뼲 (Working Memory)?믪쓬?€???뺤텞 ?쒖뿉???좎??섎뒗 援ъ“?붾맂 ?쒖뒪???곹깭 (?꾩옱 ?묒뾽, 李몄“ ?뚯씪, ?섏궗寃곗젙 濡쒓렇)Windsurf memory
17-3硫€?고뙆???듯빀 Diff 酉?/strong>?믪쓬?먯씠?꾪듃 ?ㅼ닔 ?뚯씪 ?섏젙 ???섎굹???⑤꼸?먯꽌 ?뚯씪蹂??뚰겕蹂??뱀씤/嫄곕?Cursor multi-file diff
17-4?먮룞 而⑦뀓?ㅽ듃 ?섏쭛以묎컙?ъ슜??硫붿떆吏€?먯꽌 ?뚯씪紐?媛먯? ???먮룞 ?쎄린, Git diff, 肄붾뱶 寃€??二쇱엯Windsurf auto context
17-5MCP HTTP+SSE ?꾩넚以묎컙stdio ?꾩슜 ??HTTP+SSE ?몃옖?ㅽ룷??異붽?, ?먭꺽 MCP ?쒕쾭 ?곌껐MCP ?쒖?
17-6?€???붿빟 ?⑤뵒留⑤뱶??쓬/summarize-chat ?щ옒??紐낅졊?쇰줈 ?꾩옱 ?€??援ъ“???붿빟??/td>
-
- - -

Phase 18 ???먯퐫?쒖뒪??+ 李⑤퀎??(v2.0) 怨꾪쉷

- -
- - - - - - - - - - - - - - - - - - - -
#湲곕뒫?곗꽑?쒖쐞?듭떖 ?댁슜李멸퀬
18-1?먯씠?꾪듃 ?€ (Multi-Agent)理쒓퀬?뱁솕 ?먯씠?꾪듃(肄붾뱶由щ럭, 臾몄꽌?묒꽦, 蹂댁븞媛먯궗)媛€ 硫붿떆吏€ 踰꾩뒪濡??묒뾽Claw Code ?먯씠?꾪듃 ?€
18-2?뚮윭洹몄씤 媛ㅻ윭由?+ ?덉??ㅽ듃由?/strong>?믪쓬濡쒖뺄 NAS/Git ?덉??ㅽ듃由?湲곕컲 ?뚮윭洹몄씤/?ㅽ궗 ?몄빋 媛ㅻ윭由?/td> - Raycast Store
18-3AI ?ㅻ땲??/strong>以묎컙;email {?섏떊?? {二쇱젣} ??LLM???대찓??珥덉븞 ?먮룞 ?앹꽦Raycast AI Snippets
18-4?뚮씪誘명꽣 ?듬쭅??/strong>以묎컙jira {?곗폆踰덊샇} ??URL ?쒗뵆由?蹂€??移섑솚 (?щ궡 ?꾧뎄 鍮좊Ⅸ ?묎렐)Raycast Quicklinks
18-5?ㅽ봽?쇱씤 AI (ONNX Runtime)??쓬?쒕쾭 ?놁씠 踰덉뿭/?붿빟/遺꾨쪟. 紐⑤뜽 蹂꾨룄 諛고룷 (?몄뒪?⑤윭 ?ш린 ?좎?)??/td>
18-6??寃€??AI ?붿빟??쓬? 寃€??寃곌낵瑜?AI濡??붿빟?섏뿬 ?곗쿂???쒖떆??/td>
-
- - -

?κ린 ??macOS ?щ줈?ㅽ뵆?ロ뤌 (v2.0+) ?κ린

- -
- - - - - - - - - - -
#湲곕뒫?곗꽑?쒖쐞?듭떖 ?댁슜
LP-1Avalonia UI 留덉씠洹몃젅?댁뀡?믪쓬WPF ??Avalonia UI (.NET ?щ줈?ㅽ뵆?ロ뤌 XAML). Windows/macOS/Linux ?숈씪 肄붾뱶踰좎씠?? Skia ?뚮뜑留?/td>
LP-2?꾩씠肄??고듃 ?댁옣?믪쓬Segoe MDL2 ??FluentUI System Icons (MIT). macOS?먯꽌???숈씪 ?꾩씠肄?/td>
LP-3P/Invoke ?뚮옯??遺꾧린?믪쓬RuntimeInformation.IsOSPlatform 遺꾧린. macOS: AppKit, Keychain, CGEventTap, Spotlight
LP-4?뚮윭洹몄씤 ?몄빋 媛ㅻ윭由?/strong>以묎컙JSON manifest 湲곕컲 ?뚮윭洹몄씤 寃€???ㅼ튂/?낅뜲?댄듃. ?щ궡 NAS ?먮뒗 Git 湲곕컲 ?덉??ㅽ듃由?/td>
-

- ?꾪솚 ?곹뼢: 鍮꾩쫰?덉뒪 濡쒖쭅 (Services/Agent/Models) 100% ?ъ궗?? UI 怨꾩링 (Views) ??40% ?ъ옉?? 鍮뚮뱶: dotnet publish -r osx-arm64 -

-
- - -

蹂대쪟 ?щ궡 ?섍꼍

-
- - - -
?대씪?곕뱶 ?ㅼ젙 ?숆린??/td>?몃? ?대씪?곕뱶 ?묎렐 ?쒗븳
而ㅼ뒪?€ ?뚮쭏 留덉폆?몃? URL 湲곕컲 ?ㅼ슫濡쒕뱶 ?쒗븳
-
- - -

?듭떖 ?꾨왂

-
-

1. Windows ?ㅼ씠?곕툕 AI ?뚮옯??/h3> -

Raycast(macOS/beta), Cursor(IDE), Claw Code(?곕??? ?ъ씠 怨듬갚. ?щ궡 ?섍꼍 ?좎씪??Windows AI ?곗쿂+?먯씠?꾪듃.

- -

2. 吏€?ν삎 ?먮룞??/h3> -

?먮룞 紐⑤뜽 ?좏깮 + ?대깽???몃━嫄?+ ?먯씠?꾪듃 硫붾え由????ъ슜??媛쒖엯 理쒖냼?? ?뚮옖 紐⑤뱶(v1.7.0)?€ ?먭린 ?깆같(v1.8.0)濡??먯씠?꾪듃 ?뺥솗???μ긽. ?멸컙-?먯씠?꾪듃 ?묒뾽 UX??吏묒쨷.

- -

3. ?앺깭怨??뺤옣

-

?뚮윭洹몄씤+?ㅽ궗 ?쒖뒪?쒖쑝濡?而ㅻ??덊떚 湲곗뿬 援ъ“ 留덈젴. Phase 18?먯꽌 ?뚮윭洹몄씤 媛ㅻ윭由??덉??ㅽ듃由? AI ?ㅻ땲?? ?듬쭅?щ줈 ?곗쿂 ?앺깭怨??꾩꽦. ?щ궡 諛고룷??NAS/Git 湲곕컲.

- -

4. ?먯씠?꾪듃 ?€ (v2.0 ?듭떖)

-

?뱁솕 ?먯씠?꾪듃(肄붾뱶由щ럭, 臾몄꽌?묒꽦, 蹂댁븞媛먯궗)媛€ 硫붿떆吏€ 踰꾩뒪濡??묒뾽?섏뿬 蹂듯빀 ?묒뾽??遺꾩뾽 ?섑뻾. Claw Code ?먯씠?꾪듃 ?€, CrewAI ??븷 湲곕컲 ?€ ?⑦꽩 李멸퀬.

-
- - -

2026???먯씠?꾪듃 肄붾뵫 湲곗닠 ?숉뼢

-
- - - - - - - - - - -
?숉뼢?곸꽭
?쒖옣 移⑦닾媛쒕컻??85%媛€ AI 肄붾뵫 ?꾧뎄 ?ъ슜
?먯씠?꾪듃 ?꾪솚?먮룞?꾩꽦 ???먯쑉 ?먯씠?꾪듃(?대줎?믪닔?뺚넂PR?믫뀒?ㅽ듃)
硫€???먯씠?꾪듃Claw Code ?먯씠?꾪듃 ?€, Cursor 8媛??대씪?곕뱶 ?먯씠?꾪듃
?대깽??湲곕컲Slack/GitHub/PagerDuty/?뱁썒 ???먯씠?꾪듃 ?먮룞 ?ㅽ뻾
?먯씠?꾪듃 硫붾え由?/td>Windsurf 48?쒓컙 ?먮룞 遺꾩꽍, Cursor ?щ떇 硫붾え由?/td>
FeatureBench 媛?/td>蹂듭옟 湲곕뒫 11~12% vs 踰꾧렇 ?섏젙 80%+. ?멸컙 媛먮룆 ?꾩닔
?뚮윭洹몄씤 ?앺깭怨?/td>紐⑤뱺 二쇱슂 ?꾧뎄媛€ 留덉폆?뚮젅?댁뒪 ?곗묶
?먮룞 紐⑤뜽 ?좏깮Raycast Auto, Copilot Auto ???묒뾽 ?좏삎蹂?理쒖쟻 紐⑤뜽 ?쇱슦??/td>
-
- - - -
- - - diff --git a/docs/PROMPT_CARD_GUIDE.md b/docs/PROMPT_CARD_GUIDE.md deleted file mode 100644 index 2b01940..0000000 --- a/docs/PROMPT_CARD_GUIDE.md +++ /dev/null @@ -1,54 +0,0 @@ -# 프롬프트 카드 설정 가이드 (개발자 전용) - -## 개요 -새 대화 화면의 프롬프트 카드는 **개발자가 미리 설정한 시스템 프롬프트**를 통해 -AI의 역할과 응답 스타일을 정의합니다. 사용자는 카드를 클릭하면 해당 모드가 자동 적용되고, -입력란에 안내 문구가 표시되어 내용을 입력한 후 전송합니다. - -## 수정 방법 - -### 파일 위치 -``` -src/AxCopilot/Views/ChatWindow.xaml -``` - -### Tag 형식 -``` -Tag="시스템 프롬프트 내용||입력란 안내 문구" -``` - -- `||` 구분자 앞: AI에게 전달되는 시스템 프롬프트 (사용자에게 노출되지 않음) -- `||` 구분자 뒤: 사용자 입력란에 표시될 placeholder 안내 문구 - -### 예시 -```xml - - - - - - - -``` - -### 카드 추가 -`` 안에 위 형식의 `` 블록을 추가합니다. -카드 수가 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가 시스템 프롬프트 역할에 맞게 응답 diff --git a/docs/SEMINAR.md b/docs/SEMINAR.md deleted file mode 100644 index d52625c..0000000 --- a/docs/SEMINAR.md +++ /dev/null @@ -1,290 +0,0 @@ -# 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?€ | 臾몄쓽: ?대? 硫붿떊?€* - diff --git a/docs/SEMINAR_AGENT_LOOP.md b/docs/SEMINAR_AGENT_LOOP.md deleted file mode 100644 index 3b8707f..0000000 --- a/docs/SEMINAR_AGENT_LOOP.md +++ /dev/null @@ -1,249 +0,0 @@ -# ?먯씠?꾪듃 猷⑦봽 ?꾪궎?띿쿂 ???뚰겕?뚮줈??鍮꾧탳 遺꾩꽍 - -> **?€??*: 湲곗닠 ?꾩썝 쨌 媛쒕컻 由щ뜑 -> **珥덉젏**: ?먯씠?꾪듃 肄붾뵫 ?쒕퉬?ㅼ쓽 ?듭떖 ?뚰겕?뚮줈??援ъ“?€ ?덉쭏 蹂댁쬆 ?꾨왂 -> **?묒꽦??*: 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* - diff --git a/docs/SEMINAR_TREND.md b/docs/SEMINAR_TREND.md deleted file mode 100644 index 77b33b2..0000000 --- a/docs/SEMINAR_TREND.md +++ /dev/null @@ -1,463 +0,0 @@ -# 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>..." ???? } ???? } ???? ???닿쾬??洹몃깷 ?띿뒪?? ?ㅼ젣 ?뚯씪??留뚮뱺 ???? 嫄??꾨떂. ???붴??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?р??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?? ???뚢??€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€???? ???????ㅼ젣 ?ㅽ뻾 ???? 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?€ | 臾몄쓽: ?대? 硫붿떊?€* - diff --git a/docs/TOOL_PARITY_REPORT.md b/docs/TOOL_PARITY_REPORT.md new file mode 100644 index 0000000..570188a --- /dev/null +++ b/docs/TOOL_PARITY_REPORT.md @@ -0,0 +1,105 @@ +# Tool/Slash Parity Report + +Generated: 2026-04-04 02:06:25 + +## Summary +- AX slash count: 85 +- claw-code slash count: 7 +- Common: 7 +- AX only: 78 +- claw-code only: 0 + +## Common +- /clear +- /exit +- /help +- /init +- /mcp +- /memory +- /permissions + +## AX Only +- /add-dir +- /advisor +- /agents +- /allowed-tools +- /branch +- /btw +- /build +- /chrome +- /color +- /commit +- /compact +- /config +- /context +- /copy +- /cost +- /desktop +- /diff +- /doctor +- /effort +- /explain +- /export +- /fast +- /feedback +- /files +- /fix +- /heapdump +- /hooks +- /ide +- /init-verifiers +- /install-github-app +- /install-slack-app +- /keybindings +- /login +- /logout +- /mobile +- /model +- /new +- /output-style +- /passes +- /plan +- /plugin +- /pr +- /pr-comments +- /privacy-settings +- /rate-limit-options +- /release-notes +- /reload-plugins +- /remote-env +- /rename +- /reset +- /resume +- /review +- /rewind +- /sandbox-toggle +- /search +- /security-review +- /session +- /settings +- /skills +- /stats +- /status +- /statusline +- /stickers +- /structure +- /summary +- /tag +- /tasks +- /terminal-setup +- /test +- /theme +- /thinkback +- /thinkback-play +- /translate +- /ultrareview +- /upgrade +- /usage +- /verify +- /vim + +## claw-code Only + +## Notes +- claw-code source baseline: claw-code/en/quickstart.md +- AX source baseline: src/AxCopilot/Views/ChatWindow.xaml.cs diff --git a/docs/USER_MANUAL.md b/docs/USER_MANUAL.md deleted file mode 100644 index 4638d93..0000000 --- a/docs/USER_MANUAL.md +++ /dev/null @@ -1,674 +0,0 @@ -# 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 — 사내 전용 프로그램* diff --git a/docs/generate_blog.js b/docs/generate_blog.js deleted file mode 100644 index 7093926..0000000 --- a/docs/generate_blog.js +++ /dev/null @@ -1,244 +0,0 @@ -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!"); -}); - diff --git a/scripts/generate-parity-report.ps1 b/scripts/generate-parity-report.ps1 new file mode 100644 index 0000000..24d8d21 --- /dev/null +++ b/scripts/generate-parity-report.ps1 @@ -0,0 +1,63 @@ +$ErrorActionPreference = "Stop" + +$repoRoot = Split-Path -Parent $PSScriptRoot +$chatWindow = Join-Path $repoRoot "src\AxCopilot\Views\ChatWindow.xaml.cs" +$clawQuickstart = Join-Path $repoRoot "claw-code\en\quickstart.md" +$outFile = Join-Path $repoRoot "docs\TOOL_PARITY_REPORT.md" + +if (-not (Test-Path $chatWindow)) { + throw "ChatWindow.xaml.cs not found: $chatWindow" +} + +$axSlash = Select-String -Path $chatWindow -Pattern '^\s*\["/[^"]+"\]\s*=' | + ForEach-Object { + if ($_.Line -match '^\s*\["(/[^"]+)"\]\s*=') { $Matches[1] } + } | + Where-Object { -not [string]::IsNullOrWhiteSpace($_) } | + Sort-Object -Unique + +$clawSlash = @() +if (Test-Path $clawQuickstart) { + $clawSlash = Select-String -Path $clawQuickstart -Pattern '^\|\s*`/[^`]+`\s*\|' | + ForEach-Object { + if ($_.Line -match '`\s*(/[a-zA-Z0-9\-]+)\s*`') { $Matches[1] } + } | + Where-Object { $_.StartsWith("/") } | + Sort-Object -Unique +} + +$axOnly = $axSlash | Where-Object { $clawSlash -notcontains $_ } +$common = $axSlash | Where-Object { $clawSlash -contains $_ } +$clawOnly = $clawSlash | Where-Object { $axSlash -notcontains $_ } + +$lines = New-Object System.Collections.Generic.List[string] +$lines.Add("# Tool/Slash Parity Report") +$lines.Add("") +$lines.Add("Generated: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')") +$lines.Add("") +$lines.Add("## Summary") +$lines.Add("- AX slash count: $($axSlash.Count)") +$lines.Add("- claw-code slash count: $($clawSlash.Count)") +$lines.Add("- Common: $($common.Count)") +$lines.Add("- AX only: $($axOnly.Count)") +$lines.Add("- claw-code only: $($clawOnly.Count)") +$lines.Add("") + +$lines.Add("## Common") +foreach ($s in $common) { $lines.Add("- $s") } +$lines.Add("") + +$lines.Add("## AX Only") +foreach ($s in $axOnly) { $lines.Add("- $s") } +$lines.Add("") + +$lines.Add("## claw-code Only") +foreach ($s in $clawOnly) { $lines.Add("- $s") } +$lines.Add("") + +$lines.Add("## Notes") +$lines.Add("- claw-code source baseline: claw-code/en/quickstart.md") +$lines.Add("- AX source baseline: src/AxCopilot/Views/ChatWindow.xaml.cs") + +Set-Content -Path $outFile -Value $lines -Encoding UTF8 +Write-Output "Generated: $outFile" diff --git a/src/AxCopilot.Installer/AxCopilot.Installer.csproj b/src/AxCopilot.Installer/AxCopilot.Installer.csproj index 8335b2e..9370e01 100644 --- a/src/AxCopilot.Installer/AxCopilot.Installer.csproj +++ b/src/AxCopilot.Installer/AxCopilot.Installer.csproj @@ -7,7 +7,7 @@ annotations AxCopilot_Setup ..\AxCopilot\Assets\icon.ico - 1.7.2 + 0.7.3 app.manifest @@ -23,3 +23,4 @@ + diff --git a/src/AxCopilot.Installer/SetupForm.cs b/src/AxCopilot.Installer/SetupForm.cs index 01d37f4..5e68d5f 100644 --- a/src/AxCopilot.Installer/SetupForm.cs +++ b/src/AxCopilot.Installer/SetupForm.cs @@ -15,7 +15,7 @@ namespace AxCopilot.Installer.Offline public class SetupForm : Form { private const string AppName = "AX Copilot"; - private const string AppVer = "1.7.2"; + private const string AppVer = "0.7.3"; private const string Org = "AX\uC5F0\uAD6C\uC18C AI\uD300"; private const string RegUn = @"Software\Microsoft\Windows\CurrentVersion\Uninstall\AxCopilot"; private const string RegRun = @"Software\Microsoft\Windows\CurrentVersion\Run"; @@ -322,3 +322,4 @@ namespace AxCopilot.Installer.Offline } } } + diff --git a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe b/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe index 2a4bc44..1cb80b6 100644 Binary files a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe and b/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe differ diff --git a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.pdb b/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.pdb index 70253a6..3ec61a2 100644 Binary files a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.pdb and b/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.pdb differ diff --git a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.dgspec.json b/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.dgspec.json index 901ce09..3a136cd 100644 --- a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.dgspec.json +++ b/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.dgspec.json @@ -1,17 +1,17 @@ { "format": 1, "restore": { - "E:\\AX Copilot\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj": {} + "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj": {} }, "projects": { - "E:\\AX Copilot\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj": { - "version": "1.7.2", + "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj": { + "version": "0.7.3", "restore": { - "projectUniqueName": "E:\\AX Copilot\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", + "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", "projectName": "AxCopilot_Setup", - "projectPath": "E:\\AX Copilot\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", + "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\", - "outputPath": "E:\\AX Copilot\\src\\AxCopilot.Installer\\obj\\", + "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config", diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfo.cs b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfo.cs index 6545d52..2c92e8b 100644 --- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfo.cs +++ b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfo.cs @@ -12,11 +12,11 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("AxCopilot_Setup")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.7.2.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.7.2")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("0.7.3.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.7.3+90c2f15e96cd44446ccbe1d9aa4a63ef4c3fb7e4")] [assembly: System.Reflection.AssemblyProductAttribute("AxCopilot_Setup")] [assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot_Setup")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.7.2.0")] +[assembly: System.Reflection.AssemblyVersionAttribute("0.7.3.0")] // MSBuild WriteCodeFragment 클래스에서 생성되었습니다. diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfoInputs.cache b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfoInputs.cache index 83d47ca..ff7bdd5 100644 --- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfoInputs.cache +++ b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfoInputs.cache @@ -1 +1 @@ -9fc97ba95fb895eafec34720944a95d7ef26ca1178a342b4d606134cf9a22f91 +8c3c9e0cfb9d88f32c6ea168c4f5fa33f33d90f240b1e012d903f5d9e3fb23a7 diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig index 331daa3..a8c4e49 100644 --- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig +++ b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig @@ -6,7 +6,7 @@ build_property.ApplicationHighDpiMode = build_property.ApplicationUseCompatibleTextRendering = build_property.ApplicationVisualStyles = build_property.RootNamespace = AxCopilot.Installer -build_property.ProjectDir = E:\AX Copilot\src\AxCopilot.Installer\ +build_property.ProjectDir = E:\AX Copilot - Codex\src\AxCopilot.Installer\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.CsWinRTUseWindowsUIXamlProjections = false diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.assets.cache b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.assets.cache index a8c10a6..0f1aad1 100644 Binary files a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.assets.cache and b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.assets.cache differ diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt index 8e17d3f..b4e6b44 100644 --- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt +++ b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt @@ -8,3 +8,13 @@ E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.Asse E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.csproj.CoreCompileInputs.cache E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.exe E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.pdb +E:\AX Copilot - Codex\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.exe.config +E:\AX Copilot - Codex\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.exe +E:\AX Copilot - Codex\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.pdb +E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.csproj.AssemblyReference.cache +E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig +E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.AssemblyInfoInputs.cache +E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.AssemblyInfo.cs +E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.csproj.CoreCompileInputs.cache +E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.exe +E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.pdb diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe index 2a4bc44..1cb80b6 100644 Binary files a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe and b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe differ diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.pdb b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.pdb index 70253a6..3ec61a2 100644 Binary files a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.pdb and b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.pdb differ diff --git a/src/AxCopilot.Installer/obj/project.assets.json b/src/AxCopilot.Installer/obj/project.assets.json index 32d067f..ec2ae74 100644 --- a/src/AxCopilot.Installer/obj/project.assets.json +++ b/src/AxCopilot.Installer/obj/project.assets.json @@ -12,13 +12,13 @@ "C:\\Users\\admin\\.nuget\\packages\\": {} }, "project": { - "version": "1.7.2", + "version": "0.7.3", "restore": { - "projectUniqueName": "E:\\AX Copilot\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", + "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", "projectName": "AxCopilot_Setup", - "projectPath": "E:\\AX Copilot\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", + "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\", - "outputPath": "E:\\AX Copilot\\src\\AxCopilot.Installer\\obj\\", + "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config", diff --git a/src/AxCopilot.Installer/obj/project.nuget.cache b/src/AxCopilot.Installer/obj/project.nuget.cache index 2a9a53b..4466a34 100644 --- a/src/AxCopilot.Installer/obj/project.nuget.cache +++ b/src/AxCopilot.Installer/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "szcmjiT3MpM=", + "dgSpecHash": "v+ANqQ5yVSI=", "success": true, - "projectFilePath": "E:\\AX Copilot\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", + "projectFilePath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj", "expectedPackageFiles": [], "logs": [] } \ No newline at end of file diff --git a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.dll index 8bfa554..7ad0153 100644 Binary files a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb deleted file mode 100644 index c3d38ed..0000000 Binary files a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb and /dev/null differ diff --git a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.dll index c1fcb64..bb039f0 100644 Binary files a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.pdb index 4b2dc07..d9fd03d 100644 Binary files a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.pdb and b/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.pdb differ diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs index bb5f9ba..9377840 100644 --- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs +++ b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyDescriptionAttribute("SDK for building AX Copilot plugins")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9f25d92808b4f98a7ffa19fb6da350ada44e207a")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90c2f15e96cd44446ccbe1d9aa4a63ef4c3fb7e4")] [assembly: System.Reflection.AssemblyProductAttribute("AxCopilot.SDK")] [assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot.SDK")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache index 3578ed6..6349f16 100644 --- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache +++ b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache @@ -1 +1 @@ -9707b9574f19cf4c53b6aaaa8739e385a35fc150e40983feeaf78eb5d53acddb +fe643baa0b3aa63a4c30d8f3720ddc6ee1e3efafce544cdedde148ae30c8d136 diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt index 053bfc4..2e1b538 100644 --- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt +++ b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt @@ -1,33 +1,9 @@ -E:\AX Commander\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.deps.json -E:\AX Commander\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.dll -E:\AX Commander\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.pdb -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfoInputs.cache -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfo.cs -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.csproj.CoreCompileInputs.cache -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.dll -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\refint\AxCopilot.SDK.dll -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.pdb -E:\AX Commander\src\AxCopilot.SDK\obj\Debug\net8.0-windows\ref\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.deps.json -E:\AX Copilot\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.pdb -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfoInputs.cache -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfo.cs -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.csproj.CoreCompileInputs.cache -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\refint\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.pdb -E:\AX Copilot\src\AxCopilot.SDK\obj\Debug\net8.0-windows\ref\AxCopilot.SDK.dll E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.deps.json E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.dll -E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.pdb E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfoInputs.cache E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfo.cs E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.csproj.CoreCompileInputs.cache E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.dll E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\refint\AxCopilot.SDK.dll -E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.pdb E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\ref\AxCopilot.SDK.dll diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.dll index 8bfa554..7ad0153 100644 Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.pdb deleted file mode 100644 index c3d38ed..0000000 Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.pdb and /dev/null differ diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/ref/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/ref/AxCopilot.SDK.dll index 69b5ceb..f0466c2 100644 Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/ref/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/ref/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/refint/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/refint/AxCopilot.SDK.dll index 69b5ceb..f0466c2 100644 Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/refint/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/refint/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs index 8f02df7..f709918 100644 --- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs +++ b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyDescriptionAttribute("SDK for building AX Copilot plugins")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90c2f15e96cd44446ccbe1d9aa4a63ef4c3fb7e4")] [assembly: System.Reflection.AssemblyProductAttribute("AxCopilot.SDK")] [assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot.SDK")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache index 46b5649..2367151 100644 --- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache +++ b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache @@ -1 +1 @@ -738bc7e0540ae4f36b5e492d4e3d178e3d47b839fe0e7005990856e92eba327e +3270a1d476961f60157dc72350e3c53e996f81f7e5f98afda878cf1fcd866ab1 diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig index 4efae34..992e655 100644 --- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig +++ b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig @@ -10,7 +10,7 @@ build_property.PlatformNeutralAssembly = build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = AxCopilot.SDK -build_property.ProjectDir = E:\AX Copilot\src\AxCopilot.SDK\ +build_property.ProjectDir = E:\AX Copilot - Codex\src\AxCopilot.SDK\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.CsWinRTUseWindowsUIXamlProjections = false diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.assets.cache b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.assets.cache index 7187738..086695a 100644 Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.assets.cache and b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.assets.cache differ diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt index 4b20666..44f0072 100644 --- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt +++ b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt @@ -1,11 +1,11 @@ -E:\AX Copilot\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.deps.json -E:\AX Copilot\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.pdb -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.AssemblyInfoInputs.cache -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.AssemblyInfo.cs -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.csproj.CoreCompileInputs.cache -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\refint\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.pdb -E:\AX Copilot\src\AxCopilot.SDK\obj\Release\net8.0-windows\ref\AxCopilot.SDK.dll +E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.deps.json +E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.dll +E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.pdb +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.AssemblyInfoInputs.cache +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.AssemblyInfo.cs +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.csproj.CoreCompileInputs.cache +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.dll +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\refint\AxCopilot.SDK.dll +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.pdb +E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\ref\AxCopilot.SDK.dll diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.dll index c1fcb64..bb039f0 100644 Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.pdb index 4b2dc07..d9fd03d 100644 Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.pdb and b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.pdb differ diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/ref/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Release/net8.0-windows/ref/AxCopilot.SDK.dll index dc35c5a..099d50c 100644 Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/ref/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/obj/Release/net8.0-windows/ref/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/refint/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Release/net8.0-windows/refint/AxCopilot.SDK.dll index dc35c5a..099d50c 100644 Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/refint/AxCopilot.SDK.dll and b/src/AxCopilot.SDK/obj/Release/net8.0-windows/refint/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.Tests/Services/AgentHookRunnerTests.cs b/src/AxCopilot.Tests/Services/AgentHookRunnerTests.cs index b43148e..76c208e 100644 --- a/src/AxCopilot.Tests/Services/AgentHookRunnerTests.cs +++ b/src/AxCopilot.Tests/Services/AgentHookRunnerTests.cs @@ -68,6 +68,25 @@ public class AgentHookRunnerTests parsed.Should().BeFalse(); } + [Fact] + public void TryParseStructuredPayload_ParsesAdditionalContextObjectShape() + { + const string payload = + """ + {"additionalContext":{"message":"context from object"}} + """; + + var parsed = InvokeTryParseStructuredPayload( + payload, + out _, + out _, + out var additionalContext, + out _); + + parsed.Should().BeTrue(); + additionalContext.Should().Be("context from object"); + } + private static bool InvokeTryParseStructuredPayload( string rawOutput, out JsonElement? updatedInput, diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_dev.enc b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_dev.enc index e798fe5..86e411f 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_dev.enc and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_dev.enc differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_user.enc b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_user.enc index d1264f8..1f3f25b 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_user.enc and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_user.enc differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.dll index 8bfa554..a8ddeae 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.dll and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.dll differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb index c3d38ed..d27307d 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.deps.json b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.deps.json index ca71bb2..e826ea0 100644 --- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.deps.json +++ b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.deps.json @@ -8,7 +8,7 @@ ".NETCoreApp,Version=v8.0": { "AxCopilot.Tests/1.0.0": { "dependencies": { - "AxCopilot": "1.7.2", + "AxCopilot": "0.7.3", "FluentAssertions": "6.12.0", "Microsoft.NET.Test.Sdk": "17.11.0", "xunit": "2.9.0", @@ -645,7 +645,7 @@ } } }, - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "dependencies": { "AxCopilot.SDK": "1.0.0", "DocumentFormat.OpenXml": "3.2.0", @@ -657,8 +657,8 @@ }, "runtime": { "AxCopilot.dll": { - "assemblyVersion": "1.7.2.0", - "fileVersion": "1.7.2.0" + "assemblyVersion": "0.7.3.0", + "fileVersion": "0.7.3.0" } } }, @@ -912,7 +912,7 @@ "path": "xunit.extensibility.execution/2.9.0", "hashPath": "xunit.extensibility.execution.2.9.0.nupkg.sha512" }, - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "type": "project", "serviceable": false, "sha512": "" diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.dll index 7cad3d5..dfcb18d 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.dll and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.dll differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.pdb b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.pdb index 79c05a8..56175a0 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.pdb and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.pdb differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.deps.json b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.deps.json index f582733..ce0b9d7 100644 --- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.deps.json +++ b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.deps.json @@ -7,7 +7,7 @@ "targets": { ".NETCoreApp,Version=v8.0": {}, ".NETCoreApp,Version=v8.0/win-x64": { - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "dependencies": { "AxCopilot.SDK": "1.0.0", "DocumentFormat.OpenXml": "3.2.0", @@ -236,7 +236,7 @@ } }, "libraries": { - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "type": "project", "serviceable": false, "sha512": "" diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.dll index 0ff9e02..04e4942 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.dll and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.dll differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.exe b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.exe index 4575b93..bc5dd83 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.exe and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.exe differ diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.pdb b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.pdb index 677759a..7b608b3 100644 Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.pdb and b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.pdb differ diff --git a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.dgspec.json b/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.dgspec.json index f8c79b2..0b680c6 100644 --- a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.dgspec.json +++ b/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.dgspec.json @@ -154,7 +154,7 @@ } }, "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj": { - "version": "1.7.2", + "version": "0.7.3", "restore": { "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj", "projectName": "AxCopilot", diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfo.cs b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfo.cs index f67b0ea..15165cc 100644 --- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfo.cs +++ b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("AxCopilot.Tests")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9f25d92808b4f98a7ffa19fb6da350ada44e207a")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5c2042847a6f145b530813b6f069fff42f86af73")] [assembly: System.Reflection.AssemblyProductAttribute("AxCopilot.Tests")] [assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot.Tests")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfoInputs.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfoInputs.cache index 2b72cc9..34a81e6 100644 --- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfoInputs.cache +++ b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfoInputs.cache @@ -1 +1 @@ -2b14d6240cde0c0dddba49941c16c427aaabfc2038447efeda7eaf50879d6687 +21ed519845209e3b09fc80241ddb0962833b4168c949764d9460bc2ace182dc3 diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.AssemblyReference.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.AssemblyReference.cache index eae4285..af2a0c0 100644 Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.AssemblyReference.cache and b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.AssemblyReference.cache differ diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.CoreCompileInputs.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.CoreCompileInputs.cache index b721041..a663b20 100644 --- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.CoreCompileInputs.cache +++ b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -ab1cdb19fdf19a9976e7413816e04cc394d7a15855b58ca70127ee9422156624 +6f02cddd1cd82b3dd84ce96214db5bf73fd311a3c565935f27eb62e811b666de diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.FileListAbsolute.txt b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.FileListAbsolute.txt index 007e533..75a86e2 100644 --- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.FileListAbsolute.txt +++ b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.FileListAbsolute.txt @@ -1,209 +1,10 @@ -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\.msCoverageSourceRootsMapping_AxCopilot.Tests -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\testhost.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x86\native\WebView2Loader.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x64\native\WebView2Loader.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm64\native\WebView2Loader.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.deps.json -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.runtimeconfig.json -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\duckduckgo.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\github.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\google.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\namuwiki.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\naver.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\navermap.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\wikipedia.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\youtube.png -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\system_prompt.txt -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\icon.ico -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.exe -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\testhost.exe -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.visualstudio.testadapter.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.reporters.netcoreapp10.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.utility.netcoreapp10.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.deps.json -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.runtimeconfig.json -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.pdb -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\DocumentFormat.OpenXml.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\DocumentFormat.OpenXml.Framework.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\FluentAssertions.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Markdig.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.VisualStudio.CodeCoverage.Shim.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.CoreUtilities.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.PlatformAbstractions.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.CommunicationUtilities.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.CrossPlatEngine.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.Utilities.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.VisualStudio.TestPlatform.Common.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Newtonsoft.Json.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\System.Diagnostics.EventLog.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\System.IO.Packaging.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\System.ServiceProcess.ServiceController.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Core.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Fonts.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Tokenization.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Tokens.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.abstractions.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.assert.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.core.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.execution.dotnet.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.TestPlatform.CommunicationUtilities.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.TestPlatform.CrossPlatEngine.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win\lib\net8.0\System.Diagnostics.EventLog.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win\lib\net8.0\System.ServiceProcess.ServiceController.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.SDK.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Core.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.WinForms.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Wpf.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.pdb -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.SDK.pdb -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Core.xml -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.WinForms.xml -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Wpf.xml -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.csproj.AssemblyReference.cache -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.GeneratedMSBuildEditorConfig.editorconfig -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.AssemblyInfoInputs.cache -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.AssemblyInfo.cs -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.csproj.CoreCompileInputs.cache -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilo.2027323E.Up2Date -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.dll -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\refint\AxCopilot.Tests.dll -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.pdb -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.genruntimeconfig.cache -E:\AX Copilot\src\AxCopilot.Tests\obj\Debug\net8.0-windows\ref\AxCopilot.Tests.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\guide_user.enc -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\guide_dev.enc -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\adr-writer.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\api-docs.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\batch-rename.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\changelog.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\code-scaffold.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\commit-review.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\compare.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\csv-to-xlsx.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\data-convert.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\data-visualize-adv.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\data-visualize.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\db-schema.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\dependency-audit.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\diagram-generator.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\docx-creator.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\email-draft.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\env-setup.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\gen-test.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\image-processor.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\impact.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\json-schema.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\log-analyze.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\markdown-to-doc.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\meeting-minutes.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\ocr-extract.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\paper-review.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\pdf-processor.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\perf-audit.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\pptx-creator.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\prd-generator.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\refactor.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\regex-helper.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\release-note.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\report-writer.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\security-audit.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\sql-report.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\translate.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\weekly-report.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\xlsx-analyzer.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\yield-analysis.skill.md -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Data.Sqlite.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\SQLitePCLRaw.batteries_v2.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\SQLitePCLRaw.core.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\SQLitePCLRaw.provider.e_sqlite3.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\browser-wasm\nativeassets\net8.0\e_sqlite3.a -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-arm\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-arm64\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-armel\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-mips64\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-musl-arm\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-musl-arm64\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-musl-x64\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-ppc64le\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-s390x\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-x64\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-x86\native\libe_sqlite3.so -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\maccatalyst-arm64\native\libe_sqlite3.dylib -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\maccatalyst-x64\native\libe_sqlite3.dylib -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\osx-arm64\native\libe_sqlite3.dylib -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\osx-x64\native\libe_sqlite3.dylib -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm\native\e_sqlite3.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm64\native\e_sqlite3.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x64\native\e_sqlite3.dll -E:\AX Copilot\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x86\native\e_sqlite3.dll E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\.msCoverageSourceRootsMapping_AxCopilot.Tests +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\testhost.dll +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x86\native\WebView2Loader.dll +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x64\native\WebView2Loader.dll +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm64\native\WebView2Loader.dll +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.deps.json +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.runtimeconfig.json E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\guide_user.enc E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\guide_dev.enc E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\duckduckgo.png @@ -233,6 +34,7 @@ E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\docx-c E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\email-draft.skill.md E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\env-setup.skill.md E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\gen-test.skill.md +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\hook-policy-demo.skill.md E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\image-processor.skill.md E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\impact.skill.md E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\json-schema.skill.md @@ -256,17 +58,11 @@ E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\weekly E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\xlsx-analyzer.skill.md E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\yield-analysis.skill.md E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\icon.ico +E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.exe E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\testhost.exe -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\testhost.dll -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x86\native\WebView2Loader.dll -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x64\native\WebView2Loader.dll -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm64\native\WebView2Loader.dll E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.visualstudio.testadapter.dll E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.reporters.netcoreapp10.dll E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.utility.netcoreapp10.dll -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.deps.json -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.runtimeconfig.json -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.exe E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.deps.json E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.runtimeconfig.json E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.dll @@ -408,4 +204,3 @@ E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\refint\AxCopi E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.pdb E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.genruntimeconfig.cache E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\ref\AxCopilot.Tests.dll -E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\hook-policy-demo.skill.md diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.dll b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.dll index 7cad3d5..dfcb18d 100644 Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.dll and b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.dll differ diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.pdb b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.pdb index 79c05a8..56175a0 100644 Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.pdb and b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.pdb differ diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/ref/AxCopilot.Tests.dll b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/ref/AxCopilot.Tests.dll index fde0ad5..d95b161 100644 Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/ref/AxCopilot.Tests.dll and b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/ref/AxCopilot.Tests.dll differ diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/refint/AxCopilot.Tests.dll b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/refint/AxCopilot.Tests.dll index fde0ad5..d95b161 100644 Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/refint/AxCopilot.Tests.dll and b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/refint/AxCopilot.Tests.dll differ diff --git a/src/AxCopilot.Tests/obj/project.assets.json b/src/AxCopilot.Tests/obj/project.assets.json index 3d604b6..a75e617 100644 --- a/src/AxCopilot.Tests/obj/project.assets.json +++ b/src/AxCopilot.Tests/obj/project.assets.json @@ -843,7 +843,7 @@ "build/net6.0/xunit.runner.visualstudio.props": {} } }, - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { @@ -1971,7 +1971,7 @@ "xunit.runner.visualstudio.nuspec" ] }, - "AxCopilot/1.7.2": { + "AxCopilot/0.7.3": { "type": "project", "path": "../AxCopilot/AxCopilot.csproj", "msbuildProject": "../AxCopilot/AxCopilot.csproj" @@ -1984,7 +1984,7 @@ }, "projectFileDependencyGroups": { "net8.0-windows7.0": [ - "AxCopilot >= 1.7.2", + "AxCopilot >= 0.7.3", "FluentAssertions >= 6.12.0", "Microsoft.NET.Test.Sdk >= 17.11.0", "xunit >= 2.9.0", diff --git a/src/AxCopilot.Tests/obj/project.nuget.cache b/src/AxCopilot.Tests/obj/project.nuget.cache index 93b0219..7d635a9 100644 --- a/src/AxCopilot.Tests/obj/project.nuget.cache +++ b/src/AxCopilot.Tests/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "G/6JeH288bg=", + "dgSpecHash": "2y1BzTJnw9I=", "success": true, "projectFilePath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj", "expectedPackageFiles": [ diff --git a/src/AxCopilot/App.xaml.cs b/src/AxCopilot/App.xaml.cs index 0dbe202..1154f88 100644 --- a/src/AxCopilot/App.xaml.cs +++ b/src/AxCopilot/App.xaml.cs @@ -94,18 +94,7 @@ public partial class App : System.Windows.Application LogService.Warn($"대화 보관 정리 중 오류: {ex.Message}"); } - // 마이그레이션 알림 (UI가 준비된 후 표시) - if (settings.MigrationSummary != null) - { - Dispatcher.BeginInvoke(() => - { - CustomMessageBox.Show( - settings.MigrationSummary, - "AX Copilot — 설정 업데이트", - System.Windows.MessageBoxButton.OK, - System.Windows.MessageBoxImage.Information); - }, System.Windows.Threading.DispatcherPriority.Loaded); - } + // 업데이트/마이그레이션 안내 메시지박스는 표시하지 않음. // 언어 초기화 L10n.SetLanguage(settings.Settings.Launcher.Language); @@ -482,7 +471,7 @@ public partial class App : System.Windows.Application .AddItem("\uE7C5", "AX Commander 호출하기", () => Dispatcher.Invoke(() => _launcher?.Show())) .AddItem("\uE8BD", "AX Agent 대화하기", () => - Dispatcher.Invoke(() => OpenAiChat()), out var aiTrayItem) + Dispatcher.Invoke(OpenAiChat), out var aiTrayItem) .AddItem("\uE8A7", "독 바 표시", () => Dispatcher.Invoke(() => ToggleDockBar())) .AddSeparator() @@ -549,6 +538,16 @@ public partial class App : System.Windows.Application /// ChatWindow 등 외부에서 설정 창을 여는 공개 메서드. public void OpenSettingsFromChat() => Dispatcher.Invoke(OpenSettings); + /// AX Agent 창을 열고 전용 설정창을 바로 표시합니다. + public void OpenAgentSettingsInChat() + { + Dispatcher.Invoke(() => + { + OpenAiChat(); + _chatWindow?.OpenAgentSettingsFromExternal(); + }); + } + /// AX Agent 창 열기 (트레이 메뉴 등에서 호출). private Views.ChatWindow? _chatWindow; @@ -610,20 +609,22 @@ public partial class App : System.Windows.Application var launcher = _settings?.Settings.Launcher; var dockItems = launcher?.DockBarItems ?? new() { "launcher", "clipboard", "capture", "agent", "clock", "cpu" }; _dockBar.BuildFromSettings(dockItems); - _dockBar.OnPositionChanged = (left, top) => + _dockBar.OnPositionChanged = (deviceName, left, top) => { - if (_settings != null) + if (_settings != null && !string.IsNullOrWhiteSpace(deviceName)) { _settings.Settings.Launcher.DockBarLeft = left; _settings.Settings.Launcher.DockBarTop = top; + _settings.Settings.Launcher.MonitorDockPositions[deviceName] = new List { left, top }; _settings.Save(); } }; _dockBar.Show(); + var (dockLeft, dockTop) = ResolveDockBarPosition(launcher); _dockBar.ApplySettings( launcher?.DockBarOpacity ?? 0.92, - launcher?.DockBarLeft ?? -1, - launcher?.DockBarTop ?? -1, + dockLeft, + dockTop, launcher?.DockBarRainbowGlow ?? false); } @@ -634,13 +635,59 @@ public partial class App : System.Windows.Application var launcher = _settings?.Settings.Launcher; var dockItems = launcher?.DockBarItems ?? new() { "launcher", "clipboard", "capture", "agent", "clock", "cpu" }; _dockBar.BuildFromSettings(dockItems); + var (dockLeft, dockTop) = ResolveDockBarPosition(launcher); _dockBar.ApplySettings( launcher?.DockBarOpacity ?? 0.92, - launcher?.DockBarLeft ?? -1, - launcher?.DockBarTop ?? -1, + dockLeft, + dockTop, launcher?.DockBarRainbowGlow ?? false); } + private (double Left, double Top) ResolveDockBarPosition(AxCopilot.Models.LauncherSettings? launcher) + { + if (launcher == null) + return (-1, -1); + + var currentScreen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); + var currentDeviceName = currentScreen.DeviceName; + if (launcher.MonitorDockPositions.TryGetValue(currentDeviceName, out var stored) + && stored is { Count: >= 2 } + && IsDockPositionValid(currentScreen, stored[0], stored[1])) + { + launcher.DockBarLeft = stored[0]; + launcher.DockBarTop = stored[1]; + return (stored[0], stored[1]); + } + + var left = launcher.DockBarLeft; + var top = launcher.DockBarTop; + if (left >= 0 && top >= 0) + { + var matchedScreen = Screen.AllScreens.FirstOrDefault(screen => IsDockPositionValid(screen, left, top)); + if (matchedScreen != null) + return (left, top); + } + + launcher.DockBarLeft = -1; + launcher.DockBarTop = -1; + try { _settings?.Save(); } catch { } + return (-1, -1); + } + + private bool IsDockPositionValid(Screen screen, double left, double top) + { + if (left < 0 || top < 0) + return false; + + var width = _dockBar?.ActualWidth > 0 ? _dockBar.ActualWidth : 420; + var height = _dockBar?.ActualHeight > 0 ? _dockBar.ActualHeight : 56; + var area = screen.WorkingArea; + return left >= area.Left + && top >= area.Top + && left + width <= area.Right + && top + height <= area.Bottom; + } + private void OpenSettings() { if (_settingsWindow != null && _settingsWindow.IsVisible) diff --git a/src/AxCopilot/Assets/AX Copilot 개발자가이드.htm b/src/AxCopilot/Assets/AX Copilot 개발자가이드.htm index fed6d2c..1eb3eca 100644 --- a/src/AxCopilot/Assets/AX Copilot 개발자가이드.htm +++ b/src/AxCopilot/Assets/AX Copilot 개발자가이드.htm @@ -853,15 +853,6 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래

🤖 AX Agent 상세 안내

-
-

⚠ 당부의 말씀 드립니다.

-

- AX Agent의 Cowork / Code 기능은 충분한 검증이 되지 않았습니다.
- 데이터가 있는 폴더를 워크스페이스로 지정하는 경우 - 반드시 백업본을 만들고 진행 부탁드립니다. -

-
-

💬 Chat 탭 — 연속적인 질의 답변

    @@ -905,10 +896,26 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래 - +
    +

    ?? ?? ??

    + +
    +
    +
    v0.7.3
    +
    +
    +
      +
    • AX Agent ?? ?? ?? ? ??? ???? ?? ????? ?? ???, ?? ??? ??? ??? ??????
    • +
    • ?? UX ?? ? ? ?? ? ? ??? ?? ??? ??? ????, ?? ?? ?? ?? ??? ??????
    • +
    • ??? ?? ?? ? ???? ?? ???, /compact, /status test ?? ??? ??????
    • +
    • ?? ?? ??? ? vLLM SSL ?? ??, ??? ?? ??, ?? ??? ??????
    • +
    • ?? ????? ?? ? ??? ?? ?? ???? ???? ? ? ??? ????? ?????
    • +
    +
    +
    -
    v1.7.2
    +
    v0.7.2
      @@ -923,10 +930,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.7.1
    +
    v0.7.1
      @@ -939,10 +946,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.7.0
    +
    v0.7.0
      @@ -956,10 +963,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.6.1
    +
    v0.6.1
      @@ -971,10 +978,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.6.0
    +
    v0.6.0
      @@ -986,10 +993,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.5.2
    +
    v0.5.2
      @@ -1002,10 +1009,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.5.1
    +
    v0.5.1
      @@ -1018,10 +1025,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.5.0
    +
    v0.5.0
      @@ -1038,12 +1045,12 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    -이전 이력 (v1.4.0 이하) +이전 이력 (v0.4.0 이하) - +
    -
    v1.4.0
    +
    v0.4.0
      @@ -1057,10 +1064,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.3.1
    +
    v0.3.1
      @@ -1075,10 +1082,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.3.0
    +
    v0.3.0
      @@ -1093,10 +1100,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.2.2
    +
    v0.2.2
      @@ -1110,12 +1117,12 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    -이전 이력 (v1.2.1 이하) +이전 이력 (v0.2.1 이하) - +
    -
    v1.2.1
    +
    v0.2.1
      @@ -1126,10 +1133,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.2.0
    +
    v0.2.0
      @@ -1141,10 +1148,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.1.1
    +
    v0.1.1
      @@ -1157,10 +1164,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.1.0
    +
    v0.1.0
      @@ -1172,10 +1179,10 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
    - +
    -
    v1.0.7
    +
    v0.0.7
      @@ -1187,7 +1194,7 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
      -
      v1.0.6
      +
      v0.0.6
        @@ -1197,11 +1204,11 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
      -이전 이력 모음 (v1.0.0 ~ v1.0.4) +이전 이력 모음 (v0.0.0 ~ v0.0.4)
      -
      v1.0.4
      +
      v0.0.4
        @@ -1218,7 +1225,7 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
        -
        v1.0.3
        +
        v0.0.3
          @@ -1237,7 +1244,7 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
          -
          v1.0.2
          +
          v0.0.2
            @@ -1249,7 +1256,7 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
            -
            v1.0.1
            +
            v0.0.1
              @@ -1265,7 +1272,7 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래
              -
              v1.0.0
              +
              v0.0.0
                @@ -1301,3 +1308,6 @@ Ollama의 모든 모델이 도구 사용을 지원하지는 않습니다. 아래 + + + diff --git a/src/AxCopilot/Assets/AX Copilot 사용가이드.htm b/src/AxCopilot/Assets/AX Copilot 사용가이드.htm index 7a34c66..9e1ab7e 100644 --- a/src/AxCopilot/Assets/AX Copilot 사용가이드.htm +++ b/src/AxCopilot/Assets/AX Copilot 사용가이드.htm @@ -1,4 +1,4 @@ - + @@ -767,15 +767,6 @@ td {

                🤖 AX Agent 상세 안내

                -
                -

                ⚠ 당부의 말씀 드립니다.

                -

                - AX Agent의 Cowork / Code 기능은 충분한 검증이 되지 않았습니다.
                - 데이터가 있는 폴더를 워크스페이스로 지정하는 경우 - 반드시 백업본을 만들고 진행 부탁드립니다. -

                -
                -

                💬 Chat 탭 — 연속적인 질의 답변

                  @@ -829,3 +820,4 @@ td {
                + diff --git a/src/AxCopilot/Assets/guide_dev.enc b/src/AxCopilot/Assets/guide_dev.enc index e798fe5..86e411f 100644 Binary files a/src/AxCopilot/Assets/guide_dev.enc and b/src/AxCopilot/Assets/guide_dev.enc differ diff --git a/src/AxCopilot/Assets/guide_user.enc b/src/AxCopilot/Assets/guide_user.enc index d1264f8..1f3f25b 100644 Binary files a/src/AxCopilot/Assets/guide_user.enc and b/src/AxCopilot/Assets/guide_user.enc differ diff --git a/src/AxCopilot/AxCopilot.csproj b/src/AxCopilot/AxCopilot.csproj index 32a79c1..e30044d 100644 --- a/src/AxCopilot/AxCopilot.csproj +++ b/src/AxCopilot/AxCopilot.csproj @@ -17,7 +17,7 @@ - DEVELOPMENT.md 변경 이력은 수동으로 함께 업데이트하세요. 설정 스키마 버전(마이그레이션)은 Services/SettingsService.cs → CurrentSettingsVersion 을 별도로 관리합니다. --> - 1.7.2 + 0.7.3 AX AX Copilot AI 기반 업무 자동화 런처 & 코파일럿 @@ -146,3 +146,4 @@ + diff --git a/src/AxCopilot/Models/AppSettings.cs b/src/AxCopilot/Models/AppSettings.cs index 6a779b3..b2aa3e3 100644 --- a/src/AxCopilot/Models/AppSettings.cs +++ b/src/AxCopilot/Models/AppSettings.cs @@ -825,6 +825,10 @@ public class LlmSettings [JsonPropertyName("agentTheme")] public string AgentTheme { get; set; } = "system"; + /// AX Agent 전용 테마 스타일. claw | codex | slate + [JsonPropertyName("agentThemePreset")] + public string AgentThemePreset { get; set; } = "claw"; + // ─── 알림 ────────────────────────────────────────────────────────── /// 에이전트 작업 완료 시 시스템 알림 표시 여부. (Cowork/Code 공통) diff --git a/src/AxCopilot/Services/Agent/AgentHookRunner.cs b/src/AxCopilot/Services/Agent/AgentHookRunner.cs index b0972c8..73e3b63 100644 --- a/src/AxCopilot/Services/Agent/AgentHookRunner.cs +++ b/src/AxCopilot/Services/Agent/AgentHookRunner.cs @@ -388,6 +388,24 @@ public static class AgentHookRunner } } + if (ctxProp.ValueKind == JsonValueKind.Object) + { + // 구조화된 컨텍스트 오브젝트도 허용합니다. + // 우선순위: message > content > text + foreach (var key in new[] { "message", "content", "text" }) + { + if (!ctxProp.TryGetProperty(key, out var value) || value.ValueKind != JsonValueKind.String) + continue; + + var text = value.GetString()?.Trim(); + if (!string.IsNullOrWhiteSpace(text)) + { + additionalContext = text; + return true; + } + } + } + return false; } } diff --git a/src/AxCopilot/Services/Agent/ContextCondenser.cs b/src/AxCopilot/Services/Agent/ContextCondenser.cs index b87e487..f24e24b 100644 --- a/src/AxCopilot/Services/Agent/ContextCondenser.cs +++ b/src/AxCopilot/Services/Agent/ContextCondenser.cs @@ -39,17 +39,26 @@ public static class ContextCondenser /// 2단계: 이전 대화 LLM 요약 (토큰이 여전히 높으면) /// public static async Task CondenseIfNeededAsync( - List messages, LlmService llm, int maxOutputTokens, CancellationToken ct = default) + List messages, + LlmService llm, + int maxOutputTokens, + bool proactiveEnabled = true, + int triggerPercent = 80, + bool force = false, + CancellationToken ct = default) { if (messages.Count < 6) return false; + if (!force && !proactiveEnabled) return false; // 현재 모델의 입력 토큰 한도 var settings = llm.GetCurrentModelInfo(); var inputLimit = GetModelInputLimit(settings.service, settings.model); - var threshold = (int)(inputLimit * 0.65); // 65%에서 압축 시작 + var effectiveMax = maxOutputTokens > 0 ? Math.Min(inputLimit, maxOutputTokens) : inputLimit; + var percent = Math.Clamp(triggerPercent, 50, 95); + var threshold = (int)(effectiveMax * (percent / 100.0)); // 설정 임계치에서 압축 시작 var currentTokens = TokenEstimator.EstimateMessages(messages); - if (currentTokens < threshold) return false; + if (!force && currentTokens < threshold) return false; bool didCompress = false; @@ -58,7 +67,7 @@ public static class ContextCondenser // 1단계 후 다시 추정 currentTokens = TokenEstimator.EstimateMessages(messages); - if (currentTokens < threshold) return didCompress; + if (!force && currentTokens < threshold) return didCompress; // ── 2단계: 이전 대화 LLM 요약 ── didCompress |= await SummarizeOldMessagesAsync(messages, llm, ct); diff --git a/src/AxCopilot/Services/Agent/HttpTool.cs b/src/AxCopilot/Services/Agent/HttpTool.cs index 4321337..32980d0 100644 --- a/src/AxCopilot/Services/Agent/HttpTool.cs +++ b/src/AxCopilot/Services/Agent/HttpTool.cs @@ -55,6 +55,9 @@ public class HttpTool : IAgentTool public async Task ExecuteAsync(JsonElement args, AgentContext context, CancellationToken ct = default) { + if (AxCopilot.Services.OperationModePolicy.IsInternal(context.OperationMode)) + return ToolResult.Fail("사내모드에서는 HTTP 도구 실행이 차단됩니다. operationMode=external에서만 사용할 수 있습니다."); + var method = args.GetProperty("method").GetString()?.ToUpperInvariant() ?? "GET"; var url = args.GetProperty("url").GetString() ?? ""; var body = args.TryGetProperty("body", out var b) ? b.GetString() ?? "" : ""; diff --git a/src/AxCopilot/Services/Agent/OpenExternalTool.cs b/src/AxCopilot/Services/Agent/OpenExternalTool.cs index e93509e..a1ff753 100644 --- a/src/AxCopilot/Services/Agent/OpenExternalTool.cs +++ b/src/AxCopilot/Services/Agent/OpenExternalTool.cs @@ -38,6 +38,9 @@ public class OpenExternalTool : IAgentTool if (rawPath.StartsWith("http://", StringComparison.OrdinalIgnoreCase) || rawPath.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) { + if (AxCopilot.Services.OperationModePolicy.IsInternal(context.OperationMode)) + return Task.FromResult(ToolResult.Fail("사내모드에서는 외부 URL 열기가 차단됩니다. operationMode=external에서만 사용할 수 있습니다.")); + Process.Start(new ProcessStartInfo(rawPath) { UseShellExecute = true }); return Task.FromResult(ToolResult.Ok($"URL 열기: {rawPath}")); } diff --git a/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs b/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs index de07837..fbfaca8 100644 --- a/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs +++ b/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs @@ -124,12 +124,12 @@ public static class PermissionModeCatalog var normalized = NormalizeGlobalMode(mode); return normalized switch { - Default => "소극 활용", - AcceptEdits => "적극 활용", - Plan => "계획 중심", - BypassPermissions => "완전 자동", + Default => "권한 요청", + AcceptEdits => "편집 자동 승인", + Plan => "계획 모드", + BypassPermissions => "권한 건너뛰기", DontAsk => "질문 없이 진행", - Deny => "활용하지 않음", + Deny => "읽기 전용", _ => normalized, }; } diff --git a/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs b/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs index f9ef431..a20b484 100644 --- a/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs +++ b/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs @@ -14,32 +14,32 @@ internal static class PermissionModePresentationCatalog new PermissionModePresentation( PermissionModeCatalog.Deny, "\uE711", - "활용하지 않음", + "읽기 전용", "파일 읽기만 허용하고 생성/수정/삭제는 차단합니다.", "#107C10"), new PermissionModePresentation( PermissionModeCatalog.Default, "\uE8D7", - "소극 활용", - "변경 전 확인하고, 필요한 경우에만 파일 접근을 진행합니다.", + "권한 요청", + "변경하기 전에 항상 확인합니다.", "#2563EB"), new PermissionModePresentation( PermissionModeCatalog.AcceptEdits, "\uE73E", - "적극 활용", - "파일 편집 도구를 자동 승인하고 명령 실행은 계속 확인합니다.", + "편집 자동 승인", + "모든 파일 편집을 자동 승인합니다.", "#107C10"), new PermissionModePresentation( PermissionModeCatalog.Plan, "\uE7C3", - "계획 중심", - "쓰기 전 계획과 승인 흐름을 우선합니다.", + "계획 모드", + "변경하기 전에 계획을 먼저 만듭니다.", "#4338CA"), new PermissionModePresentation( PermissionModeCatalog.BypassPermissions, "\uE814", - "완전 자동", - "권한 확인을 대부분 생략합니다. 민감한 작업은 주의하세요.", + "권한 건너뛰기", + "모든 권한을 허용합니다.", "#B45309"), new PermissionModePresentation( PermissionModeCatalog.DontAsk, diff --git a/src/AxCopilot/Services/ClipboardHistoryService.cs b/src/AxCopilot/Services/ClipboardHistoryService.cs index 1581e15..15cbbdb 100644 --- a/src/AxCopilot/Services/ClipboardHistoryService.cs +++ b/src/AxCopilot/Services/ClipboardHistoryService.cs @@ -47,6 +47,7 @@ public class ClipboardHistoryService : IDisposable private HwndSource? _msgSource; private readonly object _lock = new(); private volatile bool _ignoreNext; // 자체 클립보드 조작 시 히스토리 추가 방지 + private uint _lastClipboardSequenceNumber; private bool _disposed; private readonly List _history = new(); @@ -332,7 +333,19 @@ public class ClipboardHistoryService : IDisposable private void OnClipboardUpdate() { - if (_ignoreNext) { _ignoreNext = false; return; } + var sequence = GetClipboardSequenceNumber(); + + if (_ignoreNext) + { + _ignoreNext = false; + _lastClipboardSequenceNumber = sequence; + return; + } + + if (sequence != 0 && sequence == _lastClipboardSequenceNumber) + return; + + _lastClipboardSequenceNumber = sequence; if (!_settings.Settings.ClipboardHistory.Enabled) return; Application.Current.Dispatcher.Invoke(() => @@ -529,6 +542,9 @@ public class ClipboardHistoryService : IDisposable [DllImport("user32.dll", SetLastError = true)] private static extern bool RemoveClipboardFormatListener(IntPtr hwnd); + + [DllImport("user32.dll")] + private static extern uint GetClipboardSequenceNumber(); } /// 클립보드 히스토리 단일 항목. 텍스트 또는 이미지 중 하나를 담습니다. diff --git a/src/AxCopilot/Services/LlmService.ToolUse.cs b/src/AxCopilot/Services/LlmService.ToolUse.cs index 52f4851..a1aa0cc 100644 --- a/src/AxCopilot/Services/LlmService.ToolUse.cs +++ b/src/AxCopilot/Services/LlmService.ToolUse.cs @@ -430,12 +430,11 @@ public partial class LlmService private async Task> SendOpenAiWithToolsAsync( List messages, IReadOnlyCollection tools, CancellationToken ct) { - var llm = _settings.Settings.Llm; var activeService = ResolveService(); var body = BuildOpenAiToolBody(messages, tools); // 등록 모델의 커스텀 엔드포인트 우선 사용 (ResolveServerInfo) - var (resolvedEp, _) = ResolveServerInfo(); + var (resolvedEp, _, allowInsecureTls) = ResolveServerInfo(); var endpoint = string.IsNullOrEmpty(resolvedEp) ? ResolveEndpointForService(activeService) : resolvedEp; @@ -452,7 +451,7 @@ public partial class LlmService // CP4D 또는 Bearer 인증 적용 await ApplyAuthHeaderAsync(req, ct); - using var resp = await _http.SendAsync(req, ct); + using var resp = await SendWithTlsAsync(req, allowInsecureTls, ct); if (!resp.IsSuccessStatusCode) { var errBody = await resp.Content.ReadAsStringAsync(ct); diff --git a/src/AxCopilot/Services/LlmService.cs b/src/AxCopilot/Services/LlmService.cs index bcf58a2..718f8b1 100644 --- a/src/AxCopilot/Services/LlmService.cs +++ b/src/AxCopilot/Services/LlmService.cs @@ -20,6 +20,7 @@ public record TokenUsage(int PromptTokens, int CompletionTokens) public partial class LlmService : IDisposable { private readonly HttpClient _http; + private readonly HttpClient _httpInsecure; private readonly SettingsService _settings; private string? _systemPrompt; @@ -136,6 +137,34 @@ public partial class LlmService : IDisposable private string? ResolveReasoningEffort() => _reasoningEffortOverride; + private static bool LooksLikeEncryptedPayload(string value) + { + if (string.IsNullOrWhiteSpace(value) || value.Length < 32 || (value.Length % 4) != 0) + return false; + foreach (var ch in value) + { + var isBase64 = (ch >= 'A' && ch <= 'Z') + || (ch >= 'a' && ch <= 'z') + || (ch >= '0' && ch <= '9') + || ch is '+' or '/' or '='; + if (!isBase64) return false; + } + return true; + } + + private static string ResolveSecretValue(string raw, bool encryptionEnabled) + { + if (string.IsNullOrWhiteSpace(raw)) return ""; + if (raw.Trim() == "(저장됨)") return ""; + if (!encryptionEnabled) return raw.Trim(); + + var decrypted = CryptoService.DecryptIfEnabled(raw, encryptionEnabled).Trim(); + if (string.IsNullOrWhiteSpace(decrypted)) return ""; + if (string.Equals(decrypted, raw, StringComparison.Ordinal) && LooksLikeEncryptedPayload(raw)) + return ""; + return decrypted; + } + /// 지정 서비스의 API 키를 반환합니다. private string ResolveApiKeyForService(string service) { @@ -144,8 +173,8 @@ public partial class LlmService : IDisposable { "gemini" => llm.GeminiApiKey, "sigmoid" => llm.ClaudeApiKey, - "vllm" => CryptoService.DecryptIfEnabled(llm.VllmApiKey, llm.EncryptionEnabled), - "ollama" => CryptoService.DecryptIfEnabled(llm.OllamaApiKey, llm.EncryptionEnabled), + "vllm" => ResolveSecretValue(llm.VllmApiKey, llm.EncryptionEnabled), + "ollama" => ResolveSecretValue(llm.OllamaApiKey, llm.EncryptionEnabled), _ => "", }; } @@ -165,13 +194,41 @@ public partial class LlmService : IDisposable /// 가장 최근 요청의 토큰 사용량. 스트리밍/비스트리밍 완료 후 갱신됩니다. public TokenUsage? LastTokenUsage { get; private set; } + public record RuntimeConnectionSnapshot( + string Service, + string Model, + string Endpoint, + bool AllowInsecureTls, + bool HasApiKey); + public LlmService(SettingsService settings) { _settings = settings; _http = new HttpClient { Timeout = TimeSpan.FromMinutes(10) }; + var insecureHandler = new HttpClientHandler + { + ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator + }; + _httpInsecure = new HttpClient(insecureHandler) { Timeout = TimeSpan.FromMinutes(10) }; LoadSystemPrompt(); } + public RuntimeConnectionSnapshot GetRuntimeConnectionSnapshot() + { + var service = ResolveService(); + var model = ResolveModel(); + var (endpoint, apiKey, allowInsecureTls) = ResolveServerInfo(); + if (string.IsNullOrWhiteSpace(endpoint)) + endpoint = ResolveEndpointForService(service); + + return new RuntimeConnectionSnapshot( + service, + model, + endpoint ?? "", + allowInsecureTls, + !string.IsNullOrWhiteSpace(apiKey)); + } + // ─── 시스템 프롬프트 (빌드 경로에서 동적 로딩) ───────────────────────── private void LoadSystemPrompt() @@ -200,7 +257,7 @@ public partial class LlmService : IDisposable /// 현재 활성 모델에 매칭되는 RegisteredModel을 찾아 엔드포인트/API키를 반환합니다. /// RegisteredModel에 전용 서버 정보가 있으면 그것을 사용하고, 없으면 기본 설정을 사용합니다. /// - private (string Endpoint, string ApiKey) ResolveServerInfo() + private (string Endpoint, string ApiKey, bool AllowInsecureTls) ResolveServerInfo() { var llm = _settings.Settings.Llm; var activeService = ResolveService(); @@ -209,20 +266,26 @@ public partial class LlmService : IDisposable // RegisteredModel에서 현재 모델과 서비스가 일치하는 항목 검색 var registered = FindRegisteredModel(llm, activeService, modelName); - if (registered != null && !string.IsNullOrEmpty(registered.Endpoint)) + if (registered != null) { + var endpoint = string.IsNullOrWhiteSpace(registered.Endpoint) + ? ResolveEndpointForService(activeService) + : registered.Endpoint; var apiKey = !string.IsNullOrEmpty(registered.ApiKey) - ? CryptoService.DecryptIfEnabled(registered.ApiKey, llm.EncryptionEnabled) + ? ResolveSecretValue(registered.ApiKey, llm.EncryptionEnabled) : GetDefaultApiKey(llm, activeService); - return (registered.Endpoint, apiKey); + var allowInsecureTls = activeService == "vllm" + ? (registered.AllowInsecureTls || llm.VllmAllowInsecureTls) + : false; + return (endpoint, apiKey, allowInsecureTls); } // 기본 엔드포인트 사용 return activeService.ToLowerInvariant() switch { - "vllm" => (llm.VllmEndpoint, CryptoService.DecryptIfEnabled(llm.VllmApiKey, llm.EncryptionEnabled)), - "ollama" => (llm.OllamaEndpoint, CryptoService.DecryptIfEnabled(llm.OllamaApiKey, llm.EncryptionEnabled)), - _ => ("", ""), + "vllm" => (llm.VllmEndpoint, ResolveSecretValue(llm.VllmApiKey, llm.EncryptionEnabled), llm.VllmAllowInsecureTls), + "ollama" => (llm.OllamaEndpoint, ResolveSecretValue(llm.OllamaApiKey, llm.EncryptionEnabled), false), + _ => ("", "", false), }; } @@ -258,7 +321,7 @@ public partial class LlmService : IDisposable } // 기본 Bearer 인증 — 기존 API 키 반환 - var (_, apiKey) = ResolveServerInfo(); + var (_, apiKey, _) = ResolveServerInfo(); return string.IsNullOrEmpty(apiKey) ? null : apiKey; } @@ -278,8 +341,8 @@ public partial class LlmService : IDisposable var svc = service ?? llm.Service; return svc.ToLowerInvariant() switch { - "vllm" => CryptoService.DecryptIfEnabled(llm.VllmApiKey, llm.EncryptionEnabled), - "ollama" => CryptoService.DecryptIfEnabled(llm.OllamaApiKey, llm.EncryptionEnabled), + "vllm" => ResolveSecretValue(llm.VllmApiKey, llm.EncryptionEnabled), + "ollama" => ResolveSecretValue(llm.OllamaApiKey, llm.EncryptionEnabled), _ => "", }; } @@ -356,7 +419,7 @@ public partial class LlmService : IDisposable try { var llm = _settings.Settings.Llm; - var normalizedService = NormalizeServiceName(llm.Service); + var normalizedService = ResolveService(); if (OperationModePolicy.IsInternal(_settings.Settings) && IsExternalLlmService(normalizedService)) { var blockedName = normalizedService == "sigmoid" ? "Claude" : "Gemini"; @@ -366,16 +429,26 @@ public partial class LlmService : IDisposable switch (normalizedService) { case "ollama": - var resp = await _http.GetAsync(llm.Endpoint.TrimEnd('/') + "/api/tags"); + { + var (endpoint, _, _) = ResolveServerInfo(); + var ep = string.IsNullOrWhiteSpace(endpoint) ? ResolveEndpointForService("ollama") : endpoint; + var resp = await _http.GetAsync(ep.TrimEnd('/') + "/api/tags"); return resp.IsSuccessStatusCode ? (true, "Ollama 연결 성공") : (false, ClassifyHttpError(resp)); + } case "vllm": - var vResp = await _http.GetAsync(llm.Endpoint.TrimEnd('/') + "/v1/models"); + { + var (endpoint, _, allowInsecureTls) = ResolveServerInfo(); + var ep = string.IsNullOrWhiteSpace(endpoint) ? ResolveEndpointForService("vllm") : endpoint; + using var vReq = new HttpRequestMessage(HttpMethod.Get, ep.TrimEnd('/') + "/v1/models"); + await ApplyAuthHeaderAsync(vReq, CancellationToken.None); + using var vResp = await SendWithTlsAsync(vReq, allowInsecureTls, CancellationToken.None); return vResp.IsSuccessStatusCode ? (true, "vLLM 연결 성공") : (false, ClassifyHttpError(vResp)); + } case "gemini": var gKey = ResolveApiKeyForService("gemini"); @@ -424,10 +497,10 @@ public partial class LlmService : IDisposable private async Task SendOllamaAsync(List messages, CancellationToken ct) { var llm = _settings.Settings.Llm; - var (endpoint, _) = ResolveServerInfo(); + var (endpoint, _, allowInsecureTls) = ResolveServerInfo(); var ep = string.IsNullOrEmpty(endpoint) ? llm.Endpoint : endpoint; var body = BuildOllamaBody(messages, stream: false); - var resp = await PostJsonWithRetryAsync(ep.TrimEnd('/') + "/api/chat", body, ct); + var resp = await PostJsonWithRetryAsync(ep.TrimEnd('/') + "/api/chat", body, allowInsecureTls, ct); return SafeParseJson(resp, root => { TryParseOllamaUsage(root); @@ -440,13 +513,13 @@ public partial class LlmService : IDisposable [EnumeratorCancellation] CancellationToken ct) { var llm = _settings.Settings.Llm; - var (endpoint, _) = ResolveServerInfo(); + var (endpoint, _, allowInsecureTls) = ResolveServerInfo(); var ep = string.IsNullOrEmpty(endpoint) ? llm.Endpoint : endpoint; var body = BuildOllamaBody(messages, stream: true); var url = ep.TrimEnd('/') + "/api/chat"; using var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = JsonContent(body) }; - using var resp = await SendWithErrorClassificationAsync(req, ct); + using var resp = await SendWithErrorClassificationAsync(req, allowInsecureTls, ct); using var stream = await resp.Content.ReadAsStreamAsync(ct); using var reader = new StreamReader(stream); @@ -496,7 +569,7 @@ public partial class LlmService : IDisposable private async Task SendOpenAiCompatibleAsync(List messages, CancellationToken ct) { var llm = _settings.Settings.Llm; - var (endpoint, _) = ResolveServerInfo(); + var (endpoint, _, allowInsecureTls) = ResolveServerInfo(); var ep = string.IsNullOrEmpty(endpoint) ? llm.Endpoint : endpoint; var body = BuildOpenAiBody(messages, stream: false); var url = ep.TrimEnd('/') + "/v1/chat/completions"; @@ -508,7 +581,7 @@ public partial class LlmService : IDisposable }; await ApplyAuthHeaderAsync(req, ct); - using var resp = await SendWithErrorClassificationAsync(req, ct); + using var resp = await SendWithErrorClassificationAsync(req, allowInsecureTls, ct); var respBody = await resp.Content.ReadAsStringAsync(ct); return SafeParseJson(respBody, root => { @@ -524,14 +597,14 @@ public partial class LlmService : IDisposable [EnumeratorCancellation] CancellationToken ct) { var llm = _settings.Settings.Llm; - var (endpoint, _) = ResolveServerInfo(); + var (endpoint, _, allowInsecureTls) = ResolveServerInfo(); var ep = string.IsNullOrEmpty(endpoint) ? llm.Endpoint : endpoint; var body = BuildOpenAiBody(messages, stream: true); var url = ep.TrimEnd('/') + "/v1/chat/completions"; using var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = JsonContent(body) }; await ApplyAuthHeaderAsync(req, ct); - using var resp = await SendWithErrorClassificationAsync(req, ct); + using var resp = await SendWithErrorClassificationAsync(req, allowInsecureTls, ct); using var stream = await resp.Content.ReadAsStreamAsync(ct); using var reader = new StreamReader(stream); @@ -597,7 +670,7 @@ public partial class LlmService : IDisposable var model = ResolveModel(); var body = BuildGeminiBody(messages); var url = $"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={apiKey}"; - var resp = await PostJsonWithRetryAsync(url, body, ct); + var resp = await PostJsonWithRetryAsync(url, body, false, ct); return SafeParseJson(resp, root => { TryParseGeminiUsage(root); @@ -623,7 +696,7 @@ public partial class LlmService : IDisposable var url = $"https://generativelanguage.googleapis.com/v1beta/models/{model}:streamGenerateContent?alt=sse&key={apiKey}"; using var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = JsonContent(body) }; - using var resp = await SendWithErrorClassificationAsync(req, ct); + using var resp = await SendWithErrorClassificationAsync(req, false, ct); using var stream = await resp.Content.ReadAsStreamAsync(ct); using var reader = new StreamReader(stream); @@ -881,8 +954,19 @@ public partial class LlmService : IDisposable return result; } + private async Task SendWithTlsAsync( + HttpRequestMessage req, + bool allowInsecureTls, + CancellationToken ct, + HttpCompletionOption completion = HttpCompletionOption.ResponseContentRead) + { + if (!allowInsecureTls) + return await _http.SendAsync(req, completion, ct); + return await _httpInsecure.SendAsync(req, completion, ct); + } + /// 비스트리밍 POST + 재시도 (일시적 오류 시 최대 2회) - private async Task PostJsonWithRetryAsync(string url, object body, CancellationToken ct) + private async Task PostJsonWithRetryAsync(string url, object body, bool allowInsecureTls, CancellationToken ct) { var json = JsonSerializer.Serialize(body); Exception? lastEx = null; @@ -891,8 +975,11 @@ public partial class LlmService : IDisposable { try { - using var content = new StringContent(json, Encoding.UTF8, "application/json"); - using var resp = await _http.PostAsync(url, content, ct); + using var req = new HttpRequestMessage(HttpMethod.Post, url) + { + Content = new StringContent(json, Encoding.UTF8, "application/json") + }; + using var resp = await SendWithTlsAsync(req, allowInsecureTls, ct); if (resp.IsSuccessStatusCode) return await resp.Content.ReadAsStringAsync(ct); @@ -920,9 +1007,9 @@ public partial class LlmService : IDisposable /// 스트리밍 전용 — HTTP 요청 전송 + 에러 분류 private async Task SendWithErrorClassificationAsync( - HttpRequestMessage req, CancellationToken ct) + HttpRequestMessage req, bool allowInsecureTls, CancellationToken ct) { - var resp = await _http.SendAsync(req, HttpCompletionOption.ResponseHeadersRead, ct); + var resp = await SendWithTlsAsync(req, allowInsecureTls, ct, HttpCompletionOption.ResponseHeadersRead); if (!resp.IsSuccessStatusCode) { var errBody = await resp.Content.ReadAsStringAsync(ct); @@ -1085,5 +1172,9 @@ public partial class LlmService : IDisposable catch { } } - public void Dispose() => _http.Dispose(); + public void Dispose() + { + _http.Dispose(); + _httpInsecure.Dispose(); + } } diff --git a/src/AxCopilot/Services/McpClientService.cs b/src/AxCopilot/Services/McpClientService.cs index 83ca04f..b3c922c 100644 --- a/src/AxCopilot/Services/McpClientService.cs +++ b/src/AxCopilot/Services/McpClientService.cs @@ -81,7 +81,7 @@ public class McpClientService : IDisposable { protocolVersion = "2024-11-05", capabilities = new { }, - clientInfo = new { name = "AX Copilot", version = "1.7.2" }, + clientInfo = new { name = "AX Copilot", version = "0.7.3" }, }, ct); if (initResult == null) return false; @@ -328,3 +328,4 @@ public class McpClientService : IDisposable catch { } } } + diff --git a/src/AxCopilot/Services/SettingsService.cs b/src/AxCopilot/Services/SettingsService.cs index e295e9e..4cb2613 100644 --- a/src/AxCopilot/Services/SettingsService.cs +++ b/src/AxCopilot/Services/SettingsService.cs @@ -174,6 +174,10 @@ public class SettingsService private void NormalizeRuntimeSettings() { + // AX Agent 사용 기본 정책: 항상 활성화. + if (!_settings.AiEnabled) + _settings.AiEnabled = true; + _settings.Llm.FilePermission = PermissionModeCatalog.NormalizeGlobalMode(_settings.Llm.FilePermission); _settings.Llm.DefaultAgentPermission = PermissionModeCatalog.NormalizeGlobalMode(_settings.Llm.DefaultAgentPermission); if (_settings.Llm.ToolPermissions != null && _settings.Llm.ToolPermissions.Count > 0) @@ -183,6 +187,13 @@ public class SettingsService _settings.Llm.ToolPermissions[key] = PermissionModeCatalog.NormalizeToolOverride(_settings.Llm.ToolPermissions[key]); } + _settings.Llm.MaxFavoriteSlashCommands = Math.Clamp(_settings.Llm.MaxFavoriteSlashCommands <= 0 ? 10 : _settings.Llm.MaxFavoriteSlashCommands, 1, 30); + _settings.Llm.MaxRecentSlashCommands = Math.Clamp(_settings.Llm.MaxRecentSlashCommands <= 0 ? 20 : _settings.Llm.MaxRecentSlashCommands, 5, 50); + if (_settings.Llm.FavoriteSlashCommands.Count > _settings.Llm.MaxFavoriteSlashCommands) + _settings.Llm.FavoriteSlashCommands = _settings.Llm.FavoriteSlashCommands.Take(_settings.Llm.MaxFavoriteSlashCommands).ToList(); + if (_settings.Llm.RecentSlashCommands.Count > _settings.Llm.MaxRecentSlashCommands) + _settings.Llm.RecentSlashCommands = _settings.Llm.RecentSlashCommands.Take(_settings.Llm.MaxRecentSlashCommands).ToList(); + NormalizeLlmThresholds(_settings.Llm); } diff --git a/src/AxCopilot/Themes/AgentClawDark.xaml b/src/AxCopilot/Themes/AgentClawDark.xaml new file mode 100644 index 0000000..72c8542 --- /dev/null +++ b/src/AxCopilot/Themes/AgentClawDark.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentClawLight.xaml b/src/AxCopilot/Themes/AgentClawLight.xaml new file mode 100644 index 0000000..62884f2 --- /dev/null +++ b/src/AxCopilot/Themes/AgentClawLight.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentClawSystem.xaml b/src/AxCopilot/Themes/AgentClawSystem.xaml new file mode 100644 index 0000000..66e0a55 --- /dev/null +++ b/src/AxCopilot/Themes/AgentClawSystem.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentCodexDark.xaml b/src/AxCopilot/Themes/AgentCodexDark.xaml new file mode 100644 index 0000000..f7cd365 --- /dev/null +++ b/src/AxCopilot/Themes/AgentCodexDark.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentCodexLight.xaml b/src/AxCopilot/Themes/AgentCodexLight.xaml new file mode 100644 index 0000000..a8b93b6 --- /dev/null +++ b/src/AxCopilot/Themes/AgentCodexLight.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentCodexSystem.xaml b/src/AxCopilot/Themes/AgentCodexSystem.xaml new file mode 100644 index 0000000..c1b3f53 --- /dev/null +++ b/src/AxCopilot/Themes/AgentCodexSystem.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentDark.xaml b/src/AxCopilot/Themes/AgentDark.xaml new file mode 100644 index 0000000..04f2ee3 --- /dev/null +++ b/src/AxCopilot/Themes/AgentDark.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentLight.xaml b/src/AxCopilot/Themes/AgentLight.xaml new file mode 100644 index 0000000..815d2ae --- /dev/null +++ b/src/AxCopilot/Themes/AgentLight.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentSlateDark.xaml b/src/AxCopilot/Themes/AgentSlateDark.xaml new file mode 100644 index 0000000..cdcbfeb --- /dev/null +++ b/src/AxCopilot/Themes/AgentSlateDark.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentSlateLight.xaml b/src/AxCopilot/Themes/AgentSlateLight.xaml new file mode 100644 index 0000000..0772141 --- /dev/null +++ b/src/AxCopilot/Themes/AgentSlateLight.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/Themes/AgentSystem.xaml b/src/AxCopilot/Themes/AgentSystem.xaml new file mode 100644 index 0000000..79c1313 --- /dev/null +++ b/src/AxCopilot/Themes/AgentSystem.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/src/AxCopilot/ViewModels/SettingsViewModel.cs b/src/AxCopilot/ViewModels/SettingsViewModel.cs index ee7bed8..77ad4d2 100644 --- a/src/AxCopilot/ViewModels/SettingsViewModel.cs +++ b/src/AxCopilot/ViewModels/SettingsViewModel.cs @@ -178,6 +178,7 @@ public class SettingsViewModel : INotifyPropertyChanged private string _vllmEndpoint = ""; private string _vllmApiKey = ""; private string _vllmModel = ""; + private bool _vllmAllowInsecureTls; private string _geminiApiKey = ""; private string _geminiModel = "gemini-2.5-flash"; private string _sigmoidApiKey = ""; @@ -215,6 +216,7 @@ public class SettingsViewModel : INotifyPropertyChanged public string VllmEndpoint { get => _vllmEndpoint; set { _vllmEndpoint = value; OnPropertyChanged(); } } public string VllmApiKey { get => _vllmApiKey; set { _vllmApiKey = value; OnPropertyChanged(); } } public string VllmModel { get => _vllmModel; set { _vllmModel = value; OnPropertyChanged(); } } + public bool VllmAllowInsecureTls { get => _vllmAllowInsecureTls; set { _vllmAllowInsecureTls = value; OnPropertyChanged(); } } // ── Gemini 설정 ── public string GeminiApiKey { get => _geminiApiKey; set { _geminiApiKey = value; OnPropertyChanged(); } } @@ -285,6 +287,20 @@ public class SettingsViewModel : INotifyPropertyChanged set { _maxRetryOnError = Math.Clamp(value, 0, 10); OnPropertyChanged(); } } + private bool _enableProactiveContextCompact; + public bool EnableProactiveContextCompact + { + get => _enableProactiveContextCompact; + set { _enableProactiveContextCompact = value; OnPropertyChanged(); } + } + + private int _contextCompactTriggerPercent; + public int ContextCompactTriggerPercent + { + get => _contextCompactTriggerPercent; + set { _contextCompactTriggerPercent = Math.Clamp(value, 50, 95); OnPropertyChanged(); } + } + private string _agentLogLevel; public string AgentLogLevel { @@ -292,6 +308,22 @@ public class SettingsViewModel : INotifyPropertyChanged set { _agentLogLevel = value; OnPropertyChanged(); } } + private string _agentUiExpressionLevel = "balanced"; + public string AgentUiExpressionLevel + { + get => _agentUiExpressionLevel; + set + { + _agentUiExpressionLevel = (value ?? "balanced").Trim().ToLowerInvariant() switch + { + "rich" => "rich", + "simple" => "simple", + _ => "balanced", + }; + OnPropertyChanged(); + } + } + private int _planDiffSeverityMediumCount = 2; public int PlanDiffSeverityMediumCount { @@ -479,6 +511,20 @@ public class SettingsViewModel : INotifyPropertyChanged set { _slashPopupPageSize = Math.Clamp(value, 3, 10); OnPropertyChanged(); } } + private int _maxFavoriteSlashCommands = 10; + public int MaxFavoriteSlashCommands + { + get => _maxFavoriteSlashCommands; + set { _maxFavoriteSlashCommands = Math.Clamp(value, 1, 30); OnPropertyChanged(); } + } + + private int _maxRecentSlashCommands = 20; + public int MaxRecentSlashCommands + { + get => _maxRecentSlashCommands; + set { _maxRecentSlashCommands = Math.Clamp(value, 5, 50); OnPropertyChanged(); } + } + // ── 드래그&드롭 AI ── private bool _enableDragDropAiActions = true; public bool EnableDragDropAiActions @@ -988,7 +1034,17 @@ public class SettingsViewModel : INotifyPropertyChanged _autoPreview = llm.AutoPreview; _maxAgentIterations = llm.MaxAgentIterations > 0 ? llm.MaxAgentIterations : 25; _maxRetryOnError = llm.MaxRetryOnError > 0 ? llm.MaxRetryOnError : 3; + _enableProactiveContextCompact = llm.EnableProactiveContextCompact; + _contextCompactTriggerPercent = llm.ContextCompactTriggerPercent > 0 + ? Math.Clamp(llm.ContextCompactTriggerPercent, 50, 95) + : 80; _agentLogLevel = llm.AgentLogLevel; + _agentUiExpressionLevel = (llm.AgentUiExpressionLevel ?? "balanced").Trim().ToLowerInvariant() switch + { + "rich" => "rich", + "simple" => "simple", + _ => "balanced", + }; _planDiffSeverityMediumCount = llm.PlanDiffSeverityMediumCount > 0 ? Math.Clamp(llm.PlanDiffSeverityMediumCount, 1, 20) : 2; _planDiffSeverityHighCount = llm.PlanDiffSeverityHighCount > 0 ? Math.Clamp(llm.PlanDiffSeverityHighCount, 1, 30) : 5; _planDiffSeverityMediumRatioPercent = llm.PlanDiffSeverityMediumRatioPercent > 0 ? Math.Clamp(llm.PlanDiffSeverityMediumRatioPercent, 1, 100) : 25; @@ -1013,6 +1069,8 @@ public class SettingsViewModel : INotifyPropertyChanged _enableForkSkillDelegationEnforcement = llm.EnableForkSkillDelegationEnforcement; _skillsFolderPath = llm.SkillsFolderPath; _slashPopupPageSize = llm.SlashPopupPageSize > 0 ? Math.Clamp(llm.SlashPopupPageSize, 3, 10) : 6; + _maxFavoriteSlashCommands = llm.MaxFavoriteSlashCommands > 0 ? Math.Clamp(llm.MaxFavoriteSlashCommands, 1, 30) : 10; + _maxRecentSlashCommands = llm.MaxRecentSlashCommands > 0 ? Math.Clamp(llm.MaxRecentSlashCommands, 5, 50) : 20; _enableDragDropAiActions = llm.EnableDragDropAiActions; _dragDropAutoSend = llm.DragDropAutoSend; _enableCodeReview = llm.Code.EnableCodeReview; @@ -1033,6 +1091,7 @@ public class SettingsViewModel : INotifyPropertyChanged _ollamaModel = llm.OllamaModel; _vllmEndpoint = llm.VllmEndpoint; _vllmModel = llm.VllmModel; + _vllmAllowInsecureTls = llm.VllmAllowInsecureTls; _geminiModel = string.IsNullOrEmpty(llm.GeminiModel) ? "gemini-2.5-flash" : llm.GeminiModel; _sigmoidModel = string.IsNullOrEmpty(llm.ClaudeModel) ? "cl" + "aude-sonnet-4-6" : llm.ClaudeModel; @@ -1087,6 +1146,7 @@ public class SettingsViewModel : INotifyPropertyChanged Service = rm.Service, Endpoint = rm.Endpoint, ApiKey = rm.ApiKey, + AllowInsecureTls = rm.AllowInsecureTls, AuthType = rm.AuthType ?? "bearer", Cp4dUrl = rm.Cp4dUrl ?? "", Cp4dUsername = rm.Cp4dUsername ?? "", @@ -1412,7 +1472,10 @@ public class SettingsViewModel : INotifyPropertyChanged s.Llm.AutoPreview = _autoPreview; s.Llm.MaxAgentIterations = _maxAgentIterations; s.Llm.MaxRetryOnError = _maxRetryOnError; + s.Llm.EnableProactiveContextCompact = _enableProactiveContextCompact; + s.Llm.ContextCompactTriggerPercent = _contextCompactTriggerPercent; s.Llm.AgentLogLevel = _agentLogLevel; + s.Llm.AgentUiExpressionLevel = _agentUiExpressionLevel; s.Llm.PlanDiffSeverityMediumCount = _planDiffSeverityMediumCount; s.Llm.PlanDiffSeverityHighCount = _planDiffSeverityHighCount; s.Llm.PlanDiffSeverityMediumRatioPercent = _planDiffSeverityMediumRatioPercent; @@ -1437,6 +1500,8 @@ public class SettingsViewModel : INotifyPropertyChanged s.Llm.EnableForkSkillDelegationEnforcement = _enableForkSkillDelegationEnforcement; s.Llm.SkillsFolderPath = _skillsFolderPath; s.Llm.SlashPopupPageSize = _slashPopupPageSize; + s.Llm.MaxFavoriteSlashCommands = _maxFavoriteSlashCommands; + s.Llm.MaxRecentSlashCommands = _maxRecentSlashCommands; s.Llm.EnableDragDropAiActions = _enableDragDropAiActions; s.Llm.DragDropAutoSend = _dragDropAutoSend; s.Llm.Code.EnableCodeReview = _enableCodeReview; @@ -1457,6 +1522,7 @@ public class SettingsViewModel : INotifyPropertyChanged s.Llm.OllamaModel = _ollamaModel; s.Llm.VllmEndpoint = _vllmEndpoint; s.Llm.VllmModel = _vllmModel; + s.Llm.VllmAllowInsecureTls = _vllmAllowInsecureTls; s.Llm.GeminiModel = _geminiModel; s.Llm.ClaudeModel = _sigmoidModel; s.Llm.GeminiApiKey = _geminiApiKey; @@ -1502,6 +1568,7 @@ public class SettingsViewModel : INotifyPropertyChanged Service = rm.Service, Endpoint = rm.Endpoint, ApiKey = rm.ApiKey, + AllowInsecureTls = rm.AllowInsecureTls, AuthType = rm.AuthType ?? "bearer", Cp4dUrl = rm.Cp4dUrl ?? "", Cp4dUsername = rm.Cp4dUsername ?? "", @@ -1820,6 +1887,7 @@ public class RegisteredModelRow : INotifyPropertyChanged private string _service = "ollama"; private string _endpoint = ""; private string _apiKey = ""; + private bool _allowInsecureTls; /// UI 표시용 별칭 public string Alias @@ -1856,6 +1924,13 @@ public class RegisteredModelRow : INotifyPropertyChanged set { _apiKey = value; OnPropertyChanged(); } } + /// 이 모델 요청 시 TLS 인증서 검증을 생략합니다. + public bool AllowInsecureTls + { + get => _allowInsecureTls; + set { _allowInsecureTls = value; OnPropertyChanged(); } + } + // ── CP4D 인증 필드 ────────────────────────────────────────────────── private string _authType = "bearer"; diff --git a/src/AxCopilot/Views/AgentSettingsWindow.xaml b/src/AxCopilot/Views/AgentSettingsWindow.xaml new file mode 100644 index 0000000..52c0e04 --- /dev/null +++ b/src/AxCopilot/Views/AgentSettingsWindow.xaml @@ -0,0 +1,498 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +