init repo

This commit is contained in:
sanbuphy
2026-04-01 18:41:21 +08:00
commit ce8ca4a8e7
24 changed files with 5451 additions and 0 deletions

View File

@@ -0,0 +1,124 @@
# 텔레메트리 및 프라이버시 분석
> 인터넷에 공개된 자료와 커뮤니티 토론을 바탕으로 정리된 Claude Code v2.1.88 분석 보고서.
## 개요
Claude Code는 이중 분석 파이프라인을 통해 광범위한 환경 및 사용 메타데이터를 수집한다. 키로깅이나 사용자 코드 유출의 증거는 없으나, 수집 범위가 넓고 완전한 비활성화가 불가능하다는 점에서 프라이버시 우려가 존재한다.
## 데이터 파이프라인 구조
### 자사 로깅 (1P)
- **엔드포인트**: `https://api.anthropic.com/api/event_logging/batch`
- **프로토콜**: OpenTelemetry + Protocol Buffers
- **배치 크기**: 최대 200개 이벤트, 10초 간격 전송
- **재시도**: 이차 백오프, 최대 8회, 디스크 영속 저장
- **저장소**: 전송 실패 시 `~/.claude/telemetry/`에 저장
출처: `src/services/analytics/firstPartyEventLoggingExporter.ts`
### 서드파티 로깅 (Datadog)
- **엔드포인트**: `https://http-intake.logs.us5.datadoghq.com/api/v2/logs`
- **범위**: 사전 승인된 64개 이벤트 유형으로 제한
- **토큰**: `pubbbf48e6d78dae54bceaa4acf463299bf`
출처: `src/services/analytics/datadog.ts`
## 수집 항목
### 환경 핑거프린트
모든 이벤트에 다음 메타데이터가 포함된다 (`src/services/analytics/metadata.ts:417-452`):
```
- platform, platformRaw, arch, nodeVersion
- 터미널 유형
- 설치된 패키지 매니저 및 런타임
- CI/CD 감지, GitHub Actions 메타데이터
- WSL 버전, Linux 배포판, 커널 버전
- VCS(버전 관리 시스템) 유형
- Claude Code 버전 및 빌드 시각
- 배포 환경
```
### 프로세스 메트릭 (`metadata.ts:457-467`)
```
- uptime, rss, heapTotal, heapUsed
- CPU 사용량 및 사용률
- memory arrays 및 external allocations
```
### 사용자 추적 (`metadata.ts:472-496`)
```
- 사용 중인 모델
- 세션 ID, 사용자 ID, 디바이스 ID
- 계정 UUID, 조직 UUID
- 구독 등급 (max, pro, enterprise, team)
- 저장소 원격 URL 해시 (SHA256, 앞 16자)
- 에이전트 유형, 팀 이름, 부모 세션 ID
```
### 도구 입력 로깅
도구 입력은 기본적으로 잘린다:
```
- 문자열: 512자에서 잘림, 128자 + 생략부호로 표시
- JSON: 4,096자 제한
- 배열: 최대 20개 항목
- 중첩 객체: 최대 2단계 깊이
```
출처: `metadata.ts:236-241`
단, `OTEL_LOG_TOOL_DETAILS=1` 설정 시 **전체 도구 입력이 기록된다**.
출처: `metadata.ts:86-88`
### 파일 확장자 추적
`rm, mv, cp, touch, mkdir, chmod, chown, cat, head, tail, sort, stat, diff, wc, grep, rg, sed` 관련 Bash 명령에서 파일 인자의 확장자가 추출·기록된다.
출처: `metadata.ts:340-412`
## 비활성화 문제
자사 로깅 파이프라인은 직접 Anthropic API 사용자의 경우 **비활성화할 수 없다**.
```typescript
// src/services/analytics/firstPartyEventLogger.ts:141-144
export function is1PEventLoggingEnabled(): boolean {
return !isAnalyticsDisabled()
}
```
`isAnalyticsDisabled()`가 true를 반환하는 경우:
- 테스트 환경
- 서드파티 클라우드 제공자 (Bedrock, Vertex)
- 글로벌 텔레메트리 비활성화 (설정 UI에 노출되지 않음)
자사 이벤트 로깅을 비활성화하는 **사용자 대상 설정은 존재하지 않는다**.
## GrowthBook A/B 테스트
사용자는 명시적 동의 없이 GrowthBook을 통해 실험 그룹에 배정된다. 전송되는 사용자 속성:
```
- id, sessionId, deviceID
- platform, organizationUUID, subscriptionType
```
출처: `src/services/analytics/growthbook.ts`
## 핵심 요약
1. **수집량**: 세션당 수백 건의 이벤트가 수집된다
2. **비활성화 불가**: 직접 API 사용자는 자사 로깅을 끌 수 없다
3. **영속성**: 전송 실패 이벤트는 디스크에 저장되어 적극적으로 재시도된다
4. **서드파티 공유**: 데이터가 Datadog으로 전송된다
5. **도구 상세 백도어**: `OTEL_LOG_TOOL_DETAILS=1`로 전체 입력 로깅이 활성화된다
6. **저장소 핑거프린팅**: 저장소 URL이 해싱되어 서버 측 상관분석에 사용된다

View File

@@ -0,0 +1,112 @@
# 숨겨진 기능과 모델 코드네임
> 인터넷에 공개된 자료와 커뮤니티 토론을 바탕으로 정리된 Claude Code v2.1.88 분석 보고서.
## 모델 코드네임 체계
Anthropic은 내부 모델 코드네임으로 **동물 이름**을 사용한다. 외부 빌드로의 유출을 적극적으로 차단하고 있다.
### 알려진 코드네임
| 코드네임 | 역할 | 근거 |
|----------|------|------|
| **Tengu** (천구) | 제품/텔레메트리 접두사, 모델일 가능성 있음 | 250개 이상의 분석 이벤트 및 feature flag에 `tengu_*` 접두사로 사용 |
| **Capybara** (카피바라) | Sonnet 계열 모델, 현재 v8 | `capybara-v2-fast[1m]`, v8 동작 문제 패치 존재 |
| **Fennec** (페넥여우) | Opus 4.6 이전 모델 | 마이그레이션: `fennec-latest``opus` |
| **Numbat** (넘뱃) | 차기 모델 출시 예정 | 주석: "Remove this section when we launch numbat" |
### 코드네임 보호
`undercover` 모드에서 보호 대상 코드네임이 명시적으로 나열되어 있다:
```typescript
// src/utils/undercover.ts:48-49
NEVER include in commit messages or PR descriptions:
- Internal model codenames (animal names like Capybara, Tengu, etc.)
- Unreleased model version numbers (e.g., opus-4-7, sonnet-4-8)
```
빌드 시스템은 `scripts/excluded-strings.txt`를 사용하여 유출된 코드네임을 검출한다. Buddy 시스템의 종(species)은 `String.fromCharCode()`로 인코딩하여 canary 검출을 우회한다:
```typescript
// src/buddy/types.ts:10-13
// One species name collides with a model-codename canary in excluded-strings.txt.
// The check greps build output (not source), so runtime-constructing the value keeps
// the literal out of the bundle while the check stays armed for the actual codename.
```
충돌하는 종은 **capybara** — 펫 종이자 모델 코드네임이다.
### Capybara 동작 이슈 (v8)
아키텍처에서 Capybara v8의 구체적 동작 문제가 확인된다:
1. **Stop sequence 오발동** (프롬프트 끝에 `<functions>` 있을 때 ~10% 발생)
- 출처: `src/utils/messages.ts:2141`
2. **빈 tool_result 시 출력 없음**
- 출처: `src/utils/toolResultStorage.ts:281`
3. **과도한 주석 삽입** — 전용 주석 방지 프롬프트 패치 필요
- 출처: `src/constants/prompts.ts:204`
4. **높은 허위 주장 비율**: v8은 29-30%, v4는 16.7%
- 출처: `src/constants/prompts.ts:237`
5. **불충분한 검증** — "철저함 보정값(thoroughness counterweight)" 필요
- 출처: `src/constants/prompts.ts:210`
## Feature Flag 명명 규칙
모든 feature flag는 `tengu_` 접두사에 **무작위 단어 조합**을 사용하여 목적을 난독화한다:
| Flag | 용도 |
|------|------|
| `tengu_onyx_plover` | Auto Dream (백그라운드 기억 통합) |
| `tengu_coral_fern` | memdir 기능 |
| `tengu_moth_copse` | memdir 추가 스위치 |
| `tengu_herring_clock` | Team memory |
| `tengu_passport_quail` | Path 기능 |
| `tengu_slate_thimble` | memdir 추가 스위치 |
| `tengu_sedge_lantern` | Away Summary |
| `tengu_frond_boric` | 분석 킬스위치 |
| `tengu_amber_quartz_disabled` | 음성 모드 킬스위치 |
| `tengu_amber_flint` | Agent teams |
| `tengu_hive_evidence` | 검증 에이전트 |
무작위 단어 패턴(형용사/재질 + 자연/사물)은 외부 관찰자가 flag 이름만으로 기능 목적을 추론하는 것을 방지한다.
## 내부 사용자와 외부 사용자 차이
Anthropic 직원(`USER_TYPE === 'ant'`)은 상당히 다른 대우를 받는다:
### 프롬프트 차이 (`src/constants/prompts.ts`)
| 항목 | 외부 사용자 | 내부 사용자 (ant) |
|------|------------|------------------|
| 출력 스타일 | "Be extra concise" (극도로 간결하게) | "Err on the side of more explanation" (설명을 더 하는 쪽으로) |
| 허위 주장 대응 | 없음 | 전용 Capybara v8 패치 적용 |
| 수치적 길이 기준 | 없음 | "도구 사이 ≤25단어, 최종 답변 ≤100단어" |
| 검증 에이전트 | 없음 | 비자명한 변경에 필수 적용 |
| 주석 가이드 | 일반적 | 전용 과잉 주석 방지 프롬프트 |
| 선제적 교정 | 없음 | "사용자에게 오해가 있으면 지적" |
### 도구 접근
내부 사용자만 접근 가능한 도구:
- `REPLTool` — REPL 모드
- `SuggestBackgroundPRTool` — 백그라운드 PR 제안
- `TungstenTool` — 성능 모니터링 패널
- `VerifyPlanExecutionTool` — 계획 실행 검증
- Agent 중첩 (에이전트가 에이전트를 생성)
## 숨겨진 명령어
| 명령어 | 상태 | 설명 |
|--------|------|------|
| `/btw` | 활성 | 작업 중단 없이 곁다리 질문 |
| `/stickers` | 활성 | Claude Code 스티커 주문 (브라우저 열림) |
| `/thinkback` | 활성 | 2025 연말 회고 |
| `/effort` | 활성 | 모델 노력 수준 설정 |
| `/good-claude` | 스텁 | 숨겨진 플레이스홀더 |
| `/bughunter` | 스텁 | 숨겨진 플레이스홀더 |

View File

@@ -0,0 +1,110 @@
# 언더커버 모드 분석
> 인터넷에 공개된 자료와 커뮤니티 토론을 바탕으로 정리된 Claude Code v2.1.88 분석 보고서.
## 언더커버 모드란?
언더커버 모드는 공식 직원이 외부/오픈소스 저장소에서 작업할 때 사용되는 안전 보호 메커니즘입니다. 활성화되면 내부 특화 AI 모델 정보와 저작 표시를 숨겨 제출된 코드가 인간 개발자의 기여와 동일하게 보이도록 합니다. 이는 주로 내부 기밀 및 미출시 모델의 이름이 오픈소스 커뮤니티에 유출되는 것을 방지하기 위함입니다.
출처: `src/utils/undercover.ts`
## 활성화 조건
```typescript
// src/utils/undercover.ts:28-37
export function isUndercover(): boolean {
if (process.env.USER_TYPE === 'ant') {
if (isEnvTruthy(process.env.CLAUDE_CODE_UNDERCOVER)) return true
// Auto: 내부 저장소로 확인되지 않으면 자동 활성화
return getRepoClassCached() !== 'internal'
}
return false
}
```
주요 특성:
- **내부 전용**: 공식 직원(`USER_TYPE === 'ant'`)만 해당
- **기본 활성화**: 내부 허용 목록에 없는 모든 저장소에서 자동 활성화
- **강제 비활성화 불가**: "There is NO force-OFF. This guards against model codename leaks"
- **외부 빌드**: 번들러에 의해 데드 코드 제거됨; 실행되지 않음
## 모델에 전달되는 프롬프트
```typescript
// src/utils/undercover.ts:39-69
export function getUndercoverInstructions(): string {
return `## UNDERCOVER MODE — CRITICAL
You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository. Your commit
messages, PR titles, and PR bodies MUST NOT contain ANY Anthropic-internal
information. Do not blow your cover.
NEVER include in commit messages or PR descriptions:
- Internal model codenames (animal names like Capybara, Tengu, etc.)
- Unreleased model version numbers (e.g., opus-4-7, sonnet-4-8)
- Internal repo or project names (e.g., claude-cli-internal, anthropics/…)
- Internal tooling, Slack channels, or short links (e.g., go/cc, #claude-code-…)
- The phrase "Claude Code" or any mention that you are an AI
- Any hint of what model or version you are
- Co-Authored-By lines or any other attribution
Write commit messages as a human developer would — describe only what the code
change does.
GOOD:
- "Fix race condition in file watcher initialization"
- "Add support for custom key bindings"
BAD (never write these):
- "Fix bug found while testing with Claude Capybara"
- "1-shotted by claude-opus-4-6"
- "Generated with Claude Code"
- "Co-Authored-By: Claude Opus 4.6 <…>"`
}
```
## 저작 표시 시스템
저작 표시 시스템(`src/utils/attribution.ts`, `src/utils/commitAttribution.ts`)은 언더커버 모드를 보완한다:
```typescript
// src/utils/attribution.ts:70-72
// @[MODEL LAUNCH]: 아래 하드코딩된 폴백 모델 이름 업데이트
// (코드네임 유출 방지용).
// 외부 저장소에서 인식되지 않는 모델은 "Claude Opus 4.6"으로 폴백.
```
```typescript
// src/utils/model/model.ts:386-392
function maskModelCodename(baseName: string): string {
// e.g. capybara-v2-fast → cap*****-v2-fast
const [codename = '', ...rest] = baseName.split('-')
const masked = codename.slice(0, 3) + '*'.repeat(Math.max(0, codename.length - 3))
return [masked, ...rest].join('-')
}
```
## 시사점
### 오픈소스에 대한 영향
공식 직원이 Claude Code로 오픈소스 프로젝트에 기여할 때:
1. AI가 코드를 작성하지만 커밋은 사람이 작성한 것으로 표시된다
2. "Co-Authored-By: Claude" 저작 표시가 없다
3. "Generated with Claude Code" 마커가 없다
4. 프로젝트 메인테이너와 커뮤니티는 AI 생성 기여를 식별할 수 없다
5. 이는 AI 기여에 관한 오픈소스 투명성 규범을 잠재적으로 위반한다
### 공식 보호 목적
명시된 주요 목적은 다음의 우발적 유출 방지:
- 내부 모델 코드네임 (경쟁 정보)
- 미공개 버전 번호 (시장 타이밍)
- 내부 인프라 세부 정보 (보안)
### 윤리적 고려사항
"Do not blow your cover(정체를 들키지 마라)"라는 표현은 AI를 잠입 요원으로 프레이밍한다. 공개 코드 기여에서의 의도적인 AI 저작 은폐는 다음과 같은 질문을 제기한다:
- 오픈소스 커뮤니티에서의 투명성
- 프로젝트 기여 가이드라인 준수 여부
- 영업비밀 보호와 기만 사이의 경계

View File

@@ -0,0 +1,161 @@
# 원격 제어 및 킬스위치
> 인터넷에 공개된 자료와 커뮤니티 토론을 바탕으로 정리된 Claude Code v2.1.88 분석 보고서.
## 개요
Claude Code는 공식 관리자(및 기업 관리자)가 원격 구성을 통해 클라이언트의 특정 동작을 관리하고 업데이트하여 시스템 보안 및 기업 규정 준수를 보장할 수 있는 원격 관리 메커니즘을 구현하고 있습니다.
## 1. 원격 관리 설정
### 구조
자격이 있는 모든 세션은 다음에서 설정을 가져온다:
```
GET /api/claude_code/settings
```
출처: `src/services/remoteManagedSettings/index.ts:105-107`
### 폴링 동작
```typescript
// src/services/remoteManagedSettings/index.ts:52-54
const SETTINGS_TIMEOUT_MS = 10000
const DEFAULT_MAX_RETRIES = 5
const POLLING_INTERVAL_MS = 60 * 60 * 1000 // 1시간
```
설정은 1시간마다 폴링되며, 실패 시 최대 5회 재시도한다.
### 대상 자격
- Console 사용자 (API 키): 전원 대상
- OAuth 사용자: Enterprise/C4E 및 Team 구독자만 해당
### 수락 강제 다이얼로그
원격 설정에 "위험한" 변경이 포함되면 차단 다이얼로그가 표시된다:
```typescript
// src/services/remoteManagedSettings/securityCheck.tsx:67-73
export function handleSecurityCheckResult(result: SecurityCheckResult): boolean {
if (result === 'rejected') {
gracefulShutdownSync(1) // 종료 코드 1로 종료
return false
}
return true
}
```
원격 설정을 거부하면 애플리케이션이 **강제 종료된다**. 선택지는 원격 설정 수락 또는 Claude Code 종료뿐이다.
### 장애 시 동작
원격 서버 접근이 불가능하면 디스크 캐시 설정을 사용한다:
```typescript
// src/services/remoteManagedSettings/index.ts:433-436
if (cachedSettings) {
logForDebugging('Remote settings: Using stale cache after fetch failure')
setSessionCache(cachedSettings)
return cachedSettings
}
```
원격 설정이 한 번 적용되면, 서버 장애 시에도 캐시가 유지된다.
## 2. Feature Flag 킬스위치
GrowthBook feature flag를 통해 여러 기능을 원격 비활성화할 수 있다:
### 권한 우회 킬스위치
```typescript
// src/utils/permissions/bypassPermissionsKillswitch.ts
// Statsig 게이트를 확인하여 권한 우회를 비활성화
```
사용자 동의 없이 권한 우회 기능을 비활성화할 수 있다.
### Auto 모드 서킷 브레이커
```typescript
// src/utils/permissions/autoModeState.ts
// autoModeCircuitBroken 상태로 auto 모드 재진입을 차단
```
Auto 모드를 원격으로 비활성화할 수 있다.
### Fast 모드 킬스위치
```typescript
// src/utils/fastMode.ts
// /api/claude_code_penguin_mode 에서 조회
// 특정 사용자의 fast 모드를 영구 비활성화 가능
```
### 분석 싱크 킬스위치
```typescript
// src/services/analytics/sinkKillswitch.ts:4
const SINK_KILLSWITCH_CONFIG_NAME = 'tengu_frond_boric'
```
모든 분석 출력을 원격으로 중단할 수 있다.
### Agent Teams 킬스위치
```typescript
// src/utils/agentSwarmsEnabled.ts
// 환경 변수와 GrowthBook 게이트 'tengu_amber_flint' 모두 필요
```
### 음성 모드 킬스위치
```typescript
// src/voice/voiceModeEnabled.ts:21
// 'tengu_amber_quartz_disabled' — 음성 모드 긴급 차단
```
## 3. 모델 오버라이드 시스템
카나리 테스트를 수행하거나 예상치 못한 온라인 상황에 대응하기 위해 시스템은 내부 직원과 같은 특정 그룹에 대해 모델 버전을 동적으로 전환하는 것을 지원합니다:
```typescript
// src/utils/model/antModels.ts:32-33
// @[MODEL LAUNCH]: tengu_ant_model_override에 새 ant 전용 모델 업데이트
// @[MODEL LAUNCH]: 코드네임을 scripts/excluded-strings.txt에 추가
```
`tengu_ant_model_override` GrowthBook flag로 가능한 작업:
- 기본 모델 설정
- 기본 노력 수준 설정
- 시스템 프롬프트에 내용 추가
- 커스텀 모델 별칭 정의
## 4. Penguin 모드
Fast 모드 상태는 전용 엔드포인트에서 조회한다:
```typescript
// src/utils/fastMode.ts
// GET /api/claude_code_penguin_mode
// API가 비활성화를 응답하면 해당 사용자에게 영구 비활성화
```
Fast 모드 가용성을 제어하는 feature flag:
- `tengu_penguins_off`
- `tengu_marble_sandcastle`
## 요약
| 메커니즘 | 범위 | 사용자 동의 |
|----------|------|------------|
| 원격 관리 설정 | Enterprise/Team | 수락 또는 종료 |
| GrowthBook feature flag | 전체 사용자 | 없음 |
| 킬스위치 | 전체 사용자 | 없음 |
| 모델 오버라이드 | 내부 (ant) | 없음 |
| Fast 모드 제어 | 전체 사용자 | 없음 |
원격 제어 인프라는 광범위합니다. 기업 관리자는 사용자가 재정의할 수 없는 정책을 강제할 수 있으며, 시스템은 중대한 문제를 해결하기 위해 기능 플래그(feature flags)를 통해 모든 사용자의 동작을 원격으로 변경할 수 있습니다.

View File

@@ -0,0 +1,167 @@
# 향후 로드맵 — 아키텍처에서 드러난 내용
> 인터넷에 공개된 자료와 커뮤니티 토론을 바탕으로 정리된 Claude Code v2.1.88 분석 보고서.
## 1. 차기 모델: Numbat
차기 모델 출시의 가장 구체적인 근거:
```typescript
// src/constants/prompts.ts:402
// @[MODEL LAUNCH]: Remove this section when we launch numbat.
```
**Numbat**(넘뱃)은 차기 모델의 코드네임이다. 이 주석은 Numbat 출시 시 출력 효율성 섹션이 개정될 것임을 나타내며, 더 나은 네이티브 출력 제어를 갖출 가능성을 시사한다.
### 향후 버전 번호
```typescript
// src/utils/undercover.ts:49
- Unreleased model version numbers (e.g., opus-4-7, sonnet-4-8)
```
**Opus 4.7**과 **Sonnet 4.8**이 개발 중이다.
### 코드네임 변천
```
Fennec (페넥여우) → Opus 4.6 → [Numbat?]
Capybara (카피바라) → Sonnet v8 → [?]
Tengu (천구) → 텔레메트리/제품 접두사
```
Fennec에서 Opus로의 마이그레이션이 문서화되어 있다:
```typescript
// src/migrations/migrateFennecToOpus.ts:7-11
// fennec-latest → opus
// fennec-latest[1m] → opus[1m]
// fennec-fast-latest → opus[1m] + fast mode
```
### MODEL LAUNCH 체크리스트
코드베이스에는 업데이트할 항목을 나열한 20개 이상의 `@[MODEL LAUNCH]` 마커가 있다:
- 기본 모델 이름 (`FRONTIER_MODEL_NAME`)
- 모델 패밀리 ID
- 지식 기준일(knowledge cutoff)
- 가격표
- 컨텍스트 윈도우 설정
- Thinking 모드 지원 플래그
- 표시 이름 매핑
- 마이그레이션 스크립트
## 2. KAIROS — 자율 에이전트 모드
최대 규모의 미공개 기능으로, KAIROS는 Claude Code를 반응형 어시스턴트에서 능동적 자율 에이전트로 변환한다.
### 시스템 프롬프트 (발췌)
```
// src/constants/prompts.ts:860-913
You are running autonomously.
You will receive <tick> prompts that keep you alive between turns.
If you have nothing useful to do, call SleepTool.
Bias toward action — read files, make changes, commit without asking.
## Terminal focus
- Unfocused: The user is away. Lean heavily into autonomous action.
- Focused: The user is watching. Be more collaborative.
```
### 관련 도구
| 도구 | Feature Flag | 용도 |
|------|-------------|------|
| SleepTool | KAIROS / PROACTIVE | 자율 동작 간 페이싱 제어 |
| SendUserFileTool | KAIROS | 사용자에게 파일 선제 전송 |
| PushNotificationTool | KAIROS / KAIROS_PUSH_NOTIFICATION | 사용자 기기에 푸시 알림 |
| SubscribePRTool | KAIROS_GITHUB_WEBHOOKS | GitHub PR 웹훅 이벤트 구독 |
| BriefTool | KAIROS_BRIEF | 선제적 상태 업데이트 |
### 동작 방식
- `<tick>` 하트비트 프롬프트로 작동
- 터미널 포커스 상태에 따라 자율성 수준 조정
- 독립적으로 커밋, 푸시, 의사결정 가능
- 선제적 알림 및 상태 업데이트 전송
- GitHub PR 변경사항 모니터링
## 3. 음성 모드
Push-to-talk 음성 입력이 완전 구현되어 있으나 `VOICE_MODE` feature flag로 차단되어 있다.
```typescript
// src/voice/voiceModeEnabled.ts
// Anthropic의 voice_stream WebSocket 엔드포인트에 연결
// conversation_engine 기반 모델로 음성-텍스트 변환
// 키 바인딩을 길게 눌러 녹음, 놓으면 전송
```
- OAuth 전용 (API 키 / Bedrock / Vertex 미지원)
- WebSocket 연결에 mTLS 사용
- 킬스위치: `tengu_amber_quartz_disabled`
## 4. 미공개 도구
아키텍처에 존재하지만 외부 사용자에게 아직 활성화되지 않은 도구:
| 도구 | Feature Flag | 설명 |
|------|-------------|------|
| **WebBrowserTool** | `WEB_BROWSER_TOOL` | 내장 브라우저 자동화 (코드네임: bagel) |
| **TerminalCaptureTool** | `TERMINAL_PANEL` | 터미널 패널 캡처 및 모니터링 |
| **WorkflowTool** | `WORKFLOW_SCRIPTS` | 사전 정의된 워크플로우 스크립트 실행 |
| **MonitorTool** | `MONITOR_TOOL` | 시스템/프로세스 모니터링 |
| **SnipTool** | `HISTORY_SNIP` | 대화 히스토리 잘라내기/축소 |
| **ListPeersTool** | `UDS_INBOX` | Unix 도메인 소켓 피어 탐색 |
| **RemoteTriggerTool** | `AGENT_TRIGGERS_REMOTE` | 원격 에이전트 트리거 |
| **TungstenTool** | ant 전용 | 내부 성능 모니터링 패널 |
| **VerifyPlanExecutionTool** | VERIFY_PLAN env | 계획 실행 검증 |
| **OverflowTestTool** | `OVERFLOW_TEST_TOOL` | 컨텍스트 오버플로우 테스트 |
| **SubscribePRTool** | `KAIROS_GITHUB_WEBHOOKS` | GitHub PR 웹훅 구독 |
## 5. Coordinator 모드
멀티 에이전트 조율 시스템:
```typescript
// src/coordinator/coordinatorMode.ts
// Feature flag: COORDINATOR_MODE
```
공유 상태와 메시징을 통한 다수 에이전트 간 조율된 작업 실행을 지원한다.
## 6. Buddy 시스템 (가상 펫)
완전한 펫 동반자 시스템이 구현되어 있으나 아직 출시되지 않았다:
- **18종**: duck, goose, blob, cat, dragon, octopus, owl, penguin, turtle, snail, ghost, axolotl, capybara, cactus, robot, rabbit, mushroom, chonk
- **5단계 희귀도**: Common (60%), Uncommon (25%), Rare (10%), Epic (4%), Legendary (1%)
- **7종 모자**: crown, tophat, propeller, halo, wizard, beanie, tinyduck
- **5가지 스탯**: DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK
- **1% 반짝이 확률**: 모든 종의 Sparkle 변형
- **결정론적 생성**: 사용자 ID 해시 기반
출처: `src/buddy/`
## 7. Dream Task
백그라운드 기억 통합 서브에이전트:
```
// src/tasks/DreamTask/
// 백그라운드에서 동작하는 자동 드리밍 기능
// 'tengu_onyx_plover' feature flag로 제어
```
유휴 시간 중 AI가 자율적으로 기억을 처리하고 통합할 수 있게 한다.
## 요약: 세 가지 방향
1. **신규 모델**: Numbat (차기), Opus 4.7, Sonnet 4.8 개발 중
2. **자율 에이전트**: KAIROS 모드 — 무인 운영, 선제적 행동, 푸시 알림
3. **멀티모달**: 음성 입력 준비 완료, 브라우저 도구 대기 중, 워크플로우 자동화 예정
Claude Code는 **코딩 어시스턴트**에서 **상시 가동 자율 개발 에이전트**로 진화하고 있다.