mirror of
https://github.com/sanbuphy/claude-code-source-code.git
synced 2026-04-03 11:34:54 +08:00
113 lines
4.9 KiB
Markdown
113 lines
4.9 KiB
Markdown
# 숨겨진 기능과 모델 코드네임
|
|
|
|
> 인터넷에 공개된 자료와 커뮤니티 토론을 바탕으로 정리된 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` | 스텁 | 숨겨진 플레이스홀더 |
|