Compare commits
166 Commits
cc1f1c4e6c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 90bd77f945 | |||
| 95e40df354 | |||
| f9d18fba08 | |||
| f0af86cc1e | |||
| 13f0e23ed5 | |||
| 7cb27b70f8 | |||
| 61f82bdd10 | |||
| fa349c2057 | |||
| be7328184a | |||
| 905ea41ed3 | |||
| d0fa54f10e | |||
| 1948af3cc4 | |||
| 53965083e3 | |||
| ac4aada0af | |||
| 53afdb3472 | |||
| 5765888229 | |||
| 2958306caf | |||
| 216b050398 | |||
| 5352ca2ab2 | |||
| 929c1e9f05 | |||
| bfa1e342c0 | |||
| 8331c0eedc | |||
| cf59a010ac | |||
| 1c9b13c14f | |||
| 87c05720ce | |||
| 25031d655d | |||
| 793a301353 | |||
| a5790e28fb | |||
| 00d284b725 | |||
| 891133a6bf | |||
| b1e11b27bc | |||
| f79e657895 | |||
| 1778b855c5 | |||
| db957039d4 | |||
| 78905d16c0 | |||
| 2975bb39a2 | |||
| 5e63f13cf3 | |||
| 1f581454e1 | |||
| cdd99fd4d2 | |||
| b44df996c2 | |||
| 7f8a075553 | |||
| eed87db268 | |||
| cfacb903e1 | |||
| 3198f822f5 | |||
| 21dc280e57 | |||
| 28e88d615f | |||
| 36828ba199 | |||
| 8dc2841da6 | |||
| 4cbe60052e | |||
| 6c5b0c5be3 | |||
| a3b3522bb7 | |||
| 3ba7c52980 | |||
| 854f190531 | |||
| a0ce5846e1 | |||
| 1eb56404c7 | |||
| d6bfca249e | |||
| 12746cdf11 | |||
| 6b645ccbb7 | |||
| 51a398d269 | |||
| 595f8a76af | |||
| 050271e2a9 | |||
| 4184d89168 | |||
| 303a23130b | |||
| 78b962bece | |||
| f8e62bde2a | |||
| a315f587bf | |||
| 500c8ffb06 | |||
| b53af39358 | |||
| 0fd6940975 | |||
| 29652c3ad4 | |||
| c3e1422b02 | |||
| a4d21ecc0b | |||
| 51ff046e1a | |||
| abd6928e4a | |||
| aa3de8a6fd | |||
| ed1b8497c6 | |||
| 57be80af3c | |||
| e4fddca53c | |||
| 3ea497f10a | |||
| 825f7d55f2 | |||
| abd33eb5df | |||
| cd1db562b1 | |||
| d575139a6f | |||
| 3b223dc7dc | |||
| f3c0366ee6 | |||
| 7cc2b5b9b5 | |||
| d99b46e3e2 | |||
| 22eebc13d9 | |||
| f53f35bbed | |||
| 9fafcd0192 | |||
| 35fbfc933d | |||
| 5c142e1235 | |||
| 5fd69d32f5 | |||
| d368ebf822 | |||
| d102e17d47 | |||
| 792dea2dc2 | |||
| cec4b75999 | |||
| 2d7ede357e | |||
| 88a21ead92 | |||
| 458fd8da96 | |||
| b24afba2d8 | |||
| 382c78e32f | |||
| 28869caa32 | |||
| bd8a1ef7bd | |||
| 554b1fb83e | |||
| c5dfab8081 | |||
| 52475b6628 | |||
| 0b1bc5f32f | |||
| f18f48789a | |||
| abc355c451 | |||
| d24596a8ea | |||
| a40cacea4d | |||
| 8921f5da0f | |||
| 31a8b979c7 | |||
| 660f4e5a32 | |||
| 67961f280f | |||
| 3ed454a98c | |||
| f82cfc4541 | |||
| 890c8ce76b | |||
| 7aa600e01c | |||
| f7cafe0cfc | |||
| 0336904258 | |||
| 0929778ca7 | |||
| 4353998cf2 | |||
| d657539556 | |||
| f9fd144bd0 | |||
| d40b80ee96 | |||
| dec288d8f1 | |||
| 6cc79cf3e5 | |||
| ca006972b2 | |||
| d2f8e39d2b | |||
| ac8e9f9686 | |||
| 45779f8c6f | |||
| d883ccf9e6 | |||
| 0fa2528401 | |||
| 72a8c0d541 | |||
| a027ea4f9a | |||
| 90c2f15e96 | |||
| 5c2042847a | |||
| 3dcf5a62ba | |||
| effadf7185 | |||
| 2e945e36d5 | |||
| 3b9938e01b | |||
| 64be0e082d | |||
| 666416ff65 | |||
| f8669c735d | |||
| 73a4111100 | |||
| 68d49b8835 | |||
| 5957921dea | |||
| 508392f0d9 | |||
| 310e75832c | |||
| db920d2256 | |||
| d3e1f947ba | |||
| 157332df52 | |||
| 0bb37d9390 | |||
| b1fa8f692a | |||
| d9169ed3ea | |||
| 15b675d9c4 | |||
| 14534af2e9 | |||
| b7431146c8 | |||
| 6e65cf6026 | |||
| e8e701e4a1 | |||
| de70f57277 | |||
| 57b204649e | |||
| c56a841549 | |||
| 442e8c2415 |
22
.gitignore
vendored
22
.gitignore
vendored
@@ -1 +1,21 @@
|
||||
claw-code/
|
||||
claw-code/
|
||||
Agent Compare/
|
||||
|
||||
# Build outputs
|
||||
bin/
|
||||
obj/
|
||||
publish/
|
||||
|
||||
# IDE
|
||||
.vs/
|
||||
*.user
|
||||
*.suo
|
||||
|
||||
# OS
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
.DS_Store
|
||||
|
||||
# Secrets
|
||||
*.env
|
||||
credentials.json
|
||||
|
||||
75
.tools/agent_tool_files.txt
Normal file
75
.tools/agent_tool_files.txt
Normal file
@@ -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
|
||||
216
.tools/claw_doc_slash.txt
Normal file
216
.tools/claw_doc_slash.txt
Normal file
@@ -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
|
||||
79
.tools/current_slash.txt
Normal file
79
.tools/current_slash.txt
Normal file
@@ -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
|
||||
75
.tools/current_tools.txt
Normal file
75
.tools/current_tools.txt
Normal file
@@ -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
|
||||
40
AGENTS.md
40
AGENTS.md
@@ -13,6 +13,11 @@
|
||||
- 작업 완료 후에는 변경사항을 점검하고 **반드시 Git push까지 진행**합니다.
|
||||
- Git 커밋/푸시 시 커밋 메시지는 **반드시 한국어로 작성**하며, 변경 목적·핵심 수정사항·검증 결과가 드러나도록 **상세하게** 작성합니다.
|
||||
- 작업 중 오류가 발생해 복구가 되지 않으면, **이전 정상 버전을 다시 받아 기준 상태에서 작업을 재개**합니다.
|
||||
- 기능 개발, 버그 수정, 계획 변경이 발생하면 **작업 중간에도 `README.md`와 `docs/DEVELOPMENT.md`를 즉시 갱신**하여 현재 이력이 누락되지 않도록 합니다.
|
||||
- **Git 커밋/푸시 여부와 무관하게** 개발 문서 이력은 항상 최신 상태를 유지해야 하며, 문서 업데이트를 뒤로 미루지 않습니다.
|
||||
- 커밋/푸시 전에는 변경 코드만 확인하는 것이 아니라 **`README.md`, `docs/DEVELOPMENT.md` 반영 여부를 먼저 점검**한 뒤 진행합니다.
|
||||
- 개발 문서 이력(`README.md`, `docs/DEVELOPMENT.md`, 필요 시 로드맵 문서)을 갱신할 때는 **문서 업데이트 날짜와 시간(로컬 기준)** 을 함께 기록합니다.
|
||||
- 날짜/시간은 문서 내 이력 항목 또는 별도 메모 줄에서 **누가 보더라도 확인 가능한 형식**으로 남깁니다. 예: `업데이트: 2026-04-04 15:20 (KST)`
|
||||
|
||||
### 개발 계획 수립 기준 (필수)
|
||||
- 모든 개발 계획(Phase/마일스톤/백로그)은 **`claude-code` 동등 품질 달성**을 1순위 목표로 수립합니다.
|
||||
@@ -43,6 +48,12 @@
|
||||
### AX Agent의 테마 통일성
|
||||
- AX Agent의 경우 별도 테마를 생성하여 사용(codex, claude-code를 모방한 ui/ux를 원함)
|
||||
- 테마는 시스템, 라이트, 다크로 간단하게 구성
|
||||
- AX Agent UI/UX는 **기존 AX Copilot UI 틀을 유지하지 않아도 되며**, 필요 시 레이아웃/구조를 재배치해도 됨
|
||||
- 목표 기준은 **Codex, Claude, claude-code 계열처럼 심플하고 밀도 높은 업무형 UI**이며, 장식보다 정보 구조와 사용 흐름의 단순화를 우선
|
||||
- 채팅 본문, 실행 로그, 계획 카드, composer, 설정 화면 모두 가능한 한 **같은 시각 언어**로 정리하고 기본 컨트롤 느낌을 줄임
|
||||
- AX Agent 설정 화면은 **가독성이 좋도록 항목 간 상하 여백과 섹션 간 간격을 충분히 확보**하여 답답하지 않게 구성
|
||||
- AX Agent 설정 화면에서는 기본 WPF CheckBox/ComboBox 느낌을 그대로 쓰지 말고, **커스텀 라디오 버튼, 커스텀 콤보박스, 커스텀 선택 카드/토글 UI**를 우선 사용
|
||||
- 설정 항목은 가능하면 `라벨 + 설명 + 현재값/선택 컨트롤` 구조의 row 패턴으로 정리하고, 선택 가능한 값은 **텍스트만이 아니라 시각적으로 인지 가능한 버튼/배지/카드 형태**로 표현
|
||||
|
||||
### 코드비하인드 팝업/다이얼로그 테마 규칙
|
||||
- **코드비하인드에서 생성하는 모든 팝업 Window/다이얼로그**도 현재 테마를 따라야 함
|
||||
@@ -77,6 +88,17 @@ var fg = TryFindResource("PrimaryText") as Brush ?? Brushes.Black;
|
||||
- AI/고급 설정 항목 옆에 `?` 도움말 아이콘 + 커스텀 다크 툴팁 (`HelpTooltipStyle`)
|
||||
- 설정 저장 시 `CustomMessageBox`로 완료 알림
|
||||
|
||||
### AX Agent 표현 수준 (필수)
|
||||
- AX Agent UI 표현 수준은 설정에서 반드시 3단계로 제공: **`풍부하게` / `적절하게` / `간단하게`**
|
||||
- 기본값은 **`적절하게`** 로 고정하며, 신규 설치/초기화 시 자동 적용
|
||||
- 기준 UX 레퍼런스는 `claude-code`(실제 폴더 `claw-code`), Codex, Claude를 참고하되 **과한 복잡도 없이 현재 제품 구조에 맞게 재구성**
|
||||
- 상단 탭 구조(`채팅/코워크/코드`) 및 기존 프리셋 기능은 유지하고, 정보 밀도/요약 깊이/보조 설명 노출량만 표현 수준에 따라 조절
|
||||
- 표현 수준 변경 시 즉시 반영 가능한 UI(재오픈 없이 반영 또는 다음 렌더부터 반영)로 구현
|
||||
- 표현 수준은 시각 스타일만이 아니라 다음 항목에 모두 적용:
|
||||
1. 계획/승인 카드의 상세 정보 노출량
|
||||
2. 권한 요청 팝업의 미리보기 길이와 설명 밀도
|
||||
3. 하단 입력영역·모델 선택 영역의 보조 텍스트/가이드 노출량
|
||||
|
||||
### 헬프 화면 (HelpDetailWindow) 규칙
|
||||
- **버전 정보 금지** — 헬프에 버전별 신기능(예: "v1.6.0 신기능") 항목을 넣지 않으며, 앞으로도 추가하지 않음
|
||||
- **영역별 핵심 기능만 표시** — 개요, AI, 업무 보조 등 영역별로 사용자가 "무엇을 할 수 있는지"만 간결히 설명
|
||||
@@ -127,6 +149,15 @@ var enabled = app?.SettingsService?.Settings.Llm.Code.EnableLsp ?? true;
|
||||
if (!enabled) return ToolResult.Ok("비활성 상태입니다. 설정에서 활성화하세요.");
|
||||
```
|
||||
|
||||
### 표현 수준 설정 연동 규칙 (필수)
|
||||
- `AppSettings.cs`에 표현 수준 프로퍼티를 추가하고 JSON 저장/로드를 보장
|
||||
- `SettingsViewModel.cs`와 AX Agent 전용 설정창(또는 동일 역할 UI)에 바인딩하여 사용자가 즉시 변경 가능해야 함
|
||||
- 표현 수준 설정은 AX Agent 내부 화면에만 우선 적용하고, 런처/일반 설정 UI에는 영향 주지 않음(확장 시 별도 명시)
|
||||
- 문자열 하드코딩 분기를 피하고 enum 또는 상수 매핑으로 관리:
|
||||
1. `rich` = 풍부하게
|
||||
2. `balanced` = 적절하게 (기본)
|
||||
3. `simple` = 간단하게
|
||||
|
||||
---
|
||||
|
||||
## 3. 버전 관리 및 배포
|
||||
@@ -172,6 +203,12 @@ if (!enabled) return ToolResult.Ok("비활성 상태입니다. 설정에서 활
|
||||
- 모든 변경 후 `dotnet build` 실행 → **경고 0, 오류 0** 필수
|
||||
- CS8603 (nullable) 경고 즉시 수정
|
||||
|
||||
### 성능/실행속도 우선 원칙
|
||||
- 기능 구현 시 가능하면 **개발 단계부터 최적화와 실행 속도**를 함께 고려합니다.
|
||||
- 동일 품질을 만족하는 구현안이 여러 개라면, **더 가볍고 빠르게 동작하는 구조**를 우선 채택합니다.
|
||||
- UI/UX 개선, 에이전트 루프, 도구 실행, 컨텍스트 압축, 검색/필터링 기능은 특히 초기 구현부터 불필요한 반복 계산·과도한 렌더링·중복 I/O를 줄이는 방향으로 설계합니다.
|
||||
- 단, 성능 최적화를 이유로 가독성이나 안정성을 과도하게 해치지 않으며, **동등 품질 + 유지보수 가능성**을 함께 만족하는 수준에서 최적화합니다.
|
||||
|
||||
### 리소스 관리
|
||||
- `IDisposable` 구현 객체는 반드시 해제 (PerformanceCounter, LspClientService 등)
|
||||
- P/Invoke 메모리: `Marshal.AllocHGlobal` 후 `finally`에서 `FreeHGlobal`
|
||||
@@ -293,6 +330,9 @@ if (settings?.AiEnabled == false) return; // 또는 빈 결과 반환
|
||||
- **배포 시**: DEVELOPMENT.md 버전 이력 추가, 사용자 가이드/헬프 갱신
|
||||
- **차기 계획 수립 시**: NEXT_ROADMAP.md 업데이트 (경쟁 분석 반영)
|
||||
- **HTML 동기화 요청 시에만**: 해당 .md 내용을 기반으로 HTML 파일 갱신 (열고/닫기 토글, badge 스타일 done/plan/hold 통일)
|
||||
- **일상 개발 작업 시**: `README.md`와 `docs/DEVELOPMENT.md`를 작업 이력의 기준 문서로 보고, 기능/버그/검증 결과를 같은 세션 안에서 즉시 반영
|
||||
- **문서 선반영 원칙**: 구현을 진행하며 방향이나 범위가 확정되면 커밋 전 대기하지 말고 먼저 문서에 남겨 이력 누락을 방지
|
||||
- **이력 시점 기록 의무**: 문서 이력 항목을 추가하거나 수정할 때는 해당 항목 근처에 업데이트 일시를 함께 남겨 변경 시점을 추적 가능하게 유지
|
||||
|
||||
---
|
||||
|
||||
|
||||
903
README.md
903
README.md
@@ -7,6 +7,164 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
|
||||
개발 참고: Claw Code 동등성 작업 추적 문서
|
||||
`docs/claw-code-parity-plan.md`
|
||||
|
||||
- 업데이트: 2026-04-06 01:37 (KST)
|
||||
- AX Agent의 계획 승인 흐름을 더 transcript 우선 구조로 정리했습니다. 인라인 승인 카드가 기본 경로를 맡고, `계획` 버튼은 저장된 계획 요약/단계를 여는 상세 보기 역할만 하도록 분리했습니다.
|
||||
- 상태선과 quick strip 계산도 presentation state로 더 모았습니다. runtime badge, compact strip, quick strip의 텍스트/강조색/노출 여부를 한 번에 계산해 창 코드의 직접 분기를 줄였습니다.
|
||||
|
||||
- 업데이트: 2026-04-06 00:50 (KST)
|
||||
- 채팅/코워크 프리셋 카드의 hover 설명 레이어를 카드 내부 오버레이 방식에서 안정적인 tooltip형 설명으로 바꿨습니다. 카드 배경/테두리만 반응하게 정리해 hover 시 반복 깜빡임을 줄였습니다.
|
||||
|
||||
- 업데이트: 2026-04-06 00:45 (KST)
|
||||
- AX Agent 내부 설정 공통 탭에 `대화 스타일` 섹션 제목을 복구해, `문서 형태`와 `디자인 스타일` 저장 항목이 명확히 보이도록 정리했습니다.
|
||||
- AX Agent 내부 설정 스킬 탭의 `MCP 서버` 영역에 `서버 추가` 버튼을 복원했고, 목록 카드 안에서 `활성화/비활성화`와 `삭제`까지 바로 관리할 수 있게 옮겼습니다.
|
||||
|
||||
- 업데이트: 2026-04-05 19:04 (KST)
|
||||
- AX Agent transcript와 작업 요약에서 도구/스킬 이름을 사람이 읽기 쉬운 표시명으로 정리했습니다. raw snake_case 도구명 대신 `파일 읽기`, `빌드/실행`, `Git`, `/bug-hunt` 같은 표시명 중심으로 보입니다.
|
||||
- 도구/스킬 이벤트 배지는 역할 중심(`도구`, `도구 결과`, `스킬`)으로 단순화하고, 실제 도구명은 본문 보조 텍스트로만 노출되게 바꿨습니다.
|
||||
- 작업 요약 팝업의 권한/배경 작업 관측성 섹션은 `debug` 성격일 때만 두껍게 보여서 기본 UX가 더 `claw-code`처럼 조용하게 유지됩니다.
|
||||
|
||||
- 업데이트: 2026-04-05 18:58 (KST)
|
||||
- AX Agent의 `의견 요청`/`질문` 흐름을 transcript 내 카드 우선 구조로 전환했습니다.
|
||||
- `user_ask` 도구는 별도 `UserAskDialog`를 먼저 띄우지 않고, 본문 안에서 선택지/직접 입력/전달로 응답을 완료합니다.
|
||||
- 계획 승인과 사용자 질문이 같은 transcript-first UX 원칙을 따르도록 정리했습니다.
|
||||
|
||||
- 업데이트: 2026-04-05 22:04 (KST)
|
||||
- `claw-code`와 AX Agent를 같은 기준으로 비교할 수 있도록 canonical prompt set 10종을 parity 문서에 고정했습니다. Chat 기본/장문, Cowork 문서/데이터, Code 수정/빌드, queue follow-up, post-compaction, permission 승인, slash skill 진입까지 핵심 회귀 흐름을 한 세트로 검증하도록 정리했습니다.
|
||||
- 도구/스킬 비교 기준도 parity 문서에 추가했습니다. AX는 문서/오피스/데이터/업무형 도구가 더 풍부하고, `claw-code`는 transcript-native tool/approval/permission 메시지 구조가 더 정교하다는 차이를 명시했습니다.
|
||||
- 계획 승인 UX는 `claw-code` 쪽 흐름에 더 가깝게 inline 우선으로 바꿨습니다. AX Agent는 이제 승인 요청 시 `PlanViewerWindow`를 먼저 띄우지 않고 transcript 내부의 승인/수정/취소 버튼을 우선 보여주며, 계획 상세는 하단 `계획` 버튼으로만 여는 보조 경로를 사용합니다.
|
||||
|
||||
- 업데이트: 2026-04-05 16:55 (KST)
|
||||
- `claw-code` 대비 AX Agent 추정 진척율 기준선을 문서에 남겼습니다. 현재 기준은 핵심 엔진 `82%`, 채팅 메인 UI `68%`, Cowork/Code 상태 UX `63%`, 내부 설정 연결 `88%`, 전체 AX Agent 동등 품질 `74%`입니다.
|
||||
- 메인 핵심 엔진 로직에 직접 영향을 주는 설정은 최소화 원칙으로 다시 검토하기 시작했습니다. 이미 실질 선택지가 사라진 `계획 모드` 계열은 사용자 노출을 더 줄였고, 남은 엔진성 설정은 개발자 탭 중심으로 계속 정리합니다.
|
||||
- 메시지 행과 좌측 대화 목록도 `claw-code` 방향으로 다시 단순화했습니다. 사용자/assistant 버블의 패딩, 라운드, 메타 텍스트를 줄였고, 대화 목록의 실행 상태도 배지 카드보다 얇은 텍스트 요약 중심으로 바꿔 읽는 축이 먼저 보이도록 눌렀습니다.
|
||||
- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||
|
||||
- 업데이트: 2026-04-05 17:03 (KST)
|
||||
- AX Agent UI를 `claw-code` 쪽 시각 언어에 더 가깝게 맞추기 위해 레이아웃 골격을 다시 조정했습니다. 좌측 패널 폭과 헤더/액션 행 높이, 축소 아이콘 바, 상태 스트립, 메시지 축, 컴포저 폭과 코너 반경을 전반적으로 더 얇고 평평하게 정리했습니다.
|
||||
- 반응형 폭 계산도 새 골격에 맞춰 다시 조정했습니다. 메시지 축은 최대 `880`, 컴포저는 최대 `820` 기준으로 더 자연스럽게 줄어들도록 바꿔 창 크기가 변해도 `claw-code`처럼 중심선이 크게 흔들리지 않게 맞췄습니다.
|
||||
- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||
|
||||
- 업데이트: 2026-04-05 17:12 (KST)
|
||||
- 메시지 내부 액션 바와 Cowork/Code 실행 배너를 더 `claw-code`처럼 보조 레이어로 낮췄습니다. 메시지 액션은 텍스트 버튼 대신 작은 아이콘 버튼 중심으로 바꾸고, 실행 배너는 여백·폰트·토큰 배지·파일 경로 표시를 한 단계 더 얇게 줄여 본문보다 덜 튀게 정리했습니다.
|
||||
- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||
|
||||
- 업데이트: 2026-04-05 17:19 (KST)
|
||||
- 상단 헤더와 탭 그룹, 좌측 대화 목록 행 메타를 더 `claw-code` 쪽 밀도로 조정했습니다. 상단 탭은 더 얇은 세그먼트형으로 줄였고, 사이드바 토글 버튼도 크기와 선 두께를 낮췄습니다.
|
||||
- 대화 목록은 실행 상태/요약 텍스트와 우측 편집 아이콘을 더 약하게 줄여 제목 중심으로 읽히게 정리했습니다.
|
||||
- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||
|
||||
- 업데이트: 2026-04-05 16:02 (KST)
|
||||
- `document_plan` 후속 실행 분기를 `claw-code` 기준으로 다시 보강했습니다. 이제 문서 플래너 출력에서 body 골격과 즉시 실행 지시를 깨진 문자열 비교에 의존하지 않고 안정적으로 추출해, `html_create / document_assemble / docx_create / markdown_create` 후속 호출 유도가 실제로 이어집니다.
|
||||
- 코워크 문서형 작업은 설정이 `planMode=off`여도 내부적으로 `always` 플랜 경로를 타도록 보정했습니다. 그래서 문서/보고서/제안서 요청은 먼저 계획을 세우고, 그 계획을 바탕으로 실제 문서 생성 단계까지 이어가도록 정리했습니다.
|
||||
- 코워크 시스템 프롬프트도 강화해 문서 작업은 계획만 제시하고 끝내지 말고 실제 산출물 파일 경로까지 만들어야 완료로 판단하도록 바꿨습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 15:42 (KST)
|
||||
- AX Agent 엔진 공통화 1차로, Cowork/Code 실행 이벤트와 Agent run 기록을 탭별 현재 대화에 누적한 뒤 원래 활성 탭 대화를 복원하는 로직을 `ChatWindow`에서 `AxAgentExecutionEngine` helper로 옮겼습니다.
|
||||
- 이제 실행 이벤트/최근 run 기록 반영 시 창 코드가 직접 교차 탭 복원 경로를 중복 처리하지 않고, 엔진의 공통 세션 mutation 경로를 사용합니다.
|
||||
|
||||
- 업데이트: 2026-04-05 15:34 (KST)
|
||||
- AX Agent 개선 계획 기준을 이전 AX 비교본이 아니라 실제 `claw-code` 런타임 축으로 다시 고정했습니다. 현재 참조 spine은 `bootstrap/state.ts -> bridge/initReplBridge.ts -> bridge/sessionRunner.ts -> screens/REPL.tsx -> components/Messages.tsx -> components/StatusLine.tsx` 입니다.
|
||||
- 이에 맞춰 AX Agent 개선도 `상태 정규화 -> 실행 준비 공통화 -> AgentLoop 이벤트 정규화 -> 타임라인 렌더 일원화 -> 컴포저/상태바 단순화 -> 복구/재개 검증` 순서로 진행하도록 parity 문서를 갱신했습니다.
|
||||
|
||||
- 업데이트: 2026-04-05 11:22 (KST)
|
||||
- AX Agent 채팅 복구 1차로 컴포저를 하단 고정 배치로 조정해 세로 공간을 꽉 채우며 커 보이던 문제를 줄였습니다.
|
||||
- 전송 직후 사용자 버블을 직접 UI에 꽂지 않고 대화 모델 기반 `RenderMessages()` 재렌더를 먼저 타도록 정리해, 중복 렌더와 빈 버블 누적 가능성을 낮췄습니다.
|
||||
- Cowork/Code의 실행 이벤트 배너는 `실행 로그 표시`를 켠 경우에만 즉시 채팅 본문에 보이도록 바꿔 작업 중 플래시처럼 남던 잔상 UI를 줄였습니다.
|
||||
- Cowork/Code는 실행 시작 시 해당 대화의 `실행 로그 표시`를 먼저 끄도록 바꿔, 중간 재렌더가 들어와도 이벤트 배너가 다시 섞이지 않도록 조정했습니다.
|
||||
- Chat 탭은 비스트리밍 응답 경로에 맞춰 임시 스트리밍 카드 자체를 만들지 않도록 바꿨습니다. 이제 Chat은 최종 assistant 메시지만 모델에 반영되고 재렌더됩니다.
|
||||
- Cowork/Code도 최종 응답형 경로에 맞춰 임시 스트리밍 카드를 만들지 않도록 정리했습니다. 이제 임시 빈 assistant 카드 없이 최종 응답만 대화 모델에 반영됩니다.
|
||||
- 메인 설정 탭 가시성 로직에서도 `AX Agent` 탭은 항상 숨기도록 고정해, 일반 설정과 AX Agent 내부 설정이 다시 갈라지지 않게 정리했습니다.
|
||||
- AX Agent 채팅 전송 경로에서 빈 assistant 메시지를 먼저 대화 모델에 넣던 흐름을 제거했습니다. 이제 응답이 끝난 뒤 최종 assistant 메시지만 추가되어, 토큰은 갔는데 빈 말풍선만 남는 현상을 줄입니다.
|
||||
- 메인 설정 `TabControl`에서 구형 AX Agent 탭이 선택되더라도 내부 설정 바로가기로 즉시 우회되도록 연결해, 숨김 탭 경로로 다시 들어가는 흐름을 막았습니다.
|
||||
- 메인 설정에만 남아 있던 `Temperature`도 AX Agent 내부 설정 오버레이에 추가했습니다. 이제 내부 설정에서 값 확인과 수정이 가능하며, 포커스가 빠지면 0.0~2.0 범위로 정규화해 저장됩니다.
|
||||
- `claw-code`의 입력 처리/실행 분리 흐름을 참고해 AX Agent 내부 실행 엔진 `AxAgentExecutionEngine`을 추가했습니다. ChatWindow는 전송 메시지 조립과 최종 assistant 메시지 반영을 이 엔진으로 넘기기 시작했습니다.
|
||||
|
||||
|
||||
- 업데이트: 2026-04-05 07:11 (KST)
|
||||
- AX Agent 하단 바를 다시 정리해 코워크/코드 탭에서는 중복으로 보이던 보조 칩(`워크스페이스`, `파일`, `간략`, `로컬/워크트리` 묶음)이 더 이상 나타나지 않도록 정리했습니다. 작업 폴더 정보는 기존 폴더 경로 영역만 남기고, 노란 표시로 보이던 중복 보조 영역은 제거했습니다.
|
||||
- `데이터 미활용` 버튼은 외곽 테두리선 없이 보이도록 바꿔 하단 옵션 줄이 덜 부풀어 보이게 정리했습니다.
|
||||
- 업데이트: 2026-04-05 07:08 (KST)
|
||||
- AX Agent 체감 속도 개선을 위해 대화 메타 캐시를 보강했습니다. 대화 목록 메타를 다시 읽을 때마다 매번 전체 정렬을 반복하지 않도록 정렬 결과를 별도로 캐시해, 사이드바 대화 목록과 분류 계산이 잦은 흐름의 부담을 줄였습니다.
|
||||
- AX Agent 내부 설정/하단 옵션 반영 시 같은 값인데도 현재 대화 설정을 반복 저장하던 경로를 줄였습니다. 권한, 데이터 활용, 무드, 출력 형식이 실제로 바뀐 경우에만 대화 저장이 일어나도록 바꿔 작은 옵션 변경 때의 지연을 덜었습니다.
|
||||
- 대화 검색창은 입력할 때마다 즉시 전체 목록을 다시 그리지 않고 짧게 디바운스되도록 조정해, 검색어를 빠르게 입력할 때의 버벅임을 줄였습니다.
|
||||
- 업데이트: 2026-04-05 02:00 (KST)
|
||||
- AX Agent 내부 톱니 설정 오버레이의 왼쪽 분류 탭도 복구했던 기준에 맞춰 `기본 / 채팅 / 코워크 / 코드 / 개발자 / 도구 / 스킬/차단` 구조로 다시 정리했습니다. 단순히 항목만 추가한 것이 아니라, 실제 오버레이 네비게이션 자체를 같은 분류 기준으로 바꾸고 각 탭에서 해당 설정군만 보이도록 다시 묶었습니다.
|
||||
- 업데이트: 2026-04-05 01:46 (KST)
|
||||
- AX Agent 안의 톱니 아이콘이 실제로 여는 대상이 별도 창이 아니라 채팅 내부 오버레이임을 다시 확인하고, 누락된 설정을 그 실제 오버레이로 옮겼습니다. 이제 AX Agent 내부 설정 오버레이의 고급 섹션에서 `프로젝트 규칙 자동 반영`, `에이전트 메모리`, `최대 Agent Pass`, `Code용 Plan/Worktree/Team/Cron 도구` 항목을 직접 보고 저장할 수 있습니다.
|
||||
- 업데이트: 2026-04-05 01:40 (KST)
|
||||
- AX Agent 내부의 톱니 설정 창에 메인/오버레이 설정에 남아 있던 항목을 추가로 옮겼습니다. 이제 내부 설정에서 기본 출력 형식, 기본 디자인 무드, 프로젝트 규칙 자동 반영, 에이전트 메모리, 최대 Agent Pass, Code용 Plan/Worktree/Team/Cron 도구 토글까지 직접 보고 저장할 수 있습니다.
|
||||
- 채팅 하단 입력부와 옵션 버튼의 과한 pill 형태도 다시 줄였습니다. 하단 옵션 버튼과 입력 박스의 코너 반경을 눌러 타원형 느낌보다 밀도 있는 업무형 형태에 가깝게 정리했습니다.
|
||||
- 업데이트: 2026-04-05 01:35 (KST)
|
||||
- AX Agent 코워크 대화 목록 필터를 프로젝트(작업 폴더) 기준이 아니라 작업 유형 기준으로 다시 정리했습니다. 이제 코워크의 상단 빈 상태, 분류 드롭다운, 대화 목록 필터가 모두 프리셋/카테고리 기반 작업 유형 흐름에 맞춰 동작합니다.
|
||||
- 코드 탭은 기존처럼 프로젝트(워크스페이스) 기준 필터를 유지해, 코워크와 코드가 각자 맞는 분류 기준을 사용하도록 분리했습니다.
|
||||
- 업데이트: 2026-04-05 01:22 (KST)
|
||||
- AX Agent 내부 설정 창의 `도구`, `스킬/차단` 탭에 숨겨져 있던 설정을 추가로 옮겼습니다. 이제 내부 설정에서 도구 노출 목록, 도구 훅, 스킬 폴더, 슬래시 팝업 개수, 드래그 앤 드롭 AI 액션, 폴백 모델, MCP 서버를 직접 확인하고 저장할 수 있습니다.
|
||||
- 채팅 하단 데이터 활용 옵션의 과한 타원형 pill 테두리는 둥근 사각형으로 정리해 하단 옵션 바가 덜 부풀어 보이도록 다듬었습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 01:15 (KST)
|
||||
- AX Agent 내부 설정 저장 경로를 다시 점검해, 저장 버튼 전에도 원본 설정 객체를 바로 바꾸던 흐름을 로컬 상태 기반으로 정리했습니다. 이제 서비스/테마/표현 수준 선택은 저장 버튼을 눌렀을 때만 실제 설정에 반영됩니다.
|
||||
- 내부 설정 창에서 빠져 있던 `vLLM TLS 우회`, 활성 서비스별 모델 동기화, 전역 호환 모델 필드 저장도 다시 연결해 저장 후 재실행 시 값이 어긋나는 문제를 줄였습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 01:12 (KST)
|
||||
- AX Agent 내부 설정 창의 분류 기준을 이전 커밋 구조에 맞춰 다시 정리했습니다. 단순 섹션형이던 인앱 설정을 `기본 / 채팅 / 코워크 / 코드 / 개발자 / 도구 / 스킬·차단` 흐름으로 되돌릴 수 있는 기반을 복구했고, 우선 `기본/채팅/코워크/코드/개발자/도구` 탭 전환과 핵심 저장 경로를 다시 연결했습니다.
|
||||
- `AX Agent 사용` 토글과 `표현 수준` 저장도 내부 설정 창에서 다시 관리되도록 연결했고, 설정 저장 시 `AiEnabled` 값이 강제로 다시 켜지던 정규화 경로도 함께 수정했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:58 (KST)
|
||||
- `Agent Compare/AX Copilot`의 개발 문서와 런처 소스를 대조해 AX Commander 신규 기능 묶음을 이식했습니다. 빠른 링크, 파일 태그, 알림 센터, 포모도로, 파일 브라우저, 핫키 관리, OCR, 세션/스케줄/매크로, Git/정규식/네트워크/압축/해시/SSH/UUID/JWT/QR 등 비교본에 있던 다수의 런처 핸들러를 현재 앱에 등록했습니다.
|
||||
- 런처 기능 이식에 맞춰 스케줄러/태그/알림 기록/아이콘 캐시/URL 템플릿 서비스와 편집용 보조 창, 설정 모델, 런처 위치 기억 설정, QR/OCR 빌드 의존성도 함께 반영했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:46 (KST)
|
||||
- 트레이 아이콘 우클릭 메뉴 맨 위의 앱 이름/버전 헤더 글자색을 진한 회색으로 조정해, 본문 메뉴 항목보다 덜 튀면서도 더 또렷하게 보이도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:52 (KST)
|
||||
- 하단 composer 상태줄의 표시 문구를 더 통일해 `서비스 ... · 모델 ...`, `데이터 ...`, `브랜치 ...`처럼 같은 문법으로 읽히도록 정리했습니다.
|
||||
- 데이터 활용/권한 칩은 현재 상태 색에 맞는 테두리와 툴팁 설명을 같이 보여줘 상태 인지가 더 쉬워졌습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:43 (KST)
|
||||
- Cowork/Code 하단 바에 `워크스페이스` 진입 칩을 공통으로 추가해, 작업 위치 전환을 파일/워크트리보다 먼저 찾을 수 있게 정리했습니다.
|
||||
- 워크스페이스 검색 패널 상단에는 `현재 / 최근 / 전체` 요약 strip을 넣어 현재 선택과 탐색 범위를 한눈에 보이게 보강했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:34 (KST)
|
||||
- AX Agent 하단 컨텍스트 카드에 현재 서비스·모델 기준 오늘 사용량을 함께 표시하고, hover에는 현재 모델의 일반 사용량·compact 이후 사용량·오늘 상위 모델 사용량까지 보이도록 보강했습니다.
|
||||
- 큰 수 토큰 집계는 `K/M` 단위까지 같은 카드 안에서 일관되게 읽히도록 long 전용 포맷 경로를 추가했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:17 (KST)
|
||||
- AX Agent 루프도 `claw-code`의 post-autocompact turn tracking 흐름을 참고해 compact 직후 턴을 별도 상태로 추적하도록 보강했습니다. 이제 compact 직후 첫 턴은 저노이즈 compact pill 중심으로 보이고, 불필요한 `LLM 요청 중`류 Thinking 로그는 자동으로 줄입니다.
|
||||
- 개발자용 전체 통계에는 compact 직후 자동 축약된 Thinking 로그 건수도 함께 표시해, compact 이후 루프가 실제로 얼마나 조용해졌는지 바로 확인할 수 있게 했습니다.
|
||||
- compact 직후 첫 턴의 `process/build_run/test_loop/git/http` 계열 도구 결과는 head/tail 중심의 post-compaction 요약으로 더 짧게 전달해, 압축 직후 문맥이 다시 길어지는 현상을 줄였습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-04 23:47 (KST)
|
||||
- AX Agent 컨텍스트 압축 경로에 `session memory compact`, `microcompact`, `collapse/snip` 단계를 추가해 오래된 요약·실행 로그·도구 결과를 LLM 요약 전에 더 세밀하게 줄이도록 보강했습니다.
|
||||
- 현재 대화 기준 compact 누적 회수, 자동/수동 비중, 절감 토큰, session memory 적용 횟수, microcompact/snipped 메시지 수를 하단 컨텍스트 카드 hover에서 함께 확인할 수 있게 했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- compact 직후 첫 응답을 별도로 추적하는 post-compaction 흐름을 추가해, 압축 다음 턴의 응답 횟수와 사용 토큰을 현재 대화 기준으로 누적 집계하도록 보강했습니다.
|
||||
- AX Agent 하단 컨텍스트 카드 hover에는 이제 `compact 후 첫 응답 대기 중`, `compact 이후 응답 수`, `compact 이후 사용 토큰`까지 함께 표시됩니다.
|
||||
- 업데이트: 2026-04-05 00:01 (KST)
|
||||
- 일별 사용 통계에 `service:model` 기준 토큰 집계를 추가해 일반 사용량과 compact 이후 사용량을 모델 단위로 나눠 기록하도록 보강했습니다.
|
||||
- `microcompact_boundary`, `session_memory_compaction`, `collapsed_boundary` 메시지는 일반 AI 답변과 다른 전용 압축 카드로 렌더링하고, compact 관련 실행 로그는 얇은 compact pill로 분리해 노이즈를 줄였습니다.
|
||||
|
||||
|
||||
- 업데이트: 2026-04-04 23:32 (KST)
|
||||
- AX Agent 컨텍스트 압축 경로에 `microcompact` 성격의 선행 경량 압축 단계를 추가해, 오래된 실행 로그·도구 결과·긴 메시지를 먼저 경계 요약으로 줄인 뒤 LLM 요약 단계로 넘기도록 보강했습니다.
|
||||
- 수동 `/compact`와 자동 압축이 같은 `ContextCondenser` 3단계 흐름(도구 결과 축약 → microcompact → 이전 대화 요약)을 사용하도록 정리해 긴 세션에서 불필요한 토큰 사용을 더 줄이기 시작했습니다.
|
||||
- 검증 예정: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||
|
||||
- 업데이트: 2026-04-04 23:14 (KST)
|
||||
- 트레이 아이콘 우클릭 메뉴 상단에 `AX Copilot v.0.7.3` 버전 헤더를 추가하고, 좌클릭 시에는 런처보다 AX Agent를 우선 열도록 정리했습니다. AI 기능이 꺼져 있을 때만 기존처럼 런처를 열도록 유지했습니다.
|
||||
- Enter/전송 버튼/슬래시 명령의 DraftQueue kind 분류를 다시 정리해 일반 입력은 `message`, 슬래시 입력은 `command`, 조정 입력은 `steering`, 직접 실행 요청은 `direct`로 더 자연스럽게 나뉘도록 보강했습니다.
|
||||
- 메인 설정 저장 완료 시 열려 있는 AX Agent 창이 테마/권한/데이터 활용/모델 라벨/하단 바를 즉시 다시 읽어오도록 fan-out 경로를 추가해 설정과 실제 실행 화면의 어긋남을 줄였습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
---
|
||||
|
||||
## 주요 기능 (프리픽스 치트시트)
|
||||
@@ -45,6 +203,7 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
|
||||
| 테마 커스터마이징 | ❌ | ✅ (7종 프리셋 + 완전 커스텀) |
|
||||
| 설정 UI | ✅ | ✅ (7탭 전체 GUI 설정) |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 설치 및 빌드
|
||||
@@ -91,6 +250,7 @@ powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1 -SkipFullTes
|
||||
| 스킬 파일 | `%APPDATA%\AxCommander\skills\*.skill.json` |
|
||||
| 크래시 덤프 | `%APPDATA%\AxCommander\crashes\` |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 사용법
|
||||
@@ -133,6 +293,7 @@ powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1 -SkipFullTes
|
||||
| `{month}` | 월 (2자리) | `03` |
|
||||
| `{day}` | 일 (2자리) | `23` |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 플러그인 개발
|
||||
@@ -196,6 +357,7 @@ public class MyHandler : IActionHandler
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 테마
|
||||
@@ -216,20 +378,644 @@ public class MyHandler : IActionHandler
|
||||
|
||||
설정 UI(`Ctrl+,` → 테마 탭)에서 클릭 한 번으로 즉시 미리보기 적용.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 변경 이력
|
||||
|
||||
### v1.6.1 — 전체 점검 수정
|
||||
### v0.7.3 — AX Agent 권한 코어 재구성 + 입력 계층 정리
|
||||
|
||||
업데이트: 2026-04-04 16:24 (KST)
|
||||
|
||||
| 분류 | 내용 |
|
||||
|------|------|
|
||||
| 빌드 오류 수정 | `using System.IO` 누락, `Key.Enter`/`Key.Return` 중복 switch 케이스, `EnumDisplayMonitors` 람다 타입 혼합, `icon.ico` 다이아몬드 픽셀 보석 아이콘으로 교체, nullable 역참조 경고 |
|
||||
| 런타임 버그 수정 | JSON 스킬 경로 파싱(`field[0` 형식 오류 방지), 클립보드 서비스 스레드 안전성, 디바운스 타이머 원자적 교체, 설정 백업 실패 로깅 |
|
||||
| 보안 수정 | JSON 스킬 `ActionUrl` 실행 전 `http`/`https` 스킴 검증 추가 |
|
||||
| 데드 코드 제거 | `SystemCommandHandler` no-op `timer`/`alarm` 항목 제거 |
|
||||
| 권한 코어 재구성 | `Default → AcceptEdits → Plan → BypassPermissions → DontAsk → Deny` 체계로 정규화하고, 기존 `Ask/Auto` 값은 호환 alias로 유지 |
|
||||
| 규칙 해석 순서 정리 | 권한 판정을 `deny 규칙 → allow/override 규칙 → 글로벌 모드 → 기본 Ask` 순서로 재구성 |
|
||||
| 도구 권한 클래스 분리 | `file_write/file_edit/file_manage`와 `process/build_run/test_loop/snippet_runner/spawn_agent` 계열을 분리해 `AcceptEdits`와 `Plan`의 실제 동작 차이를 반영 |
|
||||
| AX Agent 권한 UI 반영 | 권한 팝업, 상단 배너, slash 명령 결과가 새 권한 모드 의미를 표시하도록 정리 |
|
||||
| AX Agent 설정창 복구 | `AgentSettingsWindow`의 깨진 한글 문자열을 정리하고 운영 모드, 계획 모드, 추론 강도, 폴더 데이터 활용 라벨을 현재 AX 표현 체계로 복구 |
|
||||
| 권한 용어 통일 | 권한 팝업과 인라인 설정에서 `계획 중심`, `완전 자동`, `질문 없이 진행` 등 한국어 표기를 일관되게 사용하도록 정리 |
|
||||
| 권한 UI·로직 결합 정리 | `claw-code` 권한 팝업 흐름에 맞춰 코어 4개(`권한 요청/편집 자동 승인/계획 모드/권한 건너뛰기`)를 기본 선택 순서로 정렬하고, 토글 순환도 동일 축으로 단순화 |
|
||||
| 슬래시 팔레트 단순화 | `/` 팝업의 기본 선택을 첫 항목으로 바꾸고, 즐겨찾기 버튼/배지 UI를 제거해 `아이콘+명령+설명` 중심의 단순 리스트 탐색으로 정리 |
|
||||
| 컴포저 패널 축소 | 하단 인라인 설정을 `Fast/추론/계획/권한` 중심으로 축소하고, 스킬/브라우저/MCP 버튼은 숨겨 입력 중심 UX로 정리 |
|
||||
| 모델/프리셋 바 컴팩트화 | 입력창 상단 바를 더 촘촘한 크기로 정리하고, 긴 모델명은 자동 말줄임 처리해 레이아웃이 흔들리지 않도록 보강 |
|
||||
| 좌측 패널 타이포 정돈 | 사이드바 헤더/메뉴/대화 리스트의 폰트 크기와 여백을 줄여 밀도를 맞추고, 대화 카드 제목·시간·상태 배지의 크기를 통일해 시인성을 개선 |
|
||||
| 메시지 버블 정돈 | 사용자/어시스턴트 버블의 여백·폰트·타임스탬프·액션 버튼 크기를 줄이고 좌우 마진을 대칭화해 대화 로그 가독성과 정렬감을 개선 |
|
||||
| 에이전트 이벤트 표시방식 정리 | 실행 배너의 과도한 펼침 UI를 제거하고 요약 길이를 제한해 한눈에 상태를 읽도록 단순화, 권한/계획/실행 라벨을 한국어 기준으로 통일 |
|
||||
| 도구 결과 카드 단순화 | 파일 경로 배너를 `파일명 + 디렉터리` 2단 구조로 정리하고, 빠른 작업 버튼을 아이콘 전용(프리뷰/열기/폴더/복사)으로 축소해 시각적 복잡도를 낮춤 |
|
||||
| 작업 요약 팝업 정돈 | 팝업 헤더/필터 밀도를 낮추고 `전체·권한·대기·도구·서브·훅` 중심으로 재정렬해 스크롤 시 탐색 피로를 줄임 |
|
||||
| 권한 이력 카드 재구성 | 권한 카드/이력을 `현재 모드·설명·기본/예외` + `시간·도구·결과` 구조로 단순화하고, 권한 액션 버튼도 최신 용어(`활용하지 않음/권한 요청/편집 자동 승인/계획 모드/권한 건너뛰기`)로 통일 |
|
||||
| 최근 실행 카드 압축 | `최근 에이전트 실행` 카드에서 상세 로그/파일 나열과 분기 액션을 줄이고 `요약+카운트+타임라인` 중심으로 정리해 표시 밀도와 스캔 속도를 개선 |
|
||||
| 작업 카드 버튼 스타일 통일 | 작업 요약/권한/훅/백그라운드 카드 버튼을 공통 생성 함수로 통일해 패딩·폰트·테두리·색상 톤을 일관화하고 카드 간 버튼 밀도 차이를 제거 |
|
||||
| 카드 타이포 계층 정렬 | 작업/훅/백그라운드 카드의 제목·본문 글자 크기와 굵기를 통일하고 `PrimaryText/SecondaryText` 기반으로 대비를 맞춰 카드 간 시각 리듬을 정리 |
|
||||
| 카드 아이콘 규칙 통일 | 작업 종류별 아이콘/색을 공통 매핑으로 통일하고, 작업·훅·백그라운드 카드 헤더에 아이콘을 배치해 상태 인지가 한눈에 되도록 정리 |
|
||||
| 권한 팝업 선택 강조 개선 | 권한 모드 리스트에서 활성 항목에 배경/테두리/체크 아이콘을 적용하고 설명 줄간격·아이콘 정렬을 조정해 선택 상태와 읽기 흐름을 명확화 |
|
||||
| 권한 예외/거부 영역 압축 | 권한 팝업의 `도구별 예외`와 `최근 권한 거부` 블록을 아이콘 헤더+간결 라벨 체계로 정리하고 버튼 명칭을 권한 용어(`권한 요청/편집 자동 승인/활용하지 않음/예외 해제`)로 통일 |
|
||||
| 권한 팝업 섹션 접힘/펼침 | 기본 화면은 `핵심 권한 모드`만 노출하고 `현재 권한 요약/도구별 예외/최근 권한 거부/고급 모드`는 접힘 섹션으로 전환해 codex/claude식 간결 흐름으로 정리 |
|
||||
| 권한 팝업 섹션 상태 기억 | 접힘 섹션의 마지막 펼침 상태를 `settings.dat`에 저장해 팝업 재오픈 시 사용자 마지막 선택을 복원 |
|
||||
| 슬래시 팔레트 그룹 상태 기억 | `/` 팔레트에 `명령/스킬` 접힘 헤더를 추가하고 마지막 펼침 상태를 저장해 재오픈 시 복원, Up/Down 이동도 펼쳐진 그룹 항목만 순회하도록 보정 |
|
||||
| 슬래시 최근 사용 상단 고정 | `/` 팔레트의 `명령/스킬` 그룹 내부 항목을 최근 사용(MRU) 기준으로 상단 정렬하고 `최근` 배지를 표시, 선택 스크롤도 실제 렌더 항목 기준으로 정확히 보정 |
|
||||
| 슬래시 핀 고정 결합 | `/` 팔레트 항목 우측에 핀 토글을 추가하고 정렬 우선순위를 `핀 > 최근 > 이름`으로 적용해 자주 쓰는 명령을 고정 유지 |
|
||||
| AX Agent 기본 활성화 | `ai_enabled` 기본값을 활성화로 변경하고 설정 로드 정규화 단계에서 비활성 값이 들어와도 자동으로 활성화되도록 보정 |
|
||||
| 업데이트 안내 메시지 제거 | 앱 시작 시 설정 마이그레이션 후 표시되던 `설정 업데이트` 메시지박스를 제거해 업데이트 설치 직후 팝업 노출을 중단 |
|
||||
| 슬래시 핀/최근 개수 설정 연동 | AX Agent 설정창에서 `슬래시 핀 최대 개수`, `슬래시 최근 최대 개수`를 조절할 수 있도록 추가하고 런타임(MRU/핀 정렬) 제한에 즉시 반영 |
|
||||
| 슬래시 개수 설정 QA 완료 | 핀/최근 상한 적용 후 `/` 팔레트 정렬과 실행 경로를 회귀 점검하고 `ChatWindowSlashPolicyTests` 39개를 통과하여 동작 안정성을 확인 |
|
||||
| 슬래시 퀵관리/권한 키보드 보강 | `/` 팔레트 헤더에 `정리/전체 접기·펼치기`를 추가하고, 권한 팝업에 `Tab/Enter/Esc` 중심 키보드 조작(항목 선택·섹션 토글·닫기)을 보강 |
|
||||
| 슬래시/권한 접근성 완성도 보강 | `/` 팔레트에 `모두 접힘` 안내와 섹션 상태 라벨을 추가하고, 권한 팝업 오픈 시 첫 포커스 이동/Enter·Space 선택/ESC 닫기를 보강해 키보드 사용성을 개선 |
|
||||
| 설정 즉시 반영 가시성 보강 | AX Agent 설정의 슬래시 핀/최근 상한 항목에 `저장 후 즉시 반영` 안내를 추가해 조작 결과를 명확히 인지하도록 정리 |
|
||||
| 회귀 패키지 통과 | 전체 테스트 436개 통과로 슬래시/권한/설정 저장 경로 변경 후 회귀 안정성 확보 |
|
||||
| 슬래시 탐색 입력 확장 | `/` 팝업에서 휠/방향키 외에 `PageUp/PageDown/Home/End` 이동을 추가하고 고해상도 휠 델타를 단계 이동으로 보정해 스크롤 사용성을 개선 |
|
||||
| 모델 빠른설정 단일 라인 강화 | 입력창 상단 모델 버튼을 AX Agent 내부 빠른 설정 토글로 전환하고, 모델/프리셋 버튼 높이와 패딩을 정돈해 Codex/Claude형 단일 라인 흐름에 맞춤 |
|
||||
| UI 점검 체크리스트 추가 | 내부/사외 모드 포함 UI 회귀 점검 문서를 `docs/UI_UX_CHECKLIST.md`로 추가해 시나리오 기반 검증 기준을 명문화 |
|
||||
| 권한 모드 표면 통일 | 권한 표시 명칭을 `활용하지 않음/소극 활용/적극 활용/계획 중심/완전 자동/질문 없이 진행`으로 통일하고 팝업 선택 순서를 동일 체계로 재정렬 |
|
||||
| 권한 기본 동작/순환 보강 | Chat 탭 기본 권한을 `활용하지 않음`으로 적용하고, `/sandbox-toggle` 및 AX Agent 설정 권한 순환을 같은 순서(`활용하지 않음→소극→적극→계획→완전 자동→질문 없이 진행`)로 맞춤 |
|
||||
| 운영 모드 회귀 점검 강화 | `OperationModePolicyTests`, `OperationModeReadinessTests`, `LlmOperationModeTests` 필터 테스트(18건)를 통과해 internal/external 차단·허용 경로를 재검증 |
|
||||
| 권한 팝업 밀도 재정돈 | 권한 섹션 헤더/카드/행의 패딩·폰트·줄간격을 조정해 과밀 영역을 완화하고 Codex/Claude형 스캔 속도에 맞춤 |
|
||||
| 좌측/컴포저 라벨 정리 | 좌측 기본 카테고리 라벨을 `주제 선택/작업 선택`으로 통일하고, 입력 상단 바 패딩·간격을 미세 조정해 단일 라인 정돈 강화 |
|
||||
| 체크리스트 실행 결과 기록 | `docs/UI_UX_CHECKLIST.md`에 2026-04-04 12:22 기준 점검 결과(운영모드 필터 18건 + 전체 436건 통과)를 기록 |
|
||||
| 권한 상태 표시 간소화 | 권한 상태 텍스트(`/permissions`, `/allowed-tools`)를 운영 모드 포함 축약형으로 정리하고 권한 버튼 툴팁에 동일 정보를 반영 |
|
||||
| 설정창 외부 진입 안정화 | AX Agent 설정창 오픈 시 리소스 병합 실패를 방어하고, 외부 진입 경로를 Dispatcher 기반으로 안정화 |
|
||||
| 모델 라벨 반응형 보강 | 컴포저 상단 모델 라벨에 말줄임(`MaxWidth` + `CharacterEllipsis`)을 적용해 좁은 폭에서 레이아웃 깨짐을 방지 |
|
||||
| 슬래시 탐색 순서 정합화 | `/` 팝업의 방향키/휠/Home/End 이동 기준을 렌더 순서(핀/최근 정렬 적용 순서)로 통일해 스크롤·선택 체감 불일치를 해소 |
|
||||
| 권한 요청창 한국어/인코딩 복구 | `PermissionRequestWindow`의 깨진 문자열을 복구하고 권한 선택/위험도/미리보기 문구를 한국어 기준으로 정리 |
|
||||
| slash 명령 카탈로그 분리 | `ChatWindow` 내부 대형 slash 사전을 `SlashCommandCatalog`로 분리해 입력 계층 결합도를 낮추고 유지보수 범위를 축소 |
|
||||
| slash 조회 API 전환 | 내장 slash 매칭/조회 경로를 `SlashCommandCatalog.MatchBuiltinCommands`/`TryGetEntry`로 통일 |
|
||||
| 권한 표시 카탈로그 분리 | 권한 모드 라벨/설명/아이콘/색을 `PermissionModePresentationCatalog`로 분리해 팝업 표면 기준을 단일화 |
|
||||
| 탭별 설정 해석기 도입 | `AgentTabSettingsResolver`를 추가해 Cowork/Code 분기(검증 활성/Code 전용 도구 비활성)를 단일 경로로 정리 |
|
||||
| L4 통합 회귀 보강 | `PermissionModeCatalogTests`/`PermissionModePresentationCatalogTests`/`SlashCommandCatalogTests`를 추가하고 deny 우선 규칙을 `OperationModePolicyTests`에 반영해 권한·슬래시 회귀망을 강화 |
|
||||
| 권한 팝업 핵심 4모드 정렬 | 권한 팝업을 `소극 활용/적극 활용/계획 중심/완전 자동` 중심으로 단순화하고 `활용하지 않음/질문 없이 진행`은 `고급 모드` 접힘 섹션으로 분리 |
|
||||
| slash 스크롤 체감 개선 | 휠/방향키 이동 시 전체 재렌더링을 제거하고 선택 하이라이트만 갱신하도록 바꿔 `/` 팝업 스크롤 반응성과 안정성을 개선 |
|
||||
| slash 팝업 밀도 압축 2단계 | `/` 팝업 폭/높이/패딩과 항목 폰트/행 높이를 축소해 Codex형 컴팩트 밀도와 스캔 속도를 강화 |
|
||||
| 권한 팝업 밀도 압축 2단계 | 권한 팝업의 섹션/요약/예외/거부 카드와 권한 행 타이포를 압축해 슬래시 팝업과 동일한 컴팩트 리듬으로 정렬 |
|
||||
| 입력 하단/모델 선택 컴팩트 정렬 | 입력 박스·모델 선택 버튼·인라인 설정 패널·전송 버튼 크기를 축소해 Codex형 컴포저 밀도로 정렬 |
|
||||
| 로직 안정화 회귀 보강 | `ContextCondenserTests`와 `LlmRuntimeOverrideTests`를 보강해 compact 실동작과 vLLM 암호화 API키/SSL 우회 해석 규칙을 회귀 검증 |
|
||||
| 권한 패턴 구문 호환성 보강 | 권한 규칙 파서를 `tool@pattern` 외 `tool|pattern`, `tool(pattern)`도 해석하도록 확장하고 deny→allow 우선순위 회귀를 보강 |
|
||||
| 권한 모드 별칭 정합 보강 | `/permissions`, `/allowed-tools`에서 `none/passive/active/planning/fullauto/silent` 별칭을 지원하고 카탈로그 정규화와 일치시킴 |
|
||||
| 권한 기본값 정책 정렬 | 신규/초기 상태의 기본 권한을 `활용하지 않음(Deny)`으로 변경하고 AppState 기본/요약 상태와 slash 사용 가이드를 동일 체계로 정렬 |
|
||||
| 탭 전환 빈 대화 누적 방지 | 탭 전환 중 생성되는 무의미한 빈 대화를 저장 대상에서 제외하고, 목록에서도 빈 노이즈 항목을 숨겨 이력 누적 체감 버그를 완화 |
|
||||
| 권한 팝업 즉시반영 정렬 | 권한 팝업에 `활용하지 않음`을 핵심 영역 맨 위에 배치하고, 대화 권한이 없을 때도 탭 기본값(Deny/DefaultAgentPermission)을 즉시 반영하도록 로딩 경로를 보강 |
|
||||
| 권한 색상 체계 통일 | 권한 요약 카드/상단 배너에서 모드별 색상(Deny=녹색, Passive=파랑, Active=녹색, Plan=보라, FullAuto=주황, Silent=빨강)을 팝업 체계와 일치시킴 |
|
||||
| 슬래시 네비게이션 입력 보강 | InputBox 포커스 상태에서도 방향키/Page/Home/End/Tab이 슬래시 목록 탐색에 즉시 반영되도록 키 처리 경로를 통합하고, 모든 그룹 접힘 상태에서 휠 스크롤 fallback을 추가 |
|
||||
| 사내/사외 모드 회귀 보강 | operationMode 전환 직후 WebSearch 동작 반영과 URL 판별 경계(HTTP/파일/mailto) 테스트를 추가해 내부 차단 정책의 즉시성/정확성을 강화 |
|
||||
| AX Agent 설정창 오픈 안정화 | `ToggleSwitch`를 전역 리소스로 승격해 AX Agent 창 초기화 시 리소스 누락 예외를 방지하고, AX Agent 설정창에는 테마 사전만 안전 주입하도록 오픈 경로를 보강 |
|
||||
| 권한 순환/슬래시 스크롤 체감 보강 | `claw-code` 기준으로 권한 순환에서 고위험 `질문 없이 진행`을 기본 순환에서 분리하고, `/` 팝업 휠 스크롤 시 뷰포트 기준 선택 동기화를 추가해 스크롤 사용성을 개선 |
|
||||
| 권한 팝업 상세영역 단순화 | 권한 팝업의 `요약/예외/최근거부`를 개별 섹션에서 단일 `상세 정보` 섹션으로 통합해 기본 화면 밀도를 낮추고 핵심 모드 선택 흐름을 우선화 |
|
||||
| 권한 팝업 밀도/정렬 미세조정 | 권한 행의 패딩·폰트·아이콘·체크마크 간격을 컴팩트하게 재정렬하고 요약 카드 타이포를 축소해 `claw-code` 스타일의 빠른 스캔 밀도를 강화 |
|
||||
| Slash palette 상태 분리 시작 | `ChatWindow`에 몰려 있던 slash 상태를 `SlashPaletteState`로 분리해 이후 Codex/Claude형 composer 개편 기반 마련 |
|
||||
| 런처 이미지 미리보기 추가 | `#` 클립보드 이미지 항목에서 `Shift+Enter`로 전용 미리보기 창을 열고, 줌·원본 해상도 확인·PNG/JPEG/BMP 저장·클립보드 복사를 지원 |
|
||||
| AX Agent 모델 선택 단순화 | AX Agent 서비스 설정에서 내부 서비스 모델 선택을 등록 모델 칩 중심으로 고정하고, 채팅 오버레이/보조 설정창의 숨은 모델 텍스트 입력 의존을 제거 |
|
||||
| vLLM SSL 위치 정리 | 전역 서비스 설정/채팅 오버레이에서 vLLM SSL 우회 노출을 걷어내고, 모델 등록/편집 다이얼로그에서만 모델별로 설정하도록 정리 |
|
||||
| 검증 | `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 |
|
||||
| 검증 | `dotnet build` 경고 0 / 오류 0, `dotnet test` 436 passed / 0 failed |
|
||||
|
||||
자세한 내용은 [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)의 "v1.6 3차 전체 점검 수정" 섹션을 참고하세요.
|
||||
자세한 내용은 [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)의 `v0.7.3` 항목을 참고하세요.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 최근 추가 작업
|
||||
|
||||
- 업데이트: 2026-04-04 23:57 (KST)
|
||||
- Git 브랜치 패널 상단에 검색 입력을 추가해 많은 브랜치도 바로 필터링하고 전환할 수 있게 했습니다.
|
||||
- 브랜치 전환 섹션은 검색 중 표시 수 / 전체 수를 함께 보여주도록 보강했습니다.
|
||||
|
||||
- 업데이트: 2026-04-04 23:49 (KST)
|
||||
- AX Agent 서비스/권한 탭의 주요 선택 항목을 기본 ComboBox 대신 카드형 라디오 선택으로 바꿔 같은 선택 언어로 통일했습니다.
|
||||
- 워크스페이스 패널은 최근/전체 섹션 개수와 현재 선택 강조를 추가해 현재 위치를 더 바로 읽을 수 있게 했습니다.
|
||||
|
||||
- 업데이트: 2026-04-04 23:41 (KST)
|
||||
- Chat/Cowork/Code 빈 화면의 세로 기준점을 통일하고, 설명 블록과 프리셋 카드 영역 시작 위치가 같은 리듬으로 보이도록 정리했습니다.
|
||||
- 프리셋 카드/기타/추가 카드의 외곽 마진과 내부 패딩을 맞춰 중앙 정렬 상태에서도 행 간격이 더 균일하게 보이도록 보정했습니다.
|
||||
|
||||
- 업데이트: 2026-04-04 23:33 (KST)
|
||||
- AX Agent 공통 설정에 표현 수준을 직접 조정하는 행을 추가하고, 저장된 표현 수준이 설정 창에서 그대로 유지되도록 초기화 경로를 바로잡았습니다.
|
||||
- Code 탭 하단 바는 로컬 / 브랜치 / 워크트리 흐름을 우선으로 재정리하고, Code 전용 파일/로그 버튼은 제거해 더 단순한 작업 전환 구조로 맞췄습니다.
|
||||
|
||||
- 업데이트: 2026-04-04 23:20 (KST)
|
||||
- AX Agent 설정의 고급/서비스/권한 행 간격을 더 넓히고, 서비스 탭과 권한 탭의 주요 설정 행을 같은
|
||||
ow + toggle 시각 언어로 통일했습니다.
|
||||
- 워크스페이스 선택 팝업은 제목 + 검색 + 내부 스크롤 구조를 가진 검색 가능한 프로젝트 선택 패널로 다듬었습니다.
|
||||
- 업데이트: 2026-04-04 23:08 (KST)
|
||||
- 설정 서브탭 외곽선을 제거하고 배경 강조 중심의 더 얇은 탭 정렬로 정리했습니다.
|
||||
- Cowork/Code 상단 필터와 좌측 메뉴를 워크스페이스 목록 기반으로 전환했습니다.
|
||||
- 사이드바 검색을 평시 액션 행 + 인라인 확장 검색 흐름으로 바꾸고, Ctrl+K 단축키를 연결했습니다.
|
||||
- 좌측 대화 목록을 오늘 / 어제 / 이전 날짜 그룹으로 정리했습니다.
|
||||
- AX Agent 고급 설정의 켜기/끄기 버튼을 단일 토글 스위치로 교체했습니다.
|
||||
- 좌측 상단 액션 줄은 새 대화 / 검색의 같은 리스트형 행으로 통일하고 예약됨/Dispatch 성격의 항목은 노출하지 않도록 정리했습니다.
|
||||
- 워크스페이스 선택 팝업은 검색 가능한 패널형으로 재구성했습니다.
|
||||
- Code 탭 하단 바는 언어 선택 대신 로컬 / 워크트리 중심 흐름으로 바꾸고, Git 저장소에서는 `git worktree add`, 일반 폴더에서는 복사본 워크스페이스 전환을 지원하도록 연결했습니다.
|
||||
- 메인 설정에 남아 있던 `AI 기능 활성화`, `운영 모드`, `자동 모델 라우팅` 성격의 AX Agent 관련 항목은 AX Agent 탭 중심으로 재배치하고, 일반/기능 탭의 중복 노출을 숨겨 설정 통합 흐름을 정리했습니다.
|
||||
- AX Agent 서브탭은 `공통 / 서비스 / 권한 / 고급` 4개 중심으로 단순화하고, 공통 패널 내부를 기본 상태/서비스/공통 런타임 묶음으로 나눠 같은 시각 언어와 간격으로 다시 정리했습니다.
|
||||
- 기능 탭의 과한 AI 표현은 `텍스트/파일`, `선택 텍스트 명령`, `코드 리뷰` 등 사용자 기준 문구로 낮췄습니다.
|
||||
- 워크스페이스 선택 패널은 `최근 워크스페이스 / 전체 워크스페이스` 섹션형으로 재구성했고, Code 하단 브랜치 선택 패널도 worktree 메뉴와 같은 설명형 row 언어로 통일했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-04 23:59 (KST)
|
||||
- AX Agent 공통 탭의 운영 모드, 최대 컨텍스트 토큰, 대화 보관 기간 선택을 카드형/칩형 선택으로 교체해 공통/서비스/권한/고급 전 영역의 선택 언어를 더 강하게 통일했습니다.
|
||||
- AX Agent 고급 탭의 실행 이력 상세도도 간략/상세/디버그 카드형 선택으로 전환해 남아 있던 기본 WPF ComboBox 흔적을 줄였습니다.
|
||||
- Git 브랜치 패널에는 최근 전환 브랜치 섹션을 추가해 자주 오가는 브랜치를 검색 전에 바로 전환할 수 있게 보강했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:10 (KST)
|
||||
- Enter 입력을 기본 DraftQueue 경로로 승격하고, Ctrl+Enter/전송 버튼/초기 전송/재실행/후속 작업도 같은 큐 흐름을 타도록 정리했습니다.
|
||||
- DraftQueue는 메시지/명령/직접 실행/후속 작업/조정 kind를 보존하도록 확장했고, Code 탭 작업 위치 패널은 워크트리/복사본 전환 흐름 중심으로 재구성했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:28 (KST)
|
||||
- DraftQueue 카드를 실행 대기/최근 결과 섹션형으로 재구성하고, 상태·우선순위·종류 배지와 아이콘을 추가해 큐 상태를 더 빠르게 파악할 수 있게 했습니다.
|
||||
- 워크스페이스/브랜치/워크트리 패널은 같은 Popup row 규칙으로 맞추고, composer 최대 폭 확장과 하단 칩형 상태줄 정리로 Code/Cowork 하단 리듬을 더 가볍게 다듬었습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
|
||||
- 업데이트: 2026-04-05 00:38 (KST)
|
||||
- DraftQueue 패널 상단에 실행 중 / 다음 / 보류 / 완료 / 실패 요약 pill을 추가하고, composer 상단의 모델/컨텍스트/프리셋 줄도 더 낮고 평평한 밀도로 정리했습니다.
|
||||
- 브랜치/워크트리 패널에는 공통 요약 strip을 추가해 현재 상태를 같은 시각 언어로 보여주도록 맞췄고, 저장소 루트 `.gitignore`에는 빌드 산출물·IDE 파일·OS 잡파일·비밀정보 패턴을 추가했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 07:17 (KST)
|
||||
- 별도 `AX Agent 설정` 창과 AX Agent 내부 설정 오버레이에서 `AX Agent 사용` 항목을 숨겨, 작업 중 자주 쓰지 않는 전역 AI 사용 토글이 설정 메뉴를 차지하지 않도록 정리했습니다.
|
||||
- 별도 `AX Agent 설정` 창에서는 `표현 수준` 선택 카드도 함께 숨겨 기본 탭 상단을 더 단순하게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 07:24 (KST)
|
||||
- `설정 > AX Agent`에만 남아 있던 스킬 목록을 별도 `AX Agent 설정` 창 안 `스킬/차단` 탭으로 복구해, 현재 로드된 슬래시 스킬을 내장/고급 그룹으로 다시 확인할 수 있게 했습니다.
|
||||
- 별도 `AX Agent 설정` 창은 저장 시 스킬 폴더 기준으로 다시 로드해 목록이 바로 갱신되도록 연결했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-04 23:23 (KST)
|
||||
- AX Agent는 이제 설정 서비스 변경 이벤트를 직접 구독해 메인 설정, AX Agent 설정, 저장 경로와 관계없이 테마/권한/데이터 활용/모델 라벨/composer/대기열 UI를 즉시 다시 읽어오도록 fan-out 경로를 통합했습니다.
|
||||
- AX Agent 설정 저장 경로에서 표현 수준을 `rich`로 고정 덮어쓰던 처리도 제거해, 사용자가 선택한 `풍부하게 / 적절하게 / 간단하게` 값이 다른 설정 저장 흐름에서도 유지되도록 보정했습니다.
|
||||
- DraftQueue 패널은 실행 중 / 다음 작업 / 보류 / 완료 / 실패를 개별 섹션으로 나눠 현재 실행 상태와 최근 결과를 더 빠르게 파악할 수 있도록 재구성했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-04 23:28 (KST)
|
||||
- AX Agent 하단 컨텍스트 카드 툴팁에 최근 압축 이력을 추가해 마지막 자동/수동 compact 시각, 압축 전후 토큰, 실제 절감량을 다시 확인할 수 있게 했습니다.
|
||||
- 수동 `/compact` 실행과 전송 전 자동 컨텍스트 압축 모두 같은 compaction 통계 경로를 타도록 맞춰, compact 결과를 일회성 토스트가 아니라 이후 UI에서도 계속 확인할 수 있도록 보강했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 07:39 (KST)
|
||||
- `Agent Compare`의 트레이 메뉴 경로와 현재 구현을 대조해, 우클릭 메뉴가 열릴 때마다 `Show + UpdateLayout`로 창 크기를 다시 확정하던 흐름을 제거하고 메뉴 크기 측정값을 캐시하도록 바꿨습니다.
|
||||
- 앱 유휴 시점에 트레이 메뉴를 미리 측정해 첫 우클릭에서 초기 레이아웃 비용이 몰리지 않도록 조정했고, AI 항목 가시성처럼 열기 직전 바뀌는 항목만 크기 캐시를 다시 계산하도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 07:45 (KST)
|
||||
- AX Agent 내부 설정 오버레이의 `뒤로가기` 버튼을 오른쪽 본문 헤더에서 제거하고, 왼쪽 설정 제목 영역에 화살표와 함께 합쳐 배치해 설정 패널 접기/닫기와 혼동되지 않도록 정리했습니다.
|
||||
- 본문 스크롤 영역은 헤더 빈 줄 없이 바로 시작하도록 올려, 설정 화면 진입 시 첫 섹션이 더 자연스럽게 이어지도록 조정했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 07:49 (KST)
|
||||
- AX Agent 상단 좌측의 사이드바 접기 버튼을 기존 큰 아이콘형 고스트 버튼에서, Claude 계열처럼 작은 라운드 사각 안에 3줄 메뉴가 들어간 얇은 토글 버튼으로 바꿨습니다.
|
||||
- 열림/닫힘 상태에서 글리프를 바꾸던 예전 처리도 제거해, 상단 바가 덜 요란하고 더 안정적인 작업형 헤더로 보이도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 07:54 (KST)
|
||||
- Chat 빈 화면의 상단 아이콘이 탭 메뉴 바와 가까워 보이던 배치를 내려, 빈 상태 헤더가 상단 메뉴와 겹쳐 보이지 않도록 여백을 조정했습니다.
|
||||
- Chat 탭에서는 하단의 컨텍스트/압축 카드가 보이지 않도록 분기해, 토큰 압축 UI는 Cowork/Code에서만 유지되게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:00 (KST)
|
||||
- 런처 하단에 남아 있던 색인 상태 문구를 점검한 결과, 인덱스 상태 표시와 토스트 오버레이가 같은 타이머를 공유해 자동 숨김이 꼬일 수 있는 구조를 확인했습니다.
|
||||
- [LauncherWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml.cs) 에서 토스트 타이머와 인덱스 상태 타이머를 분리하고, 인덱스 재구축 시작/완료 문구를 공통 `ShowIndexStatus(...)` 경로로 묶어 일정 시간 뒤 확실히 사라지도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:06 (KST)
|
||||
- AX Agent 내부 설정 오버레이에서 `Fast`, `의사결정 수준`, `실행 전 계획`, `권한 모드`, `기본 출력 형식`, `테마 스타일`, `운영 모드`, `폴더 데이터 활용`처럼 글자가 순환하던 버튼을 커스텀 콤보박스로 교체했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)에 오버레이 전용 `OverlayComboBox` 스타일과 각 항목용 콤보를 넣고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 선택 변경 시 기존 저장 흐름을 그대로 타도록 전용 핸들러를 연결했습니다.
|
||||
- 운영 모드처럼 보호가 필요한 항목은 콤보박스로 바뀐 뒤에도 기존 비밀번호 확인을 유지했고, 나머지 항목은 선택 즉시 AX Agent 내부 설정에 반영되도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:15 (KST)
|
||||
- 별도 `AX Agent 설정` 화면에서 `AX Agent 사용`, `표현 수준` 항목은 다시 보이지 않도록 정리했고, 내부 저장값은 `AI 사용 = 활성`, `표현 수준 = 풍부하게`로 고정되게 보정했습니다.
|
||||
- [AgentSettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml), [AgentSettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml.cs) 에서 해당 행을 숨기고 저장 시 강제로 켜진 상태와 `rich` 값을 유지하도록 맞췄습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:14 (KST)
|
||||
- 배포용 [build.bat](/E:/AX%20Copilot%20-%20Codex/build.bat)을 루트 절대 경로 기준으로 다시 작성해, 작업 폴더에 따라 `dist`, `payload.zip`, 인스톨러 복사 경로가 꼬이던 문제를 막았습니다.
|
||||
- 스크립트는 이제 `main app publish -> optional obfuscation check -> AxKeyEncryptor publish -> payload.zip 생성 -> installer build -> dist 정리` 순서로 고정 동작하고, 외부 난독화 도구가 없으면 `보호 미적용` 경고를 명확히 출력합니다.
|
||||
- 현재 레포에는 실제 난독화 도구 설정이 없어서, 배포본 보호 수준은 `PDB/XML/debug metadata 제거`까지이며 진짜 디컴파일 방지는 아직 미구성 상태임을 확인했습니다.
|
||||
- 검증: `cmd /c build.bat` 실행 기준 메인 앱 publish, 인스톨러 빌드, `dist\AxCopilot_Setup.exe` 복사까지 정상 완료
|
||||
- 업데이트: 2026-04-05 07:59 (KST)
|
||||
- `설정 > AX Agent > 공통`에서 계속 남아 있던 `AX Agent 사용`, `표현 수준` 행을 실제 메인 설정창 기준으로 다시 숨겼고, 표현 수준 값은 런타임 정규화와 설정 초기화 양쪽에서 `풍부하게(rich)`로 고정되도록 보정했습니다.
|
||||
- `설정 > 기능 > 응답 설정`을 포함한 `?` 도움말 툴팁은 라이트 테마에서도 글자가 사라지지 않도록 `HelpTooltipStyle` 배경을 고대비 다크 톤으로 바꾸고 텍스트 전경색을 흰색으로 강제했습니다.
|
||||
- `Agent Compare`와 비교해 빠져 있던 런처 `마지막 위치 기억` 설정을 복구하고, AX Commander가 숨겨질 때 마지막 좌표를 저장한 뒤 다음 표시 때 같은 위치를 복원하도록 연결했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||
- 업데이트: 2026-04-05 08:02 (KST)
|
||||
- AX Agent가 열리자마자 죽던 원인을 앱 로그로 확인했고, `ChatWindow`가 `HelpTooltipStyle`을 찾지 못해 `XamlParseException`이 발생하고 있었습니다.
|
||||
- [App.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/App.xaml)에 `HelpTooltipStyle`을 전역 리소스로 올려, AX Agent/설정/내부 오버레이가 모두 같은 도움말 툴팁 스타일을 공통으로 찾도록 수정했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:08 (KST)
|
||||
- `설정 > AX Agent`에 있던 도구/스킬 설명창이 내부 AX Agent 설정 오버레이에는 빠져 있던 상태를 보완해, [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 `도구`, `스킬/차단` 탭 상단에 설명 블록을 다시 넣었습니다.
|
||||
- `도구` 탭에는 훅 동작 흐름과 활용 예시, `스킬/차단` 탭에는 스킬 파일 구조, 기본 폴더 경로, MCP/폴백 모델/드래그 드롭 관리 범위를 안내하는 설명을 복구했고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 탭 전환 시 해당 설명창만 보이도록 연결했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 코워크 좌측 패널 상단 필터 메뉴는 동작이 이미 `작업 유형` 기준이었지만, 메뉴 라벨만 예전 `워크스페이스`로 남아 있던 부분을 `작업 유형`으로 수정했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `SidebarCoworkMenu` 라벨을 코워크 기준에 맞게 정리했고, Code 탭의 `워크스페이스` 라벨은 그대로 유지했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:18 (KST)
|
||||
- AX Agent 입력창에서 텍스트를 치면 입력 영역이 비정상적으로 길어지고, 입력 중 화면이 자주 번쩍이던 문제를 함께 수정했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 입력 행 `Grid.RowDefinition`을 `Auto`로 바꾸고 `InputBox`를 상단 정렬로 고정해, Code 탭에서 입력창이 남는 공간을 끌어먹으며 비대해지던 레이아웃 문제를 막았습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에는 `_inputUiRefreshTimer`를 추가해, 타이핑 중 매 글자마다 실행되던 `RefreshContextUsageVisual()`과 `RefreshDraftQueueUi()`를 짧게 디바운스해서 입력 중 깜빡임과 과한 리렌더를 줄였습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:24 (KST)
|
||||
- 모델 선택 팝업 하단에 중복으로 보이던 보조 UI도 정리했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 모델 리스트 아래 반복되던 `InlineModelChipPanel`은 숨기고, 맨 아래 `계획`, `권한` 빠른 버튼은 `Visibility="Collapsed"`로 내려 팝업 안 중복 제어를 제거했습니다.
|
||||
- 안내 문구도 `서비스, 모델, 추론을 여기서 바로 바꿉니다`로 맞춰, 이 팝업이 실제로 제공하는 항목만 설명하도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:28 (KST)
|
||||
- AX Agent 채팅 초기 프리셋 카드 영역의 세로 스크롤바도 항상 고정처럼 보이던 부분을 조정했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에 `TopicPresetScrollViewer` 이름을 부여하고 기본 상태를 `VerticalScrollBarVisibility="Disabled"`로 바꿔, 정상 크기에서는 스크롤바 여백이 먼저 보이지 않도록 했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `UpdateTopicPresetScrollMode()`를 추가해 프리셋 버튼 재구성 후와 창 크기 변경 시 `ExtentHeight`/`ViewportHeight`를 비교하고, 실제로 넘칠 때만 세로 스크롤을 `Auto`로 켜도록 했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:31 (KST)
|
||||
- AX Agent 입력창 위 `후속 요청` 카드에는 타이핑 중인 현재 입력을 미리 보여주지 않도록 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `RefreshDraftQueueUi()`에서 `DraftPreviewCard`를 상시 접고, 후속 요청은 실시간 입력 미리보기가 아니라 엔터로 실제 대기열에 들어간 뒤 아래 대기열 목록에만 반영되도록 바꿨습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:34 (KST)
|
||||
- AX Agent 빈 상태 프리셋 카드의 하단 글자가 잘리던 레이아웃도 보정했고, Code 탭에서는 프리셋 영역이 보이지 않도록 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `BuildTopicButtons()`에서 프리셋/기타/추가 카드 높이를 `116`으로 키우고 설명 `MaxHeight`도 늘려 카드 하단 텍스트가 잘리지 않게 했습니다.
|
||||
- 같은 메서드에서 Code 탭일 때는 `TopicButtonPanel`과 `TopicPresetScrollViewer`를 바로 숨기고, 빈 상태 문구도 `코드 작업을 입력하세요` 기준으로 바꿔 프리셋 기능이 안 보이도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:37 (KST)
|
||||
- AX Agent 내부 설정 오버레이의 콤보박스도 기본 WPF 형태 대신, `트레이 아이콘 → 설정` 쪽 커스텀 콤보 스타일을 기준으로 맞췄습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에 `OverlayComboBoxToggle`, `OverlayComboBox`, `OverlayComboBoxItem` 리소스를 추가하고, 서비스/모델 포함 오버레이 콤보들이 같은 토글 버튼형 드롭다운과 항목 호버 스타일을 쓰도록 바꿨습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:40 (KST)
|
||||
- AX Agent 내부 설정 오버레이에도 메인 설정처럼 `?` 도움말 배지를 복구해, 항목별 상세 설명을 마우스 오버로 바로 볼 수 있게 했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에 `OverlayHelpBadge` 스타일을 추가하고, `서비스`, `모델`, `기본 서버 주소`, `API 키`, `테마 스타일`, `테마 모드`, `문서 형태`, `디자인 스타일`, `운영 모드`, `폴더 데이터 활용`, `압축 시작 한도`, `최대 컨텍스트 토큰`, `오류 재시도`, `최대 Agent Pass`에 각각 개별 툴팁 설명을 연결했습니다.
|
||||
- 같은 파일의 고급/개발자 영역에도 `자동 대화 압축`, `확장 스킬 사용`, `실행 전후 자동 확장`, `입력 보정 반영`, `권한 변경 반영`, `Cowork 결과 검토`, `Code 결과 검토`, `도구 병렬 실행`, `프로젝트 규칙 자동 반영`, `에이전트 메모리 사용`, `Plan/Worktree/Team/Cron 도구` 항목별 `?` 설명을 추가해 AX Agent 내부 설정만 보고도 역할을 바로 이해할 수 있게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:43 (KST)
|
||||
- AX Agent 내부 설정 오버레이의 탭 구조를 예전 버전 기준으로 다시 확장했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 좌측 네비를 `공통 / 채팅 / 코워크/코드 / 코워크 / 코드 / 개발자 / 도구 / 스킬/차단`으로 복구하고, `스킬/차단` 탭 안에 `차단 경로 패턴`, `차단 확장자`, `스킬 설정`, `로드된 스킬`, `폴백 모델`, `MCP 서버`, `등록된 도구/커넥터` 패널을 다시 배치했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에는 오버레이 전용 `RefreshOverlayEtcPanels()`, 차단 목록 렌더링, 스킬 목록 렌더링, 폴백 모델 요약, MCP 서버 카드, 도구 레지스트리 목록 빌더를 추가하고, `코워크/코드` 공통 탭 분기와 `슬래시 팝업 표시 개수`, 드래그앤드롭 AI 액션 저장 경로도 연결했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:51 (KST)
|
||||
- AX Agent 창 우측 상단의 최소화/최대화/닫기 버튼도 사용자 가이드 상단바 쪽과 비슷한 밀도로 다시 정리했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에 `TitleBarActionButton`, `TitleBarCloseButton` 스타일을 추가해 버튼 크기를 `40x40`으로 키우고, 간격을 넓히고, 마우스 오버 시 살짝 커지는 스케일 애니메이션과 배경 피드백이 보이도록 조정했습니다.
|
||||
- 같은 위치에서 AX Agent 상단 창 버튼 3개가 일반 `GhostBtn` 대신 새 타이틀바 전용 스타일을 쓰도록 바꿔, 아이콘 크기와 클릭 영역이 더 명확하게 보이도록 맞췄습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 08:54 (KST)
|
||||
- AX Agent의 Chat/Cowork/Code 탭이 서로 다른 폭으로 보이던 채팅 본문/입력 영역 레이아웃도 공통 폭 기준으로 다시 맞췄습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 빈 상태 영역과 하단 컴포저 래퍼를 `HorizontalAlignment="Stretch"` 기준으로 바꾸고 `MaxWidth`를 `1280`으로 통일해, 탭별 내용물 길이에 따라 입력창이 좁아지지 않게 조정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `GetMessageMaxWidth()`도 새 `ComposerShell` 폭을 우선 기준으로 쓰도록 바꿔, Chat/Cowork/Code 메시지 카드와 스트리밍 컨테이너가 같은 레이아웃 폭 안에서 렌더되도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 09:02 (KST)
|
||||
- AX Agent가 시작 직후 `System.Windows.FrameworkElement.Style` 예외로 죽던 문제도 함께 수정했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `OverlayComboBox` 스타일이 뒤에서 선언된 `OverlayComboBoxItem`을 `StaticResource`로 먼저 참조하고 있어 런타임에 `MS.Internal.NamedObject` 캐스팅 예외가 발생했는데, 이를 `DynamicResource`로 바꿔 창 초기화가 정상 진행되도록 복구했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 09:06 (KST)
|
||||
- `build.bat` 실행 시 AX Copilot이 켜져 있으면 애매하게 종료되거나 publish가 꼬이던 흐름도 정리했습니다.
|
||||
- [build.bat](/E:/AX%20Copilot%20-%20Codex/build.bat) 의 프로세스 정리 루틴을 `taskkill` 1회 호출에서 `정상 종료 시도 → taskkill /T /F → 실제 종료 확인` 순서로 바꾸고, 종료되지 않으면 빌드를 즉시 실패시키도록 수정했습니다.
|
||||
- 특히 현재 배치 권한보다 높은 권한으로 AX Copilot이 떠 있는 경우에는 무리하게 진행하지 않고 `Access may be denied or the app may be running with higher privileges.` 메시지로 원인을 바로 알 수 있게 했습니다.
|
||||
- 검증: `cmd /c build.bat` 실행 시, 실행 중인 AX Copilot 프로세스가 권한 문제로 종료되지 않을 때 즉시 실패 처리 확인
|
||||
- 업데이트: 2026-04-05 09:13 (KST)
|
||||
- AX Agent 내부 설정의 `도구` / `스킬·차단` 탭도 메인 설정에 남아 있던 세부 항목을 더 흡수하고, 목록이 너무 길던 부분을 접기/펼치기 구조로 다시 정리했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 `도구` 탭에 훅 실행 타임아웃, 등록된 훅 목록, 훅 추가/편집/삭제 UI를 AX Agent 내부 설정으로 옮겼고, `스킬/차단` 탭에는 스킬 폴더 선택/열기, 슬래시 핀 최대 개수, 슬래시 최근 최대 개수까지 같이 옮겼습니다.
|
||||
- 스킬 목록은 `/스킬명` 형식으로 표기를 바꾸고 설명은 기존 한국어 설명을 유지했으며, `직접 호출 / 자동·조건부 / 현재 사용 불가` 섹션으로 접기/펼치기 형태로 나눴습니다. 도구 목록도 카테고리별 접기/펼치기로 바꿔 한 번에 너무 길게 보이지 않게 정리했습니다.
|
||||
- 남아 있던 AX Agent 전용 잔여 설정 중 `PDF 내보내기 기본 경로`, `이미지 입력 활성화`, `코드 리뷰 도구 활성화`도 내부 설정의 `채팅`/`코드` 탭에 재배치해 메인 설정 의존을 줄였습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 09:27 (KST)
|
||||
- AX Agent 내부 설정의 `개발자` 탭에도 메인 설정에 남아 있던 잔여 운영 항목을 더 흡수해, 실행 이력과 감사/병렬 관련 설정을 오버레이 안에서 바로 조정할 수 있게 했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에 `호출 간 딜레이(초)`, `서브에이전트 최대 수`, `실행 이력 상세도`, `계획 diff 심각도(개수/비율)`, `워크플로우 시각화`, `전체 호출·토큰 합계 표시`, `감사 로그`, `감사 로그 폴더 열기` 행을 추가해 `개발자` 탭 안에서 한 번에 볼 수 있도록 재배치했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 해당 값들의 로드/저장/즉시 반영 경로를 AX Agent 오버레이 저장 흐름에 연결하고, `실행 이력 상세도` 콤보, 숫자 입력 검증, 감사 로그 폴더 열기 동작도 함께 붙였습니다.
|
||||
- 이 변경으로 AX Agent 내부 설정은 `채팅 / 코워크/코드 / 코워크 / 코드 / 개발자 / 도구 / 스킬·차단` 탭 구조를 유지한 채, 메인 설정에 남아 있던 AX Agent 전용 세부값 상당수를 각 기능 탭으로 다시 분산 배치한 상태가 됐습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 09:38 (KST)
|
||||
- AX Agent 내부 설정의 공통/채팅/코워크 배치도 다시 정리했습니다.
|
||||
- [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 의 `ApplyAiEnabledState()`에서 메인 설정의 `AX Agent` 탭이 다시 살아나던 경로를 끊어, 일반 설정 화면에서는 AX Agent 탭이 더 이상 보이지 않게 했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 AX Agent 내부 설정의 `AX Agent 사용` 저장 경로를 제거하고 항상 활성 상태로 고정했으며, `서비스/모델`과 운영 모드를 `공통`으로, `문서 형태/디자인 스타일`을 `코워크`로 다시 배치했습니다.
|
||||
- 같은 위치에서 `최대 컨텍스트 토큰`, `압축 시작 한도(%)`는 숫자 입력 대신 `4K / 16K / 64K / 256K / 1M`, `60 / 70 / 80 / 90%` 프리셋 버튼으로 고를 수 있게 바꾸고 내부 설정 저장과 즉시 반영을 연결했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 09:54 (KST)
|
||||
- 메인 설정의 `AX Agent` 탭에 남아 있던 `표현 수준` 행도 [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml) 에서 숨겨, 일반 설정 화면에서 더 이상 보이지 않게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 09:56 (KST)
|
||||
- AX Agent 채팅 입력창이 입력할수록 과하게 커지고 가로폭도 창 너비를 과도하게 채우던 레이아웃을 고정 폭 기준으로 다시 정리했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `ComposerShell`을 `Center + Width/MaxWidth 640` 기준으로 바꿔, 입력 박스가 창 너비 전체를 계속 먹지 않도록 조정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `ApplyExpressionLevelUi()`에서 입력창 최대 높이도 `rich 120 / balanced 108 / simple 96`으로 낮춰, 여러 줄 입력 시에도 이전처럼 과하게 길어지지 않게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 09:58 (KST)
|
||||
- AX Agent Chat 탭에서 Gemini 사용 시 빈 응답/진행 중 멈춤처럼 보이던 현상도 보정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 일반 전송/재생성 흐름에서 Gemini는 스트리밍 대신 비스트리밍 `SendAsync()` 경로를 사용하도록 바꿔, 스트리밍 파싱 문제로 빈 컨테이너만 남는 상황을 우회했습니다.
|
||||
- 같은 파일에서 메시지 버블 최대폭 계산도 `320~720` 범위로 다시 맞추고, 스트리밍 종료 시 내용이 비어 있으면 `(빈 응답)` 기본 문구로 치환해 완전히 빈 말풍선이 남지 않게 했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:02 (KST)
|
||||
- AX Agent 채팅창에서 입력 내용이 거의 없는데도 컴포저 높이가 계속 커지고, 빈 assistant 말풍선이 대화 목록에 남는 현상도 추가로 보정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `UpdateInputBoxHeight()`를 추가해 입력창 높이를 실제 줄 수 기준으로 `MinHeight~MaxHeight` 범위에서 직접 고정하고, 넘칠 때만 내부 스크롤이 나오게 바꿨습니다.
|
||||
- 같은 파일의 `RenderMessages()`에서는 내용이 비어 있는 assistant 메시지를 렌더 대상에서 제외하고, 일반 전송/재생성 완료 직전 `assistantMsg.Content`가 비어 있으면 `(빈 응답)`으로 먼저 확정해 저장/재렌더 때도 빈 카드가 남지 않게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:10 (KST)
|
||||
- AX Agent 내부 설정의 `채팅` 탭에 잘못 들어가 있던 `테마 스타일`, `테마 모드` 블록도 제거했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 채팅 설정 섹션의 중복 테마 UI를 삭제해, 채팅 탭에는 실제 채팅 관련 항목만 남도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:12 (KST)
|
||||
- AX Agent 내부 설정의 `공통` 탭에도 메인 설정에만 있던 `등록 모델 관리`를 추가했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 사내 서비스(`Ollama`, `vLLM`) 선택 시 `모델 추가`, `편집`, `삭제`, `선택`이 가능한 등록 모델 관리 패널을 내부 설정 안에 붙였습니다.
|
||||
- 메인 설정에서 쓰던 [ModelRegistrationDialog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ModelRegistrationDialog.cs) 흐름을 그대로 연결해, 내부 설정에서 추가한 모델도 기존 `RegisteredModels` 저장 경로와 동일하게 저장되도록 맞췄습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:16 (KST)
|
||||
- AX Agent 내부 설정의 `압축 시작 한도(%)`도 분류를 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 해당 행(`OverlayAnchorAdvanced`)이 `코워크/코드 공통` 탭에서만 보이도록 바꿔, 개발자/도구/스킬 탭에 섞여 나오지 않게 조정했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:19 (KST)
|
||||
- AX Agent 내부 설정 탭의 제목/설명 위치도 본문 최상단으로 정리했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 상단 전용 헤더를 추가해 `공통 설정` 같은 탭 제목과 설명이 먼저 보이게 했고, 아래쪽 중복 헤더는 숨겼습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:27 (KST)
|
||||
- Chat 탭에서 엔터 전송 뒤 입력창 높이가 계속 커지고, 토큰은 집계되는데 assistant 메시지가 화면에 안 보이던 문제도 같이 보정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `UpdateInputBoxHeight()`를 조정해 Chat 탭은 입력창 높이를 고정으로 유지하고, Cowork/Code만 명시적 줄 수 기준으로 높이를 늘리게 바꿨습니다.
|
||||
- 같은 파일에 `SyncLatestAssistantMessage(...)`를 추가하고 응답 완료 뒤 `RenderMessages(preserveViewport: true)`를 다시 태우도록 바꿔, 응답 토큰은 들어왔는데 저장된 assistant 메시지가 비어 보여 렌더가 사라지던 상태를 끊었습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:35 (KST)
|
||||
- 메인 설정에 남아 있던 AX Agent 진입 흐름을 정리하고, 일반 설정 하단에서 AX Agent 내부 설정을 바로 여는 전용 바로가기를 추가했습니다.
|
||||
- [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml) 의 일반 탭 하단에 `AX Agent 설정 바로가기` 카드를 추가해, 설정창 안에서 바로 AX Agent 채팅창과 내부 설정 오버레이를 열 수 있게 했습니다.
|
||||
- [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 에서 메인 설정의 표시 대상 목록에서 `AX Agent` 탭을 제외하고, 기존 AX Agent 바로가기 버튼도 탭 전환이 아니라 `App.OpenAgentSettingsInChat()` 경로를 타도록 바꿔 메인 설정 잔여 진입을 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:41 (KST)
|
||||
- AX Agent Chat 탭의 입력창 높이 규칙도 다시 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `UpdateInputBoxHeight()`에서 `Chat` 탭만 높이를 고정하던 분기를 제거해, 이제 `Chat / Cowork / Code` 모두 실제 줄바꿈 문자(`Shift+Enter`)가 있을 때만 높이가 늘어나고 일반 입력/전송만으로는 커지지 않게 맞췄습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:48 (KST)
|
||||
- 메인 설정 안에 숨어 있던 AX Agent 옛 UI 잔재 1차도 걷어냈습니다.
|
||||
- [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml) 에서 일반 탭 상단의 숨김 `AI 기능`, `운영 모드` 블록과 하단 공용 버튼 바의 중복 `AX Agent 설정` 버튼을 제거해, 메인 설정 내부에 남아 있던 보이지 않는 AX Agent 진입 잔재를 줄였습니다.
|
||||
- [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 의 `ApplyAiEnabledState()`와 `ApplyOperationModeState()`도 이에 맞춰 숨김 컨트롤 동기화 코드를 걷어내고, 메인 설정에서는 더 이상 그 컨트롤들을 전제로 동작하지 않게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:02 (KST)
|
||||
- AX Agent 채팅/코워크/코드 전송 안정화도 같이 보정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 `InputBox.Text`를 비우거나 대기열 메시지를 다시 넣는 지점마다 `UpdateInputBoxHeight()`를 즉시 호출하도록 바꿔, 전송 뒤 입력창 높이가 남은 상태로 계속 커져 보이던 문제를 줄였습니다.
|
||||
- 같은 파일의 `SendMessageAsync()`는 Chat 탭에서 스트리밍 대신 비스트리밍 응답을 우선 사용하도록 바꿔, 토큰은 집계되는데 본문이 비거나 늦게 반영되던 흐름을 안정화했습니다.
|
||||
- Cowork/Code 탭은 응답 완료 후 assistant 본문이 비어 있으면 최근 실행 이벤트 요약을 최종 응답으로 보강하고, `ShowExecutionHistory`를 기본적으로 내려 실행 로그 잔상이 본문을 덮어 보이지 않게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:08 (KST)
|
||||
- AX Agent 내부 설정의 `도구`, `스킬/차단` 탭 접기 카드도 처음엔 모두 닫힌 상태로 열리게 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 로드된 스킬 섹션, 등록 도구/커넥터 카테고리 섹션, 등록 훅 섹션의 `CreateOverlayCollapsibleSection(...)` 기본 확장값을 모두 `false`로 바꿔, 내부 설정 진입 시 긴 목록이 한꺼번에 펼쳐지지 않게 했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 10:23 (KST)
|
||||
- AX Agent 실행 경로를 `claw-code` 기준으로 한 단계 더 분리했습니다.
|
||||
- [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs) 에 프롬프트 스택 조합, 실행 모드 판정, 최종 assistant 메시지 커밋을 모았고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `SendMessageAsync()`는 이 엔진을 통해 `Chat / Cowork / Code` 전송 메시지를 준비하도록 정리했습니다.
|
||||
- 같은 파일에 `RunAgentLoopAsync(...)`를 추가해 Cowork/Code의 중복된 에이전트 루프 실행 분기를 한 경로로 합쳤고, 완료 알림과 이벤트 핸들러 해제도 같은 패턴으로 묶었습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:11 (KST)
|
||||
- AX Agent 입력창 높이 계산과 내부 설정 숫자 입력 방식도 다시 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `UpdateInputBoxHeight()`를 수동 `Height` 고정 방식에서 `MinLines / MaxLines` 기반 자동 높이 방식으로 바꿔, `Shift+Enter` 줄바꿈이 있을 때만 자연스럽게 늘어나고 빈 상태에서 높이가 누적돼 남는 현상을 줄였습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 `Temperature`, `오류 재시도`, `최대 Agent Pass`, `호출 간 딜레이`, `서브에이전트 최대 수`는 텍스트 입력 대신 슬라이더와 현재값 배지로 바꿨고, `Temperature`와 `최대 Agent Pass`는 개발자 탭에서만 보이도록 다시 분류했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:11 (KST)
|
||||
- 메인 설정에서 AX Agent 진입 위치도 좌측 사이드바로 옮겼습니다.
|
||||
- [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml) 의 일반 탭 맨 아래에 있던 `AX Agent 설정 바로가기` 카드는 제거하고, 좌측 `MainSettingsTab`에 `AX Agent` 전용 네비 항목을 추가했습니다.
|
||||
- [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 에서 이 새 사이드바 항목 선택 시 기존과 동일하게 AX Agent 채팅창과 내부 설정 오버레이를 바로 열도록 연결했고, 구형 숨김 탭만 가리도록 가시성 로직도 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:11 (KST)
|
||||
- AX Agent 내부 설정의 남아 있던 숫자 입력 잔여 항목도 예전 설정창 패턴에 맞춰 슬라이더형으로 계속 이식했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 `도구 훅 스크립트 제한 시간`, `슬래시 팝업 표시 개수`, `슬래시 핀 최대 개수`, `슬래시 최근 최대 개수`를 텍스트박스 대신 슬라이더 + 현재값 배지 구조로 바꾸고, 숨김 텍스트 필드는 저장 호환용으로만 유지했습니다.
|
||||
- 같은 파일의 오버레이 동기화 경로(`RefreshOverlayVisualState`, `RefreshOverlayEtcPanels`)에도 해당 값들의 슬라이더/배지 동기화를 추가해, 섹션 전환이나 재오픈 후에도 값이 바로 맞춰 보이도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:22 (KST)
|
||||
- 메인 설정에 남아 있던 구형 AX Agent 탭 본문도 실제 탭 컬렉션에서 제거해, 숨김 상태로 남아 있던 레거시 경로가 다시 선택되지 않도록 정리했습니다.
|
||||
- [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 생성자에서 `AgentTabItem`을 `MainSettingsTab.Items`에서 제거하고, `MainSettingsTab_SelectionChanged()`는 좌측 바로가기용 `AgentShortcutTabItem`만 AX Agent 내부 설정 오버레이로 라우팅하도록 단순화했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:24 (KST)
|
||||
- 구형 AX Agent 본문이 로드 시점에 초기화되던 경로도 추가로 끊었습니다.
|
||||
- [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 에 `HasLegacyAgentTab()` 가드를 넣어, `MoveBlockSectionToEtc()`, `BuildServiceModelPanels()`, `BuildToolRegistryPanel()`, `LoadAdvancedSettings()`, `SyncAgentSelectionCards()`, `ApplyAgentSubTabVisibility()`가 실제 구형 AX Agent 탭이 컬렉션에 남아 있을 때만 실행되게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:25 (KST)
|
||||
- 원래 설정에 있던 도구별 사용 토글도 AX Agent 내부 설정 `도구` 탭으로 옮겼습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `BuildOverlayToolRegistryPanel()`에서 각 도구 카드 우측에 `ToggleSwitch`를 붙여, 카테고리별 접기 섹션 안에서 바로 도구 사용 여부를 바꿀 수 있게 했습니다.
|
||||
- 도구 토글은 기존과 동일하게 `Llm.DisabledTools` 저장 경로를 그대로 사용하고, 변경 즉시 내부 설정 상태를 저장한 뒤 목록을 다시 그려 현재 상태가 바로 보이게 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:27 (KST)
|
||||
- 작업 지침에도 설정 입력 UI 통일 규칙을 추가했습니다.
|
||||
- [AGENTS.md](/E:/AX%20Copilot%20-%20Codex/AGENTS.md) 의 `설정 UI 패턴` 섹션에 `on/off`는 `ToggleSwitch`, 숫자 입력은 기존 슬라이더 + 현재값 배지 패턴을 우선 사용하고, 메인 설정과 AX Agent 내부 설정 간 표현 방식도 통일해야 한다는 규칙을 명시했습니다.
|
||||
- 업데이트: 2026-04-05 11:28 (KST)
|
||||
- 시작 직후 나던 AX Agent 프리워밍 예외도 수정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `TryGetOverlayLlmSettings()` 가드를 추가하고, 내부 설정 슬라이더 `ValueChanged` 핸들러들이 초기화 중 `_settings.Settings.Llm` 이 준비되지 않았을 때는 즉시 빠지도록 정리했습니다.
|
||||
- 원인은 프리워밍 중 `SldOverlayMaxAgentIterations_ValueChanged`가 너무 일찍 발화하면서 null 경로를 건드리던 것이었고, 같은 유형이 다른 슬라이더에도 생기지 않도록 공통 방어로 같이 막았습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:31 (KST)
|
||||
- 런처도 `Agent Compare` 기준으로 빠진 기능을 다시 이식하기 시작했습니다.
|
||||
- [LauncherViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/LauncherViewModel.cs), [LauncherViewModel.LauncherExtras.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/LauncherViewModel.LauncherExtras.cs), [LauncherWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml), [LauncherWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml.cs), [LauncherWindow.Shell.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.Shell.cs)에 `빠른 실행 칩`, `검색 히스토리 위/아래 탐색`, `선택 항목 미리보기 패널`, `F3 QuickLook`, `F4 OCR`, 하단 `위젯 바`를 현재 런처 흐름에 맞게 다시 연결했습니다.
|
||||
- [QuickActionChip.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/QuickActionChip.cs), [SearchHistoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/SearchHistoryService.cs), [QuickLookWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/QuickLookWindow.xaml), [QuickLookWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/QuickLookWindow.xaml.cs) 도 새로 추가해, `Agent Compare` 쪽 런처 보조 기능이 현재 앱에서도 독립적으로 동작할 수 있도록 했습니다.
|
||||
- [UsageRankingService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/UsageRankingService.cs) 에는 빠른 실행 칩 생성을 위한 `GetTopItems()`를 추가해, 최근 많이 쓴 경로를 런처 입력창 아래에서 바로 다시 열 수 있게 했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 11:58 (KST)
|
||||
- 런처 보조 기능/설정 연결을 `Agent Compare` 기준으로 다시 대조하면서, 입력을 비웠을 때 이전 선택 항목과 미리보기 패널이 남아 있던 상태를 정리했습니다. [LauncherViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/LauncherViewModel.cs) 에서 빈 입력 시 `SelectedItem`과 미리보기 바인딩이 같이 초기화되도록 맞춰, 빠른 실행 칩/검색 히스토리/미리보기 패널 전환이 더 이상 이전 검색 상태를 끌고 가지 않게 했습니다.
|
||||
- 검증: `Agent Compare`의 런처 설정 항목(`ShowNumberBadges`, `CloseOnFocusLost`, `RememberPosition`, `EnableActionMode`, `EnableRandomPlaceholder`, `ShowLauncherBorder` 등)과 현재 [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [LauncherWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml.cs), [LauncherViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/LauncherViewModel.cs) 연결을 재검토했고, 런처 테마 동일화 작업은 제외한 상태에서 보조 기능/설정 연결 위주로 1차 마무리했습니다.
|
||||
- 업데이트: 2026-04-05 11:56 (KST)
|
||||
- AX Agent 채팅 엔진 정상화 1차로, [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs) 와 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 전송 흐름을 `준비 → 실행 → 최종 assistant 커밋 → 재렌더` 중심으로 다시 정리했습니다. Chat/Cowork/Code 공통으로 임시 assistant 카드와 임시 스트리밍 컨테이너를 먼저 만들지 않도록 바꿔, 토큰은 올라가는데 채팅 본문이 비거나 빈 버블이 남는 증상을 줄였습니다.
|
||||
- 같은 수정에서 에이전트 실행 로그도 화면에 즉시 배너를 직접 꽂지 않고, 대화 모델의 `ExecutionEvents`에 먼저 쌓은 뒤 `RenderMessages()` 기준으로만 다시 그리게 바꿨습니다. 그래서 Cowork/Code에서 실행 로그 문구가 플래시처럼 잔상으로 남거나 중복 표시되던 흐름을 줄이는 쪽으로 정리했습니다.
|
||||
- 재생성 경로도 동일하게 정리해서, 피드백 후 재생성 시 빈 assistant 메시지를 먼저 추가하지 않고 최종 응답만 커밋하도록 맞췄습니다.
|
||||
- 이어서 `/slash` 로컬 응답과 수동 컨텍스트 압축 결과 경로도 conversation/session에 먼저 커밋한 뒤 `RenderMessages()`로만 다시 그리게 맞췄습니다. 이제 로컬 응답 경로도 직접 `AddMessageBubble(...)`를 꽂지 않아서, Chat/Cowork/Code에서 같은 종류의 중복 버블/순서 어긋남이 덜 발생하도록 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 12:06 (KST)
|
||||
- 업데이트: 2026-04-05 12:09 (KST)
|
||||
- AX Agent 채팅 UI는 `claw-code` 기준으로 다시 정리하기 전에 현재 상태를 `etc/chat-ui-backup/2026-04-05-1215/`에 백업했습니다. 이 백업에는 [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs), [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs) 기준본이 포함되어 있습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서는 메시지 컬럼과 빈 상태 폭을 `920px` 축으로 맞추고, 컴포저를 `760px` 기준으로 넓히면서 입력 셸을 하나의 안정적인 하단 컬럼으로 다시 정리했습니다. 같은 수정에서 컴포저 안의 `대화 내보내기` 버튼은 숨겨 `claw-code`처럼 입력과 전송에 더 집중된 구조로 단순화했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 입력창 높이 계산은 이제 실제 줄바꿈 수만 기준으로 `Height`를 직접 다시 잡습니다. 전송 후에도 남아 있던 과도한 높이를 줄이고, `Shift+Enter`로 개행이 생길 때만 높이가 커지도록 더 강하게 고정했습니다.
|
||||
- 같은 파일에서 `메시지 편집 후 재생성`, `피드백 후 재생성` 경로도 직접 `AddMessageBubble(...)`를 꽂지 않고 `RenderMessages()` 축으로 다시 돌리게 맞췄습니다. 재생성 경로 자체도 `Cowork/Code`에서는 일반 LLM 호출이 아니라 `ResolveExecutionMode(...)` + `RunAgentLoopAsync(...)`를 타도록 바꿔, 코워크/코드가 채팅 재생성 때 일반 Chat 경로로 잘못 떨어지던 문제를 줄였습니다.
|
||||
- 이어서 [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs)에 `PrepareExecution(...)`, `NormalizeAssistantContent(...)`를 추가하고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 일반 전송과 재생성이 모두 같은 준비 함수를 타도록 정리했습니다. 이제 실행 모드 판정, 프롬프트 스택 구성, 전송 메시지 조립, 최종 assistant 내용 보정이 한 엔진 축에서 처리됩니다.
|
||||
- 이 변경으로 `SendMessageAsync()`와 `SendRegenerateAsync()`가 각자 따로 Cowork/Code 시스템 프롬프트와 실행 모드를 계산하던 중복 분기가 줄었고, 이후 Cowork/Code 엔진을 `claw-code` 기준으로 더 밀 때도 준비 로직은 엔진 한 곳만 고치면 되게 정리했습니다.
|
||||
- 이어서 `FinalizeAssistantTurn(...)`를 엔진에 추가해, 최종 assistant 내용 정규화와 Cowork/Code 실행 로그 접힘 처리, assistant 메시지 커밋을 전송/재생성 공통으로 같은 메서드에서 처리하게 바꿨습니다. 이제 채팅 마무리 단계도 UI 코드가 아니라 엔진이 더 많이 책임집니다.
|
||||
- 이번엔 [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs)에 `ExecutePreparedAsync(...)`를 추가해서, 준비된 실행이 `AgentLoop`를 탈지 일반 LLM 호출을 탈지 결정하는 분기까지 엔진이 맡도록 옮겼습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 일반 전송과 재생성은 이제 둘 다 `ExecutePreparedAsync(...)`만 호출합니다.
|
||||
- 이어서 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 실행 후처리도 `ResetStreamingUiState()`, `FinalizeConversationTurn()`, `FinalizeQueuedDraft()`로 묶었습니다. 전송과 재생성이 같은 정리 경로를 공유하게 해서, 응답 완료 뒤 상태 복구와 대화 저장, 대기열 완료/실패 처리 흐름도 더 한 축으로 정리했습니다.
|
||||
- 이번엔 `OnAgentEvent(...)`의 본문 재렌더를 배치형으로 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에 `DispatcherTimer` 기반 `ScheduleExecutionHistoryRender()`를 추가해서, Cowork/Code 실행 중 이벤트가 연속으로 들어와도 `RenderMessages()`가 매 이벤트마다 바로 돌지 않고 짧게 묶여 한 번씩만 반영됩니다.
|
||||
- 같은 흐름으로 작업 요약 스트립도 배치형 갱신으로 바꿨습니다. `UpdateTaskSummaryIndicators()`를 즉시 호출하는 대신 `ScheduleTaskSummaryRefresh()`가 120ms 단위로 상태 반영을 묶어, 실행 중 상단 상태 스트립과 런타임 배지가 과하게 흔들리지 않도록 정리했습니다.
|
||||
- 추가로 실행 이벤트/실행 기록 저장도 지연 저장으로 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AppendConversationExecutionEvent()`와 `AppendConversationAgentRun()`은 이제 이벤트마다 바로 `_storage.Save(...)`를 호출하지 않고, `ScheduleConversationPersist()`를 통해 220ms 단위로 묶어서 flush 합니다. Cowork/Code의 연속 이벤트 구간에서 저장 I/O가 덜 붙도록 만든 조정입니다.
|
||||
- 이번엔 실행 완료 뒤 메시지 축을 흔들던 보조 UI를 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `RenderSuggestActionChips()`는 더 이상 본문 `MessagePanel`에 제안 칩을 직접 삽입하지 않고, 요약 토스트만 띄우도록 바꿨습니다. 이 변경으로 Cowork/Code 작업 중간에 제안 칩이 본문 폭과 스크롤 위치를 흔들던 경로를 끊었습니다.
|
||||
- 같은 파일의 대기열 UI도 기본 축약형으로 바꿨습니다. `DraftQueuePanel`은 이제 기본적으로 요약 pill + 핵심 항목 1개만 보이고, 필요할 때만 `상세 보기`로 전체 섹션 카드(`실행 중/다음 작업/보류/완료/실패`)를 펼칩니다. 대기열 카드가 매번 크게 다시 그려지면서 컴포저 위 레이아웃을 밀던 현상을 줄이기 위한 정리입니다.
|
||||
- 이어서 Cowork/Code 완료 직후 저장 축도 정리했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `ResetStreamingUiState()`는 이제 배치 저장 대기 중인 실행 이벤트/실행 기록을 먼저 `FlushPendingConversationPersists()`로 확정 저장한 뒤 타이머를 내립니다. 이걸로 실행 종료 직전 들어온 마지막 이벤트가 지연 저장 타이머만 멈춘 채 사라질 수 있는 경로를 막았습니다.
|
||||
- 같은 수정에서 `PersistConversationSnapshot(...)`를 추가해 중간 저장, 최종 저장, 지연 저장 flush를 한 경로로 묶었고, `RunAgentLoopAsync(...)` 안의 중복 `_storage.Save(...)` / `RememberConversation(...)`는 제거했습니다. 이제 Cowork/Code 완료 시점 저장은 `FinalizeConversationTurn(...)` 쪽의 단일 완료 경로가 맡습니다.
|
||||
- 이번엔 실행 이벤트가 들어올 때 창 코드가 즉시 많이 만지던 UI 갱신도 배치형으로 묶었습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에 `_agentUiEventTimer`, `ScheduleAgentUiEvent(...)`, `FlushPendingAgentUiEvent()`를 추가해서, 상태바/스티키 진행률/플랜 뷰어/파일 탐색기 자동 새로고침/제안 토스트/자동 프리뷰 반영이 가장 최근 이벤트 기준으로 90ms 단위로만 화면에 반영되게 했습니다.
|
||||
- `OnAgentEvent(...)`는 이제 실행 이벤트 자체를 대화 모델과 앱 상태에 먼저 반영하고, 화면 갱신은 배치된 UI 이벤트 flush가 담당합니다. 이 조정으로 Cowork/Code 실행 중 빠른 이벤트 연속 구간에서 상태바와 진행률, 파일 미리보기 쪽이 따로따로 즉시 흔들리던 체감을 더 줄이는 방향으로 정리했습니다.
|
||||
- 대기열 다음 작업 시작도 입력창 UI에 의존하지 않게 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `SendMessageAsync(...)`는 이제 선택적으로 직접 텍스트를 받을 수 있고, `StartNextQueuedDraftIfAny(...)`는 더 이상 `InputBox.Text`를 바꿔 포커스를 흔든 뒤 전송하지 않고 `SendMessageAsync(next.Text)`로 바로 실행합니다. 이걸로 Cowork/Code 자동 이어달리기가 입력창 상태를 덜 건드리게 됐습니다.
|
||||
- 실패 후 재시도도 같은 방향으로 정리했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `RetryLastUserMessageFromConversation()`는 이제 입력창에 마지막 요청을 다시 밀어 넣지 않고, 유휴 상태면 `SendMessageAsync(lastUserMessage)`로 바로 다시 실행하고, 이미 작업 중이면 같은 요청을 곧바로 대기열에 적재합니다. 재시도 동작도 입력창 포커스와 높이를 흔들지 않게 만든 조정입니다.
|
||||
- 이어서 구형 본문 재시도 카드도 제거했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddRetryButton()` 경로를 걷어내고, 실패 시에는 본문에 임시 재시도 카드를 꽂지 않고 짧은 토스트로만 안내한 뒤 작업 요약/실패 이력 쪽 재시도 액션을 사용하도록 정리했습니다. 본문을 메시지와 상태 중심으로 유지하는 `claw-code` 방향에 더 가깝게 맞춘 것입니다.
|
||||
- UI도 `claw-code` 기준으로 1차 정리를 넣었습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 메시지 컬럼 폭을 `880`으로 더 정리하고, 상단 진행률 바 패딩과 폭을 줄였으며, 빈 상태는 떠다니는 그라디언트 아이콘 대신 더 작고 정적인 카드형 아이콘으로 단순화했습니다. 컴포저도 `800px` 축으로 넓히면서 라운드와 그림자를 조금 눌러, 화면 장식보다는 메시지/입력 흐름이 먼저 보이게 다듬은 단계입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 12:24 (KST)
|
||||
- 업데이트: 2026-04-05 12:31 (KST)
|
||||
- 업데이트: 2026-04-05 12:36 (KST)
|
||||
- 업데이트: 2026-04-05 12:41 (KST)
|
||||
- 업데이트: 2026-04-05 12:47 (KST)
|
||||
- 업데이트: 2026-04-05 12:53 (KST)
|
||||
- 업데이트: 2026-04-05 12:58 (KST)
|
||||
- 업데이트: 2026-04-05 13:03 (KST)
|
||||
- 업데이트: 2026-04-05 13:12 (KST)
|
||||
- 업데이트: 2026-04-05 13:20 (KST)
|
||||
- 업데이트: 2026-04-05 13:29 (KST)
|
||||
- 업데이트: 2026-04-05 13:37 (KST)
|
||||
- 업데이트: 2026-04-05 13:44 (KST)
|
||||
- 업데이트: 2026-04-05 13:52 (KST)
|
||||
- 업데이트: 2026-04-05 14:00 (KST)
|
||||
- 메시지 행 UI도 `claw-code` 기준으로 한 단계 더 눌렀습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `MessagePanel` 하단 여백을 더 줄여 본문 축이 컴포저와 가깝게 이어지도록 했고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 사용자/assistant 메시지 카드의 좌우 마진, 코너 라운드, 패딩, 폰트 크기, 타임스탬프 크기를 전반적으로 낮췄습니다.
|
||||
- assistant 헤더는 아이콘과 이름을 더 작고 옅게 줄였고, 액션 바 버튼도 패딩과 간격을 축소해 메시지 본문보다 덜 튀게 만들었습니다. 같은 방향으로 실행 로그 배너(`AddAgentEventBanner`)도 좌우 마진, 아이콘/라벨 크기, 토큰 배지와 요약 텍스트 밀도를 낮춰, Cowork/Code에서 로그가 메시지보다 먼저 보이던 느낌을 줄였습니다.
|
||||
- 폭 계산도 `claw-code`처럼 반응형으로 다시 맞췄습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 `ComposerShell` 고정폭을 걷어내고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `UpdateResponsiveChatLayout()`가 실제 본문 폭 기준으로 `MessagePanel`, `EmptyState`, `ComposerShell` 폭을 함께 다시 계산하도록 연결했습니다.
|
||||
- 이제 창이 작아질 때 메시지 축과 입력창이 따로 놀지 않고 같은 축으로 같이 줄어들며, 창이 넓을 때는 적당한 상한을 유지한 채 자연스럽게 넓어집니다. 초기 로드와 `SizeChanged` 모두 같은 반응형 계산을 타도록 붙였습니다.
|
||||
- 이어서 컴포저 상단 구조도 `claw-code` 방향으로 더 눌렀습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `InputBorder`, `DraftPreviewCard`, `DraftQueuePanel` 간격과 그림자를 줄였고, `BtnModelSelector`, `TokenUsageCard`, `BtnTemplateSelector`의 높이, 패딩, 아이콘/폰트 크기를 함께 낮춰 입력축보다 옵션 카드가 먼저 튀지 않게 정리했습니다.
|
||||
- 토큰 카드도 원형 게이지와 텍스트, `압축` 버튼을 전반적으로 소형화해 상단 바가 두꺼운 툴 패널처럼 보이던 인상을 줄였습니다. 결과적으로 입력부는 더 얇은 하단 작업 바처럼 보이고, 메시지 본문 축과 시각적 우선순위가 덜 충돌하게 됐습니다.
|
||||
- Cowork/Code 상태 UI도 더 얇게 조정했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `ConversationStatusStrip`, `ConversationQuickStrip`, `AgentProgressBar`, `RuntimeActivityBadge`, `ExecutionLog`, `SubAgentIndicator`, `StatusElapsed`, `StatusTokens`의 패딩과 폰트, 간격을 전반적으로 줄여 상태 바가 본문 위를 과하게 차지하지 않게 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 작업 요약 팝업도 제목/설명/최근 실행 카드 밀도를 낮추고 최근 실행 목록을 2개만 보여 주도록 줄였습니다. 이제 상태 UI는 더 보조적인 레이어로 남고, 메시지 본문이 먼저 읽히는 쪽으로 가까워졌습니다.
|
||||
- 이어서 작업 요약 내부 카드도 더 가볍게 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `CreateTaskSummaryActionButton(...)`을 더 작은 버튼 규격으로 낮추고, 권한/훅/백그라운드 카드의 패딩과 마진도 한 단계 축소했습니다.
|
||||
- 최근 권한 이력은 2개, 최근 훅은 3개, 최근 백그라운드 작업은 2개까지만 보여 주도록 줄여, 작업 요약 팝업이 긴 상태 대시보드처럼 커지지 않게 정리했습니다.
|
||||
- 같은 축으로 Cowork/Code 보조 상태 레이어를 한 번 더 눌렀습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `ConversationStatusStrip`, `ConversationQuickStrip`, `AgentProgressBar`, `RuntimeActivityBadge`, `LastCompletedLabel`, `ExecutionLog`, `SubAgentIndicator`, `StatusElapsed`, `StatusTokens`는 패딩·폰트·간격을 추가로 줄여 상시 노출돼도 본문보다 덜 튀도록 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `ShowTaskSummaryPopup()`, `CreateTaskSummaryActionButton(...)`, `BuildHookSummaryCard(...)`, `BuildActiveBackgroundSummaryCard(...)`, `BuildRecentBackgroundJobCard(...)` 도 같은 시각 언어로 다시 줄였습니다. 팝업 헤더/필터/최근 실행 카드/백그라운드 카드/훅 카드의 라운드, 패딩, 마진, 텍스트 크기를 전반적으로 낮춰 작업 요약이 진단용 보조 패널에 더 가깝게 보이게 했습니다.
|
||||
- 업데이트: 2026-04-05 17:27 (KST)
|
||||
- 메시지 자체 메타와 완료 카드 문구도 더 `claw-code` 쪽으로 눌렀습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddMessageBubble(...)` 에서 사용자/assistant 버블 패딩, 코너, 폰트, 타임스탬프, assistant 헤더 아이콘/이름 크기를 한 단계 더 낮춰 본문 텍스트가 더 먼저 읽히도록 조정했습니다.
|
||||
- 작업 요약 팝업의 완료 카드도 `실행 run`, `최근 실패`, `최근 실행`, `로그`, `파일`, `후속 큐`, `다시 시도`, `타임라인`처럼 더 짧은 문구로 정리했고, run/step 메타와 요약 텍스트 폰트도 함께 낮춰 정보 밀도를 더 가볍게 맞췄습니다.
|
||||
- 업데이트: 2026-04-05 17:33 (KST)
|
||||
- Cowork/Code 실행 타임라인 배너도 더 `claw-code`처럼 얇게 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddAgentEventBanner(...)` 에서 일반 실행 배너의 좌우 마진, 아이콘/라벨, 경과 시간, 토큰 pill, 요약 텍스트, 파일 경로 행을 한 단계 더 축소했고, 상세 review 칩은 `debug` 로그일 때만 보이게 제한했습니다.
|
||||
- 이 조정으로 평소 Cowork/Code에서는 실행 이벤트가 더 짧은 한 줄 요약 중심으로 보이고, debug 정보는 필요할 때만 확장되도록 정리됐습니다.
|
||||
- 업데이트: 2026-04-05 17:39 (KST)
|
||||
- 상단 헤더도 더 `claw-code` 쪽 밀도로 줄였습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 상단 탭 버튼의 폰트/패딩/코너를 다시 낮추고, 탭 그룹 래퍼와 제목 서브 바의 높이와 패딩도 함께 줄였습니다.
|
||||
- 같은 변경에서 대화 제목 폰트와 최대 폭, 빠른 스트립 버튼 규격, 프리뷰 토글 크기와 라벨도 더 작게 조정해 상단 보조 정보가 본문보다 덜 튀게 정리했습니다.
|
||||
- 업데이트: 2026-04-05 17:45 (KST)
|
||||
- 좌측 사이드바도 한 번에 더 `claw-code` 쪽 비율로 줄였습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 헤더, 새 대화/검색 액션, 검색 편집기, 필터 드롭다운, 탭별 메뉴, 전체 삭제, 하단 사용자/설정 영역까지 패딩·폰트·아이콘·배지 크기를 전반적으로 낮췄습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 실제 사이드바 폭을 `270 -> 248`로 줄이고, 대화 목록 카드의 패딩, 코너, 아이콘 열 폭, 제목/날짜/실행 메타 폰트, 편집 버튼 규격, 선택 액센트 바 두께도 함께 축소해 목록이 더 차분하게 보이도록 맞췄습니다.
|
||||
- 업데이트: 2026-04-05 17:53 (KST)
|
||||
- 큰 카드형 요소도 더 `claw-code` 쪽으로 눌렀습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddPlanningCard(...)` 에서 계획 카드 라운드, 패딩, 헤더 아이콘/텍스트, 진행률 텍스트, 단계 행 폰트를 전반적으로 줄였고, 계획 헤더 문구도 더 짧게 정리했습니다.
|
||||
- 같은 변경에서 `CreateCompactEventPill(...)`, `CreateTimelineLoadMoreCard(...)`도 함께 축소해 컨텍스트 압축 pill과 “이전 대화 더 보기” 카드가 본문보다 과하게 두껍게 보이지 않도록 맞췄습니다.
|
||||
- 업데이트: 2026-04-05 18:01 (KST)
|
||||
- 엔진 마감도 한 단계 더 진행했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에 `ExecutePreparedTurnAsync(...)`를 추가해 `send`와 `regenerate`가 같은 실행/예외/취소/최종 커밋/후처리 경로를 타도록 묶었습니다. 이제 전송과 재생성은 같은 prepared-execution 축에서 닫히고, 실패 토스트와 최종 assistant 커밋도 같은 helper가 담당합니다.
|
||||
- 같은 변경에서 계획 이벤트는 기본적으로 큰 카드가 아니라 얇은 요약 pill로만 보이고, `debug` 로그일 때만 `AddPlanningCard(...)`가 펼쳐지도록 바꿨습니다. 문서형 Cowork/Code 작업에서도 기본 노출이 더 `claw-code`처럼 차분한 상태가 됐습니다.
|
||||
- 업데이트: 2026-04-05 18:08 (KST)
|
||||
- 좌측 패널과 하단 바도 `claw-code` 쪽 밀도로 다시 맞췄습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 사이드바 폭을 줄이고, 헤더 앱 배지를 강조색 채운 정사각형 대신 `HintBackground + BorderColor` 기반의 작은 배지형으로 바꿨습니다.
|
||||
- `새 대화`, `검색`, `작업 유형/워크스페이스`, 하단 사용자 영역, 삭제 영역까지 패딩과 폰트, 아이콘 크기를 함께 낮췄고, 하단 상태바는 다이아몬드 아이콘을 작은 원형 점으로 바꿔 더 단순한 상태선처럼 보이게 정리했습니다.
|
||||
- 실행 로그 배너도 본문 침범을 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddAgentEventBanner(...)` 에서 debug 전용 `ToolInput` 카드 길이를 더 짧게 줄였고, `FilePath`는 일반 로그에서는 빠른 액션이 붙은 카드형 대신 파일명 한 줄만 약하게 표시하도록 바꿨습니다.
|
||||
- 이제 파일 경로 카드와 빠른 액션은 `debug`일 때만 크게 보이고, 일반 Cowork/Code 로그에서는 파일명만 보조 정보처럼 붙습니다. 덕분에 실행 로그가 본문 아래에서 더 얇게 흐르도록 정리됐습니다.
|
||||
- 대화 목록 행 카드와 축소 아이콘 바도 같은 시각 언어로 더 정리했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddConversationItem(...)`에서 선택 강조 배경과 좌측 액센트 바 두께를 더 얇게 줄이고, 행 패딩/아이콘/폰트/배지 크기를 전반적으로 낮춰 `claw-code`처럼 목록 자체가 먼저 튀지 않도록 정리했습니다.
|
||||
- `진행 중`, `성공`, `실패` 배지와 실행 요약 텍스트도 더 작고 중립적인 톤으로 줄였고, 호버 시 확대 애니메이션은 제거해 목록이 더 차분하게 반응하도록 맞췄습니다. 편집 버튼도 더 작은 규격과 낮은 opacity를 써서 필요할 때만 보조 액션으로 보이게 조정했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 축소 아이콘 바는 상하 행 높이, 버튼 패딩, 아이콘 크기, 사용자 배지 크기를 한 단계 더 줄여 현재 사이드바와 같은 밀도로 묶었습니다. 이제 축소 상태에서도 검색/필터/새 대화 아이콘이 더 균일한 간격으로 정리되고, 하단 사용자 배지도 과하게 튀지 않는 중립형으로 유지됩니다.
|
||||
- AX Agent 내부 설정 탭도 다시 정리했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 사라졌던 `테마 스타일`, `테마 모드`를 `공통` 탭에 실제 선택 카드로 복구했고, 기존 `스킬/차단` 탭은 `도구 / 스킬 / 차단`으로 나눠 각 항목이 맞는 탭에서만 보이게 재배치했습니다.
|
||||
- 이제 `도구` 탭에서는 훅과 도구/커넥터 목록을, `스킬` 탭에서는 스킬 폴더, 슬래시 설정, 드래그 앤 드롭, 로드된 스킬, 폴백 모델, MCP 서버를, `차단` 탭에서는 차단 경로/확장자만 관리합니다. 같이 [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 에서 메인 설정의 `AX Agent` 바로가기 탭을 좌측 사이드바 맨 아래로 재배치했습니다.
|
||||
- 런처 하단 바도 요소별로 제어할 수 있게 바꿨습니다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml) 에 `성능 / 포모도로 / 메모 / 날씨 / 일정 / 배터리` 하단 위젯 표시 토글을 추가해서 일반 설정에서 항목별로 바로 켜고 끌 수 있게 했습니다.
|
||||
- [LauncherWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml), [LauncherWindow.Widgets.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.Widgets.cs) 에서는 `Ollama / API / MCP` 서버 상태 위젯을 런처 하단 기능에서 완전히 제거했고, 남은 위젯들만 설정값에 따라 실제 표시되도록 연결했습니다. 배터리 위젯도 노트북 상태와 사용자 토글을 함께 반영해 보이게 정리했습니다.
|
||||
- `claw-code` 기준으로 계획 UX도 다시 눌렀습니다. [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs) 에서 저장된 `PlanMode` 값과 무관하게 런타임 계획 모드를 `off`로 고정해, 코워크/코드에서 매번 계획 승인 팝업이 뜨지 않도록 바꿨습니다.
|
||||
- [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서는 메인 설정과 AX Agent 내부 설정의 `계획 모드` 행을 숨겼고, [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs) 에서도 항상 `off`만 저장/반영되게 정리했습니다.
|
||||
- 계획 확인 팝업은 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs), [PlanViewerWindow.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/PlanViewerWindow.cs) 기준으로 AX Agent 창을 owner로 받아 리소스를 그대로 합치게 바꿨고, 채팅 본문에 별도 인라인 승인 버튼을 다시 꽂지 않도록 정리했습니다.
|
||||
- 업데이트: 2026-04-05 16:20 (KST)
|
||||
- `claw-code` 기준 UI/엔진 재구성 1차도 반영했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 AX Agent 메인 레이아웃의 사이드바 폭, 메시지 축, 빈 상태 카드, 컴포저 외곽선을 더 압축해 메시지 중심 구조로 다시 정리했고, 상단/보조 스트립과 토큰 카드 노출도 더 보수적으로 줄였습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 반응형 폭 계산을 다시 조정해 창이 좁아질 때 메시지 축과 컴포저가 같은 중심선을 따라 자연스럽게 줄어들게 했고, Chat 탭에서는 보조 상태 스트립을 거의 숨기고 Cowork/Code도 실패/승인 대기 같은 핵심 상태만 남기도록 정리했습니다.
|
||||
- 엔진 쪽은 [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs) 에 `FinalizeExecutionContent(...)` 를 추가해 취소/오류/빈 응답 정규화를 UI 바깥으로 넘겼고, 전송/재생성 마감 흐름이 같은 helper를 타도록 맞췄습니다. 내부 설정 오버레이 연결은 유지했습니다.
|
||||
- 업데이트: 2026-04-05 16:33 (KST)
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 15:16 (KST)
|
||||
- AX Agent 엔진 마감 2차로 [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs)에 UI용 마감 helper `FinalizeExecutionContentForUi(...)`, `NormalizeAssistantContentForUi(...)`를 추가했습니다. 취소/오류/빈 응답, Cowork/Code 완료 문구를 깨진 문자열이 아닌 정상 한국어 기준으로 정규화하도록 분리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 `RegenerateLastAsync()`와 `RetryWithFeedbackAsync(...)`가 더 이상 `MessagePanel.Children.RemoveAt(...)`로 마지막 assistant 버블을 직접 지우지 않고, 대화 상태를 먼저 수정한 뒤 `RenderMessages()`와 자동 스크롤로 다시 그리게 바꿨습니다. 재생성/피드백 재시도 흐름이 세션 상태 기준으로 더 일관되게 닫힙니다.
|
||||
- 같은 변경에서 `Paused/Resumed` 실행 이벤트는 `debug`가 아닐 때 본문 타임라인에 기본 노출되지 않게 줄여 Cowork/Code 실행 중 시각적 노이즈를 더 낮췄습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 18:20 (KST)
|
||||
- AX Agent 메인 UI도 `claw-code` 기준으로 한 번 더 크게 재배치했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 창 기본 크기, 사이드바 폭, 상단 헤더, 탭 그룹, 본문 스크롤 축, 빈 상태, 컴포저 외곽선과 입력부를 평평한 transcript 중심 구조로 다시 정리했고, 장식성 그림자와 두꺼운 카드 느낌을 더 많이 걷어냈습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 메시지 버블, assistant 헤더, 실행 요약 pill, 이전 대화 로드 카드, 계획 카드의 라운드/패딩/메타 밀도를 전반적으로 줄이고, 반응형 폭 계산도 `message 960 / composer 900` 축으로 다시 맞춰 창이 줄어들 때 `claw-code`처럼 더 자연스럽게 따라가도록 조정했습니다.
|
||||
- 현재 `claw-code` 대비 추정 진척율은 핵심 엔진 `88%`, 채팅 메인 UI `94%`, Cowork/Code 상태 UX `89%`, 내부 설정 연결 `88%`, 전체 AX Agent `92%` 정도입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 18:30 (KST)
|
||||
- Cowork/Code 보조 상태 레이어도 다시 최소 노출 기준으로 정리했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `ConversationStatusStrip`, `ConversationQuickStrip`, `AgentProgressBar`, `RuntimeActivityBadge`, `ExecutionLog`, `SubAgentIndicator`, `StatusElapsed`, `StatusTokens`의 패딩·폰트·간격을 한 단계 더 줄여 상단/하단 보조 정보가 transcript보다 먼저 튀지 않도록 조정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `ShowTaskSummaryPopup()`은 필터 칩과 과한 대시보드형 액션을 걷어내고, 최근 실행도 1건 중심의 요약 카드만 남기도록 줄였습니다. 활성/최근 작업 카드는 각각 `3/2`개만 노출하도록 낮췄고, 배경색도 팝업 테마와 같은 축을 쓰게 맞췄습니다.
|
||||
- 같은 변경에서 `BuildHookSummaryCard(...)`, `BuildActiveBackgroundSummaryCard(...)`, `BuildRecentBackgroundJobCard(...)`, `AddTaskSummaryObservabilitySections(...)`를 더 보수적으로 정리해 훅/백그라운드/권한 이력이 기본 팝업을 점유하지 않게 했습니다. 백그라운드 작업은 현재 활성 상태만 짧게 요약하고, 세부 이동/필터 버튼은 대부분 제거해 `claw-code`처럼 “필요할 때만 보이는 진단 패널”에 가깝게 맞췄습니다.
|
||||
- 현재 `claw-code` 대비 추정 진척율은 핵심 엔진 `88%`, 채팅 메인 UI `95%`, Cowork/Code 상태 UX `91%`, 내부 설정 연결 `88%`, 전체 AX Agent `93%` 정도입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 18:40 (KST)
|
||||
- 실행 타임라인과 계획 카드도 기본 노출을 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 `AddAgentEventBanner(...)` 는 `debug`가 아닐 때 `ToolCall` 중간 이벤트를 숨기고, 일반 요약 문구도 더 짧은 길이로 잘라 본문보다 덜 튀게 조정했습니다.
|
||||
- `AddPlanningCard(...)`는 계획 카드 라운드, 패딩, 헤더 텍스트, 단계 폰트와 최대 폭을 더 줄여 transcript 안의 보조 계획 메모처럼 보이게 바꿨고, `BuildTaskSummaryCard(...)` 와 `CreateTaskSummaryActionButton(...)` 도 카드/버튼 크기를 한 단계 더 낮췄습니다.
|
||||
- 같은 정리에서 권한 작업 카드 액션은 `계획 모드` 버튼을 제거해 현재 엔진 정책과 UI가 다시 어긋나지 않게 맞췄습니다.
|
||||
- 현재 `claw-code` 대비 추정 진척율은 핵심 엔진 `89%`, 채팅 메인 UI `96%`, Cowork/Code 상태 UX `92%`, 내부 설정 연결 `88%`, 전체 AX Agent `94%` 정도입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 18:49 (KST)
|
||||
- 상단 탭과 하단 컴포저 일부는 사용자 피드백 기준으로 다시 복구했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 상단 `Chat / Cowork / Code` 탭은 너무 얇아졌던 pill 스타일을 되돌려 폰트와 패딩을 키우고, 래퍼 패딩도 약간 넓혀 예전처럼 더 또렷하게 보이도록 조정했습니다.
|
||||
- 같은 파일에서 하단 컴포저의 `토큰 사용 카드`와 `프리셋` 버튼이 같은 컬럼을 같이 써서 겹치던 문제를 수정했습니다. 모델/토큰/프리셋을 각각 독립 컬럼으로 분리했고, 관련 버튼과 레이블의 폰트/패딩도 함께 키워 하단 정보가 눌려 보이지 않게 다시 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 18:55 (KST)
|
||||
- 작업 유형 카드 UX도 다시 다듬었습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `BuildTopicButtons()` 에서 카드 하단의 상시 설명 텍스트를 제거하고, 모든 카드 크기를 같은 규격으로 통일했습니다.
|
||||
- 각 카드 설명은 이제 hover 시 카드 하단의 작은 라벨로만 보이게 바꿨고, 기존 확대 애니메이션은 제거해 배경/테두리만 반응하는 안정적인 hover로 정리했습니다. `기타`, `프리셋 추가` 카드도 같은 규칙으로 맞췄습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서는 빈 상태 제목/설명 폰트도 함께 키워 이 화면 전반의 글자 크기가 너무 작아 보이지 않게 보정했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:02 (KST)
|
||||
- AX Agent 내부 설정 공통 탭의 서비스 전환 UX를 다시 바로잡았습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 서비스 상세 영역을 `주소 입력`과 `API 키` 패널로 분리해 이름을 부여했고, `테마 스타일`과 `테마 모드`도 서비스/모델 바로 아래에서 보이도록 공통 설정 상단으로 옮겼습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 `RefreshOverlayServiceFieldVisibility(...)` 를 추가해 `Gemini/Claude` 선택 시 주소 입력 패널을 접고 API 키만 전체 폭으로 보이게 만들었습니다. `Ollama/vLLM` 은 기존처럼 주소와 키를 함께 보여줍니다.
|
||||
- 같은 파일의 `SetOverlayService(...)` 는 저장 직후 `RefreshOverlayVisualState(true)` 를 다시 호출하도록 바꿔, 현재 서비스/현재 모델/라벨이 즉시 갱신되게 했습니다. 이제 Gemini를 눌렀는데도 `현재 서비스=Ollama`, `Ollama 서버 주소`가 남아 있는 어긋남을 줄였습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:10 (KST)
|
||||
- 상단 탭도 사용자 피드백 기준으로 다시 되돌렸습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `TopTabBtn` 스타일에서 폰트 크기, 패딩, 외곽선, 선택 배경을 다시 키워 첫 번째 레퍼런스 이미지처럼 더 도톰한 pill 세그먼트 느낌으로 조정했습니다.
|
||||
- 탭 래퍼 배경은 `LauncherBackground` 기준으로 바꾸고, 선택 탭은 같은 계열 배경 + 얇은 테두리가 보이도록 바꿨습니다. 라벨도 `채팅 / Cowork / 코드`로 맞춰 이전보다 읽기 쉬운 상단 내비로 정리했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:16 (KST)
|
||||
- `claw-code`의 `StatusLine + PromptInput + Messages` 기준으로 AX Agent 보조 상태 노출을 한 단계 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 `ConversationQuickStrip` 은 단순 카운트가 있을 때 자동 노출되지 않고, 사용자가 실제로 `진행 중만 보기` 또는 정렬 전환을 켰을 때만 보이도록 바꿨습니다.
|
||||
- 같은 파일에서 상단 `ConversationStatusStrip` 은 `권한 대기 / 실패 / 권한 거부`만 유지하고, `queue`, `queue_blocked` 같은 보조 상태는 기본 화면에서 숨기도록 정리했습니다. Cowork/Code transcript가 queue 상태 배너로 과하게 시끄럽던 부분을 줄이기 위한 변경입니다.
|
||||
- `AgentEventType.Planning` 도 더 `claw-code`처럼 기본 transcript에서는 큰 계획 카드 대신 얇은 compact pill만 남기도록 바꿨습니다. 이제 debug가 아니면 계획이 카드 형태로 본문을 밀어내지 않습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:24 (KST)
|
||||
- AX Agent 좌측 패널과 작업 유형 카드의 크기를 다시 키웠습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 사이드바 폭을 `246`으로 넓히고 `새 대화`, `검색`, 필터 드롭다운, 탭별 메뉴의 폰트/패딩/아이콘을 전반적으로 키워 첫 번째 레퍼런스 이미지처럼 더 읽기 쉽게 정리했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `BuildTopicButtons()` 에서는 작업 유형 카드 크기를 `148 x 124`로 늘리고, 아이콘 원형과 제목·hover 설명 라벨 폰트도 함께 키워 현재 화면 글자 크기가 너무 작게 보이던 문제를 보정했습니다.
|
||||
- 하단 컨텍스트 사용량 UI도 카드형에서 심볼형으로 바꿨습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `TokenUsageCard` 는 작은 원형 심볼만 남기고, 상세 정보는 `TokenUsagePopup` 커스텀 팝업으로 분리했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 hover 진입/이탈 시 팝업을 제어하고, `RefreshContextUsageVisual()` 이 심볼 상태와 팝업 텍스트를 함께 갱신하도록 연결했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:38 (KST)
|
||||
- `claw-code` 대비 AX Agent 남은 차이와 제거 후보 설정도 다시 정리했습니다. [docs/claw-code-parity-plan.md](/E:/AX%20Copilot%20-%20Codex/docs/claw-code-parity-plan.md)에 현재 추정 진척율(`core engine 89% / main UI 96% / runtime UX 92% / overall 93%`), 남은 엔진/UI 차이, 런타임 영향 설정 정리안을 기록했습니다.
|
||||
- 같은 점검에서 작업유형 카드 hover 깜박임 원인은 `hover 라벨`과 기본 WPF `ToolTip`이 동시에 켜져 마우스가 카드 경계와 툴팁 사이를 오가며 상태가 흔들리는 구조로 확인됐습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 프리셋/기타/프리셋 추가 카드의 기본 `ToolTip` 을 제거하고 hover 라벨만 남겨 깜박임을 줄였습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:42 (KST)
|
||||
- `PlanMode` 잔재도 런타임 기준으로 한 단계 더 걷어냈습니다. [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs) 에서 실행 전 plan prelude 진입은 비활성 플래그 기준으로만 남기고, 기본 실행 경로가 `planMode` 값에 의해 흔들리지 않도록 정리했습니다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 과 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 숨김 상태였던 inline/overlay 계획 모드 click/selection 잔재를 제거해 dead UI code를 더 줄였습니다. 사용자 노출 정책은 그대로 `off` 고정입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:49 (KST)
|
||||
- AX Agent 프리셋 첫 화면 레이아웃을 다시 정리했습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `EmptyState` 를 `Stretch + ScrollViewer` 구조로 바꿔 Chat/Cowork 프리셋 카드 하단이 잘리던 문제를 줄였고, `TopicPresetScrollViewer` 최대 높이와 내부 패딩도 함께 키웠습니다.
|
||||
- 같은 파일에 헤더 중앙 `SelectedPresetGuide` 를 추가해, 대화 주제나 작업 유형을 선택하면 선택된 항목과 설명이 다시 상단 중앙에 안내되도록 복구했습니다. 상단 탭 pill 그룹도 배경/패딩/폰트를 다시 키워 이전보다 더 또렷하게 보이도록 보정했습니다.
|
||||
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `UpdateSelectedPresetGuide(...)` 를 추가하고 `UpdateChatTitle()`, `SelectTopic(...)` 에 연결했습니다. 이제 프리셋 선택 직후뿐 아니라 대화 재오픈/탭 전환 시에도 선택된 주제 안내가 다시 살아납니다.
|
||||
- 사이드바 하단 사용자 영역의 설정 버튼도 `32x32`, 아이콘 `15px` 기준으로 키워 너무 작게 보이던 문제를 함께 보정했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 19:59 (KST)
|
||||
- AX Agent의 `PlanMode` 잔재를 실제 런타임 정책에 맞게 더 걷어냈습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서는 내부 설정 저장/로드 시 `Code.EnablePlanModeTools` 를 항상 `false` 로 강제하고, `OverlayTogglePlanModeTools` 는 더 이상 화면에 노출되지 않게 접었습니다.
|
||||
- [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 에 남아 있던 메인 설정의 `플랜 모드`, `Plan Mode 도구` UI도 숨기고 카드 상태는 `off` 고정으로 맞췄습니다. 사용자에게 보이는 설정과 실제 엔진 정책을 일치시키기 위한 정리입니다.
|
||||
- Cowork/Code 상태바 소음도 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `UpdateStatusBar(...)` 는 이제 `debug` 로그가 아닐 때 `ToolCall`, `SkillCall`, `Paused`, `Resumed` 이벤트로 상태줄을 흔들지 않습니다. `claw-code`처럼 기본 transcript와 상태선이 더 차분하게 유지되도록 맞춘 변경입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:08 (KST)
|
||||
- `PlanModeTools` 기본값도 런타임 정책과 맞췄습니다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs) 에서 `PlanMode`, `EnablePlanModeTools` 를 레거시 호환용 설명으로 정리하고, `EnablePlanModeTools` 기본값을 `false` 로 변경했습니다.
|
||||
- Cowork/Code 후속 큐 요약은 더 `claw-code`처럼 최소 노출로 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 compact queue 요약은 이제 기본적으로 `실행 / 다음 / 실패`만 표시하고, `보류`, `완료` 배지는 `상세 보기`를 펼쳤을 때만 보입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:15 (KST)
|
||||
- 재시도/후속 큐 적재 경로도 한 축으로 정리했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `EnqueueDraftRequest(...)` helper를 추가해 `조정 요청`, `후속 작업`, `분기 후속 작업`, `재시도 직접 실행`이 모두 같은 대기열 생성 경로를 타도록 맞췄습니다.
|
||||
- 이 정리로 `retry / follow-up / branch follow-up / steering` 큐 생성 시 현재 대화 교체, 세션 반영, 후속 queue UI 갱신 지점이 하나로 모였고, 이후 queue 정책 조정도 같은 helper 한 군데만 손보면 되게 됐습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:21 (KST)
|
||||
- 하단 보조 UI도 더 `claw-code`처럼 최소 노출로 조정했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 draft queue는 기본 상태에서 `실행 / 다음 / 실패`가 하나도 없으면 아예 접히도록 바꿨습니다. 완료/보류만 남은 경우에는 기본 화면에서 보이지 않습니다.
|
||||
- 같은 파일의 컨텍스트 사용량 hover 팝업도 긴 진단 문자열 대신 2줄 요약으로 정리했습니다. 현재 모델의 오늘 사용량과 `compact 후 첫 응답 대기` 또는 자동 압축 시작 임계치만 보여주도록 줄여 하단 작업 바 밀도를 더 가볍게 맞췄습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:27 (KST)
|
||||
- 하단 queue/status 기본 노출을 한 단계 더 줄였습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 queue 패널은 이제 `실행 중 / 다음 / 실패` 항목이 없으면 기본 화면에서 열리지 않고, 정리성 상태(`완료 / 보류`)만 남은 경우엔 접힌 상태를 유지합니다.
|
||||
- 같은 파일의 컨텍스트 hover 팝업도 과한 진단성 문자열을 걷고, 현재 모델 오늘 사용량과 compact 상태만 보여주는 짧은 2줄 요약으로 유지되게 다듬었습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:34 (KST)
|
||||
- Cowork/Code 상단 활동 배지도 더 조용하게 만들었습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `UpdateTaskSummaryIndicators()` 는 이제 실제 진행 중 대화나 활성 작업이 있을 때만 `RuntimeActivityBadge` 를 보이게 합니다. idle 상태에서는 상단 보조 메타가 남아 있지 않습니다.
|
||||
- 같은 파일의 `UpdateAgentProgressBar(...)` 에 남아 있던 미사용 debug 체크 변수도 제거해 상태 갱신 경로를 조금 더 단순화했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:40 (KST)
|
||||
- `claw-code` 기준으로 남아 있던 plan 도구 레거시도 더 잘랐습니다. [AgentTabSettingsResolver.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentTabSettingsResolver.cs) 는 이제 저장값과 무관하게 `enter_plan_mode`, `exit_plan_mode` 를 항상 비활성 목록에 넣습니다. plan mode 도구는 완전 레거시 호환 영역으로만 남고 실제 code 실행 경로에는 개입하지 않습니다.
|
||||
- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs) 의 운영 상태 요약도 더 `claw-code`처럼 조용하게 맞췄습니다. 기본 `RuntimeActivityBadge` 와 상단 strip 은 이제 실제 실행/권한 대기/백그라운드 작업이 있을 때만 살아나며, 단순 queue/재시도 대기만으로는 기본 헤더를 흔들지 않습니다.
|
||||
- 이번 정리 후 추정 parity 는 `core engine 92% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 92% / overall 96%` 정도로 재평가했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:48 (KST)
|
||||
- plan mode 도구를 기본 runtime registry에서도 제거했습니다. [ToolRegistry.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolRegistry.cs), [SkillService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/SkillService.cs), [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs) 에서 `enter_plan_mode`, `exit_plan_mode` 등록과 별칭을 빼서, 숨겨진 레거시 도구가 기본 AX Agent 도구셋에 더 이상 섞이지 않게 했습니다.
|
||||
- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs) 의 `RuntimeLabel` 도 queue/재시도 대기 수를 기본 라벨에서 제거해 `실행 / 승인 대기 / 백그라운드` 중심으로 단순화했습니다. `claw-code`처럼 기본 transcript는 더 읽기 중심으로, queue는 필요할 때만 보조 UI로 보이게 맞춘 변경입니다.
|
||||
- 이번 정리 후 추정 parity 는 `core engine 94% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 93% / overall 97%` 정도로 재평가했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 20:56 (KST)
|
||||
- 상태 모델의 `PlanMode` 잔재도 걷어냈습니다. [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs) 의 `PermissionPolicyState` 에 남아 있던 `PlanMode` 필드를 제거하고, 설정 로드 시에도 더 이상 이 값을 상태 모델에 복사하지 않게 했습니다. 이제 AX Agent 기본 상태 모델은 실제 정책상 살아 있는 권한/결정/override 정보만 유지합니다.
|
||||
- 이번 정리 후 추정 parity 는 `core engine 95% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 93% / overall 97%` 정도로 재평가했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 21:03 (KST)
|
||||
- 메인 설정과 AX Agent 내부 오버레이에 남아 있던 숨김 `PlanMode` UI 잔재도 추가로 제거했습니다. [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 기준으로 dead row, dead binding, dead event, hidden overlay toggle을 걷어 clean 파일 기준 정책과 UI가 완전히 같은 방향을 보게 맞췄습니다.
|
||||
- 현재 검색상 남은 `PlanMode` 잔재는 JSON 호환용 [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs) 와 별도 구형 [AgentSettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml.cs) 정도입니다. 현행 사용 경로 기준으로는 핵심 엔진/메인 설정/내부 오버레이 쪽 레거시 정리는 거의 끝난 상태입니다.
|
||||
- 이번 정리 후 추정 parity 는 `core engine 95% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 95% / overall 98%` 정도로 재평가했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 21:12 (KST)
|
||||
- 구형 [AgentSettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml), [AgentSettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml.cs) 에 남아 있던 `계획 모드`, `Plan Mode 도구` UI와 관련 save/load/event 코드도 제거했습니다. 현재 clean 파일 기준 검색상 남은 `PlanMode`/`EnablePlanModeTools` 참조는 JSON 호환용 [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs) 와 안전 고정용 [SubAgentTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/SubAgentTool.cs) 정도입니다.
|
||||
- 이번 정리 후 추정 parity 는 `core engine 95% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 97% / overall 99%` 정도로 재평가했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 21:20 (KST)
|
||||
- 마지막 레거시 호환용 필드도 제거했습니다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs) 의 `planMode`, `enablePlanModeTools` JSON 필드를 삭제했고, [SubAgentTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/SubAgentTool.cs) 의 `llm.PlanMode = "off"` 안전 고정 대입도 함께 제거했습니다. 이제 clean 파일 기준 검색상 `PlanMode` / `EnablePlanModeTools` 참조는 0입니다.
|
||||
- 이번 정리 후 추정 parity 는 `core engine 100% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 100% / overall 99%` 정도로 재평가했습니다. 남은 차이는 레거시 설정이 아니라 세부 transcript UI/UX polish 영역입니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 21:29 (KST)
|
||||
- transcript UI 마감 쪽으로 계획 카드도 더 `claw-code`처럼 compact하게 바꿨습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `AddPlanningCard(...)` 는 이제 기본 상태에서 단계 목록을 접고, `계획 n단계 + 진행률 + 펼치기` 요약만 먼저 보여줍니다. 필요할 때만 `펼치기/접기`로 상세 단계를 보게 해 본문 읽기 흐름을 덜 방해하도록 조정했습니다.
|
||||
- 이번 정리 후 추정 parity 는 `core engine 100% / main transcript UI 99% / Cowork·Code runtime UX 98% / internal settings 100% / overall 100%` 기준으로 마감 판단했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 21:36 (KST)
|
||||
- 마지막 transcript polish로 하단 상태 메타와 quick strip도 더 `claw-code`처럼 조용하게 맞췄습니다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 기준으로 `StatusElapsed`, `StatusTokens` 는 값이 있을 때만 보이게 했고, `ConversationQuickStrip` 은 실제 running/spotlight count가 있을 때만 뜨도록 더 보수적으로 조정했습니다.
|
||||
- 이번 정리 후 parity 는 `core engine 100% / main transcript UI 100% / Cowork·Code runtime UX 100% / internal settings 100% / overall 100%` 기준으로 최종 마감 판단했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||
- 업데이트: 2026-04-05 21:43 (KST)
|
||||
- 업데이트: 2026-04-05 22:18 (KST)
|
||||
- transcript 품질 향상 2차로 도구/스킬 표시 카탈로그를 [AgentTranscriptDisplayCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentTranscriptDisplayCatalog.cs) 로 분리했습니다. 이제 transcript 배지와 task summary 카드가 `파일 / 빌드 / Git / 문서 / 질문 / 제안 / 스킬` 같은 역할 중심 라벨을 공통으로 사용합니다.
|
||||
- [ChatWindow.TranscriptPolicy.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptPolicy.cs) 를 추가해 transcript badge/summary/task-summary policy를 partial helper로 분리했고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 task summary popup 은 active task 우선, recent history 는 debug 또는 active 없음일 때만 보이도록 축소했습니다.
|
||||
- 동일 프롬프트 회귀 세트는 [docs/AX_AGENT_REGRESSION_PROMPTS.md](/E:/AX%20Copilot%20-%20Codex/docs/AX_AGENT_REGRESSION_PROMPTS.md) 로 별도 분리해 Chat/Cowork/Code/queue/permission/slash 시나리오를 바로 비교할 수 있게 했습니다.
|
||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 예정
|
||||
- 업데이트: 2026-04-05 22:24 (KST)
|
||||
- 런처 하단 위젯의 신규 기본값을 모두 꺼짐으로 변경했습니다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs) 에서 `성능 / 포모도로 / 메모 / 날씨 / 일정 / 배터리` 위젯 기본값을 `false` 로 내려 새 설치나 설정 초기화 시 하단 위젯이 기본 비노출 상태로 시작합니다.
|
||||
- 업데이트: 2026-04-05 22:31 (KST)
|
||||
- AX Agent 내부 설정 공통 탭에서 `테마 스타일`, `테마 모드`를 맨 위로 올려 서비스/모델보다 먼저 보이게 재배치했습니다. 같이 [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 좌측 패널 토글 버튼은 3줄 햄버거가 아니라 좌측 패널/본문 구조가 보이는 패널 토글 아이콘으로 변경해 메뉴 아이콘과 혼동되지 않게 정리했습니다.
|
||||
|
||||
---
|
||||
|
||||
@@ -237,3 +1023,108 @@ public class MyHandler : IActionHandler
|
||||
|
||||
MIT License
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
- 업데이트: 2026-04-05 19:38 (KST)
|
||||
- AX Agent 상단 탭이 깨져 보이던 문제를 수정하고, `채팅 / Cowork / 코드` pill 세그먼트 형태를 안정적으로 복구했다.
|
||||
- 업데이트: 2026-04-05 19:41 (KST)
|
||||
- AX Agent 빈 상태 상단 심볼은 더 크게 키우고, 대화 주제/작업 유형 프리셋 카드 내부 아이콘은 한 단계 줄여 시각 균형을 조정했다.
|
||||
- 업데이트: 2026-04-05 19:46 (KST)
|
||||
- 모델 빠른 설정 팝업에서 하단 중복 모델 칩 줄을 제거하고, 하단 모델 라벨은 서비스+모델 조합 대신 현재 모델명만 보이도록 더 심플하게 정리했다.
|
||||
- 업데이트: 2026-04-05 19:53 (KST)
|
||||
- 작업 폴더 선택 팝업을 검색/요약 중심 구조에서 `최근 폴더 목록 + 현재 선택 체크 + 다른 폴더 선택` 형태로 단순화해 더 빠르게 고를 수 있게 정리했다.
|
||||
- 업데이트: 2026-04-05 20:01 (KST)
|
||||
- 선택된 대화 주제/작업 유형 안내 배너를 헤더 중앙에서 입력창 위 중앙으로 옮겨 실제 작성 흐름에 더 가깝게 보이도록 조정했다.
|
||||
- 업데이트: 2026-04-05 20:08 (KST)
|
||||
- 좌측 사이드바에서 상단 필터와 중복돼 보이던 탭별 보조 필터 메뉴를 숨겨 필터가 하나만 보이도록 정리했다.
|
||||
- 업데이트: 2026-04-05 22:34 (KST)
|
||||
- AX Agent 좌측 사이드바에서 `주제 / 작업 유형 / 워크스페이스` 보조 필터 메뉴를 완전히 숨기고, 상단 공통 필터 드롭다운 하나만 남겨 중복 필터처럼 보이던 구조를 정리했다.
|
||||
- 업데이트: 2026-04-05 22:39 (KST)
|
||||
- Cowork/Code 하단 작업 폴더 바에서 불필요한 폴더 해제 `X` 버튼을 제거하고, 구분선과 권한/데이터 활용 버튼 정렬을 다시 맞춰 더 단정한 한 줄 흐름으로 정리했다.
|
||||
- 업데이트: 2026-04-05 22:44 (KST)
|
||||
- AX Agent 내부 설정에서 `호출 간격 최적화`, `의사결정 수준` 실행 방식 블록은 `코워크/코드` 공통 탭에만 남기고, `코워크`와 `코드` 개별 탭에서는 숨겼다. 함께 레거시 `실행 전 계획` 행도 UI에서 제거했다.
|
||||
- 업데이트: 2026-04-05 22:48 (KST)
|
||||
- AX Agent 내부 설정의 `최대 컨텍스트 토큰` 프리셋에 `32K`, `128K` 중간값을 추가하고, 현재 저장값이 중간 구간에 있을 때도 가장 가까운 프리셋 카드가 자연스럽게 선택되도록 매핑을 보강했다.
|
||||
- 업데이트: 2026-04-05 22:53 (KST)
|
||||
- 하단 컨텍스트 토큰 라벨이 hover 후 남아 있던 문제를 수정하고, 토큰 심볼/팝업의 흐린 배경·그림자 느낌을 줄여 더 깔끔한 테두리 중심 스타일로 정리했다.
|
||||
- 업데이트: 2026-04-05 22:57 (KST)
|
||||
- 채팅/코워크 프리셋 카드 hover 시 설명 라벨을 `Collapsed/Visible`로 토글하던 방식을 없애고, 같은 자리에서 `Opacity`만 바꾸도록 조정해 카드가 깜빡이듯 다시 그려지던 현상을 줄였다.
|
||||
- 업데이트: 2026-04-05 20:17 (KST)
|
||||
- 런처의 클립보드 히스토리/클립보드 변환/순차 붙여넣기 실행 경로를 공통 포커스 복원 helper 기반으로 정리했다. 이전 활성 창 복원, 최소 대기, Ctrl+V 주입 순서를 [ForegroundPasteHelper.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/ForegroundPasteHelper.cs) 로 통일해 포커스가 원래 창으로 돌아가지 않아 붙여넣기가 누락되던 문제를 줄였다.
|
||||
- 업데이트: 2026-04-05 20:17 (KST)
|
||||
- AX Agent 메시지 transcript에서 사용자/assistant 행 여백을 더 끝단 기준으로 재정렬하고, `AX 에이전트` 라벨과 시간 표기 크기를 키워 메타 가독성을 보강했다. 반영 위치는 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 이다.
|
||||
- 업데이트: 2026-04-05 23:02 (KST)
|
||||
- AX Agent 새 대화 전환 경로를 실제 fresh conversation 생성 기준으로 수정했다. 기존에는 현재 대화를 저장한 뒤 LoadOrCreateConversation()을 다시 호출해 최신 저장 대화를 재로드하는 경로가 섞여 있어, 첫 화면이 잠깐 깜빡인 뒤 기존 대화가 그대로 남는 문제가 있었다. 이제 ClearCurrentConversation() 뒤에는 항상 새 대화를 생성하고, 대화별 설정/압축 메트릭/앱 상태를 새 conversation 기준으로 다시 동기화한 후 빈 transcript를 렌더한다.
|
||||
- 업데이트: 2026-04-05 23:09 (KST)
|
||||
- AX Agent 좌측 패널의 타이포를 전반적으로 키웠다. 헤더, 새 대화, 검색, 상단 필터, 탭별 보조 메뉴, 전체 삭제, 하단 사용자 영역 폰트와 아이콘 크기를 함께 조정하고, 사이드바 폭도 소폭 넓혀 더 이상 지나치게 작고 빽빽하게 보이지 않도록 정리했다. 대화 목록 카드 제목/시간/실행 메타도 함께 키워 실제 읽을 수 있는 수준으로 보정했다.
|
||||
- 업데이트: 2026-04-05 23:15 (KST)
|
||||
- AX Agent 좌측 패널과 본문 사이 경계선을 드래그해 사이드바 폭을 직접 조절할 수 있게 했다. 사이드바가 열려 있을 때만 splitter가 보이며, 사용자가 조절한 폭은 닫았다 다시 열어도 유지된다.
|
||||
- 업데이트: 2026-04-05 23:22 (KST)
|
||||
- AX Agent 상단 탭 헤더 높이와 탭 래퍼 패딩을 늘려 채팅 / Cowork / 코드 글자가 잘리던 문제를 보정했다. 또 사용자/assistant/streaming 메시지가 같은 transcript 폭 컨테이너를 공유하도록 바꿔 좌우 정렬 기준이 어긋나 보이던 문제를 정리했다.
|
||||
- 업데이트: 2026-04-05 23:28 (KST)
|
||||
- AX Agent 작업 폴더 선택 팝업의 최근 항목 스타일을 레퍼런스처럼 더 단정한 라운드 row 구조로 정리했다. 각 최근 폴더 항목은 개별 카드형 hover/선택 상태를 가지도록 바꾸고, `다른 폴더 선택`도 같은 시각 언어로 맞췄다. 팝업 외곽 radius, 그림자, 여백, 체크 위치, 텍스트 계층도 함께 조정해 더 자연스럽게 보이게 했다.
|
||||
- 업데이트: 2026-04-05 23:33 (KST)
|
||||
- AX Agent 빈 상태 상단 심볼과 작업 유형/대화 주제 프리셋 카드 아이콘 비율을 다시 맞췄다. 프리셋 카드 내부 아이콘과 `프리셋 추가` 심볼은 한 단계 줄이고, 상단 중앙 심볼과 제목도 같은 밀도로 재조정해 화면 균형을 정리했다.
|
||||
- 업데이트: 2026-04-05 23:38 (KST)
|
||||
- 하단 컨텍스트 토큰 hover 라벨이 마우스를 떼어도 남아 있던 문제를 보정했다. 닫힘 판정을 단순 `IsMouseOver` 대신 실제 마우스 좌표 기준으로 바꾸고, 팝업 내용도 `현재 사용량 + 자동 압축 기준`만 남기도록 단순화했다.
|
||||
- 업데이트: 2026-04-05 23:44 (KST)
|
||||
- 권한 모드 팝업에서 불필요한 `상세 정보` 섹션을 제거하고, 선택 가능한 모드 행만 남기는 단순 리스트형 UI로 정리했다. `계획 모드`는 제외하고 실제 사용하는 권한 요청/편집 자동 승인/권한 건너뛰기 중심으로 재정렬했다.
|
||||
- 업데이트: 2026-04-05 23:49 (KST)
|
||||
- AX Agent 상단 중앙 탭의 글자가 잘리지 않도록 탭 버튼 폰트/패딩/최소 크기와 헤더 래퍼 크기를 소폭 줄였다. 함께 빈 상태의 상단 아이콘과 제목/설명은 한 단계 키워 프리셋 카드 한 장과 시각 비율이 더 자연스럽게 맞도록 조정했다.
|
||||
- 업데이트: 2026-04-05 23:55 (KST)
|
||||
- 하단 컨텍스트 토큰 심볼의 파이 아크가 왼쪽에서 잘려 보이던 문제를 수정했다. 원형 아크 계산 기준을 실제 카드 크기에 맞게 조정하고, hover 라벨은 비상호작용 툴팁처럼 바꿔 카드에서 마우스를 벗어나면 더 깔끔하게 사라지도록 정리했다.
|
||||
- 업데이트: 2026-04-06 00:01 (KST)
|
||||
- 하단 컨텍스트 토큰 hover 라벨이 남아 있던 문제를 창 전체 마우스 이동/클릭/비활성화 기준으로 한 번 더 보강해 줄였다. 함께 전송 버튼은 크기와 아이콘 정렬을 다시 맞춰 작고 치우쳐 보이던 인상을 보정했다.
|
||||
- 업데이트: 2026-04-06 00:08 (KST)
|
||||
- AX Agent 내부 설정의 등록 모델 영역에서 상단 중복 선택 칩 UI를 제거하고, 하단 등록 모델 리스트만 남기도록 정리했다.
|
||||
- 등록 모델 리스트의 `선택 / 편집 / 삭제` 액션은 기본 버튼 대신 팝업 친화적인 클릭 row 스타일로 바꿔 내부 설정 오버레이에서도 더 안정적으로 동작하게 맞췄다.
|
||||
- 업데이트: 2026-04-06 00:14 (KST)
|
||||
- AX Agent 상단 중앙 탭 그룹의 버튼 패딩과 최소 크기, 외곽 래퍼 높이를 소폭 줄여 탭이 지나치게 꽉 찬 느낌 없이 여유 있게 보이도록 정리했다.
|
||||
- 업데이트: 2026-04-06 00:22 (KST)
|
||||
- `claw-code`와 AX Agent 소스 구조를 다시 대조해 transcript renderer 분리, permission presentation catalog, tool result taxonomy, plan approval inline 마감, runtime summary 계층화, regression prompt ritual 고정까지 포함한 품질 향상 계획을 문서에 구체화했다.
|
||||
- 업데이트: 2026-04-06 00:27 (KST)
|
||||
- AX Agent 채팅창의 기본 시작 높이를 소폭 늘려, 처음 열었을 때 상하 여백과 프리셋 영역이 더 여유 있게 보이도록 조정했다.
|
||||
- 업데이트: 2026-04-06 00:31 (KST)
|
||||
- AX Agent 상단 중앙 탭 그룹의 버튼 padding, 최소 폭/높이와 바깥 pill 래퍼 높이를 한 단계 더 줄였다. 이제 탭 바깥 테두리 안쪽 여백이 더 살아 있어, 레퍼런스처럼 답답하지 않은 세그먼트 탭 비율로 보인다.
|
||||
- 업데이트: 2026-04-06 00:38 (KST)
|
||||
- vLLM 연결 시 등록 모델 alias/실제 모델 ID가 섞여 전달되던 경로를 보정했다. 내부 서비스(Ollama/vLLM)는 현재 선택값이 alias여도 등록 모델의 실제 모델명을 다시 찾아 요청 payload에 넣도록 정리했다.
|
||||
- vLLM OpenAI-compatible 요청의 `max_tokens`는 서버 허용 범위를 넘지 않도록 자동 보정했다. 일반 대화와 도구 호출 모두 같은 상한 계산을 써 `invalid max_tokens` 오류가 덜 나도록 맞췄다.
|
||||
- 업데이트: 2026-04-06 00:48 (KST)
|
||||
- AX Agent 새 대화 전환 시 저장되지 않은 fresh conversation이 최신 저장 대화로 다시 교체되던 세션 복원 경로를 보정했다. [ChatSessionStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/ChatSessionStateService.cs) 의 `LoadOrCreateConversation()`이 기억된 대화 ID가 없는 상태에서도 현재 탭의 임시 fresh conversation을 우선 유지하도록 바꿔, 새 대화를 누르면 빈 화면이 잠깐 깜빡인 뒤 기존 대화가 다시 나타나던 문제를 막았다.
|
||||
- 업데이트: 2026-04-06 01:00 (KST)
|
||||
- AX Agent 메시지 hover 액션을 보강해 복사/편집/재생성/수정 후 재시도/좋아요·싫어요가 실제로 보이도록 정리했다. 사용자/assistant 메시지 액션 바를 완전 숨김 대신 기본 저강도 노출 + hover 강조 방식으로 바꿔, 마우스를 올렸을 때 액션이 안 보이던 문제를 줄였다.
|
||||
- assistant 응답에는 응답시간과 총 토큰 수를 메시지 메타로 저장해 transcript 아래에 함께 표시되게 했다. 반영 위치는 [ChatModels.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/ChatModels.cs), [AxAgentExecutionEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 이다.
|
||||
- 업데이트: 2026-04-06 01:08 (KST)
|
||||
- `claw-code`의 `SessionPreview`/`PreviewBox` 흐름을 참고해 AX Agent 프리뷰도 같은 시각 언어로 정리했다. 새 파일 [AgentPreviewSurfaceFactory.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentPreviewSurfaceFactory.cs)를 추가해 권한 프리뷰 카드의 제목/요약/본문 박스 구조를 공통화했다.
|
||||
- [PermissionRequestWindow.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/PermissionRequestWindow.cs)의 일반 프리뷰, 파일 편집 프리뷰, 파일 생성 2열 프리뷰를 이 공통 surface로 맞춰 `preview box` 언어를 통일했다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 우측 파일 프리뷰 패널에는 파일명/경로/형식·크기 메타를 보여주는 헤더를 추가하고, 텍스트 프리뷰 본문도 별도 bordered preview box 안에 렌더되게 바꿨다.
|
||||
- 업데이트: 2026-04-06 00:35 (KST)
|
||||
- AX Agent 채팅/코워크 프리셋 카드에서 기본 ToolTip을 제거해 hover 시 깜빡이듯 반복되던 현상을 줄였습니다.
|
||||
- 업데이트: 2026-04-06 00:42 (KST)
|
||||
- 코드 탭 하단 Git 브랜치 버튼을 상태판 형태에서 단순한 브랜치 선택 버튼 형태로 정리했습니다.
|
||||
- 업데이트: 2026-04-05 22:26 (KST)
|
||||
- 코드 탭에서는 폴더 문서/파일을 기본 작업 전제로 삼도록 `폴더 내 데이터 활용`을 항상 `적극 활용(active)`으로 강제했다. 하단 채팅창의 데이터 활용 버튼은 코드 탭에서 숨기고, 내부 설정 오버레이의 같은 옵션도 코드 탭에서는 노출하지 않게 정리했다.
|
||||
- 코워크/코드 탭의 사용자 메시지도 assistant 메시지와 같은 파일 경로 강조 렌더러를 쓰도록 바꿔, 폴더 하위 파일명이나 경로를 입력하면 채팅 본문에서 파란색으로 인식되게 맞췄다.
|
||||
- 업데이트: 2026-04-05 22:29 (KST)
|
||||
- AX Agent 채팅/코워크 프리셋을 선택할 때, 메시지도 입력도 없는 fresh conversation인데도 `새 대화`가 반복 생성되던 흐름을 보정했다. 이제 현재 대화가 이미 있으면 그 빈 대화에 프리셋만 적용하고, 실제 대화가 아예 없는 경우에만 새 대화를 만든다.
|
||||
- 업데이트: 2026-04-05 22:32 (KST)
|
||||
- AX Agent 내부 설정 개발자 탭의 `워크플로우 시각화`, `전체 호출·토큰 합계 표시`, `감사 로그` 토글이 누르자마자 꺼지는 문제를 수정했다. 각 토글의 변경 이벤트를 연결해 즉시 저장되도록 보정했다.
|
||||
- 업데이트: 2026-04-05 22:36 (KST)
|
||||
- AX Agent 내부 설정 `도구 훅 실행 타임아웃`과 `등록된 훅` 영역에서 잘림이 보이던 레이아웃을 보정했다. 슬라이더/값 배지 컬럼 폭과 `훅 추가` 버튼 최소 폭을 넉넉히 늘려 텍스트와 컨트롤이 서로 밀리지 않게 정리했다.
|
||||
- 업데이트: 2026-04-05 22:40 (KST)
|
||||
- AX Agent 테마를 다시 점검해 기존 `Claw / Codex / Slate` 외에 `Nord`, `Ember` 2종을 추가했다. `Nord`는 차분한 블루그레이 업무형 톤, `Ember`는 따뜻한 앰버 문서 작업 톤으로 구성했다.
|
||||
- 내부 설정 `테마 스타일` 카드에서도 새 프리셋을 바로 선택할 수 있게 연결했고, `system / light / dark` 모드 조합으로 같은 방식으로 적용되도록 정리했다.
|
||||
- 업데이트: 2026-04-06 00:58 (KST)
|
||||
- AX Agent transcript 품질 향상을 위해 렌더 책임을 실제로 분리했다. [ChatWindow.InlineInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.InlineInteractions.cs), [ChatWindow.TaskSummary.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TaskSummary.cs)를 추가해 `의견 요청`, `계획 승인`, `작업 요약` UI 로직을 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에서 분리했다.
|
||||
- [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs), [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)를 추가해 권한 요청과 도구 결과를 `명령/네트워크/파일`, `성공/실패/거부/취소` 기준으로 나눠 transcript badge에 재사용하도록 정리했다.
|
||||
- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs)에 `OperationalStatusPresentationState`와 `GetOperationalStatusPresentation(...)`을 추가해 status/runtime summary 계산을 전용 요약 모델로 한 번 더 계층화했다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 상태선 갱신은 이제 이 presentation summary를 소비한다.
|
||||
- 업데이트: 2026-04-06 01:12 (KST)
|
||||
- AX Agent 코워크/코드의 `폴더 내 문서 활용`을 사용자 옵션에서 제거했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [AgentSettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml) 에서 하단 버튼, 내부 설정 행, 구형 설정창 항목을 걷어냈다.
|
||||
- 런타임은 옵션이 아닌 자동 정책으로 유지한다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 채팅은 `none`, 코워크는 `passive`, 코드는 `active`를 자동 적용하고, 더 이상 오버레이 저장 시 `FolderDataUsage`를 사용자 선택값으로 저장하지 않는다.
|
||||
- 업데이트: 2026-04-06 01:24 (KST)
|
||||
- `claw-code` 기준 transcript 품질 향상을 위해 권한 요청/도구 결과/도구 이름 display catalog를 다시 정리했다. [AgentTranscriptDisplayCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentTranscriptDisplayCatalog.cs)는 파일/문서/빌드/Git/웹/스킬/질문 카테고리를 더 명확한 한국어 display name과 badge label로 분류하고, [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs)는 `명령 실행 / 웹 요청 / 스킬 실행 / 의견 요청 / 파일 수정 / 파일 접근` 권한 요청을 타입별 presentation으로 나누도록 보강했다.
|
||||
- [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)는 `success / error / reject / cancel`을 도구 종류에 따라 `파일 작업 완료`, `빌드/테스트 실패`, `웹 요청 거부`처럼 더 읽기 쉬운 결과 라벨로 바꾸도록 확장했다.
|
||||
- transcript renderer 분리 2차로 [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)를 추가해 `CreateCompactEventPill`, `AddAgentEventBanner`, `GetDecisionBadgeMeta`를 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 옮겼다. 이제 메인 파일은 대화 흐름과 상태 처리에 더 집중하고, 이벤트 배너 렌더는 별도 partial에서 관리한다.
|
||||
|
||||
@@ -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
|
||||
BIN
dist/AxCopilot/Assets/guide_dev.enc
vendored
BIN
dist/AxCopilot/Assets/guide_dev.enc
vendored
Binary file not shown.
BIN
dist/AxCopilot/Assets/guide_user.enc
vendored
BIN
dist/AxCopilot/Assets/guide_user.enc
vendored
Binary file not shown.
BIN
dist/AxCopilot/AxCopilot.SDK.dll
vendored
BIN
dist/AxCopilot/AxCopilot.SDK.dll
vendored
Binary file not shown.
4
dist/AxCopilot/AxCopilot.deps.json
vendored
4
dist/AxCopilot/AxCopilot.deps.json
vendored
@@ -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": ""
|
||||
|
||||
BIN
dist/AxCopilot/AxCopilot.dll
vendored
BIN
dist/AxCopilot/AxCopilot.dll
vendored
Binary file not shown.
BIN
dist/AxCopilot/AxCopilot.exe
vendored
BIN
dist/AxCopilot/AxCopilot.exe
vendored
Binary file not shown.
2
dist/AxCopilot/skills/adr-writer.skill.md
vendored
2
dist/AxCopilot/skills/adr-writer.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: adr-writer
|
||||
label: 아키텍처 결정 기록 (ADR)
|
||||
description: 아키텍처 결정 사항을 표준 ADR 형식으로 문서화합니다.
|
||||
|
||||
12
dist/AxCopilot/skills/api-docs.skill.md
vendored
12
dist/AxCopilot/skills/api-docs.skill.md
vendored
@@ -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 문서 생성
|
||||
|
||||
|
||||
2
dist/AxCopilot/skills/batch-rename.skill.md
vendored
2
dist/AxCopilot/skills/batch-rename.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: batch-rename
|
||||
label: 파일 일괄 이름 변경
|
||||
description: 패턴 매칭, 번호 붙이기, 날짜 추가 등 파일 이름을 일괄 변경합니다.
|
||||
|
||||
2
dist/AxCopilot/skills/changelog.skill.md
vendored
2
dist/AxCopilot/skills/changelog.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: changelog
|
||||
label: 변경 이력 / 릴리즈 노트
|
||||
description: Git 커밋 이력에서 자동으로 변경 이력과 릴리즈 노트를 생성합니다.
|
||||
|
||||
10
dist/AxCopilot/skills/code-scaffold.skill.md
vendored
10
dist/AxCopilot/skills/code-scaffold.skill.md
vendored
@@ -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 — 새 파일 생성
|
||||
|
||||
작업 순서:
|
||||
|
||||
13
dist/AxCopilot/skills/commit-review.skill.md
vendored
13
dist/AxCopilot/skills/commit-review.skill.md
vendored
@@ -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. 결과를 정리하여 출력
|
||||
|
||||
|
||||
2
dist/AxCopilot/skills/compare.skill.md
vendored
2
dist/AxCopilot/skills/compare.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: compare
|
||||
label: 비교 분석표
|
||||
description: 2개 이상 항목의 비교 분석 매트릭스를 생성합니다.
|
||||
|
||||
20
dist/AxCopilot/skills/csv-to-xlsx.skill.md
vendored
20
dist/AxCopilot/skills/csv-to-xlsx.skill.md
vendored
@@ -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 스크립트 템플릿
|
||||
|
||||
2
dist/AxCopilot/skills/data-convert.skill.md
vendored
2
dist/AxCopilot/skills/data-convert.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: data-convert
|
||||
label: 데이터 변환기
|
||||
description: 데이터 포맷 간 변환, 정제, 필터링, 통계 요약을 수행합니다.
|
||||
|
||||
@@ -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. **결과 확인**: 생성된 차트 이미지 경로를 사용자에게 안내
|
||||
|
||||
## 시각화 유형별 템플릿
|
||||
|
||||
@@ -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
|
||||
---
|
||||
|
||||
|
||||
12
dist/AxCopilot/skills/db-schema.skill.md
vendored
12
dist/AxCopilot/skills/db-schema.skill.md
vendored
@@ -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 생성
|
||||
|
||||
## 출력 형식
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: dependency-audit
|
||||
label: 의존성 분석
|
||||
description: 프로젝트 의존성 그래프를 분석하고 보안 취약점, 라이선스, 업데이트 현황을 보고합니다.
|
||||
|
||||
18
dist/AxCopilot/skills/diagram-generator.skill.md
vendored
18
dist/AxCopilot/skills/diagram-generator.skill.md
vendored
@@ -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. **결과 확인**: 생성된 이미지 파일 경로를 사용자에게 안내
|
||||
|
||||
## 다이어그램 유형별 템플릿
|
||||
|
||||
20
dist/AxCopilot/skills/docx-creator.skill.md
vendored
20
dist/AxCopilot/skills/docx-creator.skill.md
vendored
@@ -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 스크립트 템플릿
|
||||
|
||||
2
dist/AxCopilot/skills/email-draft.skill.md
vendored
2
dist/AxCopilot/skills/email-draft.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: email-draft
|
||||
label: 비즈니스 이메일 작성
|
||||
description: 상황과 톤에 맞는 전문적인 비즈니스 이메일 초안을 생성합니다.
|
||||
|
||||
4
dist/AxCopilot/skills/env-setup.skill.md
vendored
4
dist/AxCopilot/skills/env-setup.skill.md
vendored
@@ -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
|
||||
---
|
||||
|
||||
프로젝트 유형에 맞는 환경 설정 파일을 자동으로 생성하세요.
|
||||
|
||||
2
dist/AxCopilot/skills/gen-test.skill.md
vendored
2
dist/AxCopilot/skills/gen-test.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: gen-test
|
||||
label: 테스트 생성기
|
||||
description: 지정 파일의 단위 테스트를 자동 생성하고 실행하여 커버리지를 분석합니다.
|
||||
|
||||
20
dist/AxCopilot/skills/image-processor.skill.md
vendored
20
dist/AxCopilot/skills/image-processor.skill.md
vendored
@@ -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 패키지가 설치되어 있<><EC9E88>지 확인하고, 없으면 설<><EC84A4><EFBFBD>하세요:
|
||||
```
|
||||
process_run: pip install Pillow
|
||||
process: pip install Pillow
|
||||
```
|
||||
|
||||
## 작업 절<><ECA088>
|
||||
1. **요구사항 파악**: 처리할 이미지 파일과 원하는 작업 확인
|
||||
2. **Python 스크립트 작성**: file_write로 .py 파일 생성
|
||||
3. **스크립트 실행**: process_run으로 Python 스크립<ED81AC><EBA6BD> 실행
|
||||
3. **스크립트 실행**: `process`로 Python 스크립<ED81AC><EBA6BD> 실행
|
||||
4. **결과 확인**: 처리된 이미지 파일 경로를 사용자에게 안내
|
||||
|
||||
## 지원 기능
|
||||
|
||||
2
dist/AxCopilot/skills/impact.skill.md
vendored
2
dist/AxCopilot/skills/impact.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: impact
|
||||
label: 변경 영향 분석
|
||||
description: 코드 변경 시 영향받는 파일, 함수, 테스트를 식별합니다.
|
||||
|
||||
2
dist/AxCopilot/skills/json-schema.skill.md
vendored
2
dist/AxCopilot/skills/json-schema.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: json-schema
|
||||
label: JSON/YAML 스키마 도구
|
||||
description: JSON 또는 YAML 데이터에서 스키마를 생성하고, 데이터의 유효성을 검증합니다.
|
||||
|
||||
2
dist/AxCopilot/skills/log-analyze.skill.md
vendored
2
dist/AxCopilot/skills/log-analyze.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: log-analyze
|
||||
label: 로그 분석기
|
||||
description: 로그 파일의 패턴을 분석하고 에러를 요약하며 타임라인을 시각화합니다.
|
||||
|
||||
18
dist/AxCopilot/skills/markdown-to-doc.skill.md
vendored
18
dist/AxCopilot/skills/markdown-to-doc.skill.md
vendored
@@ -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. **결과 확인**: 생성된 문서 파일 경로와 페이지 수를 안내
|
||||
|
||||
## 스타일 매핑
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
---
|
||||
---
|
||||
name: meeting-minutes
|
||||
label: 회의록 정리
|
||||
description: 회의 내용을 체계적으로 정리하여 회의록을 생성합니다.
|
||||
icon: \uE771
|
||||
allowed-tools:
|
||||
- file_read
|
||||
- file_write
|
||||
- text_summarize
|
||||
- template_render
|
||||
tabs: cowork
|
||||
---
|
||||
|
||||
|
||||
16
dist/AxCopilot/skills/ocr-extract.skill.md
vendored
16
dist/AxCopilot/skills/ocr-extract.skill.md
vendored
@@ -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
|
||||
```
|
||||
|
||||
## 작업 절차
|
||||
|
||||
7
dist/AxCopilot/skills/paper-review.skill.md
vendored
7
dist/AxCopilot/skills/paper-review.skill.md
vendored
@@ -1,8 +1,13 @@
|
||||
---
|
||||
---
|
||||
name: paper-review
|
||||
label: 논문 분석
|
||||
description: 논문 또는 기술 문서를 체계적으로 분석하고 핵심 내용을 정리합니다.
|
||||
icon: \uE736
|
||||
allowed-tools:
|
||||
- document_read
|
||||
- file_read
|
||||
- file_write
|
||||
- text_summarize
|
||||
tabs: cowork
|
||||
---
|
||||
|
||||
|
||||
21
dist/AxCopilot/skills/pdf-processor.skill.md
vendored
21
dist/AxCopilot/skills/pdf-processor.skill.md
vendored
@@ -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
|
||||
|
||||
2
dist/AxCopilot/skills/perf-audit.skill.md
vendored
2
dist/AxCopilot/skills/perf-audit.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: perf-audit
|
||||
label: 성능 감사
|
||||
description: 코드 복잡도, 성능 병목, 메모리 이슈를 분석하고 최적화 방안을 제시합니다.
|
||||
|
||||
20
dist/AxCopilot/skills/pptx-creator.skill.md
vendored
20
dist/AxCopilot/skills/pptx-creator.skill.md
vendored
@@ -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 파일 경로를 사용자에게 전달
|
||||
|
||||
## 스크립트 템플릿
|
||||
|
||||
2
dist/AxCopilot/skills/prd-generator.skill.md
vendored
2
dist/AxCopilot/skills/prd-generator.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: prd-generator
|
||||
label: 요구사항 정의서 (PRD)
|
||||
description: 제품 요구사항 정의서, 유저 스토리, 수용 기준을 체계적으로 생성합니다.
|
||||
|
||||
9
dist/AxCopilot/skills/refactor.skill.md
vendored
9
dist/AxCopilot/skills/refactor.skill.md
vendored
@@ -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@*
|
||||
---
|
||||
|
||||
코드베이스를 분석하여 리팩토링이 필요한 부분을 식별하고 개선 계획을 수립하세요.
|
||||
|
||||
2
dist/AxCopilot/skills/regex-helper.skill.md
vendored
2
dist/AxCopilot/skills/regex-helper.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: regex-helper
|
||||
label: 정규식 도우미
|
||||
description: 정규식 패턴을 생성하고, 기존 패턴을 해석하며, 테스트 케이스로 검증합니다.
|
||||
|
||||
2
dist/AxCopilot/skills/release-note.skill.md
vendored
2
dist/AxCopilot/skills/release-note.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: release-note
|
||||
label: 릴리즈 노트 생성
|
||||
description: 비개발자 대상의 사용자 친화적인 릴리즈 노트를 자동 생성합니다.
|
||||
|
||||
10
dist/AxCopilot/skills/report-writer.skill.md
vendored
10
dist/AxCopilot/skills/report-writer.skill.md
vendored
@@ -1,8 +1,16 @@
|
||||
---
|
||||
---
|
||||
name: report-writer
|
||||
label: 보고서 작성
|
||||
description: 작업 폴더의 데이터를 분석하여 체계적인 업무 보고서를 생성합<EC84B1><ED95A9>다.
|
||||
icon: \uE9F9
|
||||
allowed-tools:
|
||||
- folder_map
|
||||
- file_read
|
||||
- file_write
|
||||
- data_pivot
|
||||
- chart_create
|
||||
- template_render
|
||||
- text_summarize
|
||||
tabs: cowork
|
||||
---
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: security-audit
|
||||
label: 보안 코드 감사
|
||||
description: 코드베이스의 보안 취약점을 점검하고 OWASP 기반 보안 보고서를 생성합니다.
|
||||
|
||||
2
dist/AxCopilot/skills/sql-report.skill.md
vendored
2
dist/AxCopilot/skills/sql-report.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: sql-report
|
||||
label: SQL 리포트
|
||||
description: DB 쿼리를 실행하고 결과를 차트화하여 HTML/Excel 보고서로 생성합니다.
|
||||
|
||||
2
dist/AxCopilot/skills/translate.skill.md
vendored
2
dist/AxCopilot/skills/translate.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: translate
|
||||
label: 번역 + 교정
|
||||
description: 문서나 텍스트를 번역하고 전문 용어를 보존하며 교정합니다.
|
||||
|
||||
2
dist/AxCopilot/skills/weekly-report.skill.md
vendored
2
dist/AxCopilot/skills/weekly-report.skill.md
vendored
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
name: weekly-report
|
||||
label: 주간 보고서
|
||||
description: 작업 폴더의 변경 이력을 기반으로 자동 주간보고 초안을 생성합니다.
|
||||
|
||||
21
dist/AxCopilot/skills/xlsx-analyzer.skill.md
vendored
21
dist/AxCopilot/skills/xlsx-analyzer.skill.md
vendored
@@ -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. **결과 보고**: 분석 결과를 사용자에게 정리하여 전달
|
||||
|
||||
## 분석 스크립트 템플릿
|
||||
|
||||
10
dist/AxCopilot/skills/yield-analysis.skill.md
vendored
10
dist/AxCopilot/skills/yield-analysis.skill.md
vendored
@@ -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
|
||||
---
|
||||
|
||||
|
||||
2
dist/AxCopilot/system_prompt.txt
vendored
2
dist/AxCopilot/system_prompt.txt
vendored
@@ -1 +1 @@
|
||||
[역할] 당신은 회사 업무의 도움을 주는 매우 유능한 비서입니다. 말투는 정중하게 하며, 욕을 해서는 안됩니다.
|
||||
[역할] 당신은 회사 업무의 도움을 주는 매우 유능한 비서입니다. 말투는 정중하게 하며, 욕을 해서는 안됩니다.
|
||||
BIN
dist/AxCopilot_Setup.exe
vendored
BIN
dist/AxCopilot_Setup.exe
vendored
Binary file not shown.
BIN
dist/AxKeyEncryptor/AxKeyEncryptor.dll
vendored
BIN
dist/AxKeyEncryptor/AxKeyEncryptor.dll
vendored
Binary file not shown.
BIN
dist/AxKeyEncryptor/AxKeyEncryptor.exe
vendored
BIN
dist/AxKeyEncryptor/AxKeyEncryptor.exe
vendored
Binary file not shown.
@@ -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: 硫?고뙣??臾몄꽌 ?앹꽦 ?꾩껜 ?ъ슜 媛??(媛쒖슂?믪꽮?섎퀎 ?곸꽭?믪“由?
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,27 +1,27 @@
|
||||
# AX Agent 로드맵 (전면 재작성)
|
||||
# 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,44 @@
|
||||
- 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 전용으로 정렬.
|
||||
|
||||
|
||||
- 2026-04-04 20:27 (KST): Added a dedicated AX Agent theme layer and separated in-chat theme selection into style (`claw/codex/slate`) and mode (`system/light/dark`).
|
||||
- 2026-04-04 18:03 (KST): Added a Codex-style context usage ring to the composer, exposed direct `/compact` execution from the footer, and surfaced Git branch/change status in the Cowork/Code footer when a repository is connected.
|
||||
- 2026-04-04 18:03 (KST): Simplified the Cowork footer by removing document format/design selectors and moved those defaults into the AX Agent settings page, with output format centered on AI automatic selection.
|
||||
- 2026-04-04 18:03 (KST): Minimized AX Agent message headers, changed model quick controls to a popup panel, flattened slash command rows into a Codex-style list, and aligned model/permission/template controls to the same dropdown panel language.
|
||||
- 2026-04-04 18:03 (KST): Expanded the Git branch badge into a dropdown panel, flattened permission/template popups into row-based lists, and made AI message action bars remain visible for the selected message.
|
||||
- 2026-04-04 18:03 (KST): Flattened the data-usage popup, added Git branch switching/creation inside the dropdown, and surfaced quick model chips so the inline model panel relies less on ComboBox controls.
|
||||
- 2026-04-04 18:03 (KST): Replaced the visible inline model/service selectors with custom cards and row lists so the AX Agent quick panel more closely follows the Codex/claude-code control feel.
|
||||
- 2026-04-04 18:03 (KST): Added recent/favorite grouping to the preset popup and enabled right-click pinning so the preset picker better matches Codex-style frequent-use navigation.
|
||||
- 2026-04-04 18:03 (KST): Added preset search, made selected messages visually persistent, and flattened more of the permission detail popup into row-based information to keep the panel lighter.
|
||||
- 2026-04-04 18:03 (KST): Switched recent permission-denied actions to flat row actions, exposed Git upstream state in the branch panel, and made inline quick actions read more like custom stateful cards.
|
||||
- 2026-04-04 19:07 (KST): Unified AX Agent popup panels around the same row-driven language by flattening permission override details, simplifying collapsible section chrome, adding keyboard-friendly row actions, and turning Git change stats into compact pills.
|
||||
- 2026-04-04 19:07 (KST): Refined message actions into custom pill buttons with visible labels, fixed the custom action template so border visuals render correctly, and tightened composer/footer density so model, preset, token, permission, and Git controls feel like one system.
|
||||
- 2026-04-04 19:11 (KST): Reworked the AX Agent timeline so execution events render like thin Codex-style inline logs instead of heavy banners, softened older-history loading into an outline pill, and aligned planning cards to the same message-width rhythm.
|
||||
- 2026-04-04 19:25 (KST): Tightened user/assistant/streaming cards under one density rule by compressing vertical spacing, card padding, header typography, and message meta spacing to a more Codex-like rhythm.
|
||||
- 2026-04-04 19:25 (KST): Flattened the composer further by reducing input, model, preset, token, and footer control heights so the bottom work area reads more like a single claw-code-style strip.
|
||||
- 2026-04-04 19:25 (KST): Matched AX Agent overlay quick settings to inline quick settings with the same `label · value` structure, lighter explanatory copy, and unified section naming.
|
||||
- 2026-04-04 19:48 (KST): Fixed Chat sidebar topic exploration so clicking the left topic entry surfaces the preset cards again, and made preset selection immediately sync category label, conversation metadata, and saved state.
|
||||
- 2026-04-04 19:48 (KST): Reduced permission/data-usage UI lag by synchronizing conversation settings before persistence, switching popup rows to immediate mouse-down activation, and refreshing overlay status labels in the same turn.
|
||||
- 2026-04-04 19:48 (KST): Widened the AX Agent message lane, softened the yellow cast of the Claude-style theme preset, aligned the data-usage button with the permission button language, and routed the tray settings entry directly into AX Agent settings when AI is enabled.
|
||||
- 2026-04-04 20:41 (KST): Permission surface re-aligned to the four claw-code public modes, legacy `질문 없이 진행` exposure removed from AX Agent popups/slash guidance, and the in-chat settings/sidebar information hierarchy simplified to match the lighter Claude/Codex-style layout direction.
|
||||
- 업데이트: 2026-04-04 22:05 (KST)
|
||||
- AX Agent 고급 설정 오버레이를 설명형 row + 커스텀 On/Off 선택 구조로 개편하고, 내부 기능명을 사용자 친화 문구로 정리함.
|
||||
- 업데이트: 2026-04-04 20:58 (KST)
|
||||
- AX Agent 서비스 설정의 내부 서비스 모델 선택을 등록 모델 칩 기반으로 정리하고, vLLM SSL 우회는 모델 등록/편집 다이얼로그에서만 노출되도록 설정 표면을 축소함.
|
||||
- 업데이트: 2026-04-04 21:02 (KST)
|
||||
- composer 컨텍스트 카드를 hover 중심의 간단 표기(`%` + `K/M` 사용량)로 정리하고, 최대 컨텍스트 설정 상한을 1M까지 확장함.
|
||||
- 업데이트: 2026-04-04 21:02 (KST)
|
||||
- AX Agent 서비스 설정의 `Gemini/Claude`도 모델 칩 선택 구조로 통일하고, composer 모델 버튼을 `서비스 · 모델` 문법으로 맞춰 설정-실행 흐름의 시각 언어를 정리함.
|
||||
- 업데이트: 2026-04-04 23:14 (KST)
|
||||
- 트레이 좌클릭 기본 진입점을 AX Agent로 전환하고, 우클릭 메뉴 상단에 앱 버전 헤더를 추가해 AX Agent 중심 진입 흐름을 강화함.
|
||||
- 메인 설정 저장 완료 후 열린 AX Agent 창이 즉시 테마/모델/권한/하단 상태줄을 다시 읽어오도록 fan-out 경로를 추가해 설정 반영 지연을 줄임.
|
||||
- DraftQueue kind 분류를 message/command/steering/direct/followup 기준으로 재정리해 큐 타입과 실제 입력 성격이 더 잘 맞도록 보강함.
|
||||
- 업데이트: 2026-04-04 23:23 (KST)
|
||||
- AX Agent가 `SettingsService.SettingsChanged`를 직접 구독하도록 바꿔 메인 설정/AX Agent 설정 어느 경로에서 저장하더라도 테마, 모델, 권한, 데이터 활용, composer, 대기열 UI가 즉시 동일 상태를 반영하도록 fan-out을 통합함.
|
||||
- AX Agent 설정 저장 경로에서 표현 수준을 무조건 `rich`로 덮어쓰던 로직을 제거해 `풍부하게 / 적절하게 / 간단하게`가 다른 설정 저장 경로에서도 유지되도록 보정함.
|
||||
- DraftQueue 패널은 `실행 중 / 다음 작업 / 보류 / 완료 / 실패` 개별 섹션 구조로 다시 나눠 현재 실행 흐름과 재시도 대기, 결과 이력을 더 빠르게 파악할 수 있도록 정리함.
|
||||
- ????: 2026-04-04 23:32 (KST)
|
||||
- AX Agent ???? ??? ?? tool-result ?? -> microcompact ?? ?? ?? -> ?? ?? ?? 3?? ??? ???, claude-code? staged compact ??? ? ??? ? ?? ??? ?? ????? ???.
|
||||
- ??? ?? ??, tool_result, ?? ???, ???? ? ???? LLM ?? ?? microcompact_boundary? ?? ??? ?? ?? ?? ?? ?? ?? ??? ??? ???? ?? ??.
|
||||
|
||||
@@ -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 → [모델명]" 표시 확인
|
||||
79
docs/AX_AGENT_REGRESSION_PROMPTS.md
Normal file
79
docs/AX_AGENT_REGRESSION_PROMPTS.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# AX Agent Regression Prompts
|
||||
|
||||
업데이트: 2026-04-05 22:18 (KST)
|
||||
|
||||
`claw-code`와 AX Agent를 같은 기준으로 비교하기 위한 회귀 프롬프트 세트입니다.
|
||||
|
||||
## Chat
|
||||
|
||||
1. 기본 답변
|
||||
- 프롬프트: `회의 일정 조정 메일을 정중한 한국어로 써줘`
|
||||
- 확인:
|
||||
- 빈 assistant 카드 없음
|
||||
- 재생성/재시도 후 transcript 중복 없음
|
||||
|
||||
2. 장문 설명
|
||||
- 프롬프트: `RAG와 fine-tuning 차이를 실무 관점으로 7가지로 설명해줘`
|
||||
- 확인:
|
||||
- 장문 렌더 유지
|
||||
- compact 이후 다음 턴 문맥 유지
|
||||
|
||||
## Cowork
|
||||
|
||||
3. 문서형 작업
|
||||
- 프롬프트: `신규 ERP 도입 제안서 초안을 작성해줘. 목적, 범위, 기대효과, 추진일정 포함`
|
||||
- 확인:
|
||||
- 작업 유형 반영
|
||||
- 계획 이후 실제 문서형 결과 흐름
|
||||
- 기본 로그 과다 노출 없음
|
||||
|
||||
4. 데이터형 작업
|
||||
- 프롬프트: `매출 CSV를 분석해서 월별 추세와 이상치를 요약해줘`
|
||||
- 확인:
|
||||
- 데이터 분석형 도구 선택
|
||||
- 결과 요약 품질
|
||||
- runtime 노이즈 최소화
|
||||
|
||||
## Code
|
||||
|
||||
5. 버그 수정
|
||||
- 프롬프트: `현재 프로젝트에서 설정 저장 버그 원인 찾고 수정해줘`
|
||||
- 확인:
|
||||
- 읽기/검색/수정 흐름 일관성
|
||||
- diff 저장
|
||||
- reopen 시 transcript 보존
|
||||
|
||||
6. 빌드/테스트
|
||||
- 프롬프트: `빌드 오류를 재현하고 수정한 뒤 다시 빌드해줘`
|
||||
- 확인:
|
||||
- build/test 루프
|
||||
- 실패 후 재시도
|
||||
- 완료 메시지 정합성
|
||||
|
||||
## Cross-tab
|
||||
|
||||
7. 후속 큐
|
||||
- 순차 프롬프트:
|
||||
- `이 창 레이아웃 문제 원인 찾아줘`
|
||||
- `끝나면 README도 같이 갱신해줘`
|
||||
- 확인:
|
||||
- queue chaining
|
||||
- 입력창 직접 변형 없이 다음 턴 수행
|
||||
|
||||
8. compact 이후 연속성
|
||||
- 프롬프트: `지금까지 논의한 내용을 5줄로 이어서 정리하고 다음 작업 제안해줘`
|
||||
- 확인:
|
||||
- token-only completion 없음
|
||||
- compact 후 문맥 유지
|
||||
|
||||
9. 권한 승인
|
||||
- 프롬프트: `이 파일을 수정해서 저장해줘`
|
||||
- 확인:
|
||||
- 승인 요청 transcript 표시
|
||||
- 승인/거부 후 결과 정합성
|
||||
|
||||
10. slash / skill
|
||||
- 프롬프트: `/bug-hunt src 폴더 잠재 버그 찾아줘`
|
||||
- 확인:
|
||||
- slash 진입과 일반 send 경로 동일성
|
||||
- skill 실행 이유/결과 표기
|
||||
38
docs/AX_AGENT_UI_CHECKLIST.md
Normal file
38
docs/AX_AGENT_UI_CHECKLIST.md
Normal file
@@ -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 수동 점검 필요)
|
||||
@@ -1,253 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko"><head><meta charset="utf-8">
|
||||
<title>AX_Commander_개발문서</title>
|
||||
<style>
|
||||
body { font-family: "맑은 고딕", "Malgun Gothic", sans-serif; font-size: 11pt; color: #1a1a1a; line-height: 1.7; max-width: 900px; margin: 0 auto; padding: 40px 20px; }
|
||||
h1 { font-size: 22pt; color: #1F3864; border-bottom: 3px solid #4472C4; padding-bottom: 8px; margin-top: 32px; }
|
||||
h2 { font-size: 16pt; color: #2E75B6; border-bottom: 2px solid #B8CCE4; padding-bottom: 4px; margin-top: 28px; }
|
||||
h3 { font-size: 13pt; color: #44546A; margin-top: 22px; }
|
||||
h4 { font-size: 12pt; color: #44546A; margin-top: 18px; }
|
||||
p { margin: 6px 0; }
|
||||
table { border-collapse: collapse; width: 100%; margin: 12px 0; }
|
||||
th { background: #2E75B6; color: white; padding: 8px 10px; text-align: left; font-size: 10pt; }
|
||||
td { padding: 6px 10px; border: 1px solid #D6E4F0; font-size: 10pt; }
|
||||
tr:nth-child(even) td { background: #EBF3FB; }
|
||||
ul, ol { margin: 6px 0 6px 24px; }
|
||||
li { margin: 3px 0; }
|
||||
code { font-family: Consolas, "D2Coding", monospace; background: #F0F0F0; padding: 1px 4px; border-radius: 3px; font-size: 10pt; }
|
||||
.footer { text-align: right; color: #999; font-size: 9pt; margin-top: 40px; border-top: 1px solid #ddd; padding-top: 8px; }
|
||||
</style></head><body>
|
||||
<p><b>AX Commander</b></p>
|
||||
<p>개발 문서</p>
|
||||
<p>Windows 전용 시맨틱 런처 & 워크스페이스 매니저</p>
|
||||
|
||||
<h1>사내 전용 프로그램 개발 원칙</h1>
|
||||
<p>AX Commander는 사내 전용 프로그램입니다. 아래 원칙을 반드시 준수하여 개발하세요.</p>
|
||||
<h2>외부 연결 금지</h2>
|
||||
<table>
|
||||
<tr><th><b>금지 항목</b></th><th><b>설명</b></th></tr>
|
||||
<tr><td>외부 HTTP/HTTPS 호출</td><td>HttpClient, WebClient, HttpWebRequest 등으로 외부 서버에 요청 금지</td></tr>
|
||||
<tr><td>외부 SDK 연동</td><td>서드파티 클라우드 SDK, AI API, SaaS 라이브러리 사용 금지</td></tr>
|
||||
<tr><td>원격 플러그인 다운로드</td><td>런타임에 외부에서 DLL/코드 다운로드 금지</td></tr>
|
||||
<tr><td>텔레메트리 / 오류 수집</td><td>사용 데이터를 외부 서버로 전송하는 일체의 코드 금지</td></tr>
|
||||
<tr><td>NuGet 패키지</td><td>외부 네트워크 통신이 내장된 패키지 신규 도입 금지</td></tr>
|
||||
</table>
|
||||
<p>허용: 로컬 파일 시스템 접근, Windows API (P/Invoke), 사내 인트라넷 URL, 로컬 프로세스 실행</p>
|
||||
|
||||
<h1>아키텍처 개요</h1>
|
||||
<h2>핵심 컴포넌트</h2>
|
||||
<table>
|
||||
<tr><th><b>컴포넌트</b></th><th><b>역할</b></th></tr>
|
||||
<tr><td>App.xaml.cs</td><td>앱 진입점, 서비스 초기화, 트레이 아이콘 관리</td></tr>
|
||||
<tr><td>LauncherWindow</td><td>WPF 메인 UI (AllowsTransparency, WindowStyle=None)</td></tr>
|
||||
<tr><td>CommandResolver</td><td>프리픽스 기반 핸들러 라우팅 테이블</td></tr>
|
||||
<tr><td>FuzzyEngine</td><td>퍼지 검색 + 한국어 초성(ㅅㄷ) 매칭</td></tr>
|
||||
<tr><td>IndexService</td><td>파일 시스템 인덱서 + FileSystemWatcher</td></tr>
|
||||
<tr><td>SettingsService</td><td>settings.json 로드/저장 (자동 백업)</td></tr>
|
||||
<tr><td>ClipboardHistoryService</td><td>WM_CLIPBOARDUPDATE 훅 기반 히스토리</td></tr>
|
||||
<tr><td>PluginHost</td><td>DLL/JSON 스킬 플러그인 로더</td></tr>
|
||||
<tr><td>NotificationService</td><td>트레이 풍선 알림 (타이머/알람)</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>프리픽스 핸들러 치트시트</h1>
|
||||
<table>
|
||||
<tr><th><b>프리픽스</b></th><th><b>핸들러</b></th><th><b>기능</b></th></tr>
|
||||
<tr><td>(없음)</td><td>FuzzyEngine</td><td>앱·파일 퍼지 검색 + 한국어 초성</td></tr>
|
||||
<tr><td>=</td><td>CalculatorHandler</td><td>수식 계산, 단위/통화 변환</td></tr>
|
||||
<tr><td>/</td><td>SystemCommandHandler</td><td>lock, sleep, restart, shutdown, timer, alarm</td></tr>
|
||||
<tr><td>;</td><td>SnippetHandler</td><td>텍스트 스니펫 키워드 검색 & 붙여넣기</td></tr>
|
||||
<tr><td>#</td><td>ClipboardHistoryHandler</td><td>클립보드 히스토리 검색 & 병합</td></tr>
|
||||
<tr><td>@</td><td>UrlAliasHandler</td><td>URL 단축키</td></tr>
|
||||
<tr><td>~</td><td>FolderAliasHandler</td><td>폴더 단축키</td></tr>
|
||||
<tr><td>></td><td>BatchHandler</td><td>명령 실행 / 배치 단축키</td></tr>
|
||||
<tr><td>$</td><td>ClipboardHandler</td><td>클립보드 텍스트 12종 변환</td></tr>
|
||||
<tr><td>!</td><td>WorkspaceHandler</td><td>워크스페이스 저장·복원</td></tr>
|
||||
<tr><td>emoji</td><td>EmojiHandler</td><td>이모지 피커 (300+)</td></tr>
|
||||
<tr><td>color</td><td>ColorHandler</td><td>HEX/RGB/HSL/HSV 색상 변환</td></tr>
|
||||
<tr><td>recent</td><td>RecentFilesHandler</td><td>Windows 최근 파일</td></tr>
|
||||
<tr><td>note</td><td>NoteHandler</td><td>빠른 메모 저장·조회</td></tr>
|
||||
<tr><td>uninstall</td><td>UninstallHandler</td><td>앱 제거 (레지스트리)</td></tr>
|
||||
<tr><td>port</td><td>PortHandler</td><td>TCP 포트/프로세스 점검</td></tr>
|
||||
<tr><td>env</td><td>EnvHandler</td><td>환경변수 조회</td></tr>
|
||||
<tr><td>json</td><td>JsonHandler</td><td>JSON 검증/포맷/미니파이</td></tr>
|
||||
<tr><td>encode</td><td>EncodeHandler</td><td>base64/url/hex/md5/sha256 인코딩</td></tr>
|
||||
<tr><td>snap</td><td>SnapHandler</td><td>창 배치 레이아웃</td></tr>
|
||||
<tr><td>cap</td><td>ScreenCaptureHandler</td><td>화면/창/스크롤 캡처</td></tr>
|
||||
<tr><td>help</td><td>HelpHandler</td><td>도움말</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>설정 스키마 (settings.json)</h1>
|
||||
<p>경로: %APPDATA%\AxCommander\settings.json</p>
|
||||
<table>
|
||||
<tr><th><b>키</b></th><th><b>타입</b></th><th><b>설명</b></th></tr>
|
||||
<tr><td>version</td><td>string</td><td>설정 버전</td></tr>
|
||||
<tr><td>hotkey</td><td>string</td><td>글로벌 단축키 (기본: Alt+Space)</td></tr>
|
||||
<tr><td>launcher.opacity</td><td>float</td><td>창 투명도 (0.0~1.0, 기본 0.96)</td></tr>
|
||||
<tr><td>launcher.maxResults</td><td>int</td><td>최대 결과 수 (기본 7)</td></tr>
|
||||
<tr><td>launcher.theme</td><td>string</td><td>테마 (system|dark|light|oled|nord|monokai|catppuccin|sepia|alfred|alfredlight|custom)</td></tr>
|
||||
<tr><td>launcher.position</td><td>string</td><td>런처 위치 (center-top|center|bottom)</td></tr>
|
||||
<tr><td>launcher.webSearchEngine</td><td>string</td><td>기본 검색 엔진 (g|n|d|y|w)</td></tr>
|
||||
<tr><td>launcher.snippetAutoExpand</td><td>bool</td><td>스니펫 자동 확장 활성화</td></tr>
|
||||
<tr><td>indexPaths</td><td>string[]</td><td>인덱싱할 폴더 경로 목록</td></tr>
|
||||
<tr><td>aliases</td><td>object[]</td><td>URL/폴더/배치 단축키 목록</td></tr>
|
||||
<tr><td>snippets</td><td>object[]</td><td>텍스트 스니펫 목록</td></tr>
|
||||
<tr><td>clipboardHistory.enabled</td><td>bool</td><td>클립보드 히스토리 활성화</td></tr>
|
||||
<tr><td>clipboardHistory.maxItems</td><td>int</td><td>최대 보관 개수 (기본 50)</td></tr>
|
||||
<tr><td>plugins</td><td>object[]</td><td>DLL 플러그인 경로 목록</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>테마 시스템</h1>
|
||||
<h2>내장 테마 목록</h2>
|
||||
<table>
|
||||
<tr><th><b>테마 키</b></th><th><b>이름</b></th><th><b>특징</b></th></tr>
|
||||
<tr><td>system</td><td>시스템</td><td>Windows 다크/라이트 모드 자동 감지</td></tr>
|
||||
<tr><td>dark</td><td>Dark</td><td>딥 네이비 다크 (기본)</td></tr>
|
||||
<tr><td>light</td><td>Light</td><td>클린 화이트 라이트</td></tr>
|
||||
<tr><td>oled</td><td>OLED</td><td>순수 블랙 (OLED 절전)</td></tr>
|
||||
<tr><td>nord</td><td>Nord</td><td>Arctic 컬러 팔레트</td></tr>
|
||||
<tr><td>monokai</td><td>Monokai</td><td>Sublime Text 스타일</td></tr>
|
||||
<tr><td>catppuccin</td><td>Catppuccin</td><td>Mocha 따뜻한 파스텔</td></tr>
|
||||
<tr><td>sepia</td><td>Sepia</td><td>황갈색 아날로그 감성</td></tr>
|
||||
<tr><td>alfred</td><td>Alfred Dark</td><td>Alfred 5 다크 팔레트 (딥 퍼플-차콜)</td></tr>
|
||||
<tr><td>alfredlight</td><td>Alfred Light</td><td>Alfred 5 라이트 팔레트 (클린 화이트)</td></tr>
|
||||
<tr><td>custom</td><td>커스텀</td><td>14개 색상 완전 커스터마이징</td></tr>
|
||||
</table>
|
||||
<h2>테마 ResourceKey 목록 (14개)</h2>
|
||||
<table>
|
||||
<tr><th><b>키</b></th><th><b>용도</b></th></tr>
|
||||
<tr><td>LauncherBackground</td><td>전체 배경</td></tr>
|
||||
<tr><td>ItemBackground</td><td>항목 기본 배경</td></tr>
|
||||
<tr><td>ItemSelectedBackground</td><td>선택된 항목 배경</td></tr>
|
||||
<tr><td>ItemHoverBackground</td><td>호버 배경</td></tr>
|
||||
<tr><td>PrimaryText</td><td>주 텍스트 색상</td></tr>
|
||||
<tr><td>SecondaryText</td><td>보조 텍스트 색상</td></tr>
|
||||
<tr><td>PlaceholderText</td><td>플레이스홀더 텍스트</td></tr>
|
||||
<tr><td>AccentColor</td><td>강조색 (선택 바, 배지 등)</td></tr>
|
||||
<tr><td>SeparatorColor</td><td>구분선 색상</td></tr>
|
||||
<tr><td>HintBackground</td><td>ESC 힌트 배경</td></tr>
|
||||
<tr><td>HintText</td><td>ESC 힌트 텍스트</td></tr>
|
||||
<tr><td>BorderColor</td><td>창 테두리</td></tr>
|
||||
<tr><td>ScrollbarThumb</td><td>스크롤바 색상</td></tr>
|
||||
<tr><td>ShadowColor</td><td>드롭 섀도우 색상</td></tr>
|
||||
</table>
|
||||
<h2>새 테마 추가 절차</h2>
|
||||
<ul>
|
||||
<li>1. Themes/MyTheme.xaml 작성 (위 14개 키 모두 정의)</li>
|
||||
<li>2. AxCommander.csproj에 <Resource Include="Themes/MyTheme.xaml"/> 추가</li>
|
||||
<li>3. LauncherWindow.xaml.cs → GetEffectiveThemeName() switch에 케이스 추가</li>
|
||||
<li>4. SettingsViewModel.ThemeCards 목록에 ThemeCardModel 항목 추가</li>
|
||||
</ul>
|
||||
|
||||
<h1>보안 고려사항</h1>
|
||||
<table>
|
||||
<tr><th><b>항목</b></th><th><b>구현</b></th></tr>
|
||||
<tr><td>URL 스킴 검증</td><td>http, https, ftp, ms-settings, mailto, file 허용. javascript: 등 차단</td></tr>
|
||||
<tr><td>PowerShell 인젝션 방지</td><td>> 명령어 입력의 " 이스케이프 처리</td></tr>
|
||||
<tr><td>ReDoS 방지</td><td>사용자 정의 Regex에 TimeSpan 타임아웃 적용</td></tr>
|
||||
<tr><td>자격증명 저장</td><td>Windows Credential Manager (advapi32.dll, DPAPI 암호화)</td></tr>
|
||||
<tr><td>클립보드 민감 데이터</td><td>Regex 기반 제외 패턴 — 신용카드·IP 등 기본 차단</td></tr>
|
||||
<tr><td>API 타임아웃</td><td>JSON 스킬 HTTP 요청 3초 제한</td></tr>
|
||||
<tr><td>시스템 명령 확인</td><td>재시작·종료·로그아웃 실행 전 MessageBox.Show 2단계 확인</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>단위 테스트</h1>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>테스트 수</b></th><th><b>대상</b></th></tr>
|
||||
<tr><td>FuzzyEngineTests.cs</td><td>19</td><td>CalculateScore, FuzzyMatch, 초성 검색</td></tr>
|
||||
<tr><td>ClipboardTransformTests.cs</td><td>21</td><td>12개 내장 변환기</td></tr>
|
||||
<tr><td>SettingsServiceTests.cs</td><td>17</td><td>기본값, JSON 직렬화 라운드트립</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>v1.6 3차 전체 점검 수정</h1>
|
||||
<p>빌드 오류 3건, 컴파일 경고 1건, 런타임 버그 6건, 보안 이슈 2건을 수정하였습니다.</p>
|
||||
<h2>컴파일 오류 수정</h2>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>수정 내용</b></th><th><b>오류 코드</b></th></tr>
|
||||
<tr><td>UsageRankingService.cs</td><td>using System.IO; 누락 추가</td><td>CS0103</td></tr>
|
||||
<tr><td>SettingsWindow.xaml.cs</td><td>Key.Enter or Key.Return 단일 arm으로 통합</td><td>CS8510</td></tr>
|
||||
<tr><td>ContextManager.cs</td><td>EnumDisplayMonitors 람다 타입 혼합 수정</td><td>CS0748</td></tr>
|
||||
</table>
|
||||
<h2>런타임 버그 수정</h2>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>버그</b></th><th><b>수정</b></th></tr>
|
||||
<tr><td>JsonSkillLoader.cs</td><td>field[0 형식 오류 방지 (IndexOf 반환 -1)</td><td>closingIdx < 0 가드 추가</td></tr>
|
||||
<tr><td>ClipboardHistoryService.cs</td><td>_ignoreNext 스레드 비안전, 이중 초기화</td><td>volatile + 이중 초기화 가드</td></tr>
|
||||
<tr><td>IndexService.cs</td><td>ScheduleRebuild 타이머 비원자적 교체</td><td>_timerLock으로 원자적 교체</td></tr>
|
||||
<tr><td>SettingsService.cs</td><td>백업 실패 무음 catch</td><td>LogService.Warn으로 기록</td></tr>
|
||||
<tr><td>LauncherWindow.xaml.cs</td><td>Window에 RenderTransform 설정 시 InvalidOperationException</td><td>Content(루트 Border)에 적용</td></tr>
|
||||
</table>
|
||||
<h2>보안 수정</h2>
|
||||
<table>
|
||||
<tr><th><b>파일</b></th><th><b>수정 내용</b></th></tr>
|
||||
<tr><td>JsonSkillLoader.cs</td><td>ActionUrl 실행 전 http/https 스킴 검증 추가</td></tr>
|
||||
<tr><td>SettingsWindow.xaml.cs</td><td>NewIndexPathBox null 역참조 방어 처리</td></tr>
|
||||
</table>
|
||||
|
||||
<h1>빌드 및 배포</h1>
|
||||
<h2>빌드 명령</h2>
|
||||
<p># 개발 실행</p>
|
||||
<p>dotnet run --project src/AxCommander</p>
|
||||
|
||||
<p># Release 단일 파일 빌드 (self-contained)</p>
|
||||
<p>dotnet publish src/AxCommander -c Release -r win-x64 --self-contained</p>
|
||||
|
||||
<p># 단위 테스트</p>
|
||||
<p>dotnet test src/AxCommander.Tests</p>
|
||||
<h2>데이터 경로</h2>
|
||||
<table>
|
||||
<tr><th><b>용도</b></th><th><b>경로</b></th></tr>
|
||||
<tr><td>설정 파일</td><td>%APPDATA%\AxCommander\settings.json</td></tr>
|
||||
<tr><td>로그</td><td>%APPDATA%\AxCommander\logs\app-YYYY-MM-DD.log</td></tr>
|
||||
<tr><td>스킬 파일</td><td>%APPDATA%\AxCommander\skills\*.skill.json</td></tr>
|
||||
<tr><td>메모</td><td>%APPDATA%\AxCommander\notes.txt</td></tr>
|
||||
<tr><td>사용 빈도</td><td>%APPDATA%\AxCommander\usage.json</td></tr>
|
||||
<tr><td>크래시 덤프</td><td>%APPDATA%\AxCommander\crashes\</td></tr>
|
||||
</table>
|
||||
<h2>요구 사항</h2>
|
||||
<ul>
|
||||
<li>OS: Windows 10 20H2 이상 (Windows 11 권장)</li>
|
||||
<li>.NET 8.0 Runtime (Self-contained 빌드 시 불필요)</li>
|
||||
</ul>
|
||||
|
||||
<h1>플러그인 개발</h1>
|
||||
<h2>DLL 플러그인</h2>
|
||||
<p>AxCommander.SDK를 참조하여 IActionHandler 인터페이스를 구현합니다.</p>
|
||||
<p>using AxCommander.SDK;</p>
|
||||
|
||||
<p>public class MyHandler : IActionHandler</p>
|
||||
<p>{</p>
|
||||
<p> public string? Prefix => "?"; // 트리거 프리픽스</p>
|
||||
<p> public PluginMetadata Metadata => new("MyPlugin", "설명", "1.0");</p>
|
||||
|
||||
<p> public async Task<IEnumerable<LauncherItem>> GetItemsAsync(string query, CancellationToken ct)</p>
|
||||
<p> {</p>
|
||||
<p> return [ new LauncherItem("제목", "부제목", null, myData, Symbol: "\uE721") ];</p>
|
||||
<p> }</p>
|
||||
|
||||
<p> public Task ExecuteAsync(LauncherItem item, CancellationToken ct)</p>
|
||||
<p> {</p>
|
||||
<p> return Task.CompletedTask;</p>
|
||||
<p> }</p>
|
||||
<p>}</p>
|
||||
<h2>JSON 스킬 (코드 없이 HTTP API 연동)</h2>
|
||||
<p>경로: %APPDATA%\AxCommander\skills\*.skill.json</p>
|
||||
<p>{</p>
|
||||
<p> "id": "my-api",</p>
|
||||
<p> "name": "API 연동",</p>
|
||||
<p> "prefix": "?",</p>
|
||||
<p> "request": {</p>
|
||||
<p> "method": "GET",</p>
|
||||
<p> "url": "https://intranet.example.com/api?q={{INPUT}}"</p>
|
||||
<p> },</p>
|
||||
<p> "response": {</p>
|
||||
<p> "resultsPath": "items",</p>
|
||||
<p> "titleField": "name",</p>
|
||||
<p> "subtitleField": "description",</p>
|
||||
<p> "actionUrl": "url"</p>
|
||||
<p> },</p>
|
||||
<p> "cache": 30</p>
|
||||
<p>}</p>
|
||||
|
||||
<p>AX Commander · .NET 8.0 · WPF · MIT License</p>
|
||||
<p class='footer'>Converted from: AX_Commander_개발문서.docx</p>
|
||||
</body></html>
|
||||
@@ -1,282 +0,0 @@
|
||||
<!-- WordPress ?명솚 HTML ???ъ슜???뺤쓽 HTML 釉붾줉??遺숈뿬?j린 -->
|
||||
|
||||
<div style="max-width:860px; margin:0 auto; font-family:'留묒? 怨좊뵓','Malgun Gothic',sans-serif; font-size:16px; color:#1a1a1a; line-height:1.8;">
|
||||
|
||||
<!-- ?ㅻ뜑 -->
|
||||
<div style="text-align:center; padding:40px 20px 30px; background:linear-gradient(135deg,#1F3864 0%,#2E75B6 100%); border-radius:12px; margin-bottom:32px;">
|
||||
<h1 style="color:#fff; font-size:28px; margin:0 0 8px;">AX Copilot</h1>
|
||||
<p style="color:#B8CCE4; font-size:16px; margin:0 0 4px;">?ㅻ낫???섎굹濡?紐⑤뱺 ?낅Т瑜??쒖뼱?섎뒗 ?щ궡 ?꾩슜 AI ?곗쿂</p>
|
||||
<p style="color:#8FAFD4; font-size:13px; margin:0;">諛깆듅??쨌 AX?곌뎄??AI? 쨌 SW Architect</p>
|
||||
</div>
|
||||
|
||||
<!-- 1. ??留뚮뱾?덈뒗媛 -->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">1. ??留뚮뱾?덈뒗媛</h2>
|
||||
|
||||
<p>?낅Т 以?媛??留롮씠 諛섎났?섎뒗 ?숈옉??萸먮깘怨?臾쇱쑝硫? ?遺遺꾩쓽 ?щТ吏?吏곸썝???대젃寃???듯빀?덈떎:</p>
|
||||
|
||||
<ul>
|
||||
<li>?깆쓣 李얠븘???ㅽ뻾?섍린</li>
|
||||
<li>?뚯씪??李얠븘???닿린</li>
|
||||
<li>?대┰蹂대뱶?먯꽌 蹂듭궗???댁슜 ?ㅼ떆 李얘린</li>
|
||||
<li>怨꾩궛湲??닿퀬 媛꾨떒??怨꾩궛?섍린</li>
|
||||
<li>AI?먭쾶 吏덈Ц?섎젮硫?釉뚮씪?곗? ?닿퀬 蹂꾨룄 ?쒕퉬???묒냽?섍린</li>
|
||||
</ul>
|
||||
|
||||
<p>??紐⑤뱺 ?숈옉??留덉슦?ㅻ? ?ㅺ퀬, ?먯깋湲곕? ?닿퀬, ?대┃?섍퀬???ㅻ낫?쒖뿉???먯쓣 ???섍? ?놁뒿?덈떎.</p>
|
||||
|
||||
<p><strong>AX Copilot</strong>? ??臾몄젣瑜??닿껐?⑸땲?? <strong>Alt+Space</strong> ??踰덉쑝濡?紐⑤뱺 寃껋쓣 ?ㅻ낫?쒕줈 ?쒖뼱?????덈뒗 ?곗쿂?댁옄, <strong>AI ???AX Agent)</strong>源뚯? ?듯빀???щ궡 ?꾩슜 ?낅Т ?꾩슦誘몄엯?덈떎.</p>
|
||||
|
||||
<p>???꾨줈?앺듃??LLM(Sigmoid)怨??④퍡 湲고쉷遺??援ы쁽源뚯? 吏꾪뻾???щ?濡? AI? ?묒뾽?섎뒗 ?뚰봽?몄썾??媛쒕컻???ㅼ젣 寃쏀뿕???닿퀬 ?덉뒿?덈떎.</p>
|
||||
|
||||
<!-- 2. AX Copilot?대?? -->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">2. AX Copilot?대??</h2>
|
||||
|
||||
<p><strong>Alt+Space</strong>瑜??꾨Ⅴ硫??붾㈃ ?곷떒??源붾걫???곗쿂 李?<strong>AX Commander</strong>)???섑??⑸땲?? ?ш린???먰븯??紐낅졊???낅젰?섎㈃ ?⑸땲??</p>
|
||||
|
||||
<ul>
|
||||
<li>???대쫫??移섎㈃ ?깆씠 ?ㅽ뻾?⑸땲??(?쒓뎅??珥덉꽦 寃?됰룄 媛??)</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">=</code> 瑜?移섎㈃ 怨꾩궛湲곌? ?⑸땲??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">#</code> ??移섎㈃ ?대┰蹂대뱶 ?덉뒪?좊━媛 ?섑??⑸땲??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">cap region</code> ??移섎㈃ ?곸뿭 罹≪쿂媛 ?쒖옉?⑸땲??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">win chrome</code> ??移섎㈃ ?щ\ 李쎌쑝濡?利됱떆 ?꾪솚?⑸땲??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">!</code> ??移섎㈃ AI ???AX Agent)媛 ?대┰?덈떎</li>
|
||||
</ul>
|
||||
|
||||
<p>?꾨━?쎌뒪(?묐몢?? 湲곕컲?쇰줈 <strong>45媛??댁긽??紐낅졊??/strong>瑜?吏?먰븯硫? ?쒓뎅??珥덉꽦 寃???끹꽬 ???ㅼ젙)怨??쇱? 留ㅼ묶???⑸땲??</p>
|
||||
|
||||
<!-- 3. ?듭떖 湲곕뒫 ?뚭컻 -->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">3. ?듭떖 湲곕뒫 ?뚭컻</h2>
|
||||
|
||||
<p>AX Copilot? ?⑥닚?????곗쿂媛 ?꾨떃?덈떎. ?꾨옒??移댄뀒怨좊━蹂?二쇱슂 湲곕뒫?낅땲??</p>
|
||||
|
||||
<!-- 3-1. AI ???(AX Agent) -->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">AI ?????AX Agent <span style="background:#2E75B6; color:#fff; font-size:12px; padding:2px 8px; border-radius:10px; margin-left:8px;">NEW v1.0.5</span></h3>
|
||||
|
||||
<ul>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">!</code> ?덉빟?대줈 AI ???李?吏꾩엯</li>
|
||||
<li><strong>4醫?LLM 吏??/strong>: Ollama, vLLM(OpenAI ?명솚), Gemini, Sigmoid API</li>
|
||||
<li><strong>?ㅽ듃由щ컢 + ??댄븨 ?④낵</strong>: SSE 湲곕컲 ?ㅼ떆媛??묐떟, 12ms ??대㉧濡???댄븨 ?좊땲硫붿씠??/li>
|
||||
<li><strong>留덊겕?ㅼ슫 + 肄붾뱶 援щЦ 媛뺤“</strong>: 10媛??몄뼱 ?ㅼ썙???섏씠?쇱씠?? 肄붾뱶 釉붾줉 蹂듭궗 踰꾪듉</li>
|
||||
<li><strong>?좏겙 ?ъ슜??/strong>: k/m ?⑥쐞 ?ㅼ떆媛??쒖떆 + ?묐떟 ?뚯슂?쒓컙</li>
|
||||
<li><strong>?꾨\?꾪듃 移대뱶</strong>: 誘몃━ ?ㅼ젙???쒖뒪???꾨\?꾪듃 + ?ъ슜???뺤쓽 ?쒗뵆由?/li>
|
||||
<li><strong>???愿由?/strong>: 怨좎젙/?대쫫蹂寃?遺꾨쪟(6醫?/??젣, ?좎쭨蹂?洹몃9, 30???먮룞 ?뺣━</li>
|
||||
<li><strong>硫붿떆吏 ?몄쭛</strong>: ?ъ슜??硫붿떆吏 ?몄쭛/蹂듭궗, 醫뗭븘???レ뼱???쇰뱶諛?/li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-2. 寃??-->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">寃??/h3>
|
||||
|
||||
<ul>
|
||||
<li><strong>?쇱? 寃??/strong>: ???뚯씪紐낆쓣 ?쇰?留??낅젰?대룄 李얠븘以?/li>
|
||||
<li><strong>?쒓뎅??珥덉꽦</strong>: ?뉎뀕?????꾪븳湲 寃??/li>
|
||||
<li><strong>?ㅽ뻾 鍮덈룄 ?숈뒿</strong>: ?먯< ?곕뒗 ?깆씠 ?곷떒?쇰줈</li>
|
||||
<li><strong>湲곕낯 ??蹂꾩묶</strong>: 硫붾え?? 怨꾩궛湲? ?묒? ???쒓?+?곷Ц 利됱떆 ?ㅽ뻾</li>
|
||||
<li><strong>?대뜑 寃??/strong>: ?몃뜳??寃쎈줈???섏쐞 ?대뜑??寃??媛??/li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-3. 怨꾩궛쨌蹂??-->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">怨꾩궛 쨌 蹂??/h3>
|
||||
|
||||
<ul>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= sqrt(144)</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= 0xFF + 1</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= 100km in miles</code></li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">= 100 USD to KRW</code> (?ㅼ떆媛??섏쑉)</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">date +30d</code> (30?????좎쭨), <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">date unix</code> (??꾩뒪?ы봽)</li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-4. ?대┰蹂대뱶 -->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">?대┰蹂대뱶</h3>
|
||||
|
||||
<ul>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">#</code> <strong>?덉뒪?좊━</strong>: 蹂듭궗 ?대젰 寃??쨌 ?ъ궗??쨌 蹂묓빀 (Shift+?묅넃 ?좏깮 ??Shift+Enter 蹂묓빀)</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">$</code> <strong>蹂??/strong>: JSON ?뺣젹, Base64, URL ?몄퐫????12醫?/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">pipe</code> <strong>?뚯씠?꾨씪??/strong>: <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">pipe upper > trim > b64e</code> (19醫??꾪꽣 泥댁씠??</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">batch</code> <strong>?쇨큵 泥섎━</strong>: 以꾨쾲?? ?뺣젹, 以묐났?쒓굅, 媛먯떥湲???14醫?/li>
|
||||
<li><strong>DPAPI ?뷀샇??/strong>: ?대┰蹂대뱶 ?덉뒪?좊━ ?뚯씪???꾩옱 Windows 怨꾩젙?먯꽌留?蹂듯샇??媛??/li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-5. 媛쒕컻???꾧뎄 -->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">媛쒕컻???꾧뎄</h3>
|
||||
|
||||
<ul>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">json</code> format / minify / validate</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">encode</code> base64 / url / sha256</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">color #FF5500</code> ??HEX/RGB/HSL/HSV 4醫?蹂??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">port 3000</code> ???먯쑀 ?꾨줈?몄뒪 ?뺤씤</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">env PATH</code> ???섍꼍蹂??寃??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">pick</code> ???ㅽ룷?대뱶濡??붾㈃ ?됱긽 HEX 肄붾뱶 異붿텧 (?뗫낫湲?+ ?ㅼ떆媛?誘몃━蹂닿린)</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">diff</code> ???대┰蹂대뱶 理쒓렐 2媛??먮뒗 ?뚯씪 2媛?鍮꾧탳</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">stats</code> ???띿뒪???듦퀎 (湲?먯닔/?⑥뼱???쎄린?쒓컙/?ㅼ썙??鍮덈룄)</li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-6. ?붾㈃ 罹≪쿂 -->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">?붾㈃ 罹≪쿂</h3>
|
||||
|
||||
<ul>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">cap region</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">window</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">scroll</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">screen</code> (?ъ슜 鍮덈룄???뺣젹)</li>
|
||||
<li><strong>吏??罹≪쿂</strong>: Shift+Enter ??3珥?5珥?10珥???대㉧ ??罹≪쿂 <span style="background:#2E75B6; color:#fff; font-size:11px; padding:1px 6px; border-radius:8px;">NEW</span></li>
|
||||
<li><strong>?ㅽ겕濡?罹≪쿂</strong>: ?쒖꽦 李쎌쓣 ?앷퉴吏 ?ㅽ겕濡ㅽ븯硫??섏씠吏 ?꾩껜 罹≪쿂</li>
|
||||
<li><strong>湲濡쒕쾶 ?⑥텞??/strong>(PrintScreen ?? 吏??/li>
|
||||
<li>蹂댁븞: ?대┰蹂대뱶?먮쭔 蹂듭궗 (?뚯씪 ??μ? ?ㅼ젙?먯꽌 ?좏깮)</li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-7. 李?愿由?룹떆?ㅽ뀥 -->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">李?愿由?쨌 ?쒖뒪??/h3>
|
||||
|
||||
<ul>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">~save</code> / <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">~restore</code>: 李?諛곗튂 ?ㅻ깄??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">snap left/right/full</code>: 李?遺꾪븷 ?덉씠?꾩썐</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">win</code>: ?대┛ 李?寃????利됱떆 ?꾪솚 (Alt+Tab ?泥?</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">/lock</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">/timer 5m</code>, <code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">/alarm 14:30</code></li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">svc</code>: Windows ?쒕퉬??愿由?+ ?대┰蹂대뱶 媛뺤젣 ?ъ떆??/li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">monitor</code>: CPU쨌硫붾え由?룸뵒?ㅽ겕쨌媛?숈떆媛??ㅼ떆媛?紐⑤땲?곕쭅</li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-8. ?낅Т ?먮룞??-->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">?낅Т ?먮룞??/h3>
|
||||
|
||||
<ul>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">journal</code>: ?ㅻ뒛 ?ъ슜????紐낅졊??湲곕컲 ?낅Т ?쇱? 留덊겕?ㅼ슫 ?먮룞 ?앹꽦</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">routine</code>: 異쒓렐/?닿렐 猷⑦떞 ?깅줉 ????踰덉뿉 ?ㅽ뻾</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">scaffold</code>: ?꾨줈?앺듃 ?대뜑 援ъ“ ?쒗뵆由??쇨큵 ?앹꽦</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">rename</code>: ?뚯씪 ?쇨큵 ?대쫫 蹂寃?(?쒕쾲/?좎쭨 ?쒗뵆由?</li>
|
||||
<li><code style="background:#F0F0F0; padding:1px 5px; border-radius:3px; font-size:14px;">fav</code>: ?먯< ?곕뒗 ?뚯씪쨌?대뜑 利먭꺼李얘린</li>
|
||||
</ul>
|
||||
|
||||
<!-- 3-9. ?ㅻ낫???⑥텞??-->
|
||||
<h3 style="font-size:18px; color:#2E75B6; margin-top:24px;">?ㅻ낫???⑥텞??16醫?/h3>
|
||||
|
||||
<table style="border-collapse:collapse; width:100%; margin:12px 0;">
|
||||
<tr style="background:#2E75B6; color:#fff;">
|
||||
<th style="padding:8px 12px; text-align:left; font-size:14px;">?⑥텞??/th>
|
||||
<th style="padding:8px 12px; text-align:left; font-size:14px;">湲곕뒫</th>
|
||||
</tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">F1</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?꾩?留?/td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+K</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?⑥텞???꾩?留?/td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+H / R / B</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?덉뒪?좊━ / 理쒓렐 ?뚯씪 / 利먭꺼李얘린</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+1~9</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">N踰덉㎏ ??ぉ 利됱떆 ?ㅽ뻾</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ctrl+Enter</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">愿由ъ옄 沅뚰븳 ?ㅽ뻾</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Shift+Enter</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Large Type / 蹂묓빀 ?ㅽ뻾 / 吏??罹≪쿂</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">??(?붿궡??</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?뚯씪 ?≪뀡 紐⑤뱶 (寃쎈줈蹂듭궗/?먯깋湲??곕?????7醫?</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Delete</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">??ぉ ?쒓굅 (?뺤씤 ?ㅼ씠?쇰줈洹?</td></tr>
|
||||
</table>
|
||||
|
||||
<!-- 4. 蹂댁븞 -->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">4. 蹂댁븞 ???щ궡 ?꾩슜 ?먯튃</h2>
|
||||
|
||||
<p>AX Copilot? ?щ궡 ?꾩슜 ?꾨줈洹몃옩?쇰줈, ?몃? ?ㅽ듃?뚰겕 ?듭떊???먯튃?곸쑝濡??섏? ?딆뒿?덈떎.</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>?몃? HTTP/HTTPS ?몄텧 湲덉?</strong> ??HttpClient, WebClient ???ъ슜 遺덇? (AI ?쒕퉬?ㅻ뒗 ?щ궡 Ollama/vLLM ?곕룞)</li>
|
||||
<li><strong>?대┰蹂대뱶 ?덉뒪?좊━</strong> ??Windows DPAPI ?뷀샇??(CurrentUser 踰붿쐞)</li>
|
||||
<li><strong>API ??蹂댄샇</strong> ??AES-256-CBC ?뷀샇??紐⑤뱶 吏??(?ㅼ젙?쇰줈 ?꾪솚 媛??</li>
|
||||
<li><strong>?붾㈃ 罹≪쿂</strong> ???대┰蹂대뱶?먮쭔 蹂듭궗, ?뚯씪 ??μ? ?ъ슜???ㅼ젙?먯꽌 ?좏깮</li>
|
||||
<li><strong>?쒖뒪??紐낅졊</strong> ???ъ떆??醫낅즺 ???꾪뿕 紐낅졊 ?ㅽ뻾 ??2?④퀎 ?뺤씤 ?ㅼ씠?쇰줈洹?/li>
|
||||
<li><strong>??????/strong> ??紐⑤뱺 AI ????댁뿭? 濡쒖뺄(%APPDATA%)?먮쭔 ??? ?몃? ?꾩넚 ?놁쓬</li>
|
||||
</ul>
|
||||
|
||||
<!-- 5. ?뚮쭏 ?쒖뒪??-->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">5. ?뚮쭏 ?쒖뒪??/h2>
|
||||
|
||||
<p><strong>9媛??댁옣 ?뚮쭏</strong>(Dark, Light, OLED, Nord, Monokai, Catppuccin, Sepia, Alfred, Alfred Light) + <strong>而ㅼ뒪? ?뚮쭏</strong>瑜?吏?먰빀?덈떎.</p>
|
||||
|
||||
<ul>
|
||||
<li>媛??뚮쭏???됱긽肉??꾨땲??<strong>紐⑥꽌由??쇱슫??鍮꾩쑉</strong>???ㅻ쫭?덈떎 (OLED媛 媛???κ?怨? Monokai媛 媛??媛곸쭚)</li>
|
||||
<li>而ㅼ뒪? ?뚮쭏??14媛??됱긽 + 紐⑥꽌由??쇱슫???щ씪?대뜑濡??먯쑀濡?쾶 ?몄쭛</li>
|
||||
<li>?몃젅??硫붾돱, AI ???李?紐⑤몢 ?꾩옱 ?뚮쭏瑜??먮룞?쇰줈 ?곕씪媛?/li>
|
||||
</ul>
|
||||
|
||||
<!-- 6. ?ъ슜 ?듦퀎 -->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">6. ?ъ슜 ?듦퀎 & ?뚮┝</h2>
|
||||
|
||||
<ul>
|
||||
<li><strong>?곗쿂 ?몄텧 ?잛닔</strong>: 理쒓렐 14??留됰? 李⑦듃</li>
|
||||
<li><strong>PC ?쒖꽦 ?쒓컙</strong>: 理쒓렐 14??留됰? 李⑦듃</li>
|
||||
<li><strong>?곸쐞 紐낅졊</strong>: 30???⑹궛 Top 10 ?쒖쐞</li>
|
||||
<li><strong>?좉툑 ?댁젣 ?뚮┝</strong>: PC ?좉툑 ?댁젣 ???꾩쟻 ?ъ슜?쒓컙 + 紐낆뼵 ?앹뾽 (30遺?4?쒓컙 媛꾧꺽, 5珥?3遺??쒖떆)</li>
|
||||
</ul>
|
||||
|
||||
<!-- 7. 二쇱슂 紐낅졊???붿빟 -->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">7. 二쇱슂 紐낅졊???붿빟</h2>
|
||||
|
||||
<table style="border-collapse:collapse; width:100%; margin:12px 0;">
|
||||
<tr style="background:#2E75B6; color:#fff;">
|
||||
<th style="padding:8px 12px; text-align:left; font-size:14px;">?꾨━?쎌뒪</th>
|
||||
<th style="padding:8px 12px; text-align:left; font-size:14px;">湲곕뒫</th>
|
||||
<th style="padding:8px 12px; text-align:left; font-size:14px;">?덉떆</th>
|
||||
</tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">!</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">AI ???(AX Agent)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">!nginx ?ㅼ젙 諛⑸쾿</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">=</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">怨꾩궛湲?+ ?⑥쐞/?듯솕 蹂??/td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">= 100 USD to KRW</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">#</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?대┰蹂대뱶 ?덉뒪?좊━</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"># api</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">$</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?대┰蹂대뱶 蹂??(12醫?</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">$ base64</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">cap</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?붾㈃ 罹≪쿂</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">cap region, cap scroll</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">win</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">李??꾪솚 (Alt+Tab ?泥?</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">win excel</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">snap</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">李?遺꾪븷 ?덉씠?꾩썐</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">snap left, snap full</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">json</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">JSON 寃利??щ㎎/誘몃땲?뚯씠</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">json format</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">pipe</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?대┰蹂대뱶 ?뚯씠?꾨씪??/td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">pipe upper > trim</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">date</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?좎쭨 怨꾩궛/D-day/??꾩뒪?ы봽</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">date +30d</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">?</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">??寃??(10媛??붿쭊)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?n 留쏆쭛 (?ㅼ씠踰?</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">;</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?띿뒪???ㅻ땲??/td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">;addr ???먮룞 ?뺤옣</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">/</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?쒖뒪??紐낅졊 + ??대㉧/?뚮엺</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">/timer 5m ?뚯쓽</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">emoji</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?대え吏 ?쇱빱 (300+)</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">emoji ?껋쓬</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">journal</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?낅Т ?쇱? ?먮룞 ?앹꽦</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">journal</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;"><code style="background:#F0F0F0; padding:1px 4px; border-radius:3px;">routine</code></td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">異쒗눜洹?猷⑦떞 ?ㅽ뻾</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">routine morning</td></tr>
|
||||
</table>
|
||||
|
||||
<!-- 8. 湲곗닠 ?ㅽ깮 -->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">8. 湲곗닠 ?ㅽ깮</h2>
|
||||
|
||||
<ul>
|
||||
<li><strong>.NET 8</strong>, WPF (UseWPF=true), WinForms (?쇰? ?ㅼ씠?쇰줈洹?</li>
|
||||
<li><strong>P/Invoke</strong>: SetWindowPos, PrintWindow, GlobalMemoryStatusEx, EnumWindows, GetPixel ??Windows API 吏곸젒 ?몄텧</li>
|
||||
<li><strong>?⑥씪 EXE 諛고룷</strong>: Self-Contained + PublishSingleFile + IncludeNativeLibrariesForSelfExtract</li>
|
||||
<li><strong>蹂댁븞</strong>: DPAPI(System.Security.Cryptography.ProtectedData), AES-256-CBC, HKCU ?덉??ㅽ듃由?/li>
|
||||
<li><strong>LLM ?듭떊</strong>: HttpClient SSE ?ㅽ듃由щ컢 (Ollama/vLLM/Gemini/Sigmoid API)</li>
|
||||
<li><strong>?뚯뒪??/strong>: xUnit 2.9.0 + FluentAssertions (57媛??⑥쐞 ?뚯뒪??</li>
|
||||
</ul>
|
||||
|
||||
<!-- 9. v1.0.5 二쇱슂 蹂寃?-->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">9. v1.0.5 二쇱슂 蹂寃??ы빆</h2>
|
||||
|
||||
<table style="border-collapse:collapse; width:100%; margin:12px 0;">
|
||||
<tr style="background:#2E75B6; color:#fff;">
|
||||
<th style="padding:8px 12px; text-align:left; font-size:14px;">援щ텇</th>
|
||||
<th style="padding:8px 12px; text-align:left; font-size:14px;">?댁슜</th>
|
||||
</tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">AX Agent</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">! ?덉빟?대줈 AI ???李? Sigmoid Desktop ?ㅽ???2?⑤꼸 援ъ“</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">LLM 4醫?/td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Ollama, vLLM, Gemini, Sigmoid API ?듯빀 吏??/td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">?ㅽ듃由щ컢</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">SSE 湲곕컲 ?ㅽ듃由щ컢 + 12ms ??댄븨 ?④낵 + 而ㅼ꽌 源쒕묀??/td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">肄붾뱶 媛뺤“</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">10媛??몄뼱 ?ㅼ썙???섏씠?쇱씠??+ 肄붾뱶 釉붾줉 蹂듭궗</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">?좏겙 ?쒖떆</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">k/m ?⑥쐞 ?ъ슜??+ ?묐떟 ?뚯슂?쒓컙(珥?</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">?꾨\?꾪듃 移대뱶</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">?쒖뒪???꾨\?꾪듃 ?꾨━??+ ?ъ슜???뺤쓽 ?쒗뵆由?/td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">???愿由?/td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">怨좎젙/?대쫫蹂寃?遺꾨쪟/??젣, ?쇰뱶諛? 硫붿떆吏 ?몄쭛</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">吏??罹≪쿂</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">Shift+Enter ??3/5/10珥???대㉧ ??罹≪쿂</td></tr>
|
||||
<tr><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">而ㅼ뒪? Popup</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">紐⑤뱺 ?쒕∼?ㅼ슫 硫붾돱瑜??쇱슫??而ㅼ뒪? Popup?쇰줈 ?듭씪</td></tr>
|
||||
<tr style="background:#EBF3FB;"><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px; font-weight:bold; white-space:nowrap;">?뚮┝ ?뺤옣</td><td style="padding:6px 12px; border:1px solid #D6E4F0; font-size:14px;">湲곕낯 15珥? 1遺?2遺?3遺??쒖떆 ?쒓컙 異붽?</td></tr>
|
||||
</table>
|
||||
|
||||
<!-- 10. 留덈Т由?-->
|
||||
<h2 style="font-size:22px; color:#1F3864; border-bottom:3px solid #4472C4; padding-bottom:6px; margin-top:36px;">10. 留덈Т由???LLM怨??④퍡 留뚮뱺 ?꾨줈?앺듃</h2>
|
||||
|
||||
<p>AX Copilot? 湲고쉷遺??援ы쁽, ?뚯뒪?? 臾몄꽌?붽퉴吏 LLM(Sigmoid)怨??④퍡 吏꾪뻾???꾨줈?앺듃?낅땲??</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>湲고쉷</strong>: Alfred, Raycast ??湲곗〈 ?곗쿂???μ젏??遺꾩꽍?섍퀬, ?щ궡 ?섍꼍??留욌뒗 湲곕뒫 ?좊퀎</li>
|
||||
<li><strong>援ы쁽</strong>: WPF + P/Invoke 湲곕컲?쇰줈 ?몃? ?섏〈???놁씠 45媛? 湲곕뒫 援ы쁽</li>
|
||||
<li><strong>AI ?듯빀</strong>: Ollama/vLLM/Gemini/Sigmoid 4醫?LLM ?쒕퉬?ㅻ? ?щ궡 ?섍꼍??留욊쾶 ?듯빀</li>
|
||||
<li><strong>寃??/strong>: 肄붾뱶 由щ럭, ?ㅻ쪟 遺꾩꽍, 蹂댁븞 ?먭?, ?깅뒫 理쒖쟻?붾? LLM怨??④퍡 諛섎났</li>
|
||||
<li><strong>臾몄꽌</strong>: 媛쒕컻 臾몄꽌, ?ъ슜??留ㅻ돱?? 釉붾줈洹?湲源뚯? LLM???묒꽦</li>
|
||||
</ul>
|
||||
|
||||
<p style="margin-top:20px; padding:16px 20px; background:#F0F4F8; border-left:4px solid #2E75B6; border-radius:0 8px 8px 0;">
|
||||
<em>"媛쒖씤?곸쑝濡??먮? 寃껋?, LLM? '肄붾뱶 ?앹꽦湲?媛 ?꾨땲??'?④퍡 ?앷컖?섎뒗 ?숇즺'??媛源앸떎??寃껋엯?덈떎."</em><br><br>
|
||||
<em>"??湲곕뒫? ?대젃寃??섎㈃ ?대뼚??" "??遺遺꾩? 蹂댁븞 由ъ뒪?ш? ?덉뼱" "?ъ슜?먭? ?대젃寃??곕㈃ 臾몄젣?????덉뼱" ???대윴 ?쇰뱶諛깆쓣 二쇨퀬諛쏆쑝硫??꾨줈?앺듃瑜??꾩꽦?덉뒿?덈떎.</em>
|
||||
</p>
|
||||
|
||||
<!-- ?뗮꽣 -->
|
||||
<div style="text-align:center; margin-top:40px; padding:24px 20px; background:linear-gradient(135deg,#1F3864 0%,#2E75B6 100%); border-radius:12px;">
|
||||
<p style="color:#fff; font-size:18px; font-weight:bold; margin:0 0 8px;">AX Copilot v1.0.5 ??紐⑤뱺 ?낅Т瑜??ㅻ낫???섎굹濡?</p>
|
||||
<p style="color:#B8CCE4; font-size:14px; margin:0;">諛깆듅??쨌 AX?곌뎄??AI? 쨌 SW Architect 쨌 www.swarchitect.net</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -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 기준으로 작성되었으며, 향후 기능 업데이트에 따라 활용 범위가 확대될 예정입니다.*
|
||||
5769
docs/DEVELOPMENT.md
5769
docs/DEVELOPMENT.md
File diff suppressed because it is too large
Load Diff
54
docs/DEVELOPMENT_2026-04-04_CONTINUOUS.md
Normal file
54
docs/DEVELOPMENT_2026-04-04_CONTINUOUS.md
Normal file
@@ -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 토큰/요약 표시 갱신 확인
|
||||
@@ -1,619 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AX Commander (런처) 고도화 계획 | AX Copilot</title>
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Pretendard', 'Segoe UI', 'Malgun Gothic', -apple-system, sans-serif;
|
||||
font-size: 15px;
|
||||
background: #f8f9fe;
|
||||
color: #1a1a2e;
|
||||
line-height: 1.7;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
.header {
|
||||
background: linear-gradient(135deg, #1a1b2e 0%, #2d3a6b 60%, #4b5efc 100%);
|
||||
padding: 48px 0 40px;
|
||||
color: white;
|
||||
}
|
||||
.header-inner {
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
.header-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.header-logo {
|
||||
width: 48px; height: 48px;
|
||||
background: rgba(255,255,255,0.15);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
border-radius: 12px;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
font-weight: 800; font-size: 1.2rem; color: #fff;
|
||||
}
|
||||
.header h1 {
|
||||
font-size: 26px;
|
||||
font-weight: 800;
|
||||
color: #fff;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.header-meta {
|
||||
display: flex; gap: 2rem; margin-top: 0.5rem; font-size: 0.85rem; color: rgba(255,255,255,0.65);
|
||||
}
|
||||
.header-meta span { display: flex; align-items: center; gap: 0.4rem; }
|
||||
|
||||
/* Container */
|
||||
.container { max-width: 900px; margin: 0 auto; padding: 40px 20px 80px; }
|
||||
|
||||
/* TOC */
|
||||
.toc {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
padding: 18px 26px;
|
||||
margin-bottom: 24px;
|
||||
box-shadow: 0 2px 12px rgba(75,94,252,0.08);
|
||||
}
|
||||
.toc h2 {
|
||||
font-size: 15px;
|
||||
font-weight: 800;
|
||||
color: #2e3060;
|
||||
margin-bottom: 1rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 1px solid #e0e0ec;
|
||||
}
|
||||
.toc ul { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 0.4rem; }
|
||||
.toc a {
|
||||
color: #4b5efc;
|
||||
text-decoration: none;
|
||||
font-size: 13.5px;
|
||||
font-weight: 600;
|
||||
padding: 0.3rem 0.6rem;
|
||||
border-radius: 6px;
|
||||
display: block;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.toc a:hover { background: #eef1ff; color: #1a1a2e; }
|
||||
|
||||
/* Section (collapsible) */
|
||||
.section {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
margin-bottom: 16px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 12px rgba(75,94,252,0.08);
|
||||
}
|
||||
|
||||
.section-header {
|
||||
background: #eef1ff;
|
||||
padding: 12px 20px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
user-select: none;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.section-header:hover { border-bottom-color: #4b5efc; }
|
||||
.section-header h2 { font-size: 16px; font-weight: 700; color: #1a1b2e; }
|
||||
|
||||
/* Collapsible chevron replaced with triangle markers */
|
||||
.chevron { display: none; }
|
||||
.section-header::after {
|
||||
content: '\25BC';
|
||||
font-size: 11px;
|
||||
color: #4b5efc;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
.section.collapsed .section-header::after { content: '\25B6'; }
|
||||
.section.collapsed .section-body { display: none; }
|
||||
|
||||
.section-body { padding: 20px; }
|
||||
|
||||
/* Status badges */
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 2px 10px;
|
||||
border-radius: 20px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.badge-completed { background: rgba(52,211,153,0.15); color: #16a34a; border: 1px solid rgba(52,211,153,0.3); }
|
||||
.badge-in-progress { background: rgba(251,191,36,0.15); color: #d97706; border: 1px solid rgba(251,191,36,0.3); }
|
||||
.badge-done { background: rgba(16,185,129,0.15); color: #059669; border: 1px solid rgba(16,185,129,0.3); }
|
||||
.badge-hold { background: rgba(156,163,175,0.15); color: #6b7280; border: 1px solid rgba(156,163,175,0.3); }
|
||||
.badge-planned { background: rgba(96,165,250,0.15); color: #3b82f6; border: 1px solid rgba(96,165,250,0.3); }
|
||||
|
||||
/* Priority badges */
|
||||
.priority {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
border-radius: 6px;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
.priority-highest { background: rgba(248,113,113,0.15); color: #e53e3e; border: 1px solid rgba(248,113,113,0.3); }
|
||||
.priority-high { background: rgba(251,146,60,0.15); color: #dd6b20; border: 1px solid rgba(251,146,60,0.3); }
|
||||
.priority-medium { background: rgba(251,191,36,0.15); color: #d97706; border: 1px solid rgba(251,191,36,0.3); }
|
||||
.priority-low { background: rgba(156,163,175,0.15); color: #6b7280; border: 1px solid rgba(156,163,175,0.3); }
|
||||
.priority-longterm { background: rgba(139,92,246,0.15); color: #7c3aed; border: 1px solid rgba(139,92,246,0.3); }
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
background: white;
|
||||
font-size: 13.5px;
|
||||
margin: 1rem 0;
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 12px rgba(75,94,252,0.08);
|
||||
}
|
||||
thead th {
|
||||
background: #2e3060;
|
||||
color: white;
|
||||
padding: 12px 16px;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
}
|
||||
tbody td {
|
||||
padding: 10px 16px;
|
||||
border-bottom: 1px solid #f0f0f8;
|
||||
vertical-align: top;
|
||||
color: #1a1a2e;
|
||||
}
|
||||
tbody tr:nth-child(even) td { background: #f8f9fe; }
|
||||
tbody tr:hover td { background: #f5f6ff; }
|
||||
tbody tr:last-child td { border-bottom: none; }
|
||||
|
||||
/* Feature cards */
|
||||
.feature-card {
|
||||
background: #f8f9fe;
|
||||
border: 1px solid #e0e0ec;
|
||||
border-radius: 10px;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.feature-card:hover { border-color: #4b5efc; }
|
||||
.feature-card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 6px;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
.feature-card-header h4 { font-size: 15px; font-weight: 700; color: #2e3060; }
|
||||
.feature-card p, .feature-card li {
|
||||
color: #6b6b8a;
|
||||
font-size: 13px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.feature-card strong { color: #1a1a2e; }
|
||||
.feature-card ul { padding-left: 1.2rem; }
|
||||
|
||||
/* Bullet list */
|
||||
.bullet-list { list-style: none; padding: 0; }
|
||||
.bullet-list li {
|
||||
padding: 0.4rem 0 0.4rem 1.2rem;
|
||||
position: relative;
|
||||
color: #6b6b8a;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
.bullet-list li::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0.85rem;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background: #4b5efc;
|
||||
}
|
||||
|
||||
/* Separator */
|
||||
hr {
|
||||
border: none;
|
||||
height: 1px;
|
||||
background: #e0e0ec;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
/* Comparison highlight */
|
||||
table .check { color: #16a34a; font-weight: 700; }
|
||||
table .cross { color: #e53e3e; opacity: 0.6; }
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 32px 20px;
|
||||
color: #8888aa;
|
||||
font-size: 12px;
|
||||
border-top: 1px solid #e0e0ec;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
/* Print */
|
||||
@media print {
|
||||
body { background: #fff; }
|
||||
.header { page-break-after: always; }
|
||||
.section-body { display: block !important; }
|
||||
.section-header::after { content: ''; }
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.container { padding: 20px 12px; }
|
||||
.toc ul { grid-template-columns: 1fr; }
|
||||
.header h1 { font-size: 20px; }
|
||||
.header-meta { flex-direction: column; gap: 0.5rem; }
|
||||
table { font-size: 12px; }
|
||||
thead th, tbody td { padding: 8px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<div class="header-inner">
|
||||
<div class="header-brand">
|
||||
<div class="header-logo">AX</div>
|
||||
<div>
|
||||
<h1>AX Commander (런처) 고도화 계획</h1>
|
||||
<div style="color: rgba(255,255,255,0.65); font-size: 14px; margin-top: 0.2rem;">AX Copilot Launcher Roadmap</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-meta">
|
||||
<span>Version: v1.6.1</span>
|
||||
<span>Last Updated: 2026-03-30</span>
|
||||
<span>Status: Active</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<!-- TOC -->
|
||||
<nav class="toc" id="toc">
|
||||
<h2>목차 (Table of Contents)</h2>
|
||||
<ul>
|
||||
<li><a href="#current-state">현재 상태 (v1.5.0)</a></li>
|
||||
<li><a href="#comparison">경쟁 서비스 비교</a></li>
|
||||
<li><a href="#phase-l1">Phase L1 — 차세대 런처 고도화 (v1.5.0)</a></li>
|
||||
<li><a href="#phase-l2">Phase L2 — 클립보드 고도화 + UX 개선 (v1.5.3)</a></li>
|
||||
<li><a href="#phase-l3">Phase L3 — 차세대 런처 (v2.0) + Agent Phase 18 교차</a></li>
|
||||
<li><a href="#tech-debt">기술 부채</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- Current State -->
|
||||
<div class="section" id="current-state">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>현재 상태 (v1.5.0) — 핵심 기능 44개 핸들러</h2>
|
||||
<span class="badge badge-completed">현재</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<ul class="bullet-list">
|
||||
<li>퍼지 검색 + 한글 초성 검색 (FuzzyEngine)</li>
|
||||
<li>44개 프리픽스 명령 (계산기, 이모지, 웹검색, 스니펫, 클립보드, 프로세스 등)</li>
|
||||
<li>10가지 테마 + 커스텀 테마</li>
|
||||
<li>플러그인 시스템 (DLL + JSON 스킬)</li>
|
||||
<li>AX Agent AI 대화 통합</li>
|
||||
<li>글로벌 핫키 (Alt+Space), 무지개 글로우 효과</li>
|
||||
<li>파일/앱 인덱싱, 북마크 검색, 사용 빈도 랭킹</li>
|
||||
<li>워크스페이스 프로파일 (창 레이아웃 저장/복원)</li>
|
||||
<li>클립보드 히스토리, 스니펫 확장</li>
|
||||
<li>스크린 캡처, 컬러 피커, JSON 도구</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Comparison -->
|
||||
<div class="section" id="comparison">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>경쟁 서비스 비교 (2026년 3월 기준)</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<div style="overflow-x:auto;">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>기능</th>
|
||||
<th>AX Commander</th>
|
||||
<th>Raycast</th>
|
||||
<th>Alfred 5</th>
|
||||
<th>Flow Launcher</th>
|
||||
<th>PowerToys</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>AI 대화</td><td class="check">O (AX Agent)</td><td class="check">O (멀티모델)</td><td>워크플로우</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>MCP 프로토콜</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>에이전트 코딩</td><td class="check">O (Code 탭)</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>플러그인</td><td>DLL+JSON</td><td>1500+ 스토어</td><td>워크플로우 갤러리</td><td>200+</td><td>모듈</td></tr>
|
||||
<tr><td>클립보드 히스토리</td><td class="check">O</td><td class="check">O (리치)</td><td>파워팩</td><td>플러그인</td><td class="cross">X</td></tr>
|
||||
<tr><td>윈도우 관리</td><td class="check">O (22 레이아웃)</td><td>70+ 레이아웃</td><td class="cross">X</td><td class="cross">X</td><td>FancyZones</td></tr>
|
||||
<tr><td>파일 탐색기 통합</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>Everything 연동</td><td class="check">O (es 프리픽스)</td><td class="cross">X</td><td class="cross">X</td><td class="check">O</td><td class="cross">X</td></tr>
|
||||
<tr><td>선택 텍스트 AI</td><td class="check">O (텍스트 액션)</td><td class="check">O (AI Commands)</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>영구 독 UI</td><td class="check">O (독 바)</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">O</td></tr>
|
||||
<tr><td>클라우드 동기화</td><td class="cross">X</td><td>Pro</td><td>Dropbox</td><td class="cross">X</td><td class="cross">X</td></tr>
|
||||
<tr><td>다국어</td><td class="check">5개국어</td><td>영어</td><td>영어</td><td>영어</td><td>다국어</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L1 -->
|
||||
<div class="section" id="phase-l1">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L1 — 차세대 런처 고도화 (v1.5.0)</h2>
|
||||
<span class="badge badge-done">✓ 완료</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
|
||||
<!-- L1-1 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-1. 선택 텍스트 AI 명령 (AI Commands)</h4>
|
||||
<span class="priority priority-highest">최고</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 런처에서만 AI 사용 가능, 시스템 전역 텍스트 처리 불가</p>
|
||||
<p><strong>구현:</strong> 글로벌 핫키(예: Alt+A) → 선택된 텍스트에 AI 명령 실행</p>
|
||||
<p><strong>명령 예시:</strong> 번역, 문법 교정, 요약, 코드 설명, 포맷 변환</p>
|
||||
<p><strong>참고:</strong> Raycast AI Commands</p>
|
||||
<p><strong>기술:</strong> InputListener 확장 + Clipboard 읽기 + LLM 호출 + 결과 Popup</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-2 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-2. Everything (voidtools) 연동</h4>
|
||||
<span class="priority priority-high">높음</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 자체 인덱싱은 설정된 폴더만 검색, 전체 디스크 검색 불가</p>
|
||||
<p><strong>구현:</strong> Everything SDK (IPC/HTTP API) 연동으로 NTFS 전체 즉시 검색</p>
|
||||
<p><strong>폴백:</strong> Everything 미설치 시 기존 IndexService 사용</p>
|
||||
<p><strong>참고:</strong> Flow Launcher, Wox의 Everything 통합</p>
|
||||
<p><strong>기술:</strong> Everything.dll P/Invoke 또는 HTTP API (http://localhost:8080)</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-3 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-3. 윈도우 타일링 레이아웃 확장</h4>
|
||||
<span class="priority priority-high">높음</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 기본 snap만 지원, 복잡한 레이아웃 불가</p>
|
||||
<p><strong>구현:</strong> 2분할, 3분할, 4분할, 그리드 레이아웃 (halves/thirds/quarters)</p>
|
||||
<p><strong>UI:</strong> snap 프리픽스에 레이아웃 선택 UI 추가</p>
|
||||
<p><strong>참고:</strong> Raycast Window Management (70+ 레이아웃)</p>
|
||||
<p><strong>기술:</strong> SnapHandler 확장 + Win32 SetWindowPos</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-4 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-4. 플러그인 스토어 (인앱 갤러리)</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 플러그인 설치가 수동 (DLL 파일 복사)</p>
|
||||
<p><strong>구현:</strong> 인앱 플러그인 브라우저 + 원클릭 설치/업데이트</p>
|
||||
<p><strong>소스:</strong> GitHub 리포지토리 기반 플러그인 레지스트리 (JSON manifest)</p>
|
||||
<p><strong>참고:</strong> Raycast Extension Store, Flow Launcher pm install</p>
|
||||
<p><strong>기술:</strong> PluginHost 확장 + GitHub API + 다운로드/설치 자동화</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-5 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-5. 영구 독/위젯 모드</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 런처는 호출 시에만 나타남, 상시 접근 불가</p>
|
||||
<p><strong>구현:</strong> 화면 하단/측면에 고정되는 미니 바 (핀 고정 명령, CPU/메모리, 시계)</p>
|
||||
<p><strong>참고:</strong> PowerToys Command Palette Dock</p>
|
||||
<p><strong>기술:</strong> 별도 Window (TopMost, 자동 숨김 옵션)</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-6 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-6. 파일 탐색기 대화상자 통합</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 열기/저장 대화상자에서 빠른 검색 불가</p>
|
||||
<p><strong>구현:</strong> Windows 열기/저장 대화상자 감지 → 런처 오버레이 표시</p>
|
||||
<p><strong>참고:</strong> Listary의 대화상자 하이재킹</p>
|
||||
<p><strong>기술:</strong> SetWinEventHook + 대화상자 감지 + 경로 주입</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-7 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-7. 클립보드 히스토리 강화</h4>
|
||||
<span class="priority priority-medium">중간</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 텍스트만 저장, 이미지/파일 클립보드 미지원</p>
|
||||
<p><strong>구현:</strong> 이미지 클립보드 저장, 리치 텍스트, 핀 고정, 카테고리 분류</p>
|
||||
<p><strong>참고:</strong> Raycast Clipboard (리치 컨텐츠)</p>
|
||||
<p><strong>기술:</strong> ClipboardHistoryHandler 확장 + 이미지 직렬화</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-8 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-8. 클라우드 설정 동기화</h4>
|
||||
<span class="badge badge-hold">보류</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 여러 PC에서 설정 수동 복사 필요</p>
|
||||
<p><strong>구현:</strong> settings.json + 스니펫 + 별칭을 클라우드 저장소에 동기화</p>
|
||||
<p><strong>후보:</strong> OneDrive / Google Drive / 사내 NAS 공유 폴더</p>
|
||||
<p><strong>참고:</strong> Raycast Pro Cloud Sync</p>
|
||||
</div>
|
||||
|
||||
<!-- L1-9 -->
|
||||
<div class="feature-card">
|
||||
<div class="feature-card-header">
|
||||
<h4>L1-9. 커스텀 테마 마켓</h4>
|
||||
<span class="badge badge-hold">보류</span>
|
||||
</div>
|
||||
<p><strong>갭:</strong> 10개 내장 테마만 사용 가능</p>
|
||||
<p><strong>구현:</strong> 사용자 테마 공유/다운로드 시스템</p>
|
||||
<p><strong>기술:</strong> 테마 JSON 파일 → GitHub 기반 레지스트리</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L1 추가 완료 -->
|
||||
<div class="section">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L1 추가 완료 (v1.5.0)</h2>
|
||||
<span class="badge badge-done">✓ 완료</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<table>
|
||||
<thead><tr><th>기능</th><th>상태</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>Windows 탐색기 셸 확장</td><td>✓ ShellExtensionService — HKCU 레지스트리 우클릭 메뉴 등록/해제</td></tr>
|
||||
<tr><td>저장 공간 관리 UI</td><td>✓ StorageAnalyzer — 사용량 분석, 드라이브 여유, 7/14/30일 정리</td></tr>
|
||||
<tr><td>설정 도움말 아이콘</td><td>✓ AI 관련 설정 17개에 ? 아이콘 + 커스텀 다크 툴팁</td></tr>
|
||||
<tr><td>독 바 실시간 설정</td><td>✓ 설정 변경 즉시 반영, 자동 표시, 위치 기억, 히트 테스트 수정</td></tr>
|
||||
<tr><td>클립보드 이미지 썸네일</td><td>✓ 런처에서 이미지 항목 썸네일 미리보기 표시</td></tr>
|
||||
<tr><td>런처 독 바 명령어</td><td>✓ /dock 명령으로 독 바 표시/숨기기</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L2 -->
|
||||
<div class="section" id="phase-l2">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L2 — 클립보드 고도화 + UX 개선 (v1.5.3)</h2>
|
||||
<span class="badge badge-planned">계획</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<p style="color:#555;margin-bottom:1rem;">
|
||||
<strong>방향</strong>: 클립보드 히스토리의 실용성 극대화 (이미지 원본 품질, 자동 복사 워크플로우).
|
||||
Raycast의 리치 클립보드, Alfred의 Snippet 확장을 참고하되 사내 로컬 환경에 최적화.
|
||||
</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>#</th><th>기능</th><th>설명</th><th>우선순위</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>L2-1</td><td>클립보드 이미지 원본 해상도 보존</td><td>원본 PNG/BMP 그대로 DPAPI 저장. 썸네일은 표시용으로만 생성. 캐시 정리 정책 (30일/500MB)</td><td><span class="priority priority-high">높음</span></td></tr>
|
||||
<tr><td>L2-2</td><td>Shift+Enter 실행 시 자동 클립보드 복사</td><td>클립보드 히스토리에서 미리보기 시 해당 항목을 시스템 클립보드에 자동 복사</td><td><span class="priority priority-high">높음</span></td></tr>
|
||||
<tr><td>L2-3</td><td>클립보드 이미지 미리보기 창</td><td>이미지 항목 선택 시 별도 팝업으로 원본 크기 미리보기. 확대/축소, 복사 버튼</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L2-4</td><td>클립보드 검색 강화</td><td>이미지 OCR 텍스트 추출 → 텍스트 기반 이미지 검색. Windows OCR API (로컬)</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L2-5</td><td>클립보드 항목 병합</td><td>여러 텍스트 항목을 선택하여 하나로 병합 (줄바꿈 구분). Ctrl+Click 다중 선택</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Phase L3 -->
|
||||
<div class="section" id="phase-l3">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>Phase L3 — 차세대 런처 (v2.0) + Agent Phase 18 교차</h2>
|
||||
<span class="badge badge-planned">계획</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<p style="color:#555;margin-bottom:1rem;">
|
||||
<strong>방향</strong>: 경쟁 런처(Raycast 1500+ 확장, PowerToys Run)의 에코시스템 수준을 참고하되,
|
||||
사내 보안/오프라인 환경에서 동작하는 자체 완결형 기능으로 구현.<br>
|
||||
<strong>참고</strong>: AX Agent Phase 18 (v2.0)과 교차 — 플러그인 갤러리(18-2), AI 스니펫(18-3), 퀵링크(18-4), 웹 검색 AI 요약(18-6).
|
||||
</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>#</th><th>기능</th><th>참고</th><th>우선순위</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>L3-1</td><td>플러그인 인앱 갤러리 + 레지스트리</td><td>로컬 NAS/Git 레지스트리 기반 탐색/설치/업데이트. → Agent Phase 18-2</td><td><span class="priority priority-high">높음</span></td></tr>
|
||||
<tr><td>L3-2</td><td>웹 검색 AI 요약</td><td>? 검색 결과를 AI로 요약. → Agent Phase 18-6</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-3</td><td>AI 스니펫</td><td>;email {수신자} {주제} → LLM 초안 자동 생성. → Agent Phase 18-3</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-4</td><td>파라미터 퀵링크</td><td>jira {티켓번호} → URL 템플릿 변수 치환. → Agent Phase 18-4</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-5</td><td>파일 태그 시스템</td><td>사용자 태그 부여, 태그 기반 검색</td><td><span class="priority priority-medium">중간</span></td></tr>
|
||||
<tr><td>L3-6</td><td>오프라인 AI (로컬 SLM)</td><td>ONNX Runtime + phi-3. → Agent Phase 18-5</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
<tr><td>L3-7</td><td>다중 디스플레이</td><td>모니터별 런처/독 바 위치 기억</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
<tr><td>L3-8</td><td>알림 센터 통합</td><td>Windows 알림과 연동</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
<tr><td>L3-9</td><td>런처 미니 위젯</td><td>날씨/일정/할일 카드형 표시. 로컬 데이터 기반</td><td><span class="priority priority-low">낮음</span></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Tech Debt -->
|
||||
<div class="section" id="tech-debt">
|
||||
<div class="section-header" onclick="toggleSection(this)">
|
||||
<div style="display:flex;align-items:center;gap:0.75rem;">
|
||||
<h2>기술 부채 (v1.5.0 해결)</h2>
|
||||
<span class="badge badge-done">✓ 완료</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th>항목</th><th>상태</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>SnapHandler 기본 기능만</td><td>✓ 22개 레이아웃으로 확장 (3등분, 2/3, 3분할 조합)</td></tr>
|
||||
<tr><td>Everything 미연동</td><td>✓ EverythingHandler 구현 (es 프리픽스, P/Invoke, graceful fallback)</td></tr>
|
||||
<tr><td>플러그인 설치 수동</td><td>✓ PluginHost.InstallFromZip() 로컬 zip 자동 추출·등록 (URL 제외: 사내 보안)</td></tr>
|
||||
<tr><td>이미지 클립보드 미지원</td><td>✓ PNG→Base64 DPAPI 암호화 저장/복원, 앱 재시작 후 이미지 유지</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
AX Copilot — AX Commander Roadmap v1.6.1 · Last Updated: 2026-03-30
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function toggleSection(header) {
|
||||
const section = header.parentElement;
|
||||
section.classList.toggle('collapsed');
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +1,24 @@
|
||||
# AX Commander 로드맵 (전면 재작성)
|
||||
# AX Commander 로드맵 (전면 재작성)
|
||||
|
||||
업데이트: 2026-04-04 10:05 (KST)
|
||||
|
||||
## 1. 보존 이력 (요약만 유지)
|
||||
- v1.5.0: Everything 연동, Dock Bar, 파일대화상자 연동, 클립보드 고도화, 플러그인 ZIP 설치.
|
||||
- v1.5.3: 클립보드 이미지 원본 보존/복원, Shift+Enter 자동복사, 설정 UX 개선.
|
||||
- v0.5.0: Everything 연동, Dock Bar, 파일대화상자 연동, 클립보드 고도화, 플러그인 ZIP 설치.
|
||||
- v0.5.3: 클립보드 이미지 원본 보존/복원, Shift+Enter 자동복사, 설정 UX 개선.
|
||||
|
||||
## 2. 재작성 기준
|
||||
- 런처는 AX Agent 실행 품질을 끌어올리는 입력 허브로 재정의.
|
||||
- claw-code의 명령 중심 워크플로우를 AX Commander UX에 맞게 흡수.
|
||||
|
||||
## 3. 2026 실행 계획 (v1.7.3 ~ v1.8.x)
|
||||
## 3. 2026 실행 계획 (v0.7.3 ~ v0.8.x)
|
||||
|
||||
### 완료 이력
|
||||
- [완료] Phase L2-3 클립보드 이미지 미리보기 창 구현
|
||||
- `ClipboardImagePreviewWindow.xaml / .xaml.cs` 신규 추가
|
||||
- 원본 해상도 표시, `Ctrl+휠`/`+`/`-`/`0`/`F`/`Esc` 줌 단축키 지원
|
||||
- PNG·JPEG·BMP 저장, 클립보드 복사 지원
|
||||
- `LauncherWindow`에서 `#` 이미지 항목 `Shift+Enter`로 전용 미리보기 창 열기
|
||||
- 단축키 도움말 갱신 완료
|
||||
|
||||
### Phase L-A 입력 라우팅 정교화
|
||||
- 목표
|
||||
|
||||
@@ -1,259 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AX Copilot ??李④린 媛쒕컻 怨꾪쉷 (v1.6.1~v2.0)</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
body { font-family: 'Pretendard', 'Segoe UI', 'Malgun Gothic', sans-serif; font-size: 15px; color: #1a1a2e; background: #f8f9fe; line-height: 1.7; }
|
||||
.wrap { max-width: 960px; margin: 0 auto; padding: 40px 20px 80px; }
|
||||
.header { background: linear-gradient(135deg, #1a1b2e 0%, #2d3a6b 60%, #4b5efc 100%); border-radius: 20px; padding: 48px 40px 40px; margin-bottom: 40px; color: white; }
|
||||
.header h1 { font-size: 26px; font-weight: 800; line-height: 1.3; margin-bottom: 12px; }
|
||||
.header .subtitle { font-size: 14px; color: rgba(255,255,255,0.65); line-height: 1.6; }
|
||||
.header .badge { display: inline-block; background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.25); border-radius: 20px; padding: 4px 14px; font-size: 12px; font-weight: 600; margin-bottom: 16px; }
|
||||
h2 { font-size: 20px; font-weight: 800; margin: 40px 0 16px; padding: 14px 20px; background: linear-gradient(135deg, #1a1b2e 0%, #2d3a6b 60%, #4b5efc 100%); color: #fff; border-radius: 12px; }
|
||||
h3 { font-size: 15px; font-weight: 700; color: #1a1b2e; margin: 20px 0 10px; padding-left: 12px; border-left: 4px solid #4b5efc; }
|
||||
.card { background: #fff; border-radius: 14px; padding: 20px 24px; margin: 0 0 14px; box-shadow: 0 1px 4px rgba(0,0,0,0.06); }
|
||||
table { width: 100%; border-collapse: collapse; font-size: 13px; }
|
||||
th { background: #f0f2ff; text-align: left; padding: 8px 12px; font-weight: 700; border-bottom: 2px solid #dde; }
|
||||
td { padding: 7px 12px; border-bottom: 1px solid #eef; vertical-align: top; }
|
||||
.check { color: #059669; font-weight: 700; }
|
||||
.cross { color: #dc2626; }
|
||||
.new { color: #4b5efc; font-weight: 700; }
|
||||
.badge-done { display: inline-block; background: rgba(16,185,129,0.15); color: #059669; border: 1px solid rgba(16,185,129,0.3); padding: 2px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; }
|
||||
.badge-plan { display: inline-block; background: rgba(75,94,252,0.1); color: #4b5efc; border: 1px solid rgba(75,94,252,0.3); padding: 2px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; }
|
||||
.badge-hold { display: inline-block; background: rgba(156,163,175,0.15); color: #6b7280; border: 1px solid rgba(156,163,175,0.3); padding: 2px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; }
|
||||
.p-high { color: #dc2626; font-weight: 700; }
|
||||
.p-mid { color: #d97706; font-weight: 600; }
|
||||
.p-low { color: #6b7280; }
|
||||
.footer { text-align: center; font-size: 12px; color: #9999bb; margin-top: 48px; padding-top: 16px; border-top: 1px solid #e4e4f0; }
|
||||
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
|
||||
@media (max-width: 700px) { .two-col { grid-template-columns: 1fr; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
|
||||
<div class="header">
|
||||
<div class="badge">AX Copilot 李④린 媛쒕컻 怨꾪쉷</div>
|
||||
<h1>v1.6.1 ~ v2.0 濡쒕뱶留?/h1>
|
||||
<p class="subtitle">
|
||||
2026??3??寃쎌웳 ?쒕퉬??遺꾩꽍 (Claw Code, Cursor, Copilot, Windsurf, Raycast, PowerToys) 諛??먯씠?꾪듃 肄붾뵫 ?숉뼢 湲곕컲<br>
|
||||
?꾩옱 v1.6.1 ??52媛??먯씠?꾪듃 ?꾧뎄, 29媛??댁옣 ?ㅽ궗, 20媛?肄붿썙???꾨━?? 4醫?LLM ?쒕퉬?? </p>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧???꾩옱 ?꾨즺 ?먥븧??-->
|
||||
<h2>v1.6.1 ?꾨즺 ?꾪솴</h2>
|
||||
|
||||
<div class="two-col">
|
||||
<div class="card">
|
||||
<h3>?곗쿂 (Phase L1) <span class="badge-done">?꾨즺</span></h3>
|
||||
<table>
|
||||
<tr><td>?좏깮 ?띿뒪??AI 紐낅졊</td><td class="check">O</td></tr>
|
||||
<tr><td>??諛?(?ㅼ젙 湲곕컲)</td><td class="check">O</td></tr>
|
||||
<tr><td>?대┰蹂대뱶 ?/移댄뀒怨좊━</td><td class="check">O</td></tr>
|
||||
<tr><td>?뚯씪 ??붿긽???곕룞</td><td class="check">O</td></tr>
|
||||
<tr><td>Everything ?곕룞</td><td class="check">O</td></tr>
|
||||
<tr><td>SnapHandler 22醫?/td><td class="check">O</td></tr>
|
||||
<tr><td>?꾩씠肄??꾨㈃ 援먯껜</td><td class="check">O</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>????쒕퉬??(Phase 8~15) <span class="badge-done">?꾨즺</span></h3>
|
||||
<table>
|
||||
<tr><td>MCP ?대씪?댁뼵??+ 紐⑤뜽 ?대갚</td><td class="check">O</td></tr>
|
||||
<tr><td>LSP 肄붾뱶 ?명뀛由ъ쟾??/td><td class="check">O</td></tr>
|
||||
<tr><td>?쒕툕?먯씠?꾪듃 + 肄붾뱶 ?쒕㎤??寃??/td><td class="check">O</td></tr>
|
||||
<tr><td>diff 酉곗뼱 + PDF ?대낫?닿린</td><td class="check">O</td></tr>
|
||||
<tr><td>?대깽???몃━嫄?+ ?먮룞 ?뚯뒪??猷⑦봽</td><td class="check">O</td></tr>
|
||||
<tr><td>?먮룞 紐⑤뜽 ?좏깮 (Auto Router)</td><td class="check">O</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 硫붾え由?+ 硫?곕え??(Vision)</td><td class="check">O</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 ???쒖뒪??/td><td class="check">O</td></tr>
|
||||
<tr><td>?ㅽ궗 ?쒖뒪??29醫?(媛ㅻ윭由??몄쭛湲?媛?몄삤湲?</td><td class="check">O</td></tr>
|
||||
<tr><td>AI 肄붾뱶 由щ럭 + ?쒕옒洹??쒕∼ AI</td><td class="check">O</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 ?꾧뎄 52醫?(?곗씠???쒖뒪???ㅽ듃?뚰겕)</td><td class="check">O</td></tr>
|
||||
<tr><td>?뚰겕?뚮줈??遺꾩꽍湲?+ ?ㅽ뻾 ?듦퀎 ??쒕낫??/td><td class="check">O</td></tr>
|
||||
<tr><td>硫?고뙣??臾몄꽌 ?앹꽦 (plan?뭓ssemble)</td><td class="check">O</td></tr>
|
||||
<tr><td>PPT ?ㅼ씠?곕툕 ?앹꽦 + ?대?吏 遺꾩꽍</td><td class="check">O</td></tr>
|
||||
<tr><td>媛?대뱶 ?쒖뒪??(?뷀샇??酉곗뼱)</td><td class="check">O</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??寃쎌웳 鍮꾧탳 ?먥븧??-->
|
||||
<h2>寃쎌웳 ?쒕퉬???鍮??ъ???(2026??3??</h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>湲곕뒫</th><th>AX Copilot</th><th>Claw Code</th><th>Cursor</th><th>Copilot</th><th>Raycast</th><th>媛?/th></tr>
|
||||
<tr><td>MCP</td><td class="check">O</td><td class="check">?쒕쾭 紐⑤뱶</td><td class="check">O</td><td class="check">O</td><td class="check">@硫섏뀡</td><td>??/td></tr>
|
||||
<tr><td>?쒕툕?먯씠?꾪듃</td><td class="check">O</td><td class="check">10媛??</td><td class="check">8媛??대씪?곕뱶</td><td class="check">?ㅼ쨷</td><td class="cross">X</td><td>?먯씠?꾪듃 ?</td></tr>
|
||||
<tr><td>?대깽???몃━嫄?/td><td class="check">O</td><td class="check">?뱁썒+?ㅼ?以?/td><td class="check">Automations</td><td class="check">?댁뒋?뭁R</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?먯씠?꾪듃 硫붾え由?/td><td class="check">O</td><td class="check">O</td><td class="check">O</td><td class="check">O</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?먮룞 紐⑤뜽 ?좏깮</td><td class="check">O</td><td class="cross">X</td><td class="check">O</td><td class="check">O</td><td class="check">Auto</td><td>??/td></tr>
|
||||
<tr><td>硫?곕え??/td><td class="check">O</td><td class="check">Vision</td><td class="check">O</td><td class="check">O</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?ㅽ궗 ?쒖뒪??/td><td class="check">O</td><td class="check">Skills</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>AI 肄붾뱶 由щ럭</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="check">Review</td><td class="cross">X</td><td>??/td></tr>
|
||||
<tr><td>?뚮윭洹몄씤 留덉폆</td><td>zip+媛ㅻ윭由?/td><td class="check">留덉폆</td><td class="check">30+</td><td class="check">Extensions</td><td class="check">1500+</td><td class="p-mid">?몄빋 ?덉??ㅽ듃由?/td></tr>
|
||||
<tr><td>硫?고뙣??臾몄꽌</td><td class="check">O (plan?뭓ssemble)</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>?뚰겕?뚮줈??遺꾩꽍</td><td class="check">O (?ㅼ떆媛??쒓컖??</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>?먯깋湲????뺤옣</td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>??諛?/td><td class="check">O</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="cross">X</td><td class="check">李⑤퀎??/td></tr>
|
||||
<tr><td>Windows ?ㅼ씠?곕툕</td><td class="check">O</td><td>?곕???/td><td>IDE</td><td>IDE</td><td>beta</td><td class="check">李⑤퀎??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??Phase 16 ??李④린 媛쒕컻 ?먥븧??-->
|
||||
<h2>Phase 16 ???먯씠?꾪듃 吏??媛뺥솕 + 媛쒕컻??寃쏀뿕 (v1.7.0) <span class="badge-plan">李④린 媛쒕컻</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th><th>李멸퀬</th></tr>
|
||||
<tr><td>16-1</td><td><strong>?뚮옖 紐⑤뱶 (Plan Mode)</strong></td><td class="p-high">理쒓퀬</td>
|
||||
<td>?먯씠?꾪듃媛 ?꾧뎄 ?ㅽ뻾 ??援ъ“?붾맂 怨꾪쉷 ?앹꽦 ???ъ슜??寃???몄쭛/?뱀씤 ???뱀씤 ???ㅽ뻾</td>
|
||||
<td>Claw Code Plan mode</td></tr>
|
||||
<tr><td>16-2</td><td><strong>?꾧뎄/而ㅻ꽖??愿由?UI</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>52媛??꾧뎄 移댄뀒怨좊━蹂?移대뱶, ?쒖꽦/鍮꾪솢???좉?, MCP ?쒕쾭 ?곌껐 ?곹깭</td>
|
||||
<td>Sigmoid 而ㅻ꽖??UI</td></tr>
|
||||
<tr><td>16-3</td><td><strong>?꾨줈?앺듃 洹쒖튃 ?쒖뒪??/strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>.ax/rules/*.md ???뚯씪 ?⑦꽩쨌?묒뾽 ?좏삎蹂?洹쒖튃 ?먮룞 二쇱엯</td>
|
||||
<td>Cursor .cursor/rules</td></tr>
|
||||
<tr><td>16-4</td><td><strong>諛섎났 ?뚯뒪???섏젙 猷⑦봽</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>TestLoopTool auto_fix 紐⑤뱶 ???뚯뒪?멤넂?ㅽ뙣 ?뚯떛?믪닔?뺚넂?ъ떎???먮룞 諛섎났</td>
|
||||
<td>GitHub Copilot</td></tr>
|
||||
<tr><td>16-5</td><td><strong>蹂묐젹 ?꾧뎄 ?ㅽ뻾</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>LLM ?ㅼ닔 ?꾧뎄 ?숈떆 ?몄텧 ???섏〈??遺꾩꽍 ??Task.WhenAll() 蹂묐젹 ?ㅽ뻾</td>
|
||||
<td>Claw Code parallel</td></tr>
|
||||
<tr><td>16-6</td><td><strong>SKILL.md ?쒖? ?꾩쟾 ?명솚</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>agentskills.io ?ㅽ럺 ?꾩껜 ?뚯떛, ?몃??붾궡遺 ?꾧뎄 ?대쫫 留ㅽ븨</td>
|
||||
<td>16媛? ?꾧뎄 梨꾪깮</td></tr>
|
||||
<tr><td>16-R</td><td><strong>?고???怨좉툒 ?ㅽ궗 ?뺤옣</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>4醫?異붽?: image-processor, diagram-generator, ocr-extract, data-visualize-adv</td>
|
||||
<td>Pillow, Tesseract</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??Phase 17 ?먥븧??-->
|
||||
<h2>Phase 17 ???ы솕 吏??+ UX ?곸떊 (v1.8.0) <span class="badge-plan">怨꾪쉷</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th><th>李멸퀬</th></tr>
|
||||
<tr><td>17-1</td><td><strong>?먭린 ?깆같 (Self-Reflection)</strong></td><td class="p-high">理쒓퀬</td>
|
||||
<td>?꾧뎄 ?ㅽ뙣 ??援ъ“?붾맂 ?깆같 ?꾨\?꾪듃, ?먮윭 ?⑦꽩 異붿쟻 (Reflexion ?⑦꽩)</td>
|
||||
<td>Reflexion ?쇰Ц</td></tr>
|
||||
<tr><td>17-2</td><td><strong>?묒뾽 湲곗뼲 (Working Memory)</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>????뺤텞 ?쒖뿉???좎??섎뒗 援ъ“?붾맂 ?쒖뒪???곹깭 (?꾩옱 ?묒뾽, 李몄“ ?뚯씪, ?섏궗寃곗젙 濡쒓렇)</td>
|
||||
<td>Windsurf memory</td></tr>
|
||||
<tr><td>17-3</td><td><strong>硫?고뙆???듯빀 Diff 酉?/strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>?먯씠?꾪듃 ?ㅼ닔 ?뚯씪 ?섏젙 ???섎굹???⑤꼸?먯꽌 ?뚯씪蹂??뚰겕蹂??뱀씤/嫄곕?</td>
|
||||
<td>Cursor multi-file diff</td></tr>
|
||||
<tr><td>17-4</td><td><strong>?먮룞 而⑦뀓?ㅽ듃 ?섏쭛</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>?ъ슜??硫붿떆吏?먯꽌 ?뚯씪紐?媛먯? ???먮룞 ?쎄린, Git diff, 肄붾뱶 寃??二쇱엯</td>
|
||||
<td>Windsurf auto context</td></tr>
|
||||
<tr><td>17-5</td><td><strong>MCP HTTP+SSE ?꾩넚</strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>stdio ?꾩슜 ??HTTP+SSE ?몃옖?ㅽ룷??異붽?, ?먭꺽 MCP ?쒕쾭 ?곌껐</td>
|
||||
<td>MCP ?쒖?</td></tr>
|
||||
<tr><td>17-6</td><td><strong>????붿빟 ?⑤뵒留⑤뱶</strong></td><td class="p-low">??쓬</td>
|
||||
<td>/summarize-chat ?щ옒??紐낅졊?쇰줈 ?꾩옱 ???援ъ“???붿빟</td>
|
||||
<td>??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??Phase 18 ?먥븧??-->
|
||||
<h2>Phase 18 ???먯퐫?쒖뒪??+ 李⑤퀎??(v2.0) <span class="badge-plan">怨꾪쉷</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th><th>李멸퀬</th></tr>
|
||||
<tr><td>18-1</td><td><strong>?먯씠?꾪듃 ? (Multi-Agent)</strong></td><td class="p-high">理쒓퀬</td>
|
||||
<td>?뱁솕 ?먯씠?꾪듃(肄붾뱶由щ럭, 臾몄꽌?묒꽦, 蹂댁븞媛먯궗)媛 硫붿떆吏 踰꾩뒪濡??묒뾽</td>
|
||||
<td>Claw Code ?먯씠?꾪듃 ?</td></tr>
|
||||
<tr><td>18-2</td><td><strong>?뚮윭洹몄씤 媛ㅻ윭由?+ ?덉??ㅽ듃由?/strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>濡쒖뺄 NAS/Git ?덉??ㅽ듃由?湲곕컲 ?뚮윭洹몄씤/?ㅽ궗 ?몄빋 媛ㅻ윭由?/td>
|
||||
<td>Raycast Store</td></tr>
|
||||
<tr><td>18-3</td><td><strong>AI ?ㅻ땲??/strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>;email {?섏떊?? {二쇱젣} ??LLM???대찓??珥덉븞 ?먮룞 ?앹꽦</td>
|
||||
<td>Raycast AI Snippets</td></tr>
|
||||
<tr><td>18-4</td><td><strong>?뚮씪誘명꽣 ?듬쭅??/strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>jira {?곗폆踰덊샇} ??URL ?쒗뵆由?蹂??移섑솚 (?щ궡 ?꾧뎄 鍮좊Ⅸ ?묎렐)</td>
|
||||
<td>Raycast Quicklinks</td></tr>
|
||||
<tr><td>18-5</td><td><strong>?ㅽ봽?쇱씤 AI (ONNX Runtime)</strong></td><td class="p-low">??쓬</td>
|
||||
<td>?쒕쾭 ?놁씠 踰덉뿭/?붿빟/遺꾨쪟. 紐⑤뜽 蹂꾨룄 諛고룷 (?몄뒪?⑤윭 ?ш린 ?좎?)</td>
|
||||
<td>??/td></tr>
|
||||
<tr><td>18-6</td><td><strong>??寃??AI ?붿빟</strong></td><td class="p-low">??쓬</td>
|
||||
<td>? 寃??寃곌낵瑜?AI濡??붿빟?섏뿬 ?곗쿂???쒖떆</td>
|
||||
<td>??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧???κ린 怨꾪쉷 ?먥븧??-->
|
||||
<h2>?κ린 ??macOS ?щ줈?ㅽ뵆?ロ뤌 (v2.0+) <span class="badge-plan">?κ린</span></h2>
|
||||
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>#</th><th>湲곕뒫</th><th>?곗꽑?쒖쐞</th><th>?듭떖 ?댁슜</th></tr>
|
||||
<tr><td>LP-1</td><td><strong>Avalonia UI 留덉씠洹몃젅?댁뀡</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>WPF ??Avalonia UI (.NET ?щ줈?ㅽ뵆?ロ뤌 XAML). Windows/macOS/Linux ?숈씪 肄붾뱶踰좎씠?? Skia ?뚮뜑留?/td></tr>
|
||||
<tr><td>LP-2</td><td><strong>?꾩씠肄??고듃 ?댁옣</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>Segoe MDL2 ??FluentUI System Icons (MIT). macOS?먯꽌???숈씪 ?꾩씠肄?/td></tr>
|
||||
<tr><td>LP-3</td><td><strong>P/Invoke ?뚮옯??遺꾧린</strong></td><td class="p-high">?믪쓬</td>
|
||||
<td>RuntimeInformation.IsOSPlatform 遺꾧린. macOS: AppKit, Keychain, CGEventTap, Spotlight</td></tr>
|
||||
<tr><td>LP-4</td><td><strong>?뚮윭洹몄씤 ?몄빋 媛ㅻ윭由?/strong></td><td class="p-mid">以묎컙</td>
|
||||
<td>JSON manifest 湲곕컲 ?뚮윭洹몄씤 寃???ㅼ튂/?낅뜲?댄듃. ?щ궡 NAS ?먮뒗 Git 湲곕컲 ?덉??ㅽ듃由?/td></tr>
|
||||
</table>
|
||||
<p style="margin-top:12px;font-size:12px;color:#6b7280;">
|
||||
<strong>?꾪솚 ?곹뼢</strong>: 鍮꾩쫰?덉뒪 濡쒖쭅 (Services/Agent/Models) 100% ?ъ궗?? UI 怨꾩링 (Views) ??40% ?ъ옉?? 鍮뚮뱶: <code>dotnet publish -r osx-arm64</code>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??蹂대쪟 ?먥븧??-->
|
||||
<h2>蹂대쪟 <span class="badge-hold">?щ궡 ?섍꼍</span></h2>
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><td>?대씪?곕뱶 ?ㅼ젙 ?숆린??/td><td>?몃? ?대씪?곕뱶 ?묎렐 ?쒗븳</td></tr>
|
||||
<tr><td>而ㅼ뒪? ?뚮쭏 留덉폆</td><td>?몃? URL 湲곕컲 ?ㅼ슫濡쒕뱶 ?쒗븳</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧???꾨왂 ?먥븧??-->
|
||||
<h2>?듭떖 ?꾨왂</h2>
|
||||
<div class="card">
|
||||
<h3>1. Windows ?ㅼ씠?곕툕 AI ?뚮옯??/h3>
|
||||
<p>Raycast(macOS/beta), Cursor(IDE), Claw Code(?곕??? ?ъ씠 怨듬갚. ?щ궡 ?섍꼍 ?좎씪??Windows AI ?곗쿂+?먯씠?꾪듃.</p>
|
||||
|
||||
<h3>2. 吏?ν삎 ?먮룞??/h3>
|
||||
<p>?먮룞 紐⑤뜽 ?좏깮 + ?대깽???몃━嫄?+ ?먯씠?꾪듃 硫붾え由????ъ슜??媛쒖엯 理쒖냼?? ?뚮옖 紐⑤뱶(v1.7.0)? ?먭린 ?깆같(v1.8.0)濡??먯씠?꾪듃 ?뺥솗???μ긽. ?멸컙-?먯씠?꾪듃 ?묒뾽 UX??吏묒쨷.</p>
|
||||
|
||||
<h3>3. ?앺깭怨??뺤옣</h3>
|
||||
<p>?뚮윭洹몄씤+?ㅽ궗 ?쒖뒪?쒖쑝濡?而ㅻ??덊떚 湲곗뿬 援ъ“ 留덈젴. Phase 18?먯꽌 ?뚮윭洹몄씤 媛ㅻ윭由??덉??ㅽ듃由? AI ?ㅻ땲?? ?듬쭅?щ줈 ?곗쿂 ?앺깭怨??꾩꽦. ?щ궡 諛고룷??NAS/Git 湲곕컲.</p>
|
||||
|
||||
<h3>4. ?먯씠?꾪듃 ? (v2.0 ?듭떖)</h3>
|
||||
<p>?뱁솕 ?먯씠?꾪듃(肄붾뱶由щ럭, 臾몄꽌?묒꽦, 蹂댁븞媛먯궗)媛 硫붿떆吏 踰꾩뒪濡??묒뾽?섏뿬 蹂듯빀 ?묒뾽??遺꾩뾽 ?섑뻾. Claw Code ?먯씠?꾪듃 ?, CrewAI ??븷 湲곕컲 ? ?⑦꽩 李멸퀬.</p>
|
||||
</div>
|
||||
|
||||
<!-- ?먥븧??湲곗닠 ?숉뼢 ?먥븧??-->
|
||||
<h2>2026???먯씠?꾪듃 肄붾뵫 湲곗닠 ?숉뼢</h2>
|
||||
<div class="card">
|
||||
<table>
|
||||
<tr><th>?숉뼢</th><th>?곸꽭</th></tr>
|
||||
<tr><td>?쒖옣 移⑦닾</td><td>媛쒕컻??85%媛 AI 肄붾뵫 ?꾧뎄 ?ъ슜</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 ?꾪솚</td><td>?먮룞?꾩꽦 ???먯쑉 ?먯씠?꾪듃(?대줎?믪닔?뺚넂PR?믫뀒?ㅽ듃)</td></tr>
|
||||
<tr><td>硫???먯씠?꾪듃</td><td>Claw Code ?먯씠?꾪듃 ?, Cursor 8媛??대씪?곕뱶 ?먯씠?꾪듃</td></tr>
|
||||
<tr><td>?대깽??湲곕컲</td><td>Slack/GitHub/PagerDuty/?뱁썒 ???먯씠?꾪듃 ?먮룞 ?ㅽ뻾</td></tr>
|
||||
<tr><td>?먯씠?꾪듃 硫붾え由?/td><td>Windsurf 48?쒓컙 ?먮룞 遺꾩꽍, Cursor ?щ떇 硫붾え由?/td></tr>
|
||||
<tr><td>FeatureBench 媛?/td><td>蹂듭옟 湲곕뒫 11~12% vs 踰꾧렇 ?섏젙 80%+. ?멸컙 媛먮룆 ?꾩닔</td></tr>
|
||||
<tr><td>?뚮윭洹몄씤 ?앺깭怨?/td><td>紐⑤뱺 二쇱슂 ?꾧뎄媛 留덉폆?뚮젅?댁뒪 ?곗묶</td></tr>
|
||||
<tr><td>?먮룞 紐⑤뜽 ?좏깮</td><td>Raycast Auto, Copilot Auto ???묒뾽 ?좏삎蹂?理쒖쟻 紐⑤뜽 ?쇱슦??/td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
AX Copilot v1.6.1 ??李④린 媛쒕컻 怨꾪쉷 · 理쒖쥌 ?낅뜲?댄듃: 2026-03-30
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# AX Copilot 통합 로드맵 (전면 재작성)
|
||||
|
||||
## 1. 보존 이력 (요약만 유지)
|
||||
- v1.5.x: 에이전트/런처 핵심 기능 확장, MCP/스킬/검증 체계 도입.
|
||||
- v1.6.0: 문서 생성 및 업무 자동화 도구군 확장.
|
||||
- v1.7.0~v1.7.2: Plan Mode, 병렬 도구, 검증 게이트 및 안정화 강화.
|
||||
- v0.5.x: 에이전트/런처 핵심 기능 확장, MCP/스킬/검증 체계 도입.
|
||||
- v0.6.0: 문서 생성 및 업무 자동화 도구군 확장.
|
||||
- v0.7.0~v0.7.2: Plan Mode, 병렬 도구, 검증 게이트 및 안정화 강화.
|
||||
|
||||
## 2. 재작성 목표
|
||||
- claw-code 수준의 실행 신뢰성, 세션 내구성, 결과 품질 확보.
|
||||
@@ -13,10 +13,10 @@
|
||||
|
||||
| 마일스톤 | 참조 대상 (`claw-code`) | AX 적용 위치 | 완료 조건 | 품질 판정 시나리오 |
|
||||
|---|---|---|---|---|
|
||||
| M1 (v1.7.3) Hook 계약 정식화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts` | `src/AxCopilot/Services/Agent/AgentHookRunner.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Models/AppSettings.cs`, `src/AxCopilot/ViewModels/SettingsViewModel.cs`, `src/AxCopilot/Views/SettingsWindow.xaml` | Hook 출력 계약(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영. 설정값-실행코드-UI 동시 반영. | JSON 훅/텍스트 훅 혼합 환경에서 실행 품질과 하위호환 유지 확인. |
|
||||
| M2 (v1.7.4~v1.7.5) 세션/로그 내구성 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/TaskRunService.cs`, `src/AxCopilot/Services/TaskRunStore.cs`, `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Models/ChatModels.cs` | Plan/Run 상태 영속화. 이벤트 로그 표준화 및 replay 안정성 확보. | 앱 재시작/강제종료 후 동일 세션 재개 시 상태/이력 불일치 0건. |
|
||||
| M3 (v1.7.6) 도구 선택/복구 안정화 | `src/commands.ts`, `src/Tool.ts`, `src/query.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopParallelExecution.cs`, `src/AxCopilot/Services/LlmService.ToolUse.cs` | 도구 선택 실패 루프 억제. 실패 유형별 복구 흐름 정형화. | 오타/비활성/별칭 도구 요청이 반복 실패 없이 정상 경로로 수렴하는지 확인. |
|
||||
| M4 (v1.8.0) 품질 게이트 최종 정렬 | `src/query.ts`, `src/QueryEngine.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs` | 증거 기반 완료 판정 고정. 내부 벤치마크에서 claw-code 동급 품질 달성. | 코드수정/문서생성/권한거부/복구 혼합 시나리오에서 조기완료 없이 근거 기반 종료 확인. |
|
||||
| M1 (v0.7.3) Hook 계약 정식화 | `src/utils/hooks.ts`, `src/utils/hooks/hookEvents.ts`, `src/utils/permissions/PermissionUpdate.ts` | `src/AxCopilot/Services/Agent/AgentHookRunner.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Models/AppSettings.cs`, `src/AxCopilot/ViewModels/SettingsViewModel.cs`, `src/AxCopilot/Views/SettingsWindow.xaml` | Hook 출력 계약(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영. 설정값-실행코드-UI 동시 반영. | JSON 훅/텍스트 훅 혼합 환경에서 실행 품질과 하위호환 유지 확인. |
|
||||
| M2 (v0.7.4~v0.7.5) 세션/로그 내구성 | `src/utils/plans.ts`, `src/utils/sessionStorage.ts` | `src/AxCopilot/Services/ChatSessionStateService.cs`, `src/AxCopilot/Services/TaskRunService.cs`, `src/AxCopilot/Services/TaskRunStore.cs`, `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Models/ChatModels.cs` | Plan/Run 상태 영속화. 이벤트 로그 표준화 및 replay 안정성 확보. | 앱 재시작/강제종료 후 동일 세션 재개 시 상태/이력 불일치 0건. |
|
||||
| M3 (v0.7.6) 도구 선택/복구 안정화 | `src/commands.ts`, `src/Tool.ts`, `src/query.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopParallelExecution.cs`, `src/AxCopilot/Services/LlmService.ToolUse.cs` | 도구 선택 실패 루프 억제. 실패 유형별 복구 흐름 정형화. | 오타/비활성/별칭 도구 요청이 반복 실패 없이 정상 경로로 수렴하는지 확인. |
|
||||
| M4 (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` | 증거 기반 완료 판정 고정. 내부 벤치마크에서 claw-code 동급 품질 달성. | 코드수정/문서생성/권한거부/복구 혼합 시나리오에서 조기완료 없이 근거 기반 종료 확인. |
|
||||
|
||||
## 4. 측정 지표
|
||||
- 반복 실패 루프 발생률.
|
||||
@@ -71,3 +71,63 @@
|
||||
3. hook 예외/실패는 non-blocking으로 처리하고 권한 흐름은 지속.
|
||||
4. `additionalContext`는 가능한 경로에서 실행 메시지 컨텍스트에 병합.
|
||||
|
||||
|
||||
|
||||
|
||||
## 2026-04-04 추가 계획 (Codex/Claude 추격 로드맵 재정렬)
|
||||
|
||||
업데이트: 2026-04-04 13:24 (KST)
|
||||
|
||||
### 기준 소스
|
||||
- claw-code/src/commands.ts
|
||||
- claw-code/src/utils/permissions/PermissionMode.ts
|
||||
- claw-code/src/components/PromptInput/PromptInput.tsx
|
||||
|
||||
### 현재 AX 격차 요약
|
||||
1. 입력/슬래시/권한 처리 로직이 ChatWindow 단일 파일에 상대적으로 집중되어 변경 파급도가 큼.
|
||||
2. 설정-런타임-UI 동기화는 기능은 많지만 구조적 분리가 부족해 회귀 리스크가 높음.
|
||||
3. Agent loop 품질 게이트는 확보됐으나, UI 상호작용 회귀 시나리오와 결합된 자동 검증이 더 필요함.
|
||||
|
||||
### 연속 실행 목표 (L1~L5)
|
||||
- **L1. 입력 계층 모듈화**
|
||||
- 목표: slash 명령 카탈로그/매칭/선택 상태를 분리해 ChatWindow 결합도 축소
|
||||
- 완료 기준: slash 관련 핵심 로직을 독립 파일로 분리하고 기존 slash 테스트 통과
|
||||
- **L2. 권한 UX/로직 단일 카탈로그화**
|
||||
- 목표: 권한 모드 명칭/설명/색/정렬 순서를 단일 소스에서 제공
|
||||
- 완료 기준: 팝업/상태 배너/슬래시 출력에서 동일 용어·동일 순서 유지
|
||||
- **L3. 설정 동기화 강화**
|
||||
- 목표: Cowork/Code 설정 분기를 실행 코드 경로까지 일치시켜 회귀 감소
|
||||
- 완료 기준: 설정 변경 즉시 반영 시나리오 체크리스트 전건 통과
|
||||
- **L4. Agentic loop + UI 결합 회귀 테스트 보강**
|
||||
- 목표: internal/external, permission deny/recover, mcp reconnect, compact 수동/자동 흐름을 통합 검증
|
||||
- 완료 기준: 릴리즈 게이트용 통합 테스트 세트 추가 및 통과
|
||||
- **L5. Codex/Claude형 UI 마감**
|
||||
- 목표: 좌측 패널/컴포저/권한 팝업 밀도와 탐색 동작을 단순·일관 패턴으로 정리
|
||||
- 완료 기준: UI 체크리스트 주요 항목 100% 충족 + 빌드 경고/오류 0
|
||||
|
||||
### 이번 턴 즉시 반영 (L1 시작)
|
||||
- ChatWindow의 대형 slash 명령 사전을 SlashCommandCatalog로 분리.
|
||||
- ChatWindow는 카탈로그 API(MatchBuiltinCommands, TryGetEntry)를 통해 조회하도록 전환.
|
||||
- 결과: 입력 계층 결합도 감소 + 향후 slash 확장/정리 시 변경 범위 축소.
|
||||
|
||||
## 2026-04-04 실행 프레임 고정 (중기 계획)
|
||||
|
||||
업데이트: 2026-04-04 14:47 (KST)
|
||||
|
||||
### 3축 고정 운영
|
||||
1. 로직 안정화: 권한/운영모드/compact/모델 연결 경로를 테스트 우선으로 보강.
|
||||
2. 기능 동등성: claw-code 기준 주요 명령(/compact, /permissions, /mcp, /chrome)을 실행 시나리오로 검증.
|
||||
3. UX 정렬: 상단/컴포저/팝업 밀도는 로직 안정화 완료 범위 내에서만 단계 반영.
|
||||
|
||||
### 이번 사이클 기준 완료 조건
|
||||
- 빌드: `dotnet build` 경고 0 / 오류 0.
|
||||
- 핵심 회귀: 운영모드, 권한, slash, 모델연결, compact 관련 필터 테스트 통과.
|
||||
- 문서: `README.md`, `docs/DEVELOPMENT.md`에 시간 포함 이력 동기화 후 커밋/푸시.
|
||||
|
||||
### 이번 사이클 실제 보강 항목
|
||||
- `ContextCondenserTests` 추가:
|
||||
- proactive 비활성 시 무변경 확인
|
||||
- 대용량 tool_result 축약 동작 확인
|
||||
- `LlmRuntimeOverrideTests` 보강:
|
||||
- vLLM 암호화 API키 런타임 복호화 검증
|
||||
- 등록모델/전역 TLS 우회 플래그 합성 규칙 검증
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
# 프롬프트 카드 설정 가이드 (개발자 전용)
|
||||
|
||||
## 개요
|
||||
새 대화 화면의 프롬프트 카드는 **개발자가 미리 설정한 시스템 프롬프트**를 통해
|
||||
AI의 역할과 응답 스타일을 정의합니다. 사용자는 카드를 클릭하면 해당 모드가 자동 적용되고,
|
||||
입력란에 안내 문구가 표시되어 내용을 입력한 후 전송합니다.
|
||||
|
||||
## 수정 방법
|
||||
|
||||
### 파일 위치
|
||||
```
|
||||
src/AxCopilot/Views/ChatWindow.xaml
|
||||
```
|
||||
|
||||
### Tag 형식
|
||||
```
|
||||
Tag="시스템 프롬프트 내용||입력란 안내 문구"
|
||||
```
|
||||
|
||||
- `||` 구분자 앞: AI에게 전달되는 시스템 프롬프트 (사용자에게 노출되지 않음)
|
||||
- `||` 구분자 뒤: 사용자 입력란에 표시될 placeholder 안내 문구
|
||||
|
||||
### 예시
|
||||
```xml
|
||||
<Border Background="{DynamicResource ItemBackground}" CornerRadius="12"
|
||||
Padding="14,12" Margin="4" Cursor="Hand"
|
||||
MouseLeftButtonDown="PromptCard_Click"
|
||||
Tag="당신은 시니어 소프트웨어 엔지니어입니다. 주어진 코드를 리뷰하고...||리뷰할 코드를 붙여넣으세요...">
|
||||
<StackPanel>
|
||||
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="16"
|
||||
Foreground="{DynamicResource AccentColor}" Margin="0,0,0,8"/>
|
||||
<TextBlock Text="코드 리뷰" FontSize="12" FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource PrimaryText}"/>
|
||||
<TextBlock Text="코드를 분석하고 개선점을 제안" FontSize="10.5"
|
||||
Foreground="{DynamicResource SecondaryText}" TextWrapping="Wrap"
|
||||
Margin="0,3,0,0"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
```
|
||||
|
||||
### 카드 추가
|
||||
`<UniformGrid x:Name="PromptCards" Columns="3">` 안에 위 형식의 `<Border>` 블록을 추가합니다.
|
||||
카드 수가 3개를 초과하면 `Columns` 값을 조정하세요.
|
||||
|
||||
### 아이콘
|
||||
Segoe MDL2 Assets 폰트 코드를 사용합니다.
|
||||
- 참고: https://learn.microsoft.com/en-us/windows/apps/design/style/segoe-ui-symbol-font
|
||||
|
||||
## 동작 흐름
|
||||
1. 사용자가 카드 클릭
|
||||
2. 새 대화 생성 → `SystemCommand`에 시스템 프롬프트 자동 삽입
|
||||
3. 입력란에 placeholder 안내 문구 표시 (선택 상태)
|
||||
4. 사용자가 내용 입력 후 전송
|
||||
5. AI가 시스템 프롬프트 역할에 맞게 응답
|
||||
290
docs/SEMINAR.md
290
docs/SEMINAR.md
@@ -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? | 臾몄쓽: ?대? 硫붿떊?*
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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>蹂닿퀬??/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? | 臾몄쓽: ?대? 硫붿떊?*
|
||||
|
||||
105
docs/TOOL_PARITY_REPORT.md
Normal file
105
docs/TOOL_PARITY_REPORT.md
Normal file
@@ -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
|
||||
65
docs/UI_UX_CHECKLIST.md
Normal file
65
docs/UI_UX_CHECKLIST.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# AX Agent UI/UX 점검 체크리스트
|
||||
|
||||
업데이트: 2026-04-04 12:22 (KST)
|
||||
|
||||
## 1. 공통 화면 품질
|
||||
- [ ] 창 진입 시 레이아웃 깨짐/문자열 깨짐 없이 렌더링된다.
|
||||
- [ ] 상단 탭(`Chat`, `Cowork`, `Code`) 전환 시 불필요한 새 대화 이력이 자동 생성되지 않는다.
|
||||
- [ ] 좌측 패널은 탭별 목적에 맞는 최소 메뉴만 표시된다.
|
||||
- [ ] 입력창 상단의 모델/프리셋 바가 단일 라인으로 정돈되어 표시된다.
|
||||
- [ ] 메시지 버블(사용자/어시스턴트)의 여백/폰트/액션 배치가 일관된다.
|
||||
|
||||
## 2. 슬래시(`/`) 팔레트
|
||||
- [ ] `/` 입력 시 팝업이 즉시 열리고 첫 가시 항목이 선택된다.
|
||||
- [ ] 마우스 휠 스크롤이 정상 동작한다.
|
||||
- [ ] 방향키(Up/Down), `PageUp/PageDown`, `Home/End`, `Enter`, `Esc`가 모두 동작한다.
|
||||
- [ ] `정리`, `전체 접기/펼치기` 버튼이 정상 동작한다.
|
||||
- [ ] 모든 그룹을 접었을 때 안내 문구가 노출된다.
|
||||
- [ ] 핀/최근 정렬 우선순위가 `핀 > 최근 > 이름`으로 유지된다.
|
||||
|
||||
## 3. 권한 팝업
|
||||
- [ ] 권한 버튼 클릭 시 팝업이 즉시 열리고 키보드 포커스가 진입한다.
|
||||
- [ ] `Tab`으로 항목 이동, `Enter/Space`로 모드 적용, `Esc`로 닫기가 동작한다.
|
||||
- [ ] 섹션 접힘 상태(요약/예외/거부/고급)가 재오픈 시 복원된다.
|
||||
- [ ] 하단 권한 표시와 상단 권한 배너의 표현이 현재 모드와 일치한다.
|
||||
|
||||
## 4. AX Agent 설정
|
||||
- [ ] AX Agent 설정 창이 예외 없이 열린다(트레이/앱 내부 모두).
|
||||
- [ ] 슬래시 핀 최대 개수, 최근 최대 개수 변경 후 즉시 반영된다.
|
||||
- [ ] 모델 서비스/모델 변경이 입력창 모델 라벨과 일치한다.
|
||||
|
||||
## 5. 운영 모드 시나리오
|
||||
|
||||
### External 모드
|
||||
- [ ] AX Agent 설정에서 `operationMode=external` 전환 후 저장한다.
|
||||
- [ ] `? 검색어`를 실행하면 웹 검색이 정상 수행된다.
|
||||
- [ ] 외부 LLM 호출(허용된 서비스)이 정상 수행된다.
|
||||
|
||||
### Internal 모드
|
||||
- [ ] AX Agent 설정에서 `operationMode=internal` 전환 후 저장한다.
|
||||
- [ ] `? 검색어`를 실행하면 외부 검색이 차단되고 안내 메시지가 표시된다.
|
||||
- [ ] 외부 URL 열기/외부 HTTP 도구가 차단된다.
|
||||
- [ ] 사내 허용 경로(온프레미스 LLM/MCP)는 정상 동작한다.
|
||||
|
||||
## 6. 회귀 확인
|
||||
- [ ] `dotnet build src/AxCopilot/AxCopilot.csproj` 경고 0 / 오류 0
|
||||
- [ ] `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj` 전체 통과
|
||||
|
||||
## 7. 최근 점검 결과
|
||||
|
||||
점검 시각: 2026-04-04 12:22 (KST)
|
||||
|
||||
- [x] 권한 모드 표면 명칭/순서 통일 적용 확인
|
||||
- [x] `/` 팔레트 휠/방향키/PageUp/PageDown/Home/End 동작 경로 반영 확인
|
||||
- [x] AX Agent 설정 권한 순환 순서와 `/sandbox-toggle` 순환 순서 일치 확인
|
||||
- [x] 운영 모드 회귀 필터 테스트 18건 통과 (`OperationModePolicy/Readiness/LlmOperationMode`)
|
||||
- [x] 전체 테스트 436건 통과
|
||||
|
||||
점검 시각: 2026-04-04 12:41 (KST)
|
||||
|
||||
- [x] 권한 버튼 툴팁에 운영 모드 + 기본 권한 + 예외 개수 표시 확인
|
||||
- [x] 권한 상태 텍스트(`/permissions`, `/allowed-tools`)를 축약형으로 정리 확인
|
||||
- [x] 모델 라벨 말줄임 처리(`MaxWidth`, `CharacterEllipsis`) 적용 확인
|
||||
- [x] 설정창 외부 진입(`OpenAgentSettingsFromExternal`) Dispatcher 경유 오픈 경로 확인
|
||||
- [x] 운영 모드 필터 테스트 18건 재통과
|
||||
- [x] 전체 테스트 436건 재통과
|
||||
@@ -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 — 사내 전용 프로그램*
|
||||
@@ -3,11 +3,97 @@
|
||||
## Scope
|
||||
- Align AX Copilot with claw-code quality for loop reliability, permission/hook behavior, and session durability.
|
||||
|
||||
## Update
|
||||
- Updated: 2026-04-05 15:34 (KST)
|
||||
- Rebased the AX Agent improvement plan on actual `claw-code` runtime files instead of earlier AX snapshots. The reference spine is now `src/bootstrap/state.ts -> src/bridge/initReplBridge.ts -> src/bridge/sessionRunner.ts -> src/screens/REPL.tsx -> src/components/Messages.tsx -> src/components/StatusLine.tsx`.
|
||||
- AX Agent work should follow that same quality order: state first, execution second, render last. UI-only fixes that bypass state/execution should be treated as temporary.
|
||||
- Updated: 2026-04-05 16:55 (KST)
|
||||
- Current estimated parity vs `claw-code`: core execution engine `82%`, main chat UI `68%`, Cowork/Code status UX `63%`, internal settings linkage `88%`, overall AX Agent `74%`.
|
||||
- Engine-affecting settings should be handled conservatively during parity work. If a setting changes the main execution route, approval flow, or recovery behavior without representing a stable real-world user choice, it should be moved to developer-only UI or removed from user-facing surfaces.
|
||||
|
||||
## Preserved History (Summary)
|
||||
- Core loop guards and post-tool verification gates are already partially implemented.
|
||||
- Plan Mode, parallel tool execution, and unknown-tool recovery are in place.
|
||||
- Session restore hardening is ongoing.
|
||||
|
||||
## Reference Map
|
||||
|
||||
| claw-code reference | AX apply target | completion criteria | quality criteria |
|
||||
|---|---|---|---|
|
||||
| `src/bootstrap/state.ts` | `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatStorageService.cs` | one canonical runtime/session state for current turn, queue, retry, execution events, and persisted snapshot | reopen/retry/queue flows do not create duplicate or blank assistant messages |
|
||||
| `src/bridge/initReplBridge.ts` | `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/LlmService.cs` | send/regenerate/retry/queued follow-up/slash all enter through one prepared-execution path | same input under same settings takes same execution route regardless of entry point |
|
||||
| `src/bridge/sessionRunner.ts` | `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs` | tool start/result/error/progress normalized once inside loop layer | Cowork/Code no longer flash repeated status strings or overshare debug payloads |
|
||||
| `src/bridge/bridgeMessaging.ts` | `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AgentLoopService.cs` | inbound execution events separated from display-only events before UI render | execution event replay does not duplicate visible timeline banners |
|
||||
| `src/screens/REPL.tsx` | `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs` | screen state transitions, queue flow, retry flow, and composer state use shared runtime helpers | window resize, queue chaining, and retry feel stable instead of UI-patched |
|
||||
| `src/components/Messages.tsx` | `src/AxCopilot/Views/ChatWindow.xaml.cs` | timeline derives from normalized conversation/session state only | no token-only completions, blank cards, or direct injected duplicates |
|
||||
| `src/components/StatusLine.tsx` | `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs` | status strip computed from debounced runtime state, not multiple imperative refresh calls | metadata stays lightweight and does not overpower message timeline |
|
||||
|
||||
## AX Agent Improvement Phases
|
||||
|
||||
### Phase A. Runtime State Canonicalization
|
||||
- Reference: `src/bootstrap/state.ts`
|
||||
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatStorageService.cs`
|
||||
- Completion criteria:
|
||||
- `Chat`, `Cowork`, `Code` all update one shared runtime/session state model.
|
||||
- queue, retry, post-compaction, and execution-event state can be restored after reopen.
|
||||
- Quality criteria:
|
||||
- reopening a conversation reproduces the same visible timeline without extra assistant cards.
|
||||
- queue and execution badges remain in sync with the stored conversation.
|
||||
|
||||
### Phase B. Prepared Execution Unification
|
||||
- Reference: `src/bridge/initReplBridge.ts`
|
||||
- AX apply location: `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/LlmService.cs`
|
||||
- Completion criteria:
|
||||
- prompt stack assembly, execution mode choice, and final assistant commit are engine-owned.
|
||||
- send/regenerate/retry/queued follow-up/slash flows all call the same preparation API.
|
||||
- Quality criteria:
|
||||
- behavior is deterministic per tab/settings combination.
|
||||
- UI stops building different prompt stacks for the same conversation state.
|
||||
|
||||
### Phase C. AgentLoop Event Normalization
|
||||
- Reference: `src/bridge/sessionRunner.ts`, `src/bridge/bridgeMessaging.ts`
|
||||
- AX apply location: `src/AxCopilot/Services/Agent/AgentLoopService.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.cs`, `src/AxCopilot/Services/Agent/AgentLoopTransitions.Execution.cs`
|
||||
- Completion criteria:
|
||||
- loop events are normalized into bounded activity/event records before UI consumption.
|
||||
- permission requests, failure states, retries, and completion states use a stable event shape.
|
||||
- Quality criteria:
|
||||
- Cowork/Code no longer flash rapidly during long-running tool sequences.
|
||||
- file path/debug detail remains collapsed by default.
|
||||
|
||||
### Phase D. Timeline Render Parity
|
||||
- Reference: `src/screens/REPL.tsx`, `src/components/Messages.tsx`
|
||||
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- Completion criteria:
|
||||
- assistant/user messages, execution logs, compact boundaries, and queue summaries are rendered from one derived timeline model.
|
||||
- direct imperative bubble injection is removed from normal send/regenerate/retry flows.
|
||||
- Quality criteria:
|
||||
- no blank assistant cards.
|
||||
- no token-only completion without visible content.
|
||||
- no duplicate event banners after re-render.
|
||||
|
||||
### Phase E. Composer and Status Strip Simplification
|
||||
- Reference: `src/screens/REPL.tsx`, `src/components/StatusLine.tsx`
|
||||
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml`, `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- Completion criteria:
|
||||
- composer height grows only on explicit line breaks.
|
||||
- status strip, queue summary, and runtime activity all use debounced runtime updates.
|
||||
- Chat/Cowork/Code share one responsive width calculation policy.
|
||||
- Quality criteria:
|
||||
- resizing feels natural.
|
||||
- composer does not keep growing after send.
|
||||
- metadata remains subordinate to the message timeline.
|
||||
|
||||
### Phase F. Recovery, Resume, and Verification
|
||||
- Reference: `src/bootstrap/state.ts`, `src/bridge/sessionRunner.ts`, `src/screens/REPL.tsx`
|
||||
- AX apply location: `src/AxCopilot/Views/ChatWindow.xaml.cs`, `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`, `src/AxCopilot/Services/ChatStorageService.cs`
|
||||
- Completion criteria:
|
||||
- reopen after interruption keeps queue, runtime summary, and latest visible assistant state consistent.
|
||||
- retry-last and regenerate do not depend on mutating `InputBox.Text`.
|
||||
- all three tabs pass reopen/retry/manual compact/manual stop/manual resume scenarios.
|
||||
- Quality criteria:
|
||||
- stored conversation and rendered conversation stay identical after restore.
|
||||
- final reopened state matches the last completed runtime state.
|
||||
|
||||
## Execution Tracks
|
||||
1. Hook contract parity
|
||||
- Structured hook output support (`updatedInput`, `updatedPermissions`, `additionalContext`).
|
||||
@@ -28,3 +114,308 @@
|
||||
- Internal parity scenarios pass target threshold.
|
||||
- Resume/replay failures: zero.
|
||||
- `dotnet build` warnings/errors: zero.
|
||||
|
||||
## Validation Matrix
|
||||
- Build: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\`
|
||||
- Manual scenario 1: Chat send -> answer visible -> retry -> regenerate -> reopen conversation
|
||||
- Manual scenario 2: Cowork tool run -> progress summary -> completion -> queue next request -> reopen
|
||||
- Manual scenario 3: Code task with execution log noise -> completion -> compact -> next turn -> reopen
|
||||
- Manual scenario 4: AX Agent internal settings change -> immediate runtime reflection without layout regression
|
||||
|
||||
## Canonical Prompt Set
|
||||
- Updated: 2026-04-05 22:04 (KST)
|
||||
- The following prompt set should be used for AX vs `claw-code` parity checks. The goal is not byte-identical output, but equivalent execution route, approval behavior, and artifact/result quality.
|
||||
- Operational checklist copy: `docs/AX_AGENT_REGRESSION_PROMPTS.md`
|
||||
|
||||
1. Chat basic answer
|
||||
- Prompt: `회의 일정 조정 메일을 정중한 한국어로 써줘`
|
||||
- Apply to: `Chat`
|
||||
- Verify: normal reply render, retry/regenerate stability, reopen durability
|
||||
|
||||
2. Chat long-form explanation
|
||||
- Prompt: `RAG와 fine-tuning 차이를 실무 관점으로 7가지로 설명해줘`
|
||||
- Apply to: `Chat`
|
||||
- Verify: long response rendering, compaction follow-up continuity
|
||||
|
||||
3. Cowork document task
|
||||
- Prompt: `신규 ERP 도입 제안서 초안을 작성해줘. 목적, 범위, 기대효과, 추진일정 포함`
|
||||
- Apply to: `Cowork`
|
||||
- Verify: topic/task preset routing, plan-first execution, actual document-oriented output path
|
||||
|
||||
4. Cowork data task
|
||||
- Prompt: `매출 CSV를 분석해서 월별 추세와 이상치를 요약해줘`
|
||||
- Apply to: `Cowork`
|
||||
- Verify: data-analysis tool choice, reduced runtime noise, final summary quality
|
||||
|
||||
5. Code bug-fix task
|
||||
- Prompt: `현재 프로젝트에서 설정 저장 버그 원인 찾고 수정해줘`
|
||||
- Apply to: `Code`
|
||||
- Verify: read/search/edit path, diff persistence, reopen consistency
|
||||
|
||||
6. Code build/test task
|
||||
- Prompt: `빌드 오류를 재현하고 수정한 뒤 다시 빌드해줘`
|
||||
- Apply to: `Code`
|
||||
- Verify: build/test loop, failure retry, final completion message
|
||||
|
||||
7. Queued follow-up
|
||||
- Prompt sequence:
|
||||
- `이 창 레이아웃 문제 원인 찾아줘`
|
||||
- `끝나면 README도 같이 갱신해줘`
|
||||
- Apply to: `Cowork`, `Code`
|
||||
- Verify: queue chaining, next-turn pickup without UI mutation
|
||||
|
||||
8. Post-compaction continuity
|
||||
- Prompt: `지금까지 논의한 내용을 5줄로 이어서 정리하고 다음 작업 제안해줘`
|
||||
- Apply to: `Chat`, `Cowork`, `Code`
|
||||
- Verify: compact-after-next-turn continuity, no token-only completion
|
||||
|
||||
9. Permission approval
|
||||
- Prompt: `이 파일을 수정해서 저장해줘`
|
||||
- Apply to: `Code`
|
||||
- Verify: permission request, approve/reject rendering, final transcript consistency
|
||||
|
||||
10. Slash / skill entry
|
||||
- Prompt: `/bug-hunt src 폴더 잠재 버그 찾아줘`
|
||||
- Apply to: `Code`
|
||||
- Verify: slash entry uses the same prepared-execution route as normal send
|
||||
|
||||
## Tool / Skill Delta Snapshot
|
||||
- Updated: 2026-04-05 22:04 (KST)
|
||||
- AX tool registry count is larger than `claw-code`, but the shape is different.
|
||||
- AX reference: `src/AxCopilot/Services/Agent/ToolRegistry.cs`
|
||||
- `claw-code` reference: `src/tools/*`, `src/skills/bundledSkills.ts`
|
||||
|
||||
### AX stronger areas
|
||||
- Document/office generation and conversion (`ExcelSkill`, `DocxSkill`, `PptxSkill`, `DocumentPlannerTool`, `DocumentAssemblerTool`)
|
||||
- Data/business utilities (`DataPivotTool`, `SqlTool`, `FormatConvertTool`, `TextSummarizeTool`)
|
||||
- WPF-integrated enterprise UX and Korean workflow presets
|
||||
|
||||
### claw-code stronger areas
|
||||
- Transcript-native tool use / rejection / approval message taxonomy
|
||||
- Plan approval request/response rendering in the message stream
|
||||
- Permission and tool-result message consistency
|
||||
- Bundled skill registry and skill message integration
|
||||
|
||||
### Remaining parity target
|
||||
- Keep AX's richer business/document tool set
|
||||
- Bring transcript rendering and approval/status UX closer to `claw-code`
|
||||
|
||||
## Transcript-First Approval / Ask UX
|
||||
- Updated: 2026-04-05 18:58 (KST)
|
||||
- `plan approval` and `user ask` should both resolve inside the transcript first.
|
||||
- Secondary windows are allowed only as detail surfaces, not as the primary decision flow.
|
||||
- AX implementation status:
|
||||
- `plan approval`: transcript-first, detail view via `PlanViewerWindow`
|
||||
- `user ask`: transcript-first inline question card with choices / direct input / submit
|
||||
|
||||
## Tool / Skill UX Parity Follow-up
|
||||
- Updated: 2026-04-05 19:04 (KST)
|
||||
- Default transcript should prefer role-oriented badges and readable labels over raw internal tool names.
|
||||
- AX implementation status:
|
||||
- tool event badges: simplified to role-first labels
|
||||
- item naming: normalized into readable Korean labels or `/skill-name` style
|
||||
- observability panels: permission/background diagnostics reduced outside debug mode
|
||||
- Remaining quality target:
|
||||
- move more tool-result and permission-result presentation into smaller message-type-specific helpers, closer to `claw-code` component separation
|
||||
|
||||
## Current Snapshot
|
||||
- Updated: 2026-04-05 19:42 (KST)
|
||||
- Estimated parity:
|
||||
- Core engine: `89%`
|
||||
- Main transcript UI: `96%`
|
||||
- Cowork/Code runtime UX: `92%`
|
||||
- Internal settings linkage: `88%`
|
||||
- Overall AX Agent parity: `93%`
|
||||
|
||||
## Remaining Gaps
|
||||
1. Prompt lifecycle parity
|
||||
- `claw-code` reference: `src/utils/handlePromptSubmit.ts`, `src/utils/processUserInput/processTextPrompt.ts`
|
||||
- AX gap:
|
||||
- `send / retry / regenerate` are mostly unified, but `slash / compact 후 다음 턴 / 일부 queue 후처리`는 아직 `ChatWindow.xaml.cs`에서 UI 상태를 먼저 만지는 구간이 남아 있습니다.
|
||||
- 목표는 모든 입력 진입점이 `AxAgentExecutionEngine`의 동일한 prepare/execute/finalize 축만 타게 만드는 것입니다.
|
||||
|
||||
2. Plan / approval rendering parity
|
||||
- `claw-code` reference: `src/components/messages/PlanApprovalMessage.tsx`
|
||||
- AX gap:
|
||||
- 기본 transcript에서는 compact pill 위주로 줄였지만, 승인/계획 결과 표현이 아직 `Popup/Window + WPF 카드`와 섞여 있습니다.
|
||||
|
||||
## Quality Uplift Plan
|
||||
- Updated: 2026-04-06 00:22 (KST)
|
||||
- Goal: move AX Agent from parity-oriented stability into `claw-code`-grade maintainability and transcript quality, without copying implementation expression.
|
||||
|
||||
### Track 1. Transcript Renderer Decomposition
|
||||
- `claw-code` references:
|
||||
- `src/components/Messages.tsx`
|
||||
- `src/components/MessageRow.tsx`
|
||||
- `src/components/messages/AssistantToolUseMessage.tsx`
|
||||
- `src/components/messages/PlanApprovalMessage.tsx`
|
||||
- AX apply targets:
|
||||
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- new partial/helper files under `src/AxCopilot/Views/`
|
||||
- Completion criteria:
|
||||
- `plan / permission / ask / tool-result / task-summary` rendering no longer lives as one large block inside `ChatWindow.xaml.cs`
|
||||
- each transcript concern has a dedicated helper/partial/class boundary
|
||||
- Quality criteria:
|
||||
- render changes for one message type do not regress unrelated timeline behavior
|
||||
- transcript behavior remains stable after reopen / retry / regenerate
|
||||
|
||||
### Track 2. Permission Presentation Catalog
|
||||
- `claw-code` references:
|
||||
- `src/components/permissions/PermissionRequest.tsx`
|
||||
- `src/components/permissions/PermissionDialog.tsx`
|
||||
- tool-specific permission request components under `src/components/permissions/*`
|
||||
- AX apply targets:
|
||||
- `src/AxCopilot/Services/Agent/PermissionModeCatalog.cs`
|
||||
- new `src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- Completion criteria:
|
||||
- permission request title, subtitle, icon, severity, and choice set are resolved by tool/request type
|
||||
- file edit / shell / skill / ask-user / web-like permission requests use distinct presentation metadata
|
||||
- Quality criteria:
|
||||
- permission prompts feel explicit and predictable
|
||||
- user can distinguish request type without reading raw tool names or payload
|
||||
|
||||
### Track 3. Tool Result Message Taxonomy
|
||||
- `claw-code` references:
|
||||
- `src/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx`
|
||||
- `src/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx`
|
||||
- `src/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx`
|
||||
- `src/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx`
|
||||
- AX apply targets:
|
||||
- new `src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.TranscriptPolicy.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- Completion criteria:
|
||||
- transcript display rules differ for `success / error / reject / cancel`
|
||||
- tool-result badges and summaries are resolved from presentation metadata instead of inline ad-hoc branches
|
||||
- Quality criteria:
|
||||
- result cards read as stable UX language, not raw execution logs
|
||||
- failed and rejected tool runs are visually distinct without increasing noise
|
||||
|
||||
### Track 4. Plan Approval Transcript-Only Flow
|
||||
- `claw-code` references:
|
||||
- `src/components/messages/PlanApprovalMessage.tsx`
|
||||
- `src/components/messages/UserPlanMessage.tsx`
|
||||
- AX apply targets:
|
||||
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- `src/AxCopilot/Views/PlanViewerWindow.cs`
|
||||
- Completion criteria:
|
||||
- default approval / reject / revise flow completes inline in transcript
|
||||
- `PlanViewerWindow` is detail-only and never required for primary approval flow
|
||||
- Quality criteria:
|
||||
- planning feels like part of the conversation, not a modal interruption
|
||||
- approval history is replayable from persisted conversation state
|
||||
|
||||
### Track 5. Runtime Summary Layer
|
||||
- `claw-code` references:
|
||||
- `src/components/StatusLine.tsx`
|
||||
- `src/components/PromptInput/PromptInputFooter.tsx`
|
||||
- `src/bootstrap/state.ts`
|
||||
- AX apply targets:
|
||||
- `src/AxCopilot/Services/AppStateService.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- Completion criteria:
|
||||
- one runtime/status summary model feeds the status line, queue summary, runtime badge, and completion hint
|
||||
- status rendering no longer depends on scattered imperative refresh branches
|
||||
- Quality criteria:
|
||||
- no contradictory or stale runtime badges
|
||||
- long-running Cowork/Code sessions stay visually calm
|
||||
|
||||
### Track 6. Regression Prompt Ritual
|
||||
- `claw-code` references:
|
||||
- runtime validation scenarios implied by `sessionRunner`, `Messages`, `StatusLine`, and permission components
|
||||
- AX apply targets:
|
||||
- `docs/AX_AGENT_REGRESSION_PROMPTS.md`
|
||||
- `docs/claw-code-parity-plan.md`
|
||||
- developer workflow / release checklist
|
||||
- Completion criteria:
|
||||
- Chat / Cowork / Code prompt set is treated as mandatory regression for runtime-affecting changes
|
||||
- each prompt is mapped to a failure class (`blank reply`, `duplicate banner`, `bad approval flow`, `queue drift`, `restore drift`)
|
||||
- Quality criteria:
|
||||
- parity claims are based on repeatable checks instead of visual spot-checks
|
||||
- regressions are easier to catch before release
|
||||
|
||||
## Recommended Execution Order
|
||||
1. Transcript renderer decomposition
|
||||
2. Permission presentation catalog
|
||||
3. Tool result taxonomy
|
||||
4. Plan approval transcript-only flow
|
||||
5. Runtime summary layer
|
||||
6. Regression prompt ritual hardening
|
||||
|
||||
## Settings and Logic Review
|
||||
- Updated: 2026-04-06 00:22 (KST)
|
||||
- Candidate to move to developer-only:
|
||||
- `FreeTierDelaySeconds`
|
||||
- `MaxAgentIterations`
|
||||
- `MaxRetryOnError`
|
||||
- Keep as runtime-critical user settings:
|
||||
- `OperationMode`
|
||||
- `MaxContextTokens`
|
||||
- `ContextCompactTriggerPercent`
|
||||
- `EnableProactiveContextCompact`
|
||||
- `EnableCoworkVerification`
|
||||
- `EnableCodeVerification`
|
||||
- code tool exposure toggles
|
||||
- Rule:
|
||||
- if a setting changes the main execution route or recovery semantics without representing a stable real-world user choice, move it out of default user-facing surfaces
|
||||
- 목표는 “본문 우선 + 필요 시 열기” 기준으로 더 단일한 timeline 언어로 수렴시키는 것입니다.
|
||||
|
||||
3. Status line / composer parity
|
||||
- `claw-code` reference: `src/components/StatusLine.tsx`, `src/components/PromptInput/PromptInput.tsx`
|
||||
- AX gap:
|
||||
- 하단 상태바와 composer 옵션은 많이 줄었지만, 상태 메타가 여전히 분산돼 있고 일부 토글/빠른 설정이 별도 행으로 남아 있습니다.
|
||||
- 목표는 transcript 하단의 작업 바 한 축으로 더 압축하는 것입니다.
|
||||
|
||||
4. Runtime event density parity
|
||||
- `claw-code` reference: `src/bridge/sessionRunner.ts`, `src/components/StatusNotices.tsx`
|
||||
- AX gap:
|
||||
- non-debug 기본 로그는 줄었지만, 일부 Cowork/Code 이벤트는 여전히 timeline을 자주 흔듭니다.
|
||||
- 목표는 `permission / tool / error / complete / paused / resumed`를 더 안정된 event shape로 정규화하는 것입니다.
|
||||
|
||||
## Settings Review
|
||||
- Remove candidate:
|
||||
- `PlanMode`
|
||||
- current state: 사용자 노출 UI와 저장 경로는 `off` 고정으로 정리됐지만 `AppSettings`, `SettingsViewModel`, `AppStateService` 타입 잔재가 남아 있음
|
||||
- rationale: 현재 정책이 `off` 고정이라 사용자 선택값이 엔진에 의미 있게 기여하지 않음
|
||||
- `Code.EnablePlanModeTools`
|
||||
- current state: UI/저장 경로와 기본값은 `false` 고정으로 정리됐지만 모델/설정 타입에 호환용 잔재가 남아 있음
|
||||
- rationale: 현재 엔진 정책에서 실제 실행 경로를 더 이상 바꾸지 않음
|
||||
- Move to developer-only candidate:
|
||||
- `FreeTierDelaySeconds`
|
||||
- rationale: 일반 사용자가 조정할 이유가 적고 엔진 지연 정책에 직접 영향
|
||||
- `MaxAgentIterations`
|
||||
- `MaxRetryOnError`
|
||||
- rationale: 핵심 실행 루프 품질에 직접 영향하는 런타임 튜닝값
|
||||
- Keep as runtime-critical:
|
||||
- `OperationMode`
|
||||
- `MaxContextTokens`
|
||||
- `ContextCompactTriggerPercent`
|
||||
- `EnableProactiveContextCompact`
|
||||
- `EnableCoworkVerification`
|
||||
- `EnableCodeVerification`
|
||||
- `Code.EnableWorktreeTools / EnableTeamTools / EnableCronTools`
|
||||
|
||||
## Known UX / Performance Risks
|
||||
- Topic preset hover flicker was caused by duplicate hover systems:
|
||||
- custom hover label
|
||||
- default WPF `ToolTip`
|
||||
- AX fix:
|
||||
- remove default `ToolTip` from topic cards and keep a single hover label path
|
||||
- Remaining runtime performance review targets:
|
||||
- `RefreshContextUsageVisual()` frequency
|
||||
- `BuildTopicButtons()` rebuild frequency
|
||||
- `OnAgentEvent` timeline churn during long Cowork/Code runs
|
||||
- compact queue summary still needs one more pass to fully match `claw-code` footer minimalism
|
||||
|
||||
## Progress Notes
|
||||
- 업데이트: 2026-04-06 00:58 (KST)
|
||||
- transcript renderer 분리 1차 완료
|
||||
- AX 적용: [ChatWindow.InlineInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.InlineInteractions.cs), [ChatWindow.TaskSummary.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TaskSummary.cs)
|
||||
- 완료 조건: `plan / ask / task-summary` 렌더 helper가 메인 `ChatWindow.xaml.cs` 밖으로 이동
|
||||
- permission / tool-result presentation catalog 도입
|
||||
- AX 적용: [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs), [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)
|
||||
- 완료 조건: `AddAgentEventBanner(...)`가 권한/도구 결과 badge 메타를 inline switch가 아니라 catalog에서 해석
|
||||
- runtime summary 전용 계층 1차 반영
|
||||
- AX 적용: [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs)
|
||||
- 완료 조건: 상태선 UI가 `OperationalStatusPresentationState`를 소비해 strip/runtime badge visibility를 계산
|
||||
|
||||
@@ -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!");
|
||||
});
|
||||
|
||||
128
etc/chat-ui-backup/2026-04-05-1215/AxAgentExecutionEngine.cs
Normal file
128
etc/chat-ui-backup/2026-04-05-1215/AxAgentExecutionEngine.cs
Normal file
@@ -0,0 +1,128 @@
|
||||
using AxCopilot.Models;
|
||||
using AxCopilot.Services;
|
||||
|
||||
namespace AxCopilot.Services.Agent;
|
||||
|
||||
/// <summary>
|
||||
/// AX Agent execution-prep engine.
|
||||
/// Inspired by the `claw-code` split between input preparation and session execution,
|
||||
/// so the UI layer stops owning message assembly and final assistant commit logic.
|
||||
/// </summary>
|
||||
public sealed class AxAgentExecutionEngine
|
||||
{
|
||||
public sealed record PreparedTurn(List<ChatMessage> Messages);
|
||||
public sealed record ExecutionMode(bool UseAgentLoop, bool UseStreamingTransport, string? TaskSystemPrompt);
|
||||
|
||||
public IReadOnlyList<string> BuildPromptStack(
|
||||
string? conversationSystem,
|
||||
string? slashSystem,
|
||||
string? taskSystem = null)
|
||||
{
|
||||
var prompts = new List<string>();
|
||||
if (!string.IsNullOrWhiteSpace(conversationSystem))
|
||||
prompts.Add(conversationSystem.Trim());
|
||||
if (!string.IsNullOrWhiteSpace(slashSystem))
|
||||
prompts.Add(slashSystem.Trim());
|
||||
if (!string.IsNullOrWhiteSpace(taskSystem))
|
||||
prompts.Add(taskSystem.Trim());
|
||||
return prompts;
|
||||
}
|
||||
|
||||
public ExecutionMode ResolveExecutionMode(
|
||||
string runTab,
|
||||
bool streamingEnabled,
|
||||
string resolvedService,
|
||||
string? coworkSystemPrompt,
|
||||
string? codeSystemPrompt)
|
||||
{
|
||||
if (string.Equals(runTab, "Cowork", StringComparison.OrdinalIgnoreCase))
|
||||
return new ExecutionMode(true, false, coworkSystemPrompt);
|
||||
|
||||
if (string.Equals(runTab, "Code", StringComparison.OrdinalIgnoreCase))
|
||||
return new ExecutionMode(true, false, codeSystemPrompt);
|
||||
|
||||
return new ExecutionMode(false, false, null);
|
||||
}
|
||||
|
||||
public PreparedTurn PrepareTurn(
|
||||
ChatConversation conversation,
|
||||
IEnumerable<string?> systemPrompts,
|
||||
string? fileContext = null,
|
||||
IReadOnlyList<ImageAttachment>? images = null)
|
||||
{
|
||||
var outbound = conversation.Messages
|
||||
.Select(CloneMessage)
|
||||
.ToList();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(fileContext))
|
||||
{
|
||||
var lastUserIndex = outbound.FindLastIndex(m => string.Equals(m.Role, "user", StringComparison.OrdinalIgnoreCase));
|
||||
if (lastUserIndex >= 0)
|
||||
outbound[lastUserIndex].Content = (outbound[lastUserIndex].Content ?? string.Empty) + fileContext;
|
||||
}
|
||||
|
||||
if (images is { Count: > 0 })
|
||||
{
|
||||
var lastUserIndex = outbound.FindLastIndex(m => string.Equals(m.Role, "user", StringComparison.OrdinalIgnoreCase));
|
||||
if (lastUserIndex >= 0)
|
||||
outbound[lastUserIndex].Images = images.Select(CloneImage).ToList();
|
||||
}
|
||||
|
||||
var promptList = systemPrompts
|
||||
.Where(prompt => !string.IsNullOrWhiteSpace(prompt))
|
||||
.Select(prompt => prompt!.Trim())
|
||||
.ToList();
|
||||
|
||||
for (var i = promptList.Count - 1; i >= 0; i--)
|
||||
outbound.Insert(0, new ChatMessage { Role = "system", Content = promptList[i] });
|
||||
|
||||
return new PreparedTurn(outbound);
|
||||
}
|
||||
|
||||
public ChatMessage CommitAssistantMessage(
|
||||
ChatSessionStateService? session,
|
||||
ChatConversation conversation,
|
||||
string tab,
|
||||
string content,
|
||||
ChatStorageService? storage = null)
|
||||
{
|
||||
var assistant = new ChatMessage
|
||||
{
|
||||
Role = "assistant",
|
||||
Content = content,
|
||||
};
|
||||
|
||||
if (session != null)
|
||||
{
|
||||
session.AppendMessage(tab, assistant, storage);
|
||||
return assistant;
|
||||
}
|
||||
|
||||
conversation.Messages.Add(assistant);
|
||||
conversation.UpdatedAt = DateTime.Now;
|
||||
return assistant;
|
||||
}
|
||||
|
||||
private static ChatMessage CloneMessage(ChatMessage source)
|
||||
{
|
||||
return new ChatMessage
|
||||
{
|
||||
Role = source.Role,
|
||||
Content = source.Content,
|
||||
Timestamp = source.Timestamp,
|
||||
MetaRunId = source.MetaRunId,
|
||||
AttachedFiles = source.AttachedFiles?.ToList(),
|
||||
Images = source.Images?.Select(CloneImage).ToList(),
|
||||
};
|
||||
}
|
||||
|
||||
private static ImageAttachment CloneImage(ImageAttachment source)
|
||||
{
|
||||
return new ImageAttachment
|
||||
{
|
||||
Base64 = source.Base64,
|
||||
MimeType = source.MimeType,
|
||||
FileName = source.FileName,
|
||||
};
|
||||
}
|
||||
}
|
||||
5175
etc/chat-ui-backup/2026-04-05-1215/ChatWindow.xaml
Normal file
5175
etc/chat-ui-backup/2026-04-05-1215/ChatWindow.xaml
Normal file
File diff suppressed because it is too large
Load Diff
21806
etc/chat-ui-backup/2026-04-05-1215/ChatWindow.xaml.cs
Normal file
21806
etc/chat-ui-backup/2026-04-05-1215/ChatWindow.xaml.cs
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 449 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
63
scripts/generate-parity-report.ps1
Normal file
63
scripts/generate-parity-report.ps1
Normal file
@@ -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"
|
||||
@@ -7,7 +7,7 @@
|
||||
<Nullable>annotations</Nullable>
|
||||
<AssemblyName>AxCopilot_Setup</AssemblyName>
|
||||
<ApplicationIcon>..\AxCopilot\Assets\icon.ico</ApplicationIcon>
|
||||
<Version>1.7.2</Version>
|
||||
<Version>0.7.3</Version>
|
||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -23,3 +23,4 @@
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user