전체 기능 인벤토리
이 문서는 AgentManager (v1.8.99 기준) 가 제공하는 모든 기능을 사용자 관점에서 정리한 목록이다. 개발자 참고용으로 각 항목의 주요 구현 파일도 함께 표기했다.
1. 앱 부트 · 인프라
섹션 제목: “1. 앱 부트 · 인프라”- Electron 데스크탑 앱 (Windows 우선, macOS/Linux 지원 코드 존재) —
electron/main.js - 임베디드 Express + WebSocket 서버를 같은 프로세스로 부팅, 포트 3001~3010 자동 walk —
server/index.js - SQLite 데이터베이스 (
userData/data/manager.db) 로 프로젝트 · 세션 · 메시지 · 사용량 · 브레이크포인트 · 스킬 등 저장, v1~v24 마이그레이션 —server/db.js,server/migrations.js - 단일 인스턴스 락 (prod) — 두 번째 실행은 argv 를 첫 인스턴스에 forwarding 후 종료
- 로그 파일 (
userData/logs/server-YYYY-MM-DD.log) 일별 rotate, 14일 보관,console.*인터셉트 —electron/logger.js - 자동 업데이트 (electron-updater) — 부트 5초 후 첫 체크, 4시간 주기,
autoDownload=true→ 재시작 시 자동 설치. 공개 GitHub Releases 리포 사용 (토큰 불필요) - 크래시 가드 —
unhandledRejection/uncaughtException로깅으로 서버 프로세스 죽음 방지 - 아이들 스윕 — 30분 이상 유휴 CLI 세션 5분마다 자동 정리
- WS 핑/퐁 — 30초마다 죽은 WebSocket 감지, 정리
- REST 라우트 마운트 순서 (
server/index.js) —/api/projects·/api/skills·/api/installed-skills·/api/sessions/:sessionId/branches·/api/sessions·/api/projects(worktrees mount 2회차) ·/api/activity·/api/stats·/api/diagnostics·/api/plugins·/api/claude-doctor·/api/codex-doctor·/api/codex-review·/api/mcp·/api/lsp·/api/screens(v1.8.97) ·/api/branches(PUT/DELETE standalone) ·/api/browse·/api/health·/api/remote-token·/api/push/*·/api/allowed-roots·/api/capture
2. 프로젝트 관리
섹션 제목: “2. 프로젝트 관리”등록 · 편집
섹션 제목: “등록 · 편집”- 프로젝트 등록 (경로 브라우저 · 드라이브 탐색 · 절대경로 직접 입력) —
client/src/components/AddProjectModal.jsx - 프로젝트 수정 (이름 · 설명 · 시스템 프롬프트 · 예산 · 아이콘 라벨 · 태그 · session_mode · trust_level · 규칙)
- 프로젝트 삭제 (관련 세션 · 트리 · attention · 심볼 인덱서 자동 정리)
- Provider 구분: Claude / Codex — 각각 별도 모델 카탈로그와 아이콘/색상
- 같은 경로의 sibling provider 프로젝트 원클릭 스위치 (Claude ↔ Codex, 토큰 소진 시 provider 스왑 패턴) —
SiblingProviderSwitch
뷰 · 정렬
섹션 제목: “뷰 · 정렬”- Overview 대시보드 (프로젝트 카드 그리드, 상단 검색) —
client/src/components/Overview.jsx - ProjectRail 사이드 (DetailView, 좁은 화면은 오버레이) —
client/src/components/ProjectRail.jsx - 3-way 정렬 토글 (최근 / 이름 / 상태)
- 드래그 정렬 (
reorderProjects) - Attention 뱃지 — 백그라운드 세션 완료 시 프로젝트별 점등
Ctrl+.로 가장 오래된 attention 프로젝트로 점프
규칙 · 신뢰
섹션 제목: “규칙 · 신뢰”- ProjectRulesModal — 6 카테고리 (techStack / runCommands / conventions / doNotTouch / pitfalls / releaseChecklist), 카테고리당 2000자, 시스템 프롬프트에 자동 prepend —
client/src/components/ProjectRulesModal.jsx - Trust Level (safe / standard / trusted / full) — 실시간 변경, CLI 인자 (
--disallowedTools또는--dangerously-skip-permissions) 매핑 —server/lib/trustLevels.js
Worktree
섹션 제목: “Worktree”- git worktree 관리 —
git worktree list --porcelain파싱, add/remove UI —client/src/components/WorktreeModal.jsx,server/routes/worktrees.js - Worktree 전환 시 세션 archive/activate (프로젝트당 archived 세션 LRU 5개)
- 세션은 worktree cwd 별 격리 (pending diff · 심볼 인덱스 · 파일 검색 모두 cwd 격리)
3. 채팅
섹션 제목: “3. 채팅”메시징
섹션 제목: “메시징”- 텍스트 메시지 전송 (Enter 전송 · Shift+Enter 개행 · IME 조합 중 자동 대기)
- 실시간 스트리밍 (delta append, 스트리밍 버블 재사용)
- 메시지 큐 — running/waiting 중 입력하면 자동 큐잉, idle 500ms 후 drain
- 큐 재정렬 / 삭제 / 전체 클리어
- Stop & Undo — 마지막 user 메시지 삭제 + 입력창에 draft 복구
- Waiting 상태 취소
Ctrl+L대화 리셋- 새 세션 시작 / Continue in new session (만료 시 최근 10턴 primer 자동 주입)
- SessionExpiredBanner — 세션 만료 안내
- RateLimitBadge — 세션별 + 글로벌 fallback + 재시도 배너 (attempt/maxAttempts/retryAt)
- 무한 스크롤 히스토리 로드 (
session:load-historyoffset+50) - Fork / 브랜치 — 특정 메시지에서 분기, 브랜치 selector —
server/routes/branches.js
렌더링
섹션 제목: “렌더링”- Markdown (ReactMarkdown + remark-gfm)
- 코드 하이라이팅 (highlight.js, 10+ 언어), 복사 버튼
- 표 · blockquote · list · heading · strong · em · hr
- 인라인 파일 경로 자동 링크 (
Foo.cs:470→ Ctrl+클릭으로 preview + 파일트리 reveal) —PathLink.jsx - 이미지 렌더 — Ctrl+클릭으로 preview 옆에 열기, 로드 실패 시 대체 텍스트
- Tool-call XML 마크업 자동 제거 —
stripToolMarkup - 스트리밍 중 raw pre → 완료 후 markdown 파싱
- 어시스턴트 응답 model 뱃지 (
formatModel) - 상대 timestamp (hover reveal)
- 에러 분류 카드 (
classifyError) + 대안 제안 - Command 결과 카드 (
/plugin등) - Ask-User-Question 버블 — 다중 선택 지원, 답변은 CLI 로 자동 전송
- Continue-check 버튼 · 프로젝트 컨텍스트 스냅샷 카드
- ProgressStream — 현재 턴의 도구 실행 진행 스트림 (실시간)
- ChangeSummaryCard — 완료 후 “방금 한 일” 요약 카드
- UserPromptNav — 이전 사용자 지시 점프 (
Ctrl+↑/↓) - ScrollToBottomButton — 스크롤 하단 FAB (auto-pin 이탈 시)
채팅 내 검색
섹션 제목: “채팅 내 검색”Ctrl+F검색 바- Jump 모드 (매칭 인덱스 강조, 목록 유지)
Enter/Shift+Enter로 다음/이전 매치- 현재 매치 하이라이팅 + 자동 스크롤
입력 (ChatInput)
섹션 제목: “입력 (ChatInput)”- Auto-resize textarea (max 150px)
- Ghost autosuggest — 프로젝트별 input history + 세션 user 프롬프트 pool,
→/Tabaccept - 세션별 input history persist (프로젝트당 최대 200개)
@파일 mention 자동완성 — basename/path 랭킹, ↑↓/Enter/Tab/슬래시 팔레트 — Tab 삽입만 / Enter 즉시 실행 / 파괴적 명령은 두 번 Enter- 이미지 붙여넣기 → 프로젝트 업로드 →
자동 삽입 - OS 파일 드래그&드롭 — 이미지 업로드 / 나머지는 project root 로 copy
- 파일트리 내부 드래그 →
@경로자동 삽입 - Role Strip — 페르소나 프리셋 (Implement / Review / TestWriter / Explain 등), 모델/effort 자동 조정
- Running 시 placeholder “Type to queue message…”
- Blur 후 mention picker 자동 닫힘 (120ms)
세션 관리
섹션 제목: “세션 관리”- Session History 드롭다운 —
~/.claude/projects/<encoded>/*.jsonl스캔, 오타/유사 폴더 fuzzy 매칭 (Claude 전용) —server/process/claudeSessions.js - 세션 선택 후 resume (Claude Session ID 로 재개)
- SessionTimeline 모달 (도구 실행 + 파일 변경 시간순)
- 세션 mode 스위치 — oneshot ↔ persistent 라이브, CLI 재spawn
- Persistent 모드 상태 — PID · uptime · idle 시간, CLI 재시작 버튼
- 세션 노트 (
session_notes테이블, 500자, 프로젝트별 세션 재개용) —PUT /api/projects/:id/claude-sessions/:sessionId/note
4. 모델 · Effort · Ultracode · Loop
섹션 제목: “4. 모델 · Effort · Ultracode · Loop”- 모델 picker — Claude (alias · fable · opus · sonnet · haiku) 그룹, Codex 별도 카탈로그 —
client/src/constants/models.js - 세션 라이브 모델 스위치 (
session:set-model) - Effort picker — low / medium / high / xhigh / max —
client/src/constants/effort.js - Ultracode 토글 — 매 메시지 앞에
ultracode키워드 주입 - Ultracode tainted 세션 자동 새 세션 스폰 (session-sticky 방지)
- UltracodeOffBanner (taint 감지 안내)
- 프로젝트당 기본 모델/effort auto-sync (
useProjectModelEffortSync) - Context Bar — 현재 세션 컨텍스트 토큰 사용률 시각화
- Loop Engineering — 목표 · 최대 턴 (3/5/10/15/20/30/50) · verifier 모델 (haiku/sonnet/opus) 선택, 서버 orchestrator 로 자동 반복. gap history + confidence + progress history, 3턴 유사 gap 시 조기중단, SQLite (
loop_state테이블) 저장 → 앱 재시작 후 이어짐 —server/process/loopOrchestrator.js,server/process/verifier.js
5. 파일 시스템
섹션 제목: “5. 파일 시스템”파일 트리
섹션 제목: “파일 트리”- Lazy load (디렉토리 클릭 시 fetch, 자식 목록 캐시)
- 파일 클릭 → preview 탭 자동 열기
- pending diff 뱃지 — 파일별 노란 점, 클릭 시 DiffPanel
- Reveal — 채팅의 Ctrl+클릭 경로에서 조상 디렉토리 자동 확장 + 스크롤 + 하이라이트
- 우클릭 컨텍스트 메뉴 (새 폴더 · 이름 변경 · 삭제 · 탐색기)
- 인라인 이름 변경 (F2 스타일)
- 새 폴더 자동 이름 (
새 폴더,새 폴더 (2)…) - Explorer 에서 열기 (
shell.showItemInFolder) F5로 새로고침- 드래그 이동 (내부:
fs/move, 외부 → project root:copyFile) - 파일 아이콘 (확장자별 이모지)
- Ignore patterns 필터 (전역 설정, glob 와일드카드, 기본
*.meta)
Ctrl+P파일명 검색 (fuzzy: startsWith > includes > path)Ctrl+Shift+F파일 내용 검색 (debounced grep, truncated flag) —server/routes/projects.js/grepCtrl+Shift+O심볼 검색 (C# 심볼 인덱스 기반)- 심볼 크로스 워크트리 옵션 (
allWorktrees) - 결과 하이라이팅 (검색어 mark)
파일 프리뷰
섹션 제목: “파일 프리뷰”- 탭 시스템 — 프로젝트당 LRU 10개, 최대 5개 노출 +
+N오버플로우 드롭다운 - 활성 탭 항상 보이도록 자동 스왑
- Monaco Editor (지연 로딩) — 40+ 언어
- Highlight.js lightweight 뷰 (200KB 이하)
- 미디어 뷰어 — 이미지 · Video (
<video controls>) · Audio (🎵) · PDF · DOCX · XLSX · PPTX (모두 lazy) - Markdown 뷰어 — 원문/프리뷰 토글
- 파일 크기 cap 초과 시 안내
- Text 200KB 하드 truncate
- 이미지 해상도 배지 (
1920 × 1080) - 이미지 Lightbox — 클릭 시 전체 화면, Esc 닫기
- Monaco 인라인 편집 (
readOnly=false) Ctrl+S저장- Dirty indicator + 저장 중/실패 상태
- 낙관적 저장 (in-flight 사이 typing 안전)
- 외부 편집기로 열기 (
shell.openExternal) - HTML 파일은 브라우저로 open
네비게이션
섹션 제목: “네비게이션”- F12 정의로 이동 (Monaco 훅) —
useMonacoGoToDefinition.js - Shift+F12 참조 찾기 (부동 ReferencesPanel)
- Reveal line + timestamp — 같은 라인 재요청도 재트리거
- 프리뷰 위젯 내 F12 는 in-place 파일 교체
파일 시스템 REST API (server/routes/projects.js)
섹션 제목: “파일 시스템 REST API (server/routes/projects.js)”- 디렉토리 lazy list, 파일 텍스트/raw (Range 지원), stat, mkdir, move, delete (
.git/node_modules등은 force 필요) - 배치 존재 확인 (
files-exist) + basename fuzzy fallback - 플랫 재귀 리스트 (20k / depth 8 cap) — @-mention 용
- 이미지 업로드 (30MB cap →
.claude-images/pasted-<ts>-<rand>.<ext>)
6. Diff / 코드 변경 리뷰
섹션 제목: “6. Diff / 코드 변경 리뷰”- Pending diff 자동 트래킹 — 프로젝트당 · cwd 별, Edit/Write/MultiEdit/NotebookEdit tool 이벤트 감지 → snapshot 자동 저장 —
server/process/snapshotStore.js - DiffPanel (좌측 파일 목록 + 우측 diff view)
- “이 세션만” 필터 (활동로그의 changedFiles 기준)
- Accept / Decline (파일 전체 · 블록 단위), 자동 다음 파일 이동
- InlineDiff side-by-side —
server/process/diffBlocks.js - 툴바 DIFF 뱃지 (개수 + pulse dot)
- 클릭 시 pending 파일들을 각각 preview 탭으로 열기
- 채팅 헤더 diff 뱃지 (worktree 필터링)
- 동시성 보호 —
withDiffLock(projectId, cwd, relPath)큐잉, 세션 스트리밍 중이면 409 - 서버 재시작 시 pending 큐 폐기 (
cleanupAllPending)
7. 레이아웃 / 창
섹션 제목: “7. 레이아웃 / 창”DetailView 레이아웃
섹션 제목: “DetailView 레이아웃”- 트리 기반 pane 관리 — filetree / chat / preview / breakpoints / terminal 5종 leaf —
client/src/components/detail/detailTree.js - 프로젝트별 저장, 창별 저장 (
perWindow) - 마이그레이션 — legacy 트리 자동 감지 · breakpoints leaf 자동 삽입
- 레이아웃 프리셋 기본 / 채팅만 (Focus) / 파일트리+채팅 / 파일트리+채팅+코드 / 코드+채팅 / 세로 분할
- 사용자 정의 레이아웃 저장 · 삭제 · 즉시 적용
- 툴바: Split · 파일 · 채팅 · DIFF · Debug · Terminal · 새 창 · 도구
Split / Pane 조작
섹션 제목: “Split / Pane 조작”- Pane 분할 (수평/수직)
- Pane resize (드래그 핸들, debounced persist)
- Pane 닫기 (마지막 pane 은 force flag 필요, force close 시 default 로 reseed)
- Pane 드래그 grip → 다른 pane 자리와 swap 또는 edge 로 이동
- Widget picker (빈 pane)
- Chat pane 토글 (닫힌 채팅 pane 복구)
- Preview leaf 자동 삽입 (파일 클릭 시 없으면 생성 [35, 65])
- Preview 를 X 로 닫으면
chatPreview.visibleByProjectflag 만 flip — tree 는 그대로 유지. 사용자 layout preset 존중 (v1.8.96 에서 v1.8.95 의 leaf 제거 방식 롤백). Preview 를 chat sibling 이 아닌 배치에서 닫으면 남은 sibling 은 tree 배치에 따라 흡수 — 자동 확장 원하면 layout preset 을chat ↔ preview인접 구조로 설계 - Zen 모드 — 채팅만 남고 최대화 시 툴바 · rail 자동 hide
- Pane 최대화/복원 (파일/채팅/프리뷰), 더블클릭,
Esc해제
다중 창 (Multi-window)
섹션 제목: “다중 창 (Multi-window)”- 🖥 새 창 — 프로젝트를 별도 OS 창으로 열기,
windowIdper 창, 각자 layout tree - Pane detach → 새 창으로 (⧉ 버튼, chat/preview/filetree/terminal 지원)
- Grip 드래그로 창 밖으로 → 자동 detach (tab tearing 패턴)
- Terminal detach 시 pty 유지 (
attach=1로 재구독), 명시 close 만 kill - 격리 모드 (
?isolate=terminal|chat|preview|filetree) — 단일 pane 창 부팅 - BroadcastChannel 로 debug store 창 간 sync
- storage event 로 theme/accent/font/locale 창 간 동기화
- 패널 전용 창 (
?panel=terminal|debug) — 미니 view
Split Mode (프로젝트 병렬 뷰)
섹션 제목: “Split Mode (프로젝트 병렬 뷰)”- 여러 프로젝트를 한 화면에서 동시 작업
- 프로젝트별 split tree persist
- 세션 mode + anchor project 앱 재시작 후 복원
- 위젯: Chat / Preview / Web / Terminal / Empty
- WebWidget — 내장 webview, 히스토리 50개, back/forward (sandbox 강제)
8. 터미널
섹션 제목: “8. 터미널”- 프로젝트별 내장 xterm.js 터미널 (node-pty backed)
- `Ctrl+`` 로 새 터미널 leaf 추가
- 프로젝트당 최대 8개, 전역 최대 32개
- 스크롤백 5000줄 (xterm) + 서버 32KB 링버퍼 replay
- FitAddon 자동 리사이즈 + pty resize 통보
- WebLinksAddon (URL 클릭 → 브라우저)
- 인증 토큰 subprotocol 로 WS 연결
- 다중 창 pty 공유 — 하나의 terminalId 를 여러 WS 가 subscribe (multi-window), detach vs close 구분 —
server/process/terminal.js - 기본 shell — Windows
ComSpec(pwsh/powershell), Unix$SHELL - 대기 데이터 200개 버퍼 (ready 전)
MCP OAuth 콘솔 (/pty 별도 WS)
섹션 제목: “MCP OAuth 콘솔 (/pty 별도 WS)”- 최대 6개 동시 pty, 인터랙티브
claudeREPL (Ink TUI +/mcp지원) - Windows:
claude.cmdshim 을cmd.exe /c로 감싸 ConPTY 안에서 실행 - 원격 접속은 allowed_roots 필수
- 백프레셔 (bufferedAmount 1MB 초과 시 pause)
9. 계정 관리
섹션 제목: “9. 계정 관리”Claude CLI 계정
섹션 제목: “Claude CLI 계정”- Slot 저장 —
~/.claude/.credentials.json스냅샷 →~/.claude/credentials-slots/<uuid>.json(모드 0o600, atomic write) - 암호화 — Electron
safeStorage(Windows DPAPI / macOS Keychain / Linux libsecret), 폴백 plaintext - Fingerprint —
sha256(refreshToken || accessToken)[:16], legacy accessToken-based 병행 - 라벨 편집 · 삭제 · 원클릭 슬롯 전환
- ChatHeader AccountSwitcher — 빠른 스위치
- Settings 상세 관리 —
AccountManagerSection - Health probe (Anthropic OAuth API) — ok/expired/network 표시, 만료 감지 → 재로그인 버튼
- 중복 slot 감지 & 정리 (fingerprint 기준)
- AddAccountWizard — OAuth 재로그인, 기존 creds 백업 → 파일 삭제 → 새 로그인 → 완료 시 백업 파기 / 취소 시 복원
- 파일 변경 감시 —
fs.watch(.credentials.json)+ 5초 mtime 폴링 → CLI 토큰 회전 시 활성 슬롯 자동 갱신 - WS
auth-error→ 자동 위저드 open - 활성 계정 인디케이터 (녹색 점)
Codex CLI 계정
섹션 제목: “Codex CLI 계정”- 동일 패턴 —
~/.codex/auth.json스냅샷,~/.codex/auth-slots/<uuid>.json - Fingerprint — 전체 객체 sorted-keys sha256 (Codex 는 안정 필드가 없어서)
- 파일 변경 감시 없음 (Claude 만)
10. Skills / MCP / Plugins
섹션 제목: “10. Skills / MCP / Plugins”ToolsPanel — 통합 모달 (3 탭)
섹션 제목: “ToolsPanel — 통합 모달 (3 탭)”MCP 서버
섹션 제목: “MCP 서버”- 목록 (transport / status / target) —
claude mcp list파싱 - 서버 추가 (http/sse/stdio, scope: user/local/project, URL+headers 또는 command+args)
- 서버 삭제 (확인 모달)
- 승인/인증 —
McpAuthConsole임베디드 PTY 터미널 (/pty소켓, interactiveclaudeREPL) - Pending vs needsAuth 구분 안내
플러그인
섹션 제목: “플러그인”- Marketplaces —
owner/repo또는 URL 추가 - 설치된 플러그인 — enable / disable / update / uninstall (dedup by id, project scope)
- 찾아보기 (available) — 마켓플레이스 미설치 항목 + 설치 카운트
- 채팅 슬래시
/plugin install foo앱 인터셉트 (pending → 결과 카드), batch 지원 - 진행 라벨 (설치 3분 안내)
plugins-changed커스텀 이벤트로 도구 panel 자동 새로고침
- Claude 가 자동 인식하는 스킬 목록 —
~/.claude/plugins/cache/*,~/.claude/skills/,~/.codex/skills/, project.claude/skills,.codex/skills,.agents/skills스캔, 버전순 dedupe - Origin 색상 태그 (plugin=teal, user=amber, codex-user=violet, project=cyan/fuchsia)
- Inert 감지 —
.agents/skills는 claude-code 가 안 봄 → ⚠ 경고 - Description 접기/펼치기
- 레거시 앱 내부 스킬 스니펫 — 전역/프로젝트 스코프,
/이름호출, 삭제 가능
11. Slash 명령
섹션 제목: “11. Slash 명령”- Builtin 카탈로그 —
client/src/constants/slashCommands.jsBUILTIN_SLASH_COMMANDS - 7 카테고리 (
SLASH_CATEGORIES): 세션 · 모델·컨텍스트 · 코드 리뷰 · 워크플로우 · 프로젝트 · 진단 · 유틸리티 (Codex 전용 명령은 별도 카테고리가 아니라 review/project 안에 섞여 있고 provider 게이팅으로 필터링) - 자동완성 picker (icon · destructive · REPL-only · app · providers 뱃지)
- 한/영 설명 + when-to-use 시나리오
- App-handled 명령:
/plugin— CLI wrap/doctor— provider 별 진단 (claude doctor/codex doctor), 결과 카드/codex-review— 워킹트리 리뷰 (codex exec review)/codex-mcp—codex mcp list/copy N— 마지막 N개 어시스턴트 응답 클립보드 복사/export— 전체 대화를 markdown 파일로 다운로드
- Provider 게이팅 — Codex 세션에서 Claude 전용 명령은 hint 반환
- REPL-only 명령 경고
- SlashCommandGuide (설정에서 전체 카탈로그 열람)
12. 디버그 (DAP + C# LSP)
섹션 제목: “12. 디버그 (DAP + C# LSP)”DebugPanel
섹션 제목: “DebugPanel”- ResizableDock 도킹, storageKey=‘debug’, detach 새 창 (
?panel=debug) - CallStackPanel + VariablesPanel 2열 — DAP 스코프/변수 fetch
어댑터 (3종 자동 탐지)
섹션 제목: “어댑터 (3종 자동 탐지)”- 🎮 Unity — vstuc (
~/.vscode/extensions/visualstudiotoolsforunity.vstuc-*/bin/UnityDebugAdapter.dll) + dotnet 3-tier 탐지 (PATH → Program Files → VSCode globalStorage) +--roll-forward LatestMajor. Unity Attach 자동 (endPoint 미지정시 UnityAttachProbe) - 🟢 Node — PATH node →
~/.vscode/extensions/ms-vscode.js-debug-*/{src,out,dist}/src/dapDebugServer.js,--inspect-brk=9229 - 🐍 Python — PATH python/py/python3 →
debugpy.adapter검증, 5678 - 어댑터 미탐지 시 액션 토스트 (.NET 다운로드 / VSCode 확장 마켓 / debugpy 설치 힌트, 마켓플레이스 링크)
- 커스텀 어댑터 경로 override (Settings)
실행 제어
섹션 제목: “실행 제어”- F5 Start/Continue · F10 Step Over · F11 Step Into · Shift+F11 Step Out · Shift+F5 Stop
- 세션은 projectId 별 분리 (
Map<projectId, DebugSession>), 이벤트 크로스토크 방지
브레이크포인트
섹션 제목: “브레이크포인트”- BreakpointsPanel — per-project 목록, verified vs pending 색상, 클릭 openPreviewTab, ✕ 제거
- Monaco 인라인 브레이크포인트 — gutter 클릭 · F9 토글 —
useMonacoBreakpoints.js - 조건부 / logpoint 지원 (
debug_breakpointsDB persist)
실행 상태
섹션 제목: “실행 상태”- 선택된 프레임 지원 (SelectedFrame)
- Hover evaluate — 일시정지 중 변수 값 tooltip —
useMonacoHoverEvaluate.js - Paused line decoration — 실행 중 라인 노란색 —
usePausedLineDecoration.js - 브레이크포인트 히트 시 자동 파일 open + line reveal
- Debug output (stderr / important toast)
AI 통합
섹션 제목: “AI 통합”- 🤖 분석 — 일시정지 스냅샷 (스택 + 변수 + ±15줄 소스) →
claude -p자동 분석 → 진단 텍스트 —AnalyzePausedModal.jsx - “Claude 에게 물어보기” — paused 상태 프롬프트 자동 프리필
C# Language Server (실험적)
섹션 제목: “C# Language Server (실험적)”- VS Code C# 확장 (Microsoft.CodeAnalysis.LanguageServer.exe) 또는
~/.dotnet/tools/csharp-ls.exe자동 감지 —server/process/roslynLsp.js - 커스텀 경로 override (Settings)
- IntelliSense (자동완성 · hover · 정의로 이동)
- 심볼 인덱스 pre-warm — 프로젝트 open 시 백그라운드 build (worker thread) —
server/lib/indexerWorker.js - SymbolIndexBadge — 우측 하단 floating 프로그레스 (
C# 심볼 인덱싱… N/M (X%)), ready 후 fade - F12 정의 / Shift+F12 참조 / C# enum completion
- 파일 변경 시 심볼 인덱스 자동 invalidate (chokidar)
디버그 로그 뷰어
섹션 제목: “디버그 로그 뷰어”- Settings > 디버그 탭 — 서버 프로세스 console 출력 tail, 필터 · 새로고침 · 자동 tail 토글 · 복사 · 로그 폴더 열기
13. 원격 접속 (Cloudflare Tunnel)
섹션 제목: “13. 원격 접속 (Cloudflare Tunnel)”3가지 모드
섹션 제목: “3가지 모드”- ⚡ Quick / 즉시 — 계정·도메인·토큰 불필요,
xxx.trycloudflare.com즉시 발급 (재시작마다 URL 변경) - 자동 (API 토큰) — Cloudflare API 토큰 → 도메인 목록 조회 → 서브도메인 지정 → 자동으로 tunnel + DNS + ingress 생성 후 시작
- 수동 — 대시보드에서 발급한 tunnel token + 공개 URL 수동 입력
자동 설정 단계
섹션 제목: “자동 설정 단계”verifying→creating-tunnel→configuring→creating-dns→saving→teardown-*- auto-teardown — 자동 생성한 tunnel/DNS 삭제 (재확인 모달)
인프라
섹션 제목: “인프라”- cloudflared 바이너리 —
vendor/cloudflared/cloudflared.exe(dev),process.resourcesPath(prod) - 다운로드 스크립트 — 플랫폼별 최신 릴리즈 (win/win-arm64/mac/mac-arm64/linux/linux-arm64) —
scripts/download-cloudflared.js - 탐색 스크립트 — 시스템 설치본 스캔 —
scripts/probe-cloudflared.ps1
- 상태 뱃지 (stopped / starting / running / error) + lastError
- cloudflared 로그 뷰어 (30줄 tail)
- auto-start on app launch 옵션 (수동 모드)
- 접속 URL + 앱 토큰 — URL 뒤
?token=자동 부착, QR 코드 SVG 128px (폰 스캔 접속 즉시 인증) - Subdomain 자동 제안 (
remote.suggestSubdomain)
- AllowedFolders — 원격 접속자가 탐색·프로젝트 등록 가능한 폴더 화이트리스트
- 비어있으면 ⚠ 노란 배너 안내 (원격 실사용 유도)
/api/allowed-rootsPUT 은 loopback-only
14. 모바일 웹 인터페이스
섹션 제목: “14. 모바일 웹 인터페이스”- 진입점 — Cloudflare Tunnel 로 폰 브라우저 접속 시 자동 렌더 —
client/src/mobile/MobileApp.jsx - 레이아웃 — 100dvh + safe-area-inset (iOS 노치/홈 인디케이터 대응), 상단 topbar + body + 하단 tabBar
- 탭 바 — 채팅 / 프로젝트 / 설정 3탭, 각 min-height 56px 터치 타겟
모바일 채팅
섹션 제목: “모바일 채팅”- Virtuoso 메시지 리스트, 자동 스크롤 pin
- 세션 상태 뱃지 (대기/실행/응답 대기), 컴팩트 RateLimit
- 프로젝트 진입 시 세션 자동 시작
- 중지 & Undo — 실행 중 최근 user 메시지를 draft 로 복구 후 취소
- ⋮ 추가 메뉴 — bottom-sheet (세션 옵션 / Effort / Ultracode / Persistent / Loop 상태)
- 로컬 sendingLocally — WS 확인 전에도 typing dots (15초 캡)
- Ultracode 세션 오염 감지 시 fresh CLI 세션 자동 spawn
모바일 컴포저
섹션 제목: “모바일 컴포저”<textarea>autosize (max 40vh), Enter 개행 (IME 대응), 전송 버튼- 삼성/한국 IME Enter=submit 이슈 명시적 처리
- MobileImageViewer — 풀스크린
- MobileSessionSheet — 세션 목록 (상대시간), 대형 세션 (>=1000 msg) 전환 확인
- MobileProjects — 검색, 상태 dot,
+신규 - NewProjectSheet — 절대경로 수동 입력 (모바일은 폴더 피커 없음) + 모델 선택
- MobileSettings — 테마 · 기본 Claude/Codex 모델 · 앱 토큰 복사 · PWA 웹푸시 subscribe (iOS 16.4+ 홈화면 추가 후 가능)
- MobilePersistentStatus / MobileLoopStatus / MobileEffortPicker (네이티브
<select>) / MobileUltracodeToggle - WebSocket 재연결 방어 — visibilitychange 시 강제 close + 재연결 (throttle 3s), onclose vs wake race 가드
14a. 활동 바 · 활동 시트 (ActivityBar / ActivitySheet)
섹션 제목: “14a. 활동 바 · 활동 시트 (ActivityBar / ActivitySheet)”ActivityBar (채팅 하단 상시)
섹션 제목: “ActivityBar (채팅 하단 상시)”- 세션 상태 dot — running (green pulse) / waiting (yellow pulse) / error (red) / idle (dim)
- 현재 작업 상태 문구 (
activity.current) - 마지막 user 프롬프트 미리보기 (80자 truncate)
- 실행 경과 시간 —
useElapsed훅으로 초 단위 tick - 컨텍스트 tokens · 액션 카운트
- 큐 카운트 — 대기 중 메시지 수 (0 초과 시 뱃지)
- 활성 계정 라벨 — 현재 slot fingerprint 기반 (
useActiveAccountLabel) - RateLimitBadge — 세션별 · 글로벌 fallback
ActivitySheet (펼침, 최대 50vh)
섹션 제목: “ActivitySheet (펼침, 최대 50vh)”- LastResponseSection — 마지막 어시스턴트 응답 요약
- StatusSection — 세션 상태 · uptime · CLI PID (persistent 모드)
- ActionsSection — 실행된 도구 액션 로그 (파일 read/write/edit/bash 등)
- FilesChangedSection — 이번 세션에서 변경된 파일 목록
- QueueSection — 큐된 메시지 목록 + 재정렬 / 삭제 / 전체 클리어
- UnityActivitySection — Unity CLI 실행 내역 감지 시 표시
- Toggle 버튼으로 열고 닫기, 세션 전환 시 유지
15. 대시보드 · 통계 · 활동 요약
섹션 제목: “15. 대시보드 · 통계 · 활동 요약”Dashboard
섹션 제목: “Dashboard”- 범위 토글 (7일 / 30일 / 전체), Esc 닫기 —
client/src/components/Dashboard.jsx
Cost Tab
섹션 제목: “Cost Tab”- KPI: 총 비용 · 총 턴 · 일평균 ($) / 총 토큰 · Input·Output · 일평균 토큰 (토큰 모드)
- 단위 토글 (tokens/usd) localStorage persist
- LineChart 일별 · BarList 프로젝트별 (pct 포함)
Activity Tab
섹션 제목: “Activity Tab”- KPI: 총 메시지 · 활성 프로젝트
- LineChart 일별 메시지 · Heatmap 요일×시간 · BarList 프로젝트별
DailyActivity (Overview 상단)
섹션 제목: “DailyActivity (Overview 상단)”- “어제의 활동” 1일 / 최근 7일 토글, 접기/펼치기
- KPI: 💬 메시지 · 📁 프로젝트 · $ 비용
- ✨ AI 요약 — Claude sonnet 로 한 줄 요약 생성 (
activity_summaries캐시), Shift-click force refresh, 비용 표시, prompt injection 방지용---USER-MSG-BEGIN---sentinel - 프로젝트별 목록 (3개 preview / 7일 최대 50개)
서버 API
섹션 제목: “서버 API”/api/activity/daily,/api/activity/ai-summary,/api/stats/cost,/api/stats/activity,/api/projects/:id/usage
- Overview 상단 뱃지 — 응답 완료 미확인 세션 카운트 → “가장 오래된 것으로 이동”
- VersionBadge — 우하단 compact / Settings About inline, 업데이트 확인 버튼
16. Push Notifications (웹 푸시)
섹션 제목: “16. Push Notifications (웹 푸시)”- usePushSubscription 훅 — 서비스 워커 등록 → Notification.requestPermission → VAPID public key → subscribe → 서버 POST
- VAPID 키페어 자동 생성 — meta 테이블 persist —
server/push.js push_subscriptions테이블 (endpoint UNIQUE, p256dh, auth, user_agent)- Claude 응답 완료 시 팬아웃
- 404/410 응답 시 subscription 자동 정리
- iOS 16.4+ 홈 화면 추가 PWA 만 동작
17. AI 인라인 편집 (Cursor Ctrl+K 스타일)
섹션 제목: “17. AI 인라인 편집 (Cursor Ctrl+K 스타일)”- InlineEditModal — 선택 코드 + 자연어 프롬프트 →
claude -p→ 치환 코드 + cost 반환 (90초 timeout) — IPCai:inlineEdit
18. 외부 편집기 통합 (Unity 등)
섹션 제목: “18. 외부 편집기 통합 (Unity 등)”- exe 인자 기반 프로토콜 —
AgentManager.exe "path.cs:42"또는AgentManager.exe "path" -line 42 - 단일 인스턴스 락 +
second-instance이벤트 로 argv forwarding parseOpenTarget(argv)— Windows drive/UNC/POSIX absolute + 확장자 있는 존재 파일 검증- 가장 긴 접두어 매칭 프로젝트 자동 선택 + preview 탭 + line reveal
- 미등록 경로 → root 후보 추정 (
/Assets/검출) + 프로젝트 추가 유도 토스트
19. 자동 업데이트 · 온보딩
섹션 제목: “19. 자동 업데이트 · 온보딩”자동 업데이트
섹션 제목: “자동 업데이트”- UpdateBanner — 상단 배너 4상태 (downloading progress bar / ready / error / hidden)
- VersionBadge — variant compact (Overview) / inline (Settings)
updater.checkNow()— 새 버전 자동 다운로드, 없으면 “최신 버전입니다” 토스트
OnboardingWizard (5 스텝)
섹션 제목: “OnboardingWizard (5 스텝)”- 언어 (한/영)
- CLI 감지 (Claude Code / Codex, 하나 필수,
where/which→ npm prefix → 표준 경로 탐지) - Trust Level 설명
- Persistent 모드 opt-in
- 완료
- ⚡ 자동 설치 —
cli:installIPC 로 앱 내npm install -g @anthropic-ai/claude-code또는@openai/codex(5분 timeout, allowlist) - 실시간 로그 스트림 (
cli:install:log) - 📋 복사 (설치 명령 클립보드)
- localStorage
cm-onboarding-completed-v1로 1회 표시 - Skip / Esc 로 어느 스텝에서든 종료
Walkthrough (인앱 spotlight 투어, v1.8.99)
섹션 제목: “Walkthrough (인앱 spotlight 투어, v1.8.99)”- Portal-mounted overlay, 4-div 반투명 backdrop 으로 target 주위에 hole + accent border —
client/src/components/Walkthrough.jsx - 10 스텝: 환영 · Rail · + Add Project · Chat composer · DIFF 뱃지 · Layout 프리셋 · Terminal 버튼 · Split 버튼 · Settings · 완료
- Target selector:
[data-tour="<id>"]— 컴포넌트에 attribute 부착 (ProjectRail / Overview / DetailView / ChatInput / Settings) - Target element 없으면 center 모드 fallback → 투어 blocking 방지
- ResizeObserver + resize/scroll 리스너로 layout 변경 실시간 추적
- 키보드:
Esc건너뛰기 ·←/→이전/다음 ·Enter다음 - 자동 트리거: OnboardingWizard 완료 후 400ms 지연 → walkthrough 시작 (기존 사용자는 wizard 를 안 봐서 자동 트리거 X)
- 재실행: Settings > 정보 > “튜토리얼 다시 보기”
- localStorage
cm-walkthrough-seen=1로 완료 flag 저장
20. 진단 (DiagnosticsPanel)
섹션 제목: “20. 진단 (DiagnosticsPanel)”- 부팅 시 자동 실행 (
/api/diagnostics), 문제 발견 시 자동 open —client/src/components/DiagnosticsPanel.jsx - Claude CLI · Codex CLI · DB · System · envAuth · problems 표시
- “Claude 테스트” —
/api/diagnostics/test-claude(분당 1회 rate-limit) - AUTH_ENV_OVERRIDE 별도 섹션 (환경변수로 오인된 auth 케이스)
- CLI 미설치 시 npm 명령 copy + docs 링크
- Overview 헤더 ⚡ 아이콘에 문제 발견 시 빨간 점
- Doctor —
POST /api/claude-doctor/codex-doctor(single-flight 가드)
21. Settings
섹션 제목: “21. Settings”탭 8종
섹션 제목: “탭 8종”- 외관 — 테마 (dark/light data-theme), Accent color 10+ 프리셋, Font family 프리셋
- 모델·계정 — 기본 Claude/Codex 모델, 언어, 이메일, Persistent mode opt-in, Claude/Codex slot 관리, 토큰 예산
- Slash 명령 가이드
- 원격 접속
- 편집 — FileTree ignore patterns, Debug adapter path, C# LSP path
- 단축키 목록
- 디버그 로그 — tail 800줄, 필터, autotail, 복사, 폴더 열기
- 정보 — 버전 · 통계
개별 컴포넌트
섹션 제목: “개별 컴포넌트”- AppearanceSection, FileTreeIgnoreSetting, DebugAdapterSetting, CSharpLspSetting, LanguageSetting, PersistentModeSetting, UserEmailSetting, TokenBudgetSetting
22. 테마 · 로케일 · 폰트
섹션 제목: “22. 테마 · 로케일 · 폰트”- Theme (dark / light) —
data-theme속성 - Accent color — teal 기본, 10+ 프리셋
- Font family — system 기본, 프리셋
- localStorage
cm-*persist + 창 간 자동 동기화 (storage event) - i18n (ko / en) — react-i18next, 즉시 반영 (재시작 불필요)
- 사용자 이메일 (활동 바 표시용)
23. 접근 제어 · 보안
섹션 제목: “23. 접근 제어 · 보안”- 원격 토큰 —
meta.remote_token24 byte hex 자동 생성 —server/auth.js - 로컬 loopback bypass — 프록시 헤더/토큰 없고 127.0.0.1/::1 이면 인증 skip
- 원격 감지 —
cf-connecting-ip,x-forwarded-for,x-real-ip,x-cm-token,?token=중 하나라도 있으면 loopback shortcut 비활성화 - timingSafeEqual 토큰 비교
- WS subprotocol
cm-token.<token>인증 - TokenGate — 원격 접속 토큰 미검증 시 모달
- authFetch — 모든
/api요청에 토큰 자동 부착 - QR 스캔 URL 토큰 자동 저장 (
?token=…→ localStorage → URL 스크럽)
파일 접근
섹션 제목: “파일 접근”- allowed_roots — 원격 사용자 접근 가능 절대경로 화이트리스트
isPathAllowed— 정규화 후 prefix + separator 매칭, 빈 목록은 fail-closed (파일 read/write/browse 하위 경로 전부 거부)/api/browse루트 예외 — 빈 목록 원격 사용자에게도 Windows 드라이브 목록 / POSIX/목록만은 노출 (실제 폴더 진입은 fail-closed)
WS 페이로드 검증 (Zod, server/ws/schemas.js)
섹션 제목: “WS 페이로드 검증 (Zod, server/ws/schemas.js)”- 모든 inbound 메시지 타입 스키마로 제한 — 알 수 없는 타입은 조용히 거부
- 경계값 강제:
- 메시지 본문
content최대 100KB historylimit 최대 500terminal:data최대 1MBterminal:resizecols/rows 최대 2000session:load-historyoffset 음수 거부
- 메시지 본문
- 스키마 미매칭 시 500 error 아닌 400 style validation error 반환
프로세스 보안
섹션 제목: “프로세스 보안”- 모든 창
contextIsolation: true,nodeIntegration: false - Webview 하드닝 — attach 시 preload/nodeIntegration 강제 삭제 + sandbox 강제
- shell:openExternal — 실행파일 확장자 18종 deny (
.exe,.bat,.ps1,.vbs,.js,.msi,.reg등) - CLI install allowlist —
@anthropic-ai/claude-code,@openai/codex2개만 - LSP 바이너리 화이트리스트 — 원격 사용자 RCE 방지,
.vscode/extensions등만 - Codex 절대경로 실행 — projectId → DB cwd 조회 (사용자 입력 cwd 사용 안 함)
데이터 보안
섹션 제목: “데이터 보안”- 계정 슬롯 — 파일 모드 0o600 + safeStorage 암호화
- Cloudflare API 토큰 — 렌더러에 절대 return 안 함 (
hasApiToken: boolean만) - Wizard 백업 lockfile — 동시 wizard 방지
- Debug 세션 projectId 스코핑 — 크로스토크 방지
- redact — 로그/에러에서 HOME/TMP/USERNAME/절대경로 마스킹 —
server/lib/redact.js - prompt injection 방지 — AI 요약에
---USER-MSG-BEGIN---sentinel, verifier 는<UNTRUSTED_EXECUTOR_OUTPUT>fence - childProcessTracer — pid 트리 스냅샷, orphan 감지, sanitizeCmd / scanForLeaks 로 API 키 유출 방지
Privacy 마스킹 (v1.8.98, 스크린샷 캡처용)
섹션 제목: “Privacy 마스킹 (v1.8.98, 스크린샷 캡처용)”body.privacy-modeclass 활성화 시[data-privacy="mask"]요소를filter: blur(6px)로 마스킹 —client/src/index.css- 마스킹 대상 (필수 element 만): ProjectCard 이름/경로/마지막메시지 · ProjectRail 라벨 · DetailView 상단 project.name · MessageBubble user/assistant bubble · Dashboard BarList 라벨 · DailyActivity 프로젝트 이름
- 트리거:
POST /api/screens/batch-capture {privacyMode:true}만 사용 (사용자 UI 는 노출 안 함), sweep 종료 시 자동 해제 (close-all-modals+privacyMode:falseIPC) - 스토어 슬라이스
privacyMode(persist X), 액션setPrivacyMode
24. 알림 · 토스트 · 확인 다이얼로그
섹션 제목: “24. 알림 · 토스트 · 확인 다이얼로그”- Toast — 4 종류 (info / success / error / warning), 액션 버튼 지원, 자동 dismiss + 수동 close
- useConfirm — Promise 기반 confirm modal, Portal mounted (
data-modal-root), Nativewindow.confirm대체 (Electron 블로킹 방지) —client/src/hooks/useConfirm.jsx
25. 이미지 · 미디어 · 클립보드
섹션 제목: “25. 이미지 · 미디어 · 클립보드”- 이미지 붙여넣기 → 프로젝트 업로드 →
자동 삽입 - 파일 드래그 — 이미지 업로드 / 나머지 copyFile
- 이미지 확장자 자동 감지 —
imageExt.js - 이미지 폴더 워칭 — 최대 32개 watcher, LRU 방출, 200ms debounce, 파일 목록 push —
image:watchFolder/unwatchFolder/folderChangedIPC (Codex 이미지 생성 결과 실시간 반영) - Absolute vs relative 경로 정규화
26. 커맨드 팔레트 · 단축키
섹션 제목: “26. 커맨드 팔레트 · 단축키”커맨드 팔레트 (Ctrl+K)
섹션 제목: “커맨드 팔레트 (Ctrl+K)”- 프로젝트 검색 + 이동
- 새 프로젝트 · Overview · Settings 액션
- ↑↓ 네비게이션, Enter 실행
단축키 전체
섹션 제목: “단축키 전체”| 단축키 | 기능 |
|---|---|
Ctrl+K |
Command Palette |
Ctrl+N |
새 프로젝트 |
Ctrl+P |
파일명 검색 |
Ctrl+Shift+F |
파일 내용 검색 |
Ctrl+Shift+O |
심볼 검색 |
Ctrl+L |
채팅 클리어 |
Ctrl+F |
채팅 검색 |
Ctrl+. |
오래된 attention 프로젝트로 이동 |
| `Ctrl+`` | 새 터미널 leaf |
Ctrl+S |
파일 저장 (Monaco) |
F2 |
파일 이름 변경 |
F5 |
파일 트리 새로고침 / 디버그 Start·Continue |
F9 |
브레이크포인트 토글 |
F10 |
Step Over |
F11 |
Step Into |
Shift+F11 |
Step Out |
Shift+F5 |
Debug Stop |
F12 |
Go to Definition |
Shift+F12 |
Find References |
Enter/↑↓/Esc/Tab |
각 picker · palette 표준 조작 |
Esc |
팔레트 · Tools · Diagnostics · Dashboard 순차 닫기 |
Ctrl+Shift+I |
DevTools |
Ctrl+R |
Reload |
F11 |
Fullscreen |
27. 텔레메트리 (opt-out)
섹션 제목: “27. 텔레메트리 (opt-out)”- 익명 installId (uuid,
~/.agentmanager/telemetry.json) + version/os/locale + 이벤트 이름 - 현재는 로컬
telemetry.jsonlappend 만 — 원격 전송 인프라 (sendRemoteTelemetry,https://ads.karnellabs.com/api/metrics/eventsapp_agentmanager, 5초 timeout) 는 함수로 존재하나 호출부가 전부 주석 처리 상태 (v1.8.70 Settings opt-out 토글 이후 활성화 예정 —electron/main.js:662-663이벤트 로그,main.js:751-757heartbeat 스케줄러 ·app_launch모두 비활성) - Allowlist 이벤트 15종:
- Continue-check:
continue_check_shown,continue_check_clicked - Lifecycle:
app_launch,app_daily_heartbeat - Session:
session_started,model_changed,mode_changed - Worktree:
worktree_created,worktree_switched - Diff:
diff_accepted,diff_declined - Unity:
unity_activity_seen - Navigation:
f12_used,symbol_search_used - Remote:
remote_access_enabled
- Continue-check:
- Rate-limit 100/10s (sliding window), 1KB 캡
- IPC —
telemetry:log/getInstallId/getEnabled/setEnabled
28. 세션 · 프로세스 관리 (내부)
섹션 제목: “28. 세션 · 프로세스 관리 (내부)”ClaudeProcessManager (server/process/claude.js)
섹션 제목: “ClaudeProcessManager (server/process/claude.js)”cross-spawn로claude -p(shell:false, Windows .cmd shim 호환)- oneshot 모드 — 매 턴 새 CLI,
--resume <id>로 재개 - persistent 모드 —
--input-format stream-jsonstdin NDJSON - stall 감지 — 30초마다 3분 무응답 세션
stall이벤트 - persistent idle-kill — 10분 유휴 시 프로세스만 정리,
--resume재기동 - LRU 캡 — 동시 persistent 3개, 초과 시 가장 오래된 idle 축출
- Edit/Write/MultiEdit tool 이벤트 → snapshot 자동
- orphan 감지 — 종료 후 남은 자식 프로세스 트레이스
CodexProcessManager (server/process/codex.js)
섹션 제목: “CodexProcessManager (server/process/codex.js)”codex exec --json --skip-git-repo-check --cd <cwd> -s workspace-write [-m model] -- resume —
codex exec resume --json ... <thread_id> - - 모델 validation —
gpt-5.5/gpt-5/gpt-4o/o3/o3-mini외 값이면gpt-5.5fallback - thread id 캡처 —
thread.started이벤트 → 재개 핸들 - stream event 파싱 —
turn.started,item.started,item.updated(reasoning 라이브),item.completed(agent_message → assistant text) - auth 감지 — stderr 401/unauthorized/not logged in 시그니처
ProcessFacade (server/process/processFacade.js)
섹션 제목: “ProcessFacade (server/process/processFacade.js)”- Provider 라우팅 파사드
- 20종 이벤트 자동 forward (message, delta, stream, status, activity, model, context, rateLimit, auth-error, error, pending-diff, stall, done, ask-user-question(-resolved), session:expired, mode-demoted)
자동 mode 강등
섹션 제목: “자동 mode 강등”- Persistent → oneshot 자동 강등 (
mode-demoted)
rate-limit
섹션 제목: “rate-limit”- CLI
rate_limit_event+ 자체 5분/60분 sliding window - Subscription tier 포함, 2분마다 자동 갱신
CLI env
섹션 제목: “CLI env”- GUI 실행 시 PATH 에 npm global bin,
~/.local/bin, Homebrew,.bun/bin자동 추가 (CLI_NOT_FOUND 방지)
29. 데이터베이스 스키마
섹션 제목: “29. 데이터베이스 스키마”초기 테이블
섹션 제목: “초기 테이블”projects,sessions,messages,usage,skills,branches,prompt_templates(5개 시드),activity_summaries,pending_diffs,meta,push_subscriptions- 인덱스:
idx_messages_timestamp/session_id,idx_usage_created_at/project_created,idx_sessions_project_id,idx_pending_diffs_project
마이그레이션 (v1 → v24)
섹션 제목: “마이그레이션 (v1 → v24)”- v1:
sessions.claude_session_id - v2~10: projects.model / system_prompt / budget_limit / sort_order, messages.branch_id / model, usage.input_tokens / output_tokens
- v11:
debug_breakpoints테이블 - v12~18: projects.effort / provider / icon_label / tags, sessions.mode, projects.session_mode / trust_level
- v19~20:
loop_state테이블 + progress_history - v21:
session_notes테이블 - v22:
projects.rules(JSON 6 카테고리) - v23:
sessions.cwd(worktree) - v24:
pending_diffsUNIQUE (project_id, cwd, rel_path)
30. 데이터 저장 위치 (참고)
섹션 제목: “30. 데이터 저장 위치 (참고)”| 항목 | 경로 |
|---|---|
| 앱 데이터 | userData/ (Electron 규약) |
| SQLite DB | userData/data/manager.db |
| 로그 | userData/logs/server-YYYY-MM-DD.log |
| Snapshot | userData/snapshots/<projectId>/<cwd-bucket>/<hash>.snap |
| Remote config | userData/remote-config.json |
| Telemetry | ~/.agentmanager/telemetry.json + telemetry.jsonl |
| Claude creds | ~/.claude/.credentials.json (live) |
| Claude slots | ~/.claude/credentials-slots/<uuid>.json (0o600) |
| Claude wizard 백업 | ~/.claude/.pending-backup.json |
| Claude active marker | ~/.claude/.active-slot.json |
| Codex creds | ~/.codex/auth.json |
| Codex slots | ~/.codex/auth-slots/<uuid>.json |
| Claude 세션 (JSONL) | ~/.claude/projects/<encoded-path>/*.jsonl |
| Skills (사용자) | ~/.claude/skills/, ~/.codex/skills/ |
| Skills (프로젝트) | <project>/.claude/skills/, .codex/skills/, .agents/skills/ |
| 이미지 업로드 | <project>/.claude-images/pasted-<ts>-<rand>.<ext> |
| Cloudflared | vendor/cloudflared/cloudflared.exe (dev), resourcesPath (prod) |
| React state persist | localStorage (cm-* 키 prefix, perWindow 슬라이스는 .<windowId> suffix) |
31. 기술 스택 (참고)
섹션 제목: “31. 기술 스택 (참고)”- Electron 33.4.11 + electron-updater 6.8.3 + electron-builder 26.8.1
- React 19 + Vite 8 + Tailwind CSS v4
- Zustand (상태 관리) +
persistedSlice(localStorage backing,perWindow옵션) - better-sqlite3 12.10.0 (SQLite)
- Express 4 + ws 8 (WebSocket)
- web-push (VAPID)
- node-pty (optional, PTY)
- Monaco Editor (지연 로딩)
- xterm.js + FitAddon + WebLinksAddon
- highlight.js (하이라이팅)
- react-markdown + remark-gfm
- react-resizable-panels (Split/Pane)
- react-virtuoso (메시지 가상 스크롤)
- react-i18next (i18n)
- qrcode.react (원격 접속 QR)
- cloudflared (터널)
- cross-spawn, diff, zod
- vitest (client) +
node --test(server)
32. 자동 화면 캡처 IPC (v1.8.97~98)
섹션 제목: “32. 자동 화면 캡처 IPC (v1.8.97~98)”문서/마케팅 스크린샷을 사용자 조작 없이 서버가 자동 캡처하는 도구. 실 앱 UI 를 순차 전환하며 PNG 저장.
POST /api/screens/goto
섹션 제목: “POST /api/screens/goto”- Body:
{screen, privacyMode?}— 지정 화면으로 즉시 전환 IPC 발송 - 지원 화면 12종:
overview·dashboard·settings·tools·diagnostics·close-all-modals·select-first-project·tools-in-project·chat-with-preview·terminal-open·split-mode·debug-open
POST /api/screens/batch-capture
섹션 제목: “POST /api/screens/batch-capture”- Body:
{screens[], dir, settleMs?, prefix?, privacyMode?}— 각 화면 goto → wait →webContents.capturePage()→ PNG 저장 반복 - 파일명:
${prefix}${index}-${screen}.png(00-overview.png 형식으로 정렬 가능) settleMs(기본 500ms) — React paint + lazy chunk hydration 시간 확보privacyMode: true시 sweep 종료 후 자동으로 마스킹 해제
Renderer 처리 (client/src/App.jsx)
섹션 제목: “Renderer 처리 (client/src/App.jsx)”window.electron.screens.onGoto({screen, privacyMode})IPC 리스너- Screen → zustand 액션 매핑 (goToOverview / setShowDashboard / setShowSettings / setShowTools / setShowDiagnostics / selectProject + openPreviewTab / addTerminalLeaf / enterSplitMode / openPanel)
- privacyMode 는
setPrivacyMode호출 → body class 동기화
Preload (electron/preload.cjs)
섹션 제목: “Preload (electron/preload.cjs)”window.electron.screens.onGoto(cb)— IPC subscribe 헬퍼
- Rail 프로젝트 전환 · pane 조작 세밀한 것 (특정 파일 preview · 특정 breakpoint hit) 은 미지원
- 확장:
SUPPORTED_SCREENS배열 +App.jsxswitch 문 동시 업데이트 필요
마지막 업데이트: v1.8.99 (2026-08-04)