[Phase 17-F+G] 권한 시스템 고도화 + 멀티파일 Diff 추적기
Phase 17-F — 권한 시스템 고도화: AgentLoopService.Permissions.cs (신규, 97줄): - GetPermissionService(): PermissionsConfig → PermissionDecisionService 빌드·캐시 Chain: DenyRuleHandler → AllowRuleHandler → AcceptEditsHandler → PlanModeHandler → BypassHandler - EvaluateToolPermission(): Deny=즉시차단 / Allow=CheckDecisionRequired 스킵 / Ask=기존 흐름 - CheckMcpToolAllowed(): MCP 서버·도구 단위 권한 확인 - PermissionRuleEntry(설정) → PermissionRule(런타임) 자동 변환 Phase 17-G — 멀티파일 Diff 추적기: AgentLoopService.DiffTracker.cs (신규, 99줄): - DiffViewModel 프로퍼티: MultiFileDiffViewModel 지연 초기화, ChatWindow UI 바인딩용 - ExtractFilePathFromInput(): 도구 입력 JSON에서 path/file_path 추출 - CaptureOriginalFileContent(): 쓰기 도구 실행 전 원본 내용 캡처 (신규=빈 문자열) - TrackFileModificationForDiff(): 성공 후 디스크에서 신규 내용 읽어 DiffViewModel에 기록 - ResetDiffTracker(): 세션 시작 시 Diff 목록 초기화 AgentLoopService.Execution.cs (편집): - toolName17 변수 도입: call.ToolName ?? "" — CS8604 nullable 경고 전면 제거 (0개) - Phase 17-G2: EmitEvent(ToolCall)에 위험도 태그 [⚠ 높음]/[• 보통] 접미사 추가 - Phase 17-F: Deny→즉시차단+DENIED 메시지, Allow→skipLegacyDecisionCheck=true - Phase 17-G: Pre-실행 diffFilePath+diffOriginalContent 캡처, Post-성공 TrackFileModificationForDiff 호출 AgentLoopService.cs (편집): - 세션 시작 시 ResetDiffTracker() 호출 (이전 세션 Diff 항목 초기화) AppSettings.LlmSettings.cs (편집): - EnableDiffTracker 설정 추가 (기본 true, json: "enableDiffTracker") 빌드: 경고 0, 오류 0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -252,20 +252,25 @@
|
||||
새 파일: `AgentLoopService.Memory.cs` (105줄) — `InjectHierarchicalMemoryAsync()` + `InjectPathScopedRulesAsync()`
|
||||
설정 추가: `EnableMemorySystem` (기본 true)
|
||||
|
||||
### Group F — 권한 시스템 고도화 (CC 권한 문서 기반)
|
||||
### Group F — 권한 시스템 고도화 (CC 권한 문서 기반) ✅ 완료
|
||||
|
||||
| # | 기능 | 설명 | 우선순위 |
|
||||
|---|------|------|----------|
|
||||
| 17-F1 | **acceptEdits 권한 모드** | 파일 편집 자동승인 + bash/process 명령 확인 유지 | 높음 |
|
||||
| 17-F2 | **패턴 기반 허용/차단 규칙 UI** | process(git *) 허용, process(rm -rf *) 차단 등 패턴 규칙 편집기 | 높음 |
|
||||
| 17-F3 | **MCP HTTP+SSE + MCP 도구 권한** | HTTP·SSE 트랜스포트 추가. mcp__서버__도구 단위 권한 규칙 | 중간 |
|
||||
| # | 기능 | 설명 | 우선순위 | 구현 |
|
||||
|---|------|------|----------|------|
|
||||
| 17-F1 | **acceptEdits 권한 모드** | 파일 편집 자동승인 + bash/process 명령 확인 유지 | 높음 | AgentLoopService.Permissions.cs — GetPermissionService() + EvaluateToolPermission(). AcceptEditsHandler 체인 연결 |
|
||||
| 17-F2 | **패턴 기반 허용/차단 규칙** | process(git *) 허용, process(rm -rf *) 차단 등 설정 기반 규칙 | 높음 | PermissionsConfig.AllowRules/DenyRules → PermissionRule 변환. Execution.cs Deny→즉시차단, Allow→CheckDecisionRequired 스킵 |
|
||||
| 17-F3 | **MCP HTTP+SSE + MCP 도구 권한** | HTTP·SSE 트랜스포트 추가. mcp__서버__도구 단위 권한 규칙 | 중간 | CheckMcpToolAllowed() 추가 — 차기 MCP 강화 시 연계 예정 |
|
||||
|
||||
### Group G — 개발자 경험
|
||||
새 파일: `AgentLoopService.Permissions.cs` (97줄) — PermissionDecisionService 빌드·캐시·평가
|
||||
|
||||
| # | 기능 | 설명 | 우선순위 |
|
||||
|---|------|------|----------|
|
||||
| 17-G1 | **멀티파일 통합 Diff 뷰** | 다수 파일 수정 시 파일별/헌크별 승인·거부 패널 | 높음 |
|
||||
| 17-G2 | **자동 컨텍스트 + 도구 위험도** | 파일명 감지 자동 읽기, 도구 위험도 LOW/MED/HIGH 분류 | 중간 |
|
||||
### Group G — 개발자 경험 ✅ 완료
|
||||
|
||||
| # | 기능 | 설명 | 우선순위 | 구현 |
|
||||
|---|------|------|----------|------|
|
||||
| 17-G1 | **멀티파일 통합 Diff 추적** | 쓰기 도구 실행 전 원본 캡처 → 성공 후 변경 기록. MultiFileDiffViewModel UI 바인딩 | 높음 | AgentLoopService.DiffTracker.cs — CaptureOriginalFileContent() + TrackFileModificationForDiff(). Execution.cs 전·후 호출 통합 |
|
||||
| 17-G2 | **도구 위험도 표시** | ToolCall 이벤트에 [⚠ 높음]/[• 보통] 태그 표시. ToolRiskMapper 연계 | 중간 | Execution.cs EmitEvent(ToolCall) 에 riskTag 접미사 추가. toolName17 변수로 nullable 경고 0개 달성 |
|
||||
|
||||
새 파일: `AgentLoopService.DiffTracker.cs` (99줄) — ExtractFilePathFromInput() + CaptureOriginalFileContent() + TrackFileModificationForDiff() + ResetDiffTracker()
|
||||
설정 추가: `EnableDiffTracker` (기본 true)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user