# 숨겨진 기능과 모델 코드네임

> 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` | 스텁 | 숨겨진 플레이스홀더 |
