Compare commits
213 Commits
23f42502d0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 421a2c97f9 | |||
| 9d13456695 | |||
| d283cf26ba | |||
| 5401fcf7bb | |||
| 7c5396e239 | |||
| 817fc94f41 | |||
| 3feb1f0be4 | |||
| c4d050f2bf | |||
| a46b4bf9c0 | |||
| ec0ed7fb1c | |||
| 571d4bfaca | |||
| fdf95aa6ec | |||
| 7fd4d1ae5a | |||
| e747032501 | |||
| f11b8b74b7 | |||
| b4d69f5db3 | |||
| 3c3faab528 | |||
| 9aa99cdfe6 | |||
| 3ac8a7155f | |||
| 3e44f1fc4d | |||
| fa431f1666 | |||
| fda5c6bace | |||
| b3b5f8a79d | |||
| 8faa26b134 | |||
| 1b4566d192 | |||
| d0d66c1d52 | |||
| 9464dd0234 | |||
| d5c1266d3e | |||
| 3924bac9f9 | |||
| 9f5a9d315c | |||
| 4c1513a5da | |||
| ccaa24745e | |||
| 1ce6ccb030 | |||
| 2b21e8cdfb | |||
| 35ec073eb9 | |||
| 68524c1c94 | |||
| b4a506de96 | |||
| 82b42b3ba3 | |||
| 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 | |||
| cc1f1c4e6c | |||
| 52e9e34ade | |||
| 1256fdc43f | |||
| 9e37aad163 | |||
| 0176754fa0 | |||
| e7eec1035f | |||
| abfa52a9fe | |||
| 72f307631d | |||
| b30c5f124e |
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`를 작업 이력의 기준 문서로 보고, 기능/버그/검증 결과를 같은 세션 안에서 즉시 반영
|
||||
- **문서 선반영 원칙**: 구현을 진행하며 방향이나 범위가 확정되면 커밋 전 대기하지 말고 먼저 문서에 남겨 이력 누락을 방지
|
||||
- **이력 시점 기록 의무**: 문서 이력 항목을 추가하거나 수정할 때는 해당 항목 근처에 업데이트 일시를 함께 남겨 변경 시점을 추적 가능하게 유지
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -34,9 +34,19 @@
|
||||
3. 패리티 수치(테스트 통과 수/게이트 상태)를 로드맵 문서 간 동일 문구로 유지.
|
||||
|
||||
## 6. 최신 검증 스냅샷 (2026-04-03)
|
||||
- `dotnet test --filter "Suite=ParityBenchmark"`: 12/12 통과.
|
||||
- `dotnet test --filter "Suite=ReplayStability"`: 12/12 통과.
|
||||
- `dotnet test`: 372/372 통과.
|
||||
- `dotnet test --filter "Suite=ParityBenchmark"`: 13/13 통과.
|
||||
- `dotnet test --filter "Suite=ReplayStability"`: 14/14 통과.
|
||||
- `dotnet test`: 379/379 통과.
|
||||
|
||||
## 7. 명령/도구 보강 스냅샷 (2026-04-04)
|
||||
- 슬래시 명령 고도화: `/chrome`, `/mcp`, `/verify`, `/commit`, `/settings`, `/permissions` 하위 동작 정리.
|
||||
- `/mcp` 상태 라벨 표준화: `Connected`, `NeedsAuth`, `Configured`, `Disconnected`, `Disabled`.
|
||||
- `/chrome` 런타임 재시도: 초기 probe 실패 시 `/mcp reconnect all` 자동 수행 후 1회 재평가.
|
||||
- Git 정책 정렬: `git_tool`의 `commit` 비활성 문구 제거(로컬 커밋 경로와 정책 일치).
|
||||
- `/commit` 부분 커밋 지원: `files:path1,path2 :: 메시지` 형식으로 선택 파일만 stage+commit 가능.
|
||||
- 테스트 보강:
|
||||
- `ChatWindowSlashPolicyTests`: 슬래시 파서/검증 프롬프트/MCP 상태 라벨 단위 검증 추가.
|
||||
- `AgentParityToolsTests`: `git_tool commit` 레거시 비활성 메시지 회귀 방지 테스트 추가.
|
||||
|
||||
## 7. 권한 Hook 계약 (P2 마감 기준)
|
||||
- lifecycle hook 키:
|
||||
@@ -49,3 +59,48 @@
|
||||
2. 갱신 후 `context.CheckToolPermissionAsync()`로 최종 판정.
|
||||
3. hook 실패/예외는 non-blocking(권한 흐름 지속).
|
||||
4. `additionalContext`는 가능한 경로에서 메시지 컨텍스트로 반영.
|
||||
|
||||
- 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 → [모델명]" 표시 확인
|
||||
128
docs/AX_AGENT_REGRESSION_PROMPTS.md
Normal file
128
docs/AX_AGENT_REGRESSION_PROMPTS.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# AX Agent Regression Prompts
|
||||
|
||||
업데이트: 2026-04-06 09:58 (KST)
|
||||
|
||||
`claw-code`와 AX Agent를 같은 기준으로 비교하기 위한 공통 회귀 프롬프트 세트입니다.
|
||||
|
||||
## 사용 규칙
|
||||
|
||||
- 런타임 동작, transcript 렌더, 권한/계획/질문 UX, queue/compact/reopen 흐름에 영향을 주는 변경 뒤에는 이 문서를 기준으로 최소 1회 점검합니다.
|
||||
- 모든 항목을 매번 수동 실행할 필요는 없지만, 관련 축이 바뀌었으면 해당 묶음은 반드시 확인합니다.
|
||||
- 결과는 “문장이 똑같은가”가 아니라 “실행 경로와 사용자 체감 결과가 같은가”를 봅니다.
|
||||
|
||||
## 실패 분류
|
||||
|
||||
- `blank-reply`: 토큰은 소비됐는데 본문이 비어 있거나 assistant 카드가 비어 있음
|
||||
- `duplicate-banner`: 같은 실행 이벤트가 transcript에 중복 표시됨
|
||||
- `bad-approval-flow`: 권한/계획/질문 요청이 inline으로 안 닫히고 popup 의존이 커짐
|
||||
- `queue-drift`: 후속 요청, retry, regenerate가 다른 실행 경로를 타거나 순서가 어긋남
|
||||
- `restore-drift`: reopen 후 상태선, queue, 최신 메시지 상태가 달라짐
|
||||
- `status-noise`: Cowork/Code 기본 상태선이 과하게 흔들리거나 debug 정보가 과노출됨
|
||||
|
||||
## Chat
|
||||
|
||||
1. 기본 응답
|
||||
- 프롬프트: `회의 일정 조정 메일을 정중한 한국어로 써줘`
|
||||
- 확인:
|
||||
- `blank-reply`
|
||||
- `restore-drift`
|
||||
|
||||
2. 장문 설명
|
||||
- 프롬프트: `RAG와 fine-tuning 차이를 실무 관점으로 7가지로 설명해줘`
|
||||
- 확인:
|
||||
- 장문 렌더 안정성
|
||||
- compact 이후 다음 턴 문맥 유지
|
||||
- `blank-reply`
|
||||
|
||||
## Cowork
|
||||
|
||||
3. 문서형 작업
|
||||
- 프롬프트: `신규 ERP 도입 제안서 초안을 작성해줘. 목적, 범위, 기대효과, 추진일정 포함`
|
||||
- 확인:
|
||||
- 작업 유형 반영
|
||||
- 계획 이후 실제 문서형 결과 흐름
|
||||
- 기본 로그 과노출 없음
|
||||
- `bad-approval-flow`
|
||||
|
||||
4. 데이터형 작업
|
||||
- 프롬프트: `매출 CSV를 분석해서 월별 추세와 이상치를 요약해줘`
|
||||
- 확인:
|
||||
- 데이터 분석 도구 선택
|
||||
- 결과 요약 일관성
|
||||
- runtime 노이즈 최소화
|
||||
- `status-noise`
|
||||
|
||||
## Code
|
||||
|
||||
5. 버그 수정
|
||||
- 프롬프트: `현재 프로젝트에서 설정 저장 버그 원인 찾고 수정해줘`
|
||||
- 확인:
|
||||
- 읽기/검색/수정 흐름 일관성
|
||||
- diff/저장/재오픈 시 transcript 보존
|
||||
- `restore-drift`
|
||||
|
||||
6. 빌드/테스트
|
||||
- 프롬프트: `빌드 오류를 재현하고 수정한 뒤 다시 빌드해줘`
|
||||
- 확인:
|
||||
- build/test 루프
|
||||
- 실패 후 재시도
|
||||
- 완료 메시지 일관성
|
||||
- `queue-drift`
|
||||
|
||||
## Cross-tab
|
||||
|
||||
7. 후속 요청
|
||||
- 프롬프트 순서:
|
||||
- `이 창 레이아웃 문제 원인 찾아줘`
|
||||
- `끝나면 README도 같이 갱신해줘`
|
||||
- 확인:
|
||||
- queue chaining
|
||||
- 입력창 직접 변경 없이 다음 턴 실행
|
||||
- `queue-drift`
|
||||
|
||||
8. compact 이후 연속성
|
||||
- 프롬프트: `지금까지 논의한 내용을 5줄로 이어서 정리하고 다음 작업 제안해줘`
|
||||
- 확인:
|
||||
- token-only completion 없음
|
||||
- compact 후 문맥 유지
|
||||
- `queue-drift`
|
||||
|
||||
9. 권한 승인
|
||||
- 프롬프트: `이 파일을 수정해서 저장해줘`
|
||||
- 확인:
|
||||
- 권한 요청 transcript 표시
|
||||
- 승인/거부 결과 일관성
|
||||
- `bad-approval-flow`
|
||||
|
||||
10. slash / skill
|
||||
- 프롬프트: `/bug-hunt src 폴더 잠재 버그 찾아줘`
|
||||
- 확인:
|
||||
- slash 진입과 일반 send 경로 동일성
|
||||
- skill 실행 이유/결과 표기
|
||||
- `queue-drift`
|
||||
|
||||
## 개발 루틴 고정
|
||||
|
||||
- transcript, permission, tool-result, queue, compact, reopen에 영향을 주는 변경은 커밋 전 아래를 기준으로 셀프 체크합니다.
|
||||
- Chat 변경: 1, 2, 8
|
||||
- Cowork 변경: 3, 4, 7, 8
|
||||
- Code 변경: 5, 6, 7, 9, 10
|
||||
- 체크 후 문서 이력에는 “어떤 묶음을 확인했는지”를 간단히 남깁니다.
|
||||
## Tool / Permission Follow-up
|
||||
|
||||
11. 권한 거부 후 재시도
|
||||
- 프롬프트 순서:
|
||||
- `src 폴더에서 설정 파일을 수정해줘`
|
||||
- 첫 권한 요청은 거부
|
||||
- 같은 작업을 다시 요청
|
||||
- 확인:
|
||||
- `reject`와 `approval_required`가 같은 결과 카드처럼 보이지 않음
|
||||
- 재시도 시 권한 메시지와 도구 결과가 중복되지 않음
|
||||
- `bad-approval-flow`
|
||||
|
||||
12. 부분 성공 / 후속 안내
|
||||
- 프롬프트: `여러 문서 파일을 한 번에 읽고 요약해줘`
|
||||
- 확인:
|
||||
- 일부 실패가 있으면 `partial` 계열 안내가 보이는지
|
||||
- 후속 안내 문구가 단순 실패와 다르게 보이는지
|
||||
- `status-noise`
|
||||
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>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
## 6. 2026-04-03 점검 스냅샷
|
||||
- 기준 시점: 2026-04-03.
|
||||
- 계획 대비 현재 수준: 약 92~95%.
|
||||
- 테스트 상태: `dotnet test` 372/372 통과.
|
||||
- 테스트 상태: `dotnet test` 374/374 통과.
|
||||
- P1 Hook 계약: 구현 완료 수준.
|
||||
- P2 세션/이벤트 내구성: 구현 완료 수준(복원/재생 경계 케이스 테스트 반영).
|
||||
- P3 실패 복구 표준화: 구현 완료 수준(unknown-tool/권한/정체/fork 강제 흐름 반영).
|
||||
@@ -55,7 +55,7 @@
|
||||
- 레거시 도구명 `process_run` 참조: 0건 (`process`로 정규화).
|
||||
- 레거시 도구명 `grep_tool` 참조: 0건 (`grep`로 정규화).
|
||||
- 내부 모드 차단 정책: `http_tool` 전면 차단, `open_external`의 외부 URL 차단.
|
||||
- 테스트 상태: `dotnet test` 372/372 통과.
|
||||
- 테스트 상태: `dotnet test` 374/374 통과.
|
||||
|
||||
## 8. claw-code 소스 직접 비교 결과 (2026-04-03)
|
||||
- 비교 기준 소스: `claw-code/.../src/tools.ts`, `src/Tool.ts`, `src/skills/loadSkillsDir.ts`, `src/skills/bundled/*.ts`.
|
||||
@@ -74,6 +74,7 @@
|
||||
3. 도구 별칭 정규화: claw-code 기본 도구명군(`WebFetch`, `WebSearch`, `AskUserQuestion`, `LSP`, `ListMcpResourcesTool` 등) AX 내부 도구명으로 매핑 반영 완료.
|
||||
4. 반영 완료(2026-04-03): `hooks`/`hook_filters` 계약 확장 및 runtime hook 필터링(도구/타이밍 기준) 적용.
|
||||
5. 반영 완료(2026-04-03): 슬래시 스킬 실행 시 `context/agent/effort/model/disable-model-invocation/allowed-tools/hooks/hook_filters` 메타데이터를 런타임 정책 지시문으로 합성 적용.
|
||||
6. 반영 완료(2026-04-03): `permissionSetup` 비교 기반으로 위험 자동허용 가드 추가(`process`, `spawn_agent`, `snippet_runner`는 전역 `Auto`에서도 승인 단계 강제).
|
||||
|
||||
## 10. 전체 영역 동시 비교 기준 (누락 방지)
|
||||
1. 도구 계층: 도구 목록, 별칭 정규화, unknown-tool 복구, tool search/선택 정책.
|
||||
@@ -106,7 +107,7 @@
|
||||
|
||||
### 벤치마크 배포 체크리스트 연결
|
||||
1. `dotnet build` 경고 0/오류 0.
|
||||
2. `dotnet test` 전체 통과 (`372/372` 기준, 증가 시 최신 값으로 동기화).
|
||||
2. `dotnet test` 전체 통과 (`374/374` 기준, 증가 시 최신 값으로 동기화).
|
||||
3. 위 9개 시나리오의 회귀 테스트가 모두 통과.
|
||||
4. 패리티 수치/상태를 `NEXT_ROADMAP.md`와 동일 문구로 동기화.
|
||||
5. 릴리즈 전 게이트 스크립트 실행: `powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1`
|
||||
@@ -149,3 +150,4 @@
|
||||
2. 갱신 후 `context.CheckToolPermissionAsync()`로 최종 판정.
|
||||
3. hook 실패/예외는 non-blocking(권한 흐름 지속).
|
||||
4. `additionalContext`는 가능한 경로에서 메시지 컨텍스트로 반영.
|
||||
|
||||
|
||||
@@ -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 기준으로 작성되었으며, 향후 기능 업데이트에 따라 활용 범위가 확대될 예정입니다.*
|
||||
5792
docs/DEVELOPMENT.md
5792
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. 측정 지표
|
||||
- 반복 실패 루프 발생률.
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
## 7. 2026-04-03 실행 증적 동기화 (M4 포함)
|
||||
- 기준 시점: 2026-04-03.
|
||||
- 테스트: `dotnet test` 372/372 통과.
|
||||
- 테스트: `dotnet test` 379/379 통과.
|
||||
- M1 증적: Hook 계약 필드(`updatedInput`, `updatedPermissions`, `additionalContext`) 반영 경로 구현 완료.
|
||||
- M2 증적: run 복원/이력 재구성(`RestoreRecentFromExecutionEvents`, `RestoreCurrentAgentRun`, plan 이력 조회) 구현 및 테스트 존재.
|
||||
- M3 증적: unknown-tool 복구 루프/결정 이벤트 처리 경로 구현 및 테스트 존재.
|
||||
@@ -56,7 +56,7 @@
|
||||
- 기준 문서: `docs/CLAW_CODE_PARITY_PLAN.md` 13절.
|
||||
- 테스트 태그: `Suite=ReplayStability`.
|
||||
- 운영 기준: 릴리즈 전 `ReplayStability` 시나리오 전건 통과 시 replay 불일치 0건으로 판정.
|
||||
- 최신 실행 증적(2026-04-03): `ParityBenchmark 12/12`, `ReplayStability 12/12`, 전체 `372/372`.
|
||||
- 최신 실행 증적(2026-04-03): `ParityBenchmark 13/13`, `ReplayStability 14/14`, 전체 `379/379`.
|
||||
- 실행 자동화: `scripts/release-gate.ps1`로 빌드/벤치마크/리플레이/전체 테스트를 일괄 점검.
|
||||
|
||||
## 11. 권한 Hook 계약 고정 (M1 완료 기준)
|
||||
@@ -70,3 +70,64 @@
|
||||
2. 반영 후 `CheckToolPermissionAsync()`로 최종 권한 판정 수행.
|
||||
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,108 @@
|
||||
## 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.
|
||||
- Updated: 2026-04-06 09:36 (KST)
|
||||
- Progressed the maintainability track by moving runtime strip styling into `OperationalStatusPresentationCatalog.cs`, expanding permission/tool-result transcript catalogs with typed descriptions, and removing the stale plan-mode presentation branch from permission UI surfaces. The next structural focus remains footer/status/composer presentation slimming and regression ritual enforcement.
|
||||
- Updated: 2026-04-06 09:44 (KST)
|
||||
- Continued the maintainability track by splitting mixed inline interaction rendering into `ChatWindow.UserAskPresentation.cs` and `ChatWindow.PlanApprovalPresentation.cs`. This reduces message-type coupling inside the main window and keeps the next focus on footer/composer presentation and regression-routine formalization.
|
||||
- Updated: 2026-04-06 09:58 (KST)
|
||||
- Continued the maintainability track by splitting Git branch popup and footer-adjacent summary helpers into `ChatWindow.GitBranchPresentation.cs`, leaving `ChatWindow.FooterPresentation.cs` focused on folder bar state and preset-guide sync only.
|
||||
- Formalized the regression ritual in `docs/AX_AGENT_REGRESSION_PROMPTS.md` by adding failure classes (`blank-reply`, `duplicate-banner`, `bad-approval-flow`, `queue-drift`, `restore-drift`, `status-noise`) and required prompt bundles per change area.
|
||||
- Updated: 2026-04-06 10:07 (KST)
|
||||
- Continued the maintainability track by moving topic preset rendering, custom preset context menus, and topic-selection application flow into `ChatWindow.TopicPresetPresentation.cs`. This reduces mixed preset UI logic inside `ChatWindow.xaml.cs` and keeps the main window closer to orchestration-only responsibility.
|
||||
- Updated: 2026-04-06 11:52 (KST)
|
||||
- Continued the tool/permission/skill sophistication track by expanding AX presentation catalogs toward `claw-code` specificity. `PermissionRequestPresentationCatalog.cs` now models action-level permission kinds plus severity/action hints, `ToolResultPresentationCatalog.cs` now models `approval_required`/`partial` result states plus follow-up guidance, and the AX skill gallery now exposes runtime-policy metadata that was previously hidden.
|
||||
|
||||
## 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 +125,399 @@
|
||||
- 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
|
||||
|
||||
## Focused Quality Tracks
|
||||
- Updated: 2026-04-06 09:27 (KST)
|
||||
- The remaining improvement work should now be managed in three parallel tracks so UX polish, runtime quality, and maintainability do not get mixed together.
|
||||
|
||||
### Track 1. User-Facing UI/UX Quality
|
||||
- Reference:
|
||||
- `src/components/Messages.tsx`
|
||||
- `src/components/MessageRow.tsx`
|
||||
- `src/components/StatusLine.tsx`
|
||||
- `src/components/PromptInput/PromptInput.tsx`
|
||||
- `src/components/PromptInput/PromptInputFooter.tsx`
|
||||
- `src/components/SessionPreview.tsx`
|
||||
- AX apply target:
|
||||
- `src/AxCopilot/Views/ChatWindow.xaml`
|
||||
- `src/AxCopilot/Views/ChatWindow.MessageInteractions.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.StatusPresentation.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.FooterPresentation.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.PreviewPresentation.cs`
|
||||
- Focus:
|
||||
- keep transcript text dominant and metadata secondary
|
||||
- make footer controls read as a task bar, not a settings strip
|
||||
- unify preview surfaces, chooser popups, and approval cards under one visual language
|
||||
- reduce visual noise from queue/status/diagnostic surfaces unless the state is actionable
|
||||
- Completion criteria:
|
||||
- message rows, footer, preview, and inline approval/question cards feel visually coherent
|
||||
- chooser popups share the same spacing, hover behavior, and summary-row structure
|
||||
- footer/status elements appear only when they convey useful state
|
||||
- Quality criteria:
|
||||
- a user can understand “what is happening now” from the transcript and footer without opening extra panels
|
||||
- the interface remains readable under narrow widths without text clipping or layout jitter
|
||||
|
||||
### Track 2. LLM / Task Handling Quality
|
||||
- Reference:
|
||||
- `src/bootstrap/state.ts`
|
||||
- `src/bridge/initReplBridge.ts`
|
||||
- `src/bridge/sessionRunner.ts`
|
||||
- `src/components/messages/AssistantToolUseMessage.tsx`
|
||||
- `src/components/messages/PlanApprovalMessage.tsx`
|
||||
- `src/components/permissions/*`
|
||||
- AX apply target:
|
||||
- `src/AxCopilot/Services/Agent/AxAgentExecutionEngine.cs`
|
||||
- `src/AxCopilot/Services/Agent/AgentLoopService.cs`
|
||||
- `src/AxCopilot/Services/Agent/AgentTranscriptDisplayCatalog.cs`
|
||||
- `src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs`
|
||||
- `src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.InlineInteractions.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.TranscriptPolicy.cs`
|
||||
- Focus:
|
||||
- keep all entry routes (`send`, `retry`, `regenerate`, `queue`, `slash`) on the same prepared execution path
|
||||
- distinguish `success / error / reject / cancel / needs-approval` tool results more clearly
|
||||
- keep plan approval and user-question flows transcript-native by default
|
||||
- minimize mismatches between execution state and what the user sees in the timeline
|
||||
- Completion criteria:
|
||||
- plan/permission/tool-result/question events all have consistent transcript-native lifecycles
|
||||
- reopen/retry/queue/compact flows preserve the same visible runtime state
|
||||
- tool failures and permission rejections are clearly distinguishable in transcript rendering
|
||||
- Quality criteria:
|
||||
- the same prompt under the same tab/settings uses the same execution route
|
||||
- users can tell whether the agent succeeded, failed, was blocked, or is waiting for approval without reading raw diagnostics
|
||||
|
||||
### Track 3. Maintainability / Extensibility Structure
|
||||
- Reference:
|
||||
- `src/components/*` split by role in `claw-code`
|
||||
- `src/components/messages/*`
|
||||
- `src/components/permissions/*`
|
||||
- `src/components/PromptInput/*`
|
||||
- AX apply target:
|
||||
- `src/AxCopilot/Views/ChatWindow.xaml.cs`
|
||||
- `src/AxCopilot/Views/ChatWindow.*.cs`
|
||||
- `src/AxCopilot/Services/AppStateService.cs`
|
||||
- `src/AxCopilot/Services/Agent/*.cs`
|
||||
- Focus:
|
||||
- continue shrinking `ChatWindow.xaml.cs` toward orchestration-only responsibility
|
||||
- keep renderer, popup, footer, message-interaction, status, and preview logic in dedicated partials
|
||||
- centralize presentation rules in catalogs/models instead of scattered UI string/visibility branches
|
||||
- prepare the codebase for new permission types, new tool classes, and new transcript card types without re-bloating the main window file
|
||||
- Completion criteria:
|
||||
- `ChatWindow.xaml.cs` owns orchestration and runtime coordination more than direct UI element construction
|
||||
- new message/permission/tool card types can be added via presentation catalogs or dedicated partials
|
||||
- runtime summary and footer/status visibility derive from presentation models rather than ad-hoc branching
|
||||
- Quality criteria:
|
||||
- adding a new tool-result or approval type should mostly affect one catalog/renderer area
|
||||
- future UI polish work should land in dedicated presentation files rather than expanding the main window file again
|
||||
|
||||
## Recommended Execution Order
|
||||
- Updated: 2026-04-06 09:27 (KST)
|
||||
1. Finish Track 2 consistency first whenever a UX issue is caused by runtime truth mismatch.
|
||||
2. Apply Track 1 visual cleanup only after the state/message lifecycle is stable for that surface.
|
||||
3. Fold each stable surface into Track 3 structure immediately so later changes do not reintroduce `ChatWindow.xaml.cs` sprawl.
|
||||
4. Keep validating against `docs/AX_AGENT_REGRESSION_PROMPTS.md` after each change set, especially for `plan / permission / queue / compact / reopen`.
|
||||
|
||||
## 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user