[v2.0.0] Phase 17/18 완료 — 멀티에이전트·Reflexion·훅·스킬 고도화 릴리즈

Phase 17 완료 표시 (AGENT_ROADMAP.md 갱신):
- 17-A1/A2: Reflexion 자기성찰 메모리 + 검증 강제 확대
- 17-B1/B2: TaskState Working Memory + AgentEventLog .jsonl 영속화
- 17-C1/C2/C3: 훅 11개 이벤트·4타입(Command/Http/Prompt/Agent) 완비
- 17-D1/D2/D3: 스킬 fork 격리·paths 자동활성화·user-invocable 필터

Phase 18 완료 표시:
- 18-C2 (AiSnippetHandler), 18-C3 (QuickLinkHandler)

버전 v1.8.0 → v2.0.0:
- AxCopilot.csproj, Installer.csproj, SetupForm.cs, McpClientService.cs

DEVELOPMENT.md 버전 이력 v2.0.0 추가
Phase 17 섹션 헤더: 차기 개발 →  완료

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-04 02:12:21 +09:00
parent 8693204d2d
commit 05539b0d83
6 changed files with 49 additions and 17 deletions

View File

@@ -205,7 +205,7 @@
---
## Phase 17 — 에이전트 인프라 고도화 (v1.8.0) — 차기 개발 [2026-04-03 CC 문서 기반 전면 개정]
## Phase 17 — 에이전트 인프라 고도화 (v1.8.0) ✅ 완료 [2026-04-03 CC 문서 기반 전면 개정]
> **개발 기준**: Claude Code 내부 아키텍처(훅·스킬·메모리·권한) + OpenHands 갭(G2/G5/G6/G7) 통합 보완
> 세부 계획은 `docs/NEXT_ROADMAP.md` Phase 17 참조
@@ -214,32 +214,32 @@
| # | 기능 | 설명 | 우선순위 | 갭 |
|---|------|------|----------|----|
| 17-A1 | **Reflexion 강화** | 성공·실패 모두 자기평가. 반성 메모리 저장 → 동일 유형 참고 | 최고 | G6 |
| 17-A2 | **검증 대상 확대** | 코드 생성 후 검증 강제. 구문·참조 무결성. 체크리스트 편집 | 최고 | G5 |
| 17-A1 | **Reflexion 강화** | ReflexionService + JsonlReflexionRepository + TaskTypeClassifier 구현. 세션 완료 후 LLM 자기평가 저장, 시스템 프롬프트에 교훈 자동 주입 | 최고 | G6 |
| 17-A2 | **검증 대상 확대** | PostToolVerificationService 확장. file_write/file_edit/script_create 도구 후 검증 강제. VerificationChecklist JSON 영속화 | 최고 | G5 |
### Group B — 상태/이력 관리
| # | 기능 | 설명 | 우선순위 | 갭 |
|---|------|------|----------|----|
| 17-B1 | **구조화된 태스크 상태** | 대화 압축 후에도 유지되는 TaskState. JSON 직렬화 영속 | 높음 | G7 |
| 17-B2 | **Event-Sourced 이벤트 로그** | SeqNo/ParentId/Payload. .jsonl 저장·재분석 | 높음 | G2 |
| 17-B1 | **구조화된 태스크 상태** | TaskState + TaskStateService 구현. 컨텍스트 압축 후에도 현재 태스크/완료 태스크/차단 이슈 유지. JSON 영속 | 높음 | G7 |
| 17-B2 | **Event-Sourced 이벤트 로그** | AgentEventLog + AgentEventLogType 구현. .jsonl 형식 영속화. SessionStart/End/UserMessage/AssistantMessage/ToolCall/ToolResult/Compaction 이벤트 기록 | 높음 | G2 |
### Group C — 훅 시스템 고도화 (CC 17종 이벤트·4타입 기반)
| # | 기능 | 설명 | 우선순위 |
|---|------|------|----------|
| 17-C1 | **훅 이벤트 확장** | UserPromptSubmit, PreCompact/PostCompact, FileChanged, CwdChanged, SessionEnd, ConfigChange 추가 | 최고 |
| 17-C2 | **훅 타입 확장** | type:prompt (LLM 보안검사), type:agent (에이전트 루프 검증) 추가 | 최고 |
| 17-C3 | **훅 속성·출력 고도화** | if/once/async/statusMessage 속성. additionalContext·permissionDecision·updatedInput 출력 | 높음 |
| 17-C1 | **훅 이벤트 확장** | ExtendedHooksConfig에 UserPromptSubmit/PreCompact/PostCompact/FileChanged/AgentStop/SessionStart/SessionEnd/PermissionRequest 이벤트 추가. AgentLoopService 전 단계에서 연결 | 최고 |
| 17-C2 | **훅 타입 확장** | ExtendedHookRunner: Prompt 모드(LLM 보안검사) + Agent 모드(에이전트 루프 검증) 구현. Command/Http/Prompt/Agent 4타입 완비 | 최고 |
| 17-C3 | **훅 속성·출력 고도화** | ExtendedHookEntry: once/async/statusMessage/watchPaths 속성 추가. ExtendedHookResult: additionalContext/block/watchPaths 출력 처리 | 높음 |
| 17-C4 ✅ | **SessionStart 확장** | watchPaths → FileWatcherService 등록 완료. SessionStart 훅 결과의 WatchPaths가 FileChanged 훅을 fire-and-forget으로 트리거 | 중간 |
### Group D — 스킬 시스템 고도화 (CC 스킬 문서 기반)
| # | 기능 | 설명 | 우선순위 |
|---|------|------|----------|
| 17-D1 | **스킬 fork 컨텍스트** | context:fork — 격리된 서브에이전트 컨텍스트에서 스킬 실행 | 높음 |
| 17-D2 | **경로 기반 스킬 활성화** | paths: 프론트매터 — 해당 파일 작업 시 스킬 자동 컨텍스트 주입 | 높음 |
| 17-D3 | **스킬 범위 훅·모델 오버라이드** | hooks: (스킬 범위 훅), model: (스킬별 모델), user-invocable:false (AI 전용) | 중간 |
| 17-D1 | **스킬 fork 컨텍스트** | context:fork 플래그 감지 → RunSkillForkAsync() 격리 실행. 분기 메시지 독립 컨텍스트, fork 이벤트 로그 기록 | 높음 |
| 17-D2 | **경로 기반 스킬 활성화** | SkillDefinition.PathsGlob 파싱. 파일 도구 실행 대상 경로가 스킬 paths 패턴과 매칭 시 자동 시스템 프롬프트 주입 | 높음 |
| 17-D3 | **스킬 범위 훅·모델 오버라이드** | UserInvocable = user-invocable:false AI 내부 전용. SkillManagerTool.ListSkills()에서 필터링. ListSkills()에서 IsUserInvocable() 조건으로 슬래시 팝업 노출 제어 | 중간 |
### Group E — 메모리/컨텍스트 고도화 (CC 메모리 문서 기반) ✅ 완료
@@ -294,7 +294,7 @@
|---|------|------|----------|----|
| 18-B1 ✅ | **에이전트 리플레이/디버깅** | AgentReplayService + ReplayTimelineViewModel 구현. WorkflowAnalyzerWindow에 "리플레이" 탭 통합 (세션 선택·재생 컨트롤·이벤트 스트림) | 높음 | G8 |
| 18-C1 ✅ | **플러그인 갤러리 + 레지스트리** | PluginGalleryViewModel + PluginInstallService + SettingsWindow 플러그인 탭 구현 완료. zip 설치·활성화 토글·제거 UI 완비 | 높음 | — |
| 18-C2 | **AI 스니펫** | ;email {수신자} {주제} 등 LLM 초안 자동 생성 | 중간 | — |
| 18-C3 | **파라미터 퀵링크** | jira {번호} → URL 변수 치환 | 중간 | — |
| 18-C2 | **AI 스니펫** | AiSnippetHandler 구현 완료. ai [템플릿] [내용] 명령으로 LLM 초안 자동 생성. SnippetTemplateService 연동 | 중간 | — |
| 18-C3 | **파라미터 퀵링크** | QuickLinkHandler 구현 완료. jira/github/confluence URL 변수 치환. QuickLinkEntry 설정 연동 | 중간 | — |
| 18-C4 | **오프라인 AI (ONNX Runtime)** | 로컬 소형 모델, 별도 배포 | 낮음 | — |
| 18-C5 | **웹 검색 AI 요약** | ? 검색 결과 AI 요약 표시 | 낮음 | — |

View File

@@ -1961,6 +1961,38 @@ allowed-tools: process file_read grep_tool
>
> **적용 대상**: 버전 이력, 신기능 설명, 개요 항목, 모든 사용자 노출 텍스트
### v2.0.0 (2026-04-04)
> **개발 범위**: Phase 17/18 완료 릴리즈 — 멀티에이전트 팀·Reflexion·훅 고도화·스킬 고도화 전면 완료.
## v2.0.0 (2026-04-04)
### Phase 17 — 에이전트 인프라 고도화 완료
- **Phase 17-A (Reflexion)**: ReflexionService + JsonlReflexionRepository + TaskTypeClassifier 구현. 세션 완료 후 LLM 자기평가 .jsonl 저장. 다음 세션 시스템 프롬프트에 교훈 자동 주입.
- **Phase 17-B (TaskState/EventLog)**: TaskStateService (현재태스크/완료태스크/차단이슈 영속화). AgentEventLog (.jsonl 이벤트 기록, 17개 이벤트 타입).
- **Phase 17-C (훅 확장)**: ExtendedHooksConfig 11개 이벤트 종류. ExtendedHookRunner 4타입(Command/Http/Prompt/Agent). watchPaths → FileWatcherService 연동.
- **Phase 17-D (스킬 고도화)**: context:fork 격리 실행. paths: glob 패턴 기반 자동 활성화. user-invocable:false AI 전용 스킬.
- **Phase 17-E/F/G**: @include 메모리 계층화, acceptEdits/패턴 권한 시스템, 멀티파일 Diff 추적기 (이전 릴리즈 완료).
### Phase 18 — 멀티에이전트 팀 + 에코시스템 완료
- **Phase 18-A1 (CoordinatorAgentService)**: LLM 계획 수립 → 의존성 토폴로지 정렬 → 병렬 서브에이전트 실행 → 결과 합성.
- **Phase 18-A2~A4**: WorktreeManager + DelegateAgentTool + BackgroundAgentService 완전 연동.
- **Phase 18-B1 (리플레이)**: WorkflowAnalyzerWindow 리플레이 탭 — AgentReplayService + ReplayTimelineViewModel.
- **Phase 18-C1 (플러그인 갤러리)**: PluginGalleryViewModel + PluginInstallService + SettingsWindow 플러그인 탭.
- **Phase 18-C2/C3**: AiSnippetHandler + QuickLinkHandler 구현 완료.
- **SlashCommandRegistry**: IAgentChatContext ChatWindow 통합. /compact, /memory, /plan 등 레지스트리 명령 실행.
### 신규 파일 (주요)
- Services/Agent/CoordinatorAgentService.cs, AgentLoopService.Coordinator.cs
- Services/Agent/ReflexionService.cs, AgentLoopService.Reflexion.cs
- Services/Agent/TaskStateService.cs, AgentLoopService.TaskState.cs
- Views/ChatWindow.SlashContext.cs, Views/SettingsWindow.Plugins.cs
- Views/Controls/AgentSettingsPanel.xaml + .cs
- Views/Controls/AgentSessionHeaderBar.xaml + .cs
- Views/Controls/AgentSidebarView.xaml + .cs
---
### v1.8.0
> **개발 범위**: 에이전트 인프라 전면 고도화 — Phase 17-UI, 17-A~G, 18-A~C, L3 완료. 사내/사외 네트워크 모드 추가.

View File

@@ -7,7 +7,7 @@
<Nullable>annotations</Nullable>
<AssemblyName>AxCopilot_Setup</AssemblyName>
<ApplicationIcon>..\AxCopilot\Assets\icon.ico</ApplicationIcon>
<Version>1.8.0</Version>
<Version>2.0.0</Version>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>

View File

@@ -15,7 +15,7 @@ namespace AxCopilot.Installer.Offline
public class SetupForm : Form
{
private const string AppName = "AX Copilot";
private const string AppVer = "1.8.0";
private const string AppVer = "2.0.0";
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";

View File

@@ -17,7 +17,7 @@
- DEVELOPMENT.md 변경 이력은 수동으로 함께 업데이트하세요.
설정 스키마 버전(마이그레이션)은 Services/SettingsService.cs → CurrentSettingsVersion 을 별도로 관리합니다.
-->
<Version>1.8.0</Version>
<Version>2.0.0</Version>
<Company>AX</Company>
<Product>AX Copilot</Product>
<Description>AI 기반 업무 자동화 런처 &amp; 코파일럿</Description>

View File

@@ -79,7 +79,7 @@ public class McpClientService : IDisposable
{
protocolVersion = "2024-11-05",
capabilities = new { },
clientInfo = new { name = "AX Copilot", version = "1.8.0" },
clientInfo = new { name = "AX Copilot", version = "2.0.0" },
}, ct);
if (initResult == null) return false;