문서 버전: 7.0.0 (v2.7.0) 최종 수정일: 2025-12-19 작성자: Development Team
| 항목 | 상태 |
|---|---|
| 실행 모드 | Auto Mode (자율 실행) |
| Plan-Execute | 자동 요청 분류 + TODO 기반 실행 |
| 도구 분류 | 6가지 분류 시스템 |
| 사용량 추적 | 세션/일별/월별 통계 |
| 문서 관리 | /docs download agno, adk |
| Git Auto-Update | 자동 업데이트 + spinner 애니메이션 |
목표: TODO UI 개선 및 사용자 경험 향상 상태: ✅ 완료
| 기능 | 설명 |
|---|---|
| 체크박스 아이콘 | ☐ (대기), ☑ (완료), ☒ (실패) |
| 취소선 | 완료된 항목에 취소선 표시 |
| dots2 스피너 | 진행 중 항목에 ⣾ ⣽ ⣻ ⢿ 애니메이션 |
| 프로그레스 바 | TODO 진행률 시각화 |
| 기능 | 설명 |
|---|---|
| star 스피너 | ✶ ✸ ✹ ✺ 애니메이션 |
| 진행률 표시 | “2/5 tasks” 형식 |
| 현재 도구명 | edit_file, read_file 등 실행 중인 도구 표시 |
| 상태 메시지 | Thinking, Compacting, Generating response |
| 기능 | 설명 |
|---|---|
| shark 스피너 | 초기 로딩 화면에 shark 애니메이션 |
| /compact 로딩 | Compact 실행 시 shark 스피너 표시 |
| 기능 | 설명 |
|---|---|
| create_todos Tool | TODO 생성 전용 도구 |
| 대화 히스토리 유지 | Compact 후에도 맥락 전달 |
| TODO 상태 동기화 | 진행 상황과 TODO 상태 일치 강조 |
update-todo-list LLM Toolget-todo-list LLM Toolask-to-user LLM Tool (2-4개 선택지 + “Other”)/usage 명령어✶ ~하는 중… (esc to interrupt · 2m 7s · ↑ 3.6k tokens)~/.local-cli/usage.json 저장/docs 명령어 (정보 표시)/docs download <source> (agno, adk)목표: 사용자가 AI의 파일 수정 Tool 실행을 승인/거부할 수 있는 모드 우선순위: 🔴 높음 상태: ✅ 완료 (v1.2.x)
두 가지 실행 모드를 제공하여 사용자가 AI 자율성 수준을 선택할 수 있습니다.
| 모드 | 설명 | Tool 실행 |
|---|---|---|
| Auto Mode | 자율 실행 | 모든 도구 자동 실행 |
| Supervised Mode | 파일 수정 시 승인 필요 | create_file, edit_file만 승인 필요 |
Tab 키 → Auto ↔ Supervised 토글
상태바 → 현재 모드 표시 [Auto] 또는 [Supervised]
| 도구 | 승인 필요 | 설명 |
|---|---|---|
create_file |
✅ | 새 파일 생성 |
edit_file |
✅ | 기존 파일 수정 |
read_file |
❌ | 파일 읽기 |
list_files |
❌ | 디렉토리 목록 |
find_files |
❌ | 파일 검색 |
tell_to_user |
❌ | 메시지 전달 |
ask_user |
❌ | 사용자에게 질문 |
┌─────────────────────────────────────────────────────────────┐
│ 🔧 create_file │
│ ─────────────────────────────────────────────────────── │
│ 📁 file_path: /src/utils/helper.ts │
│ 📝 content: export function helper() { ... } │
│ ─────────────────────────────────────────────────────── │
│ ▸ [1] ✅ Approve │
│ [2] ❌ Reject │
│ ─────────────────────────────────────────────────────── │
│ ↑↓ 이동 | Enter 선택 | 1-2 번호 선택 │
└─────────────────────────────────────────────────────────────┘
Reject 선택
↓
┌─────────────────────────────────────────────┐
│ 💬 AI에게 전달할 코멘트를 입력하세요: │
│ > 이 파일 대신 existing-helper.ts를 수정해줘 │
└─────────────────────────────────────────────┘
↓
코멘트가 AI의 다음 메시지로 전달
↓
AI가 피드백 반영하여 재시도
ExecutionMode 타입 정의 ('auto' | 'supervised')executionMode 상태 (PlanExecuteApp)ApprovalDialog UI 컴포넌트parallel_tool_calls: false API 파라미터로 단일 Tool 실행 강제Context (1.3K / 13%)목표: 완벽한 세션 관리 및 사용자 제어 강화 우선순위: 🔴🔴 최우선 (Phase 6 이전 필수) 상태: 🔲 구현 예정
세션 저장/복구, 인터럽트, 사용자 입력 큐잉 등 핵심 UX 기능을 완벽하게 구현합니다.
| 기능 | 설명 |
|---|---|
| Auto Save | 매 메시지/Tool 실행 후 자동 저장 |
| Auto Load | 앱 시작 시 마지막 세션 자동 복구 옵션 |
/load |
저장된 세션 목록에서 선택하여 복구 |
/save |
현재 세션 수동 저장 (이름 지정 가능) |
~/.local-cli/projects/{cwd}/
├── auto_session.json # 자동 저장 세션
├── session_2025-12-12.json # 수동 저장 세션
└── ...
세션 로드 시 이전 대화가 마치 방금 채팅한 것처럼 Static Log에 표시됩니다.
┌─────────────────────────────────────────────────────────────┐
│ 📂 세션 복구됨: 2025-12-12 14:30 │
│ ─────────────────────────────────────────────────────── │
│ 👤 You: 프로젝트에 로깅 시스템을 추가해줘 │
│ ─────────────────────────────────────────────────────── │
│ 📖 read_file: src/index.ts │
│ ⎿ 파일 내용 (15줄) │
│ ─────────────────────────────────────────────────────── │
│ 📝 create_file: src/utils/logger.ts │
│ ⎿ 파일 생성 완료 │
│ ─────────────────────────────────────────────────────── │
│ 🤖 Assistant: 로깅 시스템을 추가했습니다... │
└─────────────────────────────────────────────────────────────┘
구현 항목:
LogEntry[] 배열도 함께 저장LogEntry[]를 Static Log에 복원세션 로드 시 autoApprovedTools Set 초기화:
// 세션 로드 시
autoApprovedTools.clear(); // 기존 자동 승인 목록 초기화
// → 모든 파일 수정 도구에 대해 다시 승인 필요
이유: 새로운 세션 컨텍스트에서는 이전 승인이 유효하지 않을 수 있음
ESC 키 누르면 즉시 중단되어야 합니다:
User가 ESC 누름
↓ (즉시)
┌─────────────────────────────────────────────────────────────┐
│ ⎿ Interrupted │ ← 빨간색
└─────────────────────────────────────────────────────────────┘
↓
- LLM 응답 대기 중이면 → 응답 폐기, 요청 취소
- Tool 실행 중이면 → 가능한 경우 중단
- 상태 즉시 idle로 전환
- 입력창 활성화
구현 항목:
AbortController 사용하여 진행 중인 HTTP 요청 취소isProcessing = false 즉시 설정⎿ Interrupted 메시지 추가LLM 처리 중에 사용자가 메시지를 입력하면 큐에 저장:
LLM 응답 생성 중...
↓
User가 메시지 입력: "잠깐, 그거 말고 다른 방법으로 해줘"
↓
메시지 큐에 저장
↓
현재 Tool call 완료 (tool response 포함)
↓
다음 LLM invoke 시 마지막 메시지로 포함:
┌─────────────────────────────────────────────────────────────┐
│ messages: [ │
│ ...이전 메시지들, │
│ { role: "user", content: "[Request interrupted by user] │
│ 잠깐, 그거 말고 다른 방법으로 해줘" } │
│ ] │
└─────────────────────────────────────────────────────────────┘
구현 항목:
pendingUserMessage 상태 추가[Request interrupted by user]\n{message} 형식으로 추가Auto Save / Load:
/load 명령어 개선 (UI로 세션 선택)/save [name] 명령어 추가Session Load 메시지 복원:
LogEntry[] 세션 파일에 저장Supervised Mode 초기화:
autoApprovedTools.clear() 호출ESC 즉시 중단:
AbortController 통합⎿ Interrupted 로그 표시User Message Queue:
pendingUserMessage 상태[Request interrupted by user] 프리픽스로 다음 invoke에 포함목표: 대규모 코드베이스를 LLM이 이해하기 쉽게 인덱싱 우선순위: 🟡 중간
/indexing User Command/indexing # 도움말
/indexing start # 코드베이스 인덱싱 시작
/indexing status # 인덱싱 상태 확인
/indexing refresh # 변경된 파일만 재인덱싱
interface CodebaseIndex {
projectPath: string;
lastIndexed: string;
structure: {
entryPoints: string[]; // 진입점 파일
configFiles: string[]; // 설정 파일
modules: ModuleSummary[]; // 모듈별 요약
};
files: {
[path: string]: {
type: 'code' | 'config' | 'docs' | 'test';
summary: string; // LLM 생성 요약
exports?: string[]; // 내보내는 함수/클래스
dependencies?: string[]; // 의존성
};
};
}
/indexing 명령어 구현목표: Model Context Protocol 통합 우선순위: 🟡 중간
/mcp User Command/mcp # 도움말
/mcp list # 연결된 서버 목록
/mcp add <config> # 서버 추가
/mcp remove <server> # 서버 제거
/mcp enable <tool> # 도구 활성화
/mcp disable <tool> # 도구 비활성화
목표: LLM Tool이 많아질 경우 성능 저하 방지 우선순위: 🟢 낮음 (Tool이 많아진 후 구현)
현재: 모든 LLM Tool을 프롬프트에 포함
문제: Tool 수 증가 → 프롬프트 길이 증가 → 성능 저하
User 요청
↓
┌─────────────────────────────────┐
│ Tool Selector (경량 LLM 호출) │
│ "이 요청에 필요한 도구 선택" │
└─────────────────────────────────┘
↓
선택된 Tool만 포함하여 메인 LLM 호출
tools/selector/ 폴더 구조 생성| Phase | 항목 | 상태 | 우선순위 |
|---|---|---|---|
| 1 | Plan-Execute Auto Mode 강화 | ✅ 완료 | - |
| 2 | ask-to-user Tool | ✅ 완료 | - |
| 3 | 사용량 추적 | ✅ 완료 | - |
| 4 | 문서 다운로드 내재화 | ✅ 완료 | - |
| 5 | Supervised Mode (실행 모드) | ✅ 완료 | - |
| 5.5 | Session Management | 🔲 예정 | 🔴🔴 최우선 |
| 6 | Codebase RAG | 🔲 예정 | 🟡 중간 |
| 7 | MCP 기능 지원 | 🔲 예정 | 🟡 중간 |
| 8 | Tool Selector | 🔲 예정 | 🟢 낮음 |
Phase 5.5 → Phase 6 → Phase 7 → Phase 8
↓ ↓ ↓ ↓
세션 코드 외부 최적화
관리 분석 연동 (나중에)
이 문서는 프로젝트 진행에 따라 지속적으로 업데이트됩니다.