AX Agent 코워크·코드 흐름과 컨텍스트 관리를 claude-code 기준으로 대폭 정리
- 코워크·코드 프롬프트, 도구 선택, 문서 생성/검증 흐름을 claude-code 동등 품질 기준으로 재정렬함 - OpenAI/vLLM 경로의 오래된 tool history를 평탄화하고 최근 이력만 구조화해 컨텍스트 직렬화를 경량화함 - AX Agent UI를 테마 기준으로 재구성하고 플랜 승인/오버레이/이벤트 렌더링/명령 입력 상호작용을 개선함 - 파일 후보 제안, 반복 경로 정체 복구, LSP 보강, 문서·PPT 처리 개선, 설정/서비스 인터페이스 정리를 함께 반영함 - README.md 및 docs/DEVELOPMENT.md를 작업 시점별로 갱신함 - 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.Win32;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using AxCopilot.Core;
|
||||
using AxCopilot.Handlers;
|
||||
using AxCopilot.Services;
|
||||
@@ -119,6 +120,9 @@ public partial class App : System.Windows.Application
|
||||
_appState.AttachChatSession(_chatSessionState);
|
||||
_appState.LoadFromSettings(settings);
|
||||
|
||||
// ─── DI 컨테이너 초기화 (기존 인스턴스 등록, 점진적 전환) ──────────────
|
||||
ConfigureDependencyInjection(settings, _memoryService, _chatSessionState, _appState);
|
||||
|
||||
_indexService = new IndexService(settings);
|
||||
var indexService = _indexService;
|
||||
// 캐시 로드를 백그라운드에서 실행 — UI 스레드 블록 방지
|
||||
@@ -1008,4 +1012,32 @@ public partial class App : System.Windows.Application
|
||||
|
||||
_fileDialogWatcher.Stop();
|
||||
}
|
||||
|
||||
// ─── DI 컨테이너 구성 ─────────────────────────────────────────────────────
|
||||
// 기존 수동 생성 인스턴스를 DI 컨테이너에 등록합니다.
|
||||
// 향후 ViewModel/Window도 DI에서 resolve할 수 있도록 점진 확장합니다.
|
||||
private static void ConfigureDependencyInjection(
|
||||
SettingsService settings,
|
||||
AgentMemoryService memoryService,
|
||||
ChatSessionStateService chatSessionState,
|
||||
AppStateService appState)
|
||||
{
|
||||
ServiceLocator.Configure(services =>
|
||||
{
|
||||
// ── Singleton: 기존 인스턴스 등록 ────────────────────────────────
|
||||
services.AddSingleton<ISettingsService>(settings);
|
||||
services.AddSingleton(settings); // 하위 호환: 구체 타입 직접 주입도 허용
|
||||
services.AddSingleton<IChatStorageService, ChatStorageService>();
|
||||
services.AddSingleton<IAppStateService>(appState);
|
||||
services.AddSingleton(appState);
|
||||
services.AddSingleton(chatSessionState);
|
||||
services.AddSingleton(memoryService);
|
||||
|
||||
// ── Transient: 요청마다 새 인스턴스 ──────────────────────────────
|
||||
services.AddTransient<ILlmService>(sp => new LlmService(sp.GetRequiredService<SettingsService>()));
|
||||
services.AddSingleton<IModelRouterService>(sp => new ModelRouterService(sp.GetRequiredService<SettingsService>()));
|
||||
});
|
||||
|
||||
LogService.Info("DI 컨테이너 초기화 완료");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user