Files
claude-code-source-code/README_KR.md

318 lines
19 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Claude Code v2.1.88 — 소스 코드 분석
> **면책 조항**: 이 저장소의 모든 소스 코드는 **Anthropic과 Claude**의 지적 재산입니다. 이 저장소는 기술 연구, 학습, 교육 목적의 교류를 위해서만 제공됩니다. **상업적 사용은 엄격히 금지됩니다.** 어떠한 개인, 기관, 단체도 이 콘텐츠를 상업적 목적, 영리 활동, 불법 활동 또는 기타 무단 사용에 활용할 수 없습니다. 본 콘텐츠가 귀하의 법적 권리, 지적 재산권 또는 기타 이익을 침해하는 경우, 연락 주시면 즉시 확인 후 삭제 조치하겠습니다.
> npm 패키지 `@anthropic-ai/claude-code` **2.1.88** 버전에서 추출.
> 배포 패키지는 단일 번들 `cli.js`(~12MB)만 포함한다. 이 저장소의 `src/` 디렉터리에는 npm 타르볼에서 추출한 **번들 전 TypeScript 소스**가 들어 있다.
**언어**: [English](README.md) | [中文](README_CN.md) | **한국어** | [日本語](README_JA.md)
---
## 목차
- [심층 분석 보고서 (`docs/`)](#심층-분석-보고서-docs) — 텔레메트리, 코드네임, 언더커버 모드, 원격 제어, 향후 로드맵
- [누락 모듈 안내](#누락-모듈-안내108개-모듈) — feature gate로 제거된 108개 모듈
- [아키텍처 개요](#아키텍처-개요) — 진입점 → 쿼리 엔진 → 도구/서비스/상태
- [빌드 안내](#빌드-안내) — 직접 컴파일이 불가능한 이유
---
## 심층 분석 보고서 (`docs/`)
v2.1.88 디컴파일 소스 코드 기반 분석 보고서. 영어/중국어/한국어 3개 국어 제공.
```
docs/
├── en/ # English
│ ├── [01-telemetry-and-privacy.md] # Telemetry & Privacy — what's collected, why you can't opt out
│ ├── [02-hidden-features-and-codenames.md] # Codenames (Capybara/Tengu/Numbat), feature flags, internal vs external
│ ├── [03-undercover-mode.md] # Undercover Mode — hiding AI authorship in open-source repos
│ ├── [04-remote-control-and-killswitches.md]# Remote Control — managed settings, killswitches, model overrides
│ └── [05-future-roadmap.md] # Future Roadmap — Numbat, KAIROS, voice mode, unreleased tools
├── ko/ # 한국어
│ ├── [01-텔레메트리와-프라이버시.md] # 텔레메트리 및 프라이버시 — 수집 항목, 비활성화 불가 이유
│ ├── [02-숨겨진-기능과-코드네임.md] # 숨겨진 기능 — 모델 코드네임, feature flag, 내부/외부 사용자 차이
│ ├── [03-언더커버-모드.md] # 언더커버 모드 — 오픈소스에서 AI 저작 은폐
│ ├── [04-원격-제어와-킬스위치.md] # 원격 제어 — 관리 설정, 킬스위치, 모델 오버라이드
│ └── [05-향후-로드맵.md] # 향후 로드맵 — Numbat, KAIROS, 음성 모드, 미공개 도구
└── zh/ # 中文
├── [01-遥测与隐私分析.md] # 遥测与隐私 — 收集了什么,为什么无法退出
├── [02-隐藏功能与模型代号.md] # 隐藏功能 — 模型代号feature flag内外用户差异
├── [03-卧底模式分析.md] # 卧底模式 — 在开源项目中隐藏 AI 身份
├── [04-远程控制与紧急开关.md] # 远程控制 — 托管设置,紧急开关,模型覆盖
└── [05-未来路线图.md] # 未来路线图 — NumbatKAIROS语音模式未上线工具
```
> 파일명을 클릭하면 해당 보고서로 이동합니다.
| # | 주제 | 핵심 발견 | 링크 |
|---|------|----------|------|
| 01 | **텔레메트리 및 프라이버시** | 이중 분석 파이프라인 (1P→Anthropic, Datadog). 환경 핑거프린트, 프로세스 메트릭, 모든 이벤트에 세션/사용자 ID 포함. **사용자 대상 비활성화 설정 없음.** `OTEL_LOG_TOOL_DETAILS=1`로 전체 도구 입력 기록 가능. | [EN](docs/en/01-telemetry-and-privacy.md) · [한국어](docs/ko/01-텔레메트리와-프라이버시.md) · [中文](docs/zh/01-遥测与隐私分析.md) |
| 02 | **숨겨진 기능과 코드네임** | 동물 코드네임 체계 (Capybara v8, Tengu, Fennec→Opus 4.6, **Numbat** 차기). Feature flag에 무작위 단어 조합으로 목적 난독화. 내부 사용자는 더 나은 프롬프트와 검증 에이전트 제공. 숨겨진 명령어: `/btw`, `/stickers`. | [EN](docs/en/02-hidden-features-and-codenames.md) · [한국어](docs/ko/02-숨겨진-기능과-코드네임.md) · [中文](docs/zh/02-隐藏功能与模型代号.md) |
| 03 | **언더커버 모드** | Anthropic 직원은 공개 저장소에서 자동으로 언더커버 모드 진입. 모델 지시: **"정체를 들키지 마라"** — 모든 AI 저작 표시를 제거하고, 사람이 작성한 것처럼 커밋. **강제 비활성화 옵션 없음.** | [EN](docs/en/03-undercover-mode.md) · [한국어](docs/ko/03-언더커버-모드.md) · [中文](docs/zh/03-卧底模式分析.md) |
| 04 | **원격 제어 및 킬스위치** | 1시간마다 `/api/claude_code/settings` 폴링. 위험 변경 시 차단 다이얼로그 — **거부 = 앱 종료**. 6개 이상 킬스위치 (권한 우회, fast 모드, 음성 모드, 분석 싱크). GrowthBook으로 동의 없이 사용자 동작 변경 가능. | [EN](docs/en/04-remote-control-and-killswitches.md) · [한국어](docs/ko/04-원격-제어와-킬스위치.md) · [中文](docs/zh/04-远程控制与紧急开关.md) |
| 05 | **향후 로드맵** | **Numbat** 코드네임 확인. Opus 4.7 / Sonnet 4.8 개발 중. **KAIROS** = 완전 자율 에이전트 모드, `<tick>` 하트비트, 푸시 알림, PR 구독. 음성 모드(push-to-talk) 준비 완료. 미공개 도구 17개 발견. | [EN](docs/en/05-future-roadmap.md) · [한국어](docs/ko/05-향후-로드맵.md) · [中文](docs/zh/05-未来路线图.md) |
---
## 누락 모듈 안내108개 모듈)
> **이 소스는 불완전하다.** `feature()` 게이트로 분기된 108개 모듈이 npm 패키지에 **포함되어 있지 않다**.
> 이 모듈들은 Anthropic 내부 모노레포에만 존재하며, 컴파일 시 데드 코드 제거된다.
> `cli.js`, `sdk-tools.d.ts` 또는 기타 배포 아티팩트에서 **복구할 수 없다**.
### Anthropic 내부 코드 (~70개 모듈, 미공개)
npm 패키지에 소스 파일이 전혀 없는 모듈이다. Anthropic 내부 인프라에 해당한다.
<details>
<summary>전체 목록 펼치기</summary>
| Module | 용도 | Feature Gate |
|--------|------|-------------|
| `daemon/main.js` | 백그라운드 데몬 관리자 | `DAEMON` |
| `daemon/workerRegistry.js` | 데몬 워커 레지스트리 | `DAEMON` |
| `proactive/index.js` | 선제적 알림 시스템 | `PROACTIVE` |
| `contextCollapse/index.js` | 컨텍스트 축소 서비스 (실험적) | `CONTEXT_COLLAPSE` |
| `contextCollapse/operations.js` | 축소 연산 | `CONTEXT_COLLAPSE` |
| `contextCollapse/persist.js` | 축소 영속화 | `CONTEXT_COLLAPSE` |
| `skillSearch/featureCheck.js` | 원격 스킬 기능 검사 | `EXPERIMENTAL_SKILL_SEARCH` |
| `skillSearch/remoteSkillLoader.js` | 원격 스킬 로더 | `EXPERIMENTAL_SKILL_SEARCH` |
| `skillSearch/remoteSkillState.js` | 원격 스킬 상태 | `EXPERIMENTAL_SKILL_SEARCH` |
| `skillSearch/telemetry.js` | 스킬 검색 텔레메트리 | `EXPERIMENTAL_SKILL_SEARCH` |
| `skillSearch/localSearch.js` | 로컬 스킬 검색 | `EXPERIMENTAL_SKILL_SEARCH` |
| `skillSearch/prefetch.js` | 스킬 프리페치 | `EXPERIMENTAL_SKILL_SEARCH` |
| `coordinator/workerAgent.js` | 멀티 에이전트 코디네이터 워커 | `COORDINATOR_MODE` |
| `bridge/peerSessions.js` | 브릿지 피어 세션 관리 | `BRIDGE_MODE` |
| `assistant/index.js` | KAIROS 어시스턴트 모드 | `KAIROS` |
| `assistant/AssistantSessionChooser.js` | 어시스턴트 세션 선택기 | `KAIROS` |
| `compact/reactiveCompact.js` | 반응형 컨텍스트 압축 | `CACHED_MICROCOMPACT` |
| `compact/snipCompact.js` | 스닙 기반 압축 | `HISTORY_SNIP` |
| `compact/snipProjection.js` | 스닙 프로젝션 | `HISTORY_SNIP` |
| `compact/cachedMCConfig.js` | 캐시 마이크로압축 설정 | `CACHED_MICROCOMPACT` |
| `sessionTranscript/sessionTranscript.js` | 세션 트랜스크립트 서비스 | `TRANSCRIPT_CLASSIFIER` |
| `commands/agents-platform/index.js` | 내부 에이전트 플랫폼 | `ant` (내부) |
| `commands/assistant/index.js` | 어시스턴트 명령 | `KAIROS` |
| `commands/buddy/index.js` | Buddy 시스템 알림 | `BUDDY` |
| `commands/fork/index.js` | Fork 서브에이전트 명령 | `FORK_SUBAGENT` |
| `commands/peers/index.js` | 멀티 피어 명령 | `BRIDGE_MODE` |
| `commands/proactive.js` | 선제적 명령 | `PROACTIVE` |
| `commands/remoteControlServer/index.js` | 원격 제어 서버 | `DAEMON` + `BRIDGE_MODE` |
| `commands/subscribe-pr.js` | GitHub PR 구독 | `KAIROS_GITHUB_WEBHOOKS` |
| `commands/torch.js` | 내부 디버그 도구 | `TORCH` |
| `commands/workflows/index.js` | 워크플로우 명령 | `WORKFLOW_SCRIPTS` |
| `jobs/classifier.js` | 내부 작업 분류기 | `TEMPLATES` |
| `memdir/memoryShapeTelemetry.js` | 기억 형태 텔레메트리 | `MEMORY_SHAPE_TELEMETRY` |
| `services/sessionTranscript/sessionTranscript.js` | 세션 트랜스크립트 | `TRANSCRIPT_CLASSIFIER` |
| `tasks/LocalWorkflowTask/LocalWorkflowTask.js` | 로컬 워크플로우 태스크 | `WORKFLOW_SCRIPTS` |
| `protectedNamespace.js` | 내부 네임스페이스 가드 | `ant` (내부) |
| `protectedNamespace.js` (envUtils) | 보호 네임스페이스 런타임 | `ant` (내부) |
| `coreTypes.generated.js` | 생성된 코어 타입 | `ant` (내부) |
| `devtools.js` | 내부 개발 도구 | `ant` (내부) |
| `attributionHooks.js` | 내부 저작 표시 훅 | `COMMIT_ATTRIBUTION` |
| `systemThemeWatcher.js` | 시스템 테마 감시기 | `AUTO_THEME` |
| `udsClient.js` / `udsMessaging.js` | UDS 메시지 클라이언트 | `UDS_INBOX` |
</details>
### Feature-Gated 도구 (~20개 모듈)
타입 시그니처는 있으나 구현이 컴파일 시 제거된 도구.
<details>
<summary>전체 목록 펼치기</summary>
| Tool | 용도 | Feature Gate |
|------|------|-------------|
| `REPLTool` | 인터랙티브 REPL (VM 샌드박스) | `ant` (내부) |
| `SnipTool` | 컨텍스트 잘라내기 | `HISTORY_SNIP` |
| `SleepTool` | 에이전트 루프 내 슬립/지연 | `PROACTIVE` / `KAIROS` |
| `MonitorTool` | MCP 모니터링 | `MONITOR_TOOL` |
| `OverflowTestTool` | 오버플로우 테스트 | `OVERFLOW_TEST_TOOL` |
| `WorkflowTool` | 워크플로우 실행 | `WORKFLOW_SCRIPTS` |
| `WebBrowserTool` | 브라우저 자동화 | `WEB_BROWSER_TOOL` |
| `TerminalCaptureTool` | 터미널 캡처 | `TERMINAL_PANEL` |
| `TungstenTool` | 내부 성능 모니터링 | `ant` (내부) |
| `VerifyPlanExecutionTool` | 계획 실행 검증 | `CLAUDE_CODE_VERIFY_PLAN` |
| `SendUserFileTool` | 사용자에게 파일 전송 | `KAIROS` |
| `SubscribePRTool` | GitHub PR 구독 | `KAIROS_GITHUB_WEBHOOKS` |
| `SuggestBackgroundPRTool` | 백그라운드 PR 제안 | `KAIROS` |
| `PushNotificationTool` | 푸시 알림 | `KAIROS` |
| `CtxInspectTool` | 컨텍스트 검사 | `CONTEXT_COLLAPSE` |
| `ListPeersTool` | 활성 피어 목록 | `UDS_INBOX` |
| `DiscoverSkillsTool` | 스킬 탐색 | `EXPERIMENTAL_SKILL_SEARCH` |
</details>
### 텍스트/프롬프트 리소스 (~6개 파일)
| File | 용도 |
|------|------|
| `yolo-classifier-prompts/auto_mode_system_prompt.txt` | auto 모드 분류기 시스템 프롬프트 |
| `yolo-classifier-prompts/permissions_anthropic.txt` | Anthropic 내부 권한 프롬프트 |
| `yolo-classifier-prompts/permissions_external.txt` | 외부 사용자 권한 프롬프트 |
| `verify/SKILL.md` | 검증 스킬 문서 |
| `verify/examples/cli.md` | CLI 검증 예시 |
| `verify/examples/server.md` | 서버 검증 예시 |
### 누락 이유
```
Anthropic 내부 모노레포 배포 npm 패키지
────────────────────── ─────────────────────
feature('DAEMON') → true ──빌드──→ feature('DAEMON') → false
↓ ↓
daemon/main.js ← 포함 ──번들──→ daemon/main.js ← 제거 (DCE)
tools/REPLTool ← 포함 ──번들──→ tools/REPLTool ← 제거 (DCE)
proactive/ ← 포함 ──번들──→ (참조만 있고 src/에 없음)
```
Bun의 `feature()`**컴파일 시점 내장 함수**:
- Anthropic 내부 빌드에서 `true` 반환 → 코드가 번들에 포함
- 배포 빌드에서 `false` 반환 → 데드 코드 제거
- 108개 모듈이 배포 아티팩트에 존재하지 않음
---
## 저작권 및 면책 조항
```
Copyright (c) Anthropic. All rights reserved.
이 저장소의 모든 소스 코드는 Anthropic과 Claude의 지적 재산입니다.
본 저장소는 기술 연구 및 교육 목적으로만 제공됩니다. 상업적 사용은 금지됩니다.
저작권자로서 본 저장소가 귀하의 권리를 침해한다고 판단되는 경우,
저장소 소유자에게 연락 주시면 즉시 삭제하겠습니다.
```
---
## 통계
| 항목 | 수량 |
|------|------|
| 소스 파일 (.ts/.tsx) | ~1,884 |
| 코드 라인 수 | ~512,664 |
| 최대 단일 파일 | `query.ts` (~785KB) |
| 내장 도구 | ~40개 이상 |
| 슬래시 명령 | ~80개 이상 |
| 의존성 (node_modules) | ~192개 패키지 |
| 런타임 | Bun (Node.js >= 18 번들로 컴파일) |
---
## 에이전트 모드
```
코어 루프
========
사용자 --> messages[] --> Claude API --> 응답
|
stop_reason == "tool_use"?
/ \
예 아니오
| |
도구 실행 텍스트 반환
tool_result 추가
루프 재진입 -----------------> messages[]
이것이 최소 에이전트 루프이다. Claude Code는 이 루프 위에
프로덕션급 하니스를 래핑한다: 권한, 스트리밍, 동시성,
압축, 서브에이전트, 영속화 및 MCP.
```
---
## 디렉터리 참조
```
src/
├── main.tsx # REPL 부트스트랩, 4,683줄
├── QueryEngine.ts # SDK/headless 쿼리 라이프사이클 엔진
├── query.ts # 메인 에이전트 루프 (785KB, 최대 파일)
├── Tool.ts # 도구 인터페이스 + buildTool 팩토리
├── Task.ts # 태스크 타입, ID, 상태 베이스 클래스
├── tools.ts # 도구 등록, 프리셋, 필터링
├── commands.ts # 슬래시 명령 정의
├── context.ts # 사용자 입력 컨텍스트
├── cost-tracker.ts # API 비용 누적
├── setup.ts # 최초 실행 설정 플로우
├── bridge/ # Claude Desktop / 원격 브릿지
│ ├── bridgeMain.ts # 세션 라이프사이클 매니저
│ ├── bridgeApi.ts # HTTP 클라이언트
│ ├── bridgeConfig.ts # 연결 설정
│ ├── bridgeMessaging.ts # 메시지 릴레이
│ ├── sessionRunner.ts # 프로세스 스폰
│ ├── jwtUtils.ts # JWT 갱신
│ ├── workSecret.ts # 인증 토큰
│ └── capacityWake.ts # 용량 기반 웨이크
├── cli/ # CLI 인프라
│ ├── handlers/ # 명령 핸들러
│ └── transports/ # I/O 전송 (stdio, structured)
├── commands/ # ~80개 슬래시 명령
├── components/ # React/Ink 터미널 UI
├── entrypoints/ # 앱 진입점
├── hooks/ # React hooks
├── services/ # 비즈니스 로직 레이어
├── state/ # 앱 상태
├── tasks/ # 태스크 구현
├── tools/ # 40개 이상 도구 구현
├── types/ # 타입 정의
├── utils/ # 유틸리티 (최대 디렉터리)
└── vendor/ # 네이티브 모듈 소스 스텁
```
---
## 아키텍처 개요
```
┌─────────────────────────────────────────────────────────────────────┐
│ 진입 레이어 │
│ cli.tsx ──> main.tsx ──> REPL.tsx (인터랙티브) │
│ └──> QueryEngine.ts (headless/SDK) │
└──────────────────────────────┬──────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 쿼리 엔진 │
│ submitMessage(prompt) ──> AsyncGenerator<SDKMessage> │
│ ├── fetchSystemPromptParts() ──> 시스템 프롬프트 조립 │
│ ├── processUserInput() ──> /명령 처리 │
│ ├── query() ──> 메인 에이전트 루프 │
│ │ ├── StreamingToolExecutor ──> 병렬 도구 실행 │
│ │ ├── autoCompact() ──> 컨텍스트 압축 │
│ │ └── runTools() ──> 도구 오케스트레이션 │
│ └── yield SDKMessage ──> 소비자에게 스트리밍 │
└──────────────────────────────┬──────────────────────────────────────┘
```
---
## 빌드 안내
이 소스는 **이 저장소에서 직접 컴파일할 수 없다**:
- `tsconfig.json`, 빌드 스크립트, Bun 번들러 설정이 없음
- `feature()` 호출은 Bun 컴파일 시점 내장 함수 — 번들링 시 해석됨
- `MACRO.VERSION`은 빌드 시 주입됨
- `process.env.USER_TYPE === 'ant'` 분기는 Anthropic 내부용
- 컴파일된 `cli.js`는 자체 완결형 12MB 번들, Node.js >= 18만 필요
**빌드 상세 안내는 [QUICKSTART.md](QUICKSTART.md) 참고.**
---
## 라이선스
이 저장소의 모든 소스 코드는 **Anthropic과 Claude**의 저작물입니다. 본 저장소는 기술 연구 및 교육 목적으로만 제공됩니다. 전체 라이선스 조건은 원본 npm 패키지를 참조하세요.