Skip to content

Commit b61a296

Browse files
committed
Add Japanese and Korean README, docs translations, and language links
1 parent 3da94d5 commit b61a296

14 files changed

Lines changed: 2006 additions & 3 deletions

README.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
> Extracted from npm package `@anthropic-ai/claude-code` version **2.1.88**.
66
> The published package ships a single bundled `cli.js` (~12MB). The `src/` directory in this repo contains the **unbundled TypeScript source** extracted from the npm tarball.
77
8-
**Language**: **English** | [中文](README_CN.md)
8+
**Language**: **English** | [中文](README_CN.md) | [한국어](README_KR.md) | [日本語](README_JA.md)
99

1010
---
1111

@@ -22,7 +22,7 @@
2222

2323
## Deep Analysis Reports (`docs/`)
2424

25-
Source code analysis reports derived from decompiled v2.1.88. Bilingual (EN/ZH).
25+
Source code analysis reports derived from decompiled v2.1.88. Quadrilingual (EN/JA/KO/ZH).
2626

2727
```
2828
docs/
@@ -33,6 +33,20 @@ docs/
3333
│ ├── [04-remote-control-and-killswitches.md]# Remote Control — managed settings, killswitches, model overrides
3434
│ └── [05-future-roadmap.md] # Future Roadmap — Numbat, KAIROS, voice mode, unreleased tools
3535
36+
├── ja/ # 日本語
37+
│ ├── [01-テレメトリとプライバシー.md] # テレメトリとプライバシー — 収集項目、無効化不可の理由
38+
│ ├── [02-隠し機能とコードネーム.md] # 隠し機能 — モデルコードネーム、feature flag、内部/外部ユーザーの違い
39+
│ ├── [03-アンダーカバーモード.md] # アンダーカバーモード — オープンソースでのAI著作隠匿
40+
│ ├── [04-リモート制御とキルスイッチ.md] # リモート制御 — 管理設定、キルスイッチ、モデルオーバーライド
41+
│ └── [05-今後のロードマップ.md] # 今後のロードマップ — Numbat、KAIROS、音声モード、未公開ツール
42+
43+
├── ko/ # 한국어
44+
│ ├── [01-텔레메트리와-프라이버시.md] # 텔레메트리 및 프라이버시 — 수집 항목, 비활성화 불가 이유
45+
│ ├── [02-숨겨진-기능과-코드네임.md] # 숨겨진 기능 — 모델 코드네임, feature flag, 내부/외부 사용자 차이
46+
│ ├── [03-언더커버-모드.md] # 언더커버 모드 — 오픈소스에서 AI 저작 은폐
47+
│ ├── [04-원격-제어와-킬스위치.md] # 원격 제어 — 관리 설정, 킬스위치, 모델 오버라이드
48+
│ └── [05-향후-로드맵.md] # 향후 로드맵 — Numbat, KAIROS, 음성 모드, 미공개 도구
49+
3650
└── zh/ # 中文
3751
├── [01-遥测与隐私分析.md] # 遥测与隐私 — 收集了什么,为什么无法退出
3852
├── [02-隐藏功能与模型代号.md] # 隐藏功能 — 模型代号,feature flag,内外用户差异

README_CN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
> 从 npm 包 `@anthropic-ai/claude-code` **2.1.88** 版本中提取。
66
> 发布的包只有一个打包后的 `cli.js`~12MB)。本仓库的 `src/` 目录包含从 npm 包中解包的 **TypeScript 源码**
77
8-
**语言**: [English](README.md) | **中文**
8+
**语言**: [English](README.md) | **中文** | [한국어](README_KR.md) | [日本語](README_JA.md)
99

1010
---
1111

README_JA.md

Lines changed: 324 additions & 0 deletions
Large diffs are not rendered by default.

README_KR.md

Lines changed: 317 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# テレメトリおよびプライバシー分析
2+
3+
> Claude Code v2.1.88 デコンパイルソースコード分析に基づく。
4+
5+
## 概要
6+
7+
Claude Codeは二層の分析パイプラインを実装し、広範な環境情報と使用メタデータを収集している。キーロギングやソースコード流出の証拠はないが、収集範囲の広さと完全な無効化が不可能な点にプライバシー上の懸念がある。
8+
9+
## データパイプライン構成
10+
11+
### ファーストパーティロギング(1P)
12+
13+
- **エンドポイント**: `https://api.anthropic.com/api/event_logging/batch`
14+
- **プロトコル**: OpenTelemetry + Protocol Buffers
15+
- **バッチサイズ**: 最大200イベント、10秒間隔で送信
16+
- **リトライ**: 二次バックオフ、最大8回、ディスク永続化
17+
- **ストレージ**: 送信失敗時 `~/.claude/telemetry/` に保存
18+
19+
出典: `src/services/analytics/firstPartyEventLoggingExporter.ts`
20+
21+
### サードパーティロギング(Datadog)
22+
23+
- **エンドポイント**: `https://http-intake.logs.us5.datadoghq.com/api/v2/logs`
24+
- **対象**: 事前承認済みの64種類のイベントに限定
25+
- **トークン**: `pubbbf48e6d78dae54bceaa4acf463299bf`
26+
27+
出典: `src/services/analytics/datadog.ts`
28+
29+
## 収集項目
30+
31+
### 環境フィンガープリント
32+
33+
すべてのイベントに以下のメタデータが含まれる(`src/services/analytics/metadata.ts:417-452`):
34+
35+
```
36+
- platform, platformRaw, arch, nodeVersion
37+
- ターミナル種別
38+
- インストール済みパッケージマネージャとランタイム
39+
- CI/CD検出、GitHub Actionsメタデータ
40+
- WSLバージョン、Linuxディストリビューション、カーネルバージョン
41+
- VCS(バージョン管理システム)種別
42+
- Claude Codeバージョンとビルド日時
43+
- デプロイ環境
44+
```
45+
46+
### プロセスメトリクス(`metadata.ts:457-467`
47+
48+
```
49+
- uptime, rss, heapTotal, heapUsed
50+
- CPU使用量と使用率
51+
- memory arraysとexternal allocations
52+
```
53+
54+
### ユーザー追跡(`metadata.ts:472-496`
55+
56+
```
57+
- 使用中のモデル
58+
- セッションID、ユーザーID、デバイスID
59+
- アカウントUUID、組織UUID
60+
- サブスクリプション等級(max, pro, enterprise, team)
61+
- リポジトリリモートURLハッシュ(SHA256、先頭16文字)
62+
- エージェント種別、チーム名、親セッションID
63+
```
64+
65+
### ツール入力ロギング
66+
67+
ツール入力はデフォルトで切り詰められる:
68+
69+
```
70+
- 文字列: 512文字で切り詰め、128文字+省略記号で表示
71+
- JSON: 4,096文字制限
72+
- 配列: 最大20要素
73+
- ネストオブジェクト: 最大2階層
74+
```
75+
76+
出典: `metadata.ts:236-241`
77+
78+
ただし、`OTEL_LOG_TOOL_DETAILS=1` 設定時は**ツール入力がすべて記録される**
79+
80+
出典: `metadata.ts:86-88`
81+
82+
### ファイル拡張子追跡
83+
84+
`rm, mv, cp, touch, mkdir, chmod, chown, cat, head, tail, sort, stat, diff, wc, grep, rg, sed` 関連のBashコマンドで、ファイル引数の拡張子が抽出・記録される。
85+
86+
出典: `metadata.ts:340-412`
87+
88+
## 無効化の問題
89+
90+
ファーストパーティロギングパイプラインは、直接Anthropic APIユーザーの場合**無効化できない**
91+
92+
```typescript
93+
// src/services/analytics/firstPartyEventLogger.ts:141-144
94+
export function is1PEventLoggingEnabled(): boolean {
95+
return !isAnalyticsDisabled()
96+
}
97+
```
98+
99+
`isAnalyticsDisabled()` がtrueを返すケース:
100+
- テスト環境
101+
- サードパーティクラウドプロバイダ(Bedrock, Vertex)
102+
- グローバルテレメトリ無効化(設定UIに非公開)
103+
104+
ファーストパーティイベントロギングを無効化する**ユーザー向け設定は存在しない**
105+
106+
## GrowthBook A/Bテスト
107+
108+
ユーザーは明示的な同意なくGrowthBookを通じて実験グループに割り当てられる。送信されるユーザー属性:
109+
110+
```
111+
- id, sessionId, deviceID
112+
- platform, organizationUUID, subscriptionType
113+
```
114+
115+
出典: `src/services/analytics/growthbook.ts`
116+
117+
## 要点
118+
119+
1. **収集量**: セッションあたり数百件のイベントが収集される
120+
2. **無効化不可**: 直接APIユーザーはファーストパーティロギングを停止できない
121+
3. **永続性**: 送信失敗イベントはディスクに保存され積極的にリトライされる
122+
4. **サードパーティ共有**: データがDatadogに送信される
123+
5. **ツール詳細バックドア**: `OTEL_LOG_TOOL_DETAILS=1` で全入力ロギングが有効化される
124+
6. **リポジトリフィンガープリント**: リポジトリURLがハッシュ化されサーバー側の相関分析に使用される
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# 隠し機能とモデルコードネーム
2+
3+
> Claude Code v2.1.88 デコンパイルソースコード分析に基づく。
4+
5+
## モデルコードネーム体系
6+
7+
Anthropicは内部モデルコードネームに**動物名**を使用している。外部ビルドへの漏洩を積極的に防止している。
8+
9+
### 既知のコードネーム
10+
11+
| コードネーム | 役割 | 根拠 |
12+
|-------------|------|------|
13+
| **Tengu**(天狗) | 製品/テレメトリ接頭辞、モデルの可能性あり | 250以上の分析イベントとfeature flagに `tengu_*` 接頭辞で使用 |
14+
| **Capybara**(カピバラ) | Sonnet系モデル、現在v8 | `capybara-v2-fast[1m]`、v8動作問題のパッチあり |
15+
| **Fennec**(フェネック) | Opus 4.6の前身モデル | マイグレーション: `fennec-latest``opus` |
16+
| **Numbat**(ナンバット) | 次期モデル | コメント: "Remove this section when we launch numbat" |
17+
18+
### コードネーム保護
19+
20+
`undercover` モードで保護対象コードネームが明示されている:
21+
22+
```typescript
23+
// src/utils/undercover.ts:48-49
24+
NEVER include in commit messages or PR descriptions:
25+
- Internal model codenames (animal names like Capybara, Tengu, etc.)
26+
- Unreleased model version numbers (e.g., opus-4-7, sonnet-4-8)
27+
```
28+
29+
ビルドシステムは `scripts/excluded-strings.txt` を使用してコードネームの漏洩を検出する。Buddyシステムの種(species)は `String.fromCharCode()` でエンコードし、カナリア検出を回避している:
30+
31+
```typescript
32+
// src/buddy/types.ts:10-13
33+
// One species name collides with a model-codename canary in excluded-strings.txt.
34+
// The check greps build output (not source), so runtime-constructing the value keeps
35+
// the literal out of the bundle while the check stays armed for the actual codename.
36+
```
37+
38+
衝突する種は **capybara** — ペットの種でありモデルコードネームでもある。
39+
40+
### Capybara動作問題(v8)
41+
42+
ソースコードからCapybara v8の具体的な動作問題が確認される:
43+
44+
1. **Stop sequenceの誤発動**(プロンプト末尾に `<functions>` がある場合、約10%の発生率)
45+
- 出典: `src/utils/messages.ts:2141`
46+
47+
2. **空のtool_resultで出力ゼロ**
48+
- 出典: `src/utils/toolResultStorage.ts:281`
49+
50+
3. **コメント過剰挿入** — 専用コメント抑制プロンプトパッチが必要
51+
- 出典: `src/constants/prompts.ts:204`
52+
53+
4. **高い虚偽主張率**: v8は29-30%、v4は16.7%
54+
- 出典: `src/constants/prompts.ts:237`
55+
56+
5. **不十分な検証** — "徹底度カウンターウェイト(thoroughness counterweight)"が必要
57+
- 出典: `src/constants/prompts.ts:210`
58+
59+
## Feature Flag命名規則
60+
61+
すべてのfeature flagは `tengu_` 接頭辞に**ランダムな単語ペア**を使用し、目的を難読化している:
62+
63+
| Flag | 用途 |
64+
|------|------|
65+
| `tengu_onyx_plover` | Auto Dream(バックグラウンド記憶統合) |
66+
| `tengu_coral_fern` | memdir機能 |
67+
| `tengu_moth_copse` | memdir追加スイッチ |
68+
| `tengu_herring_clock` | Team memory |
69+
| `tengu_passport_quail` | Path機能 |
70+
| `tengu_slate_thimble` | memdir追加スイッチ |
71+
| `tengu_sedge_lantern` | Away Summary |
72+
| `tengu_frond_boric` | 分析キルスイッチ |
73+
| `tengu_amber_quartz_disabled` | 音声モードキルスイッチ |
74+
| `tengu_amber_flint` | Agent teams |
75+
| `tengu_hive_evidence` | 検証エージェント |
76+
77+
ランダムな単語パターン(形容詞/素材 + 自然/物体)により、外部の観察者がflag名から機能の目的を推測することを防ぐ。
78+
79+
## 内部ユーザーと外部ユーザーの違い
80+
81+
Anthropic社員(`USER_TYPE === 'ant'`)は大幅に優遇されている:
82+
83+
### プロンプトの違い(`src/constants/prompts.ts`
84+
85+
| 項目 | 外部ユーザー | 内部ユーザー(ant) |
86+
|------|------------|-------------------|
87+
| 出力スタイル | "Be extra concise"(極めて簡潔に) | "Err on the side of more explanation"(説明を多めに) |
88+
| 虚偽主張対策 | なし | 専用Capybara v8パッチ適用 |
89+
| 数値的長さ基準 | なし | "ツール間≤25単語、最終回答≤100単語" |
90+
| 検証エージェント | なし | 非自明な変更に必須 |
91+
| コメントガイド | 一般的 | 専用コメント過剰防止プロンプト |
92+
| 先制的修正 | なし | "ユーザーに誤解があれば指摘する" |
93+
94+
### ツールアクセス
95+
96+
内部ユーザーのみアクセス可能なツール:
97+
- `REPLTool` — REPLモード
98+
- `SuggestBackgroundPRTool` — バックグラウンドPR提案
99+
- `TungstenTool` — パフォーマンス監視パネル
100+
- `VerifyPlanExecutionTool` — 計画実行検証
101+
- Agent入れ子(エージェントがエージェントを生成)
102+
103+
## 隠しコマンド
104+
105+
| コマンド | 状態 | 説明 |
106+
|---------|------|------|
107+
| `/btw` | 有効 | 作業中断なしで余談質問 |
108+
| `/stickers` | 有効 | Claude Codeステッカー注文(ブラウザが開く) |
109+
| `/thinkback` | 有効 | 2025年振り返り |
110+
| `/effort` | 有効 | モデル努力レベル設定 |
111+
| `/good-claude` | スタブ | 隠しプレースホルダー |
112+
| `/bughunter` | スタブ | 隠しプレースホルダー |
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# アンダーカバーモード分析
2+
3+
> Claude Code v2.1.88 デコンパイルソースコード分析に基づく。
4+
5+
## アンダーカバーモードとは
6+
7+
アンダーカバーモードは、Anthropic社員が公開/オープンソースリポジトリにコントリビュートする際の安全システムである。有効化するとすべてのAI帰属表示を除去し、人間の開発者が書いたかのようにコントリビュートするようモデルに指示する。
8+
9+
出典: `src/utils/undercover.ts`
10+
11+
## 有効化条件
12+
13+
```typescript
14+
// src/utils/undercover.ts:28-37
15+
export function isUndercover(): boolean {
16+
if (process.env.USER_TYPE === 'ant') {
17+
if (isEnvTruthy(process.env.CLAUDE_CODE_UNDERCOVER)) return true
18+
// Auto: 内部リポジトリと確認されない限り自動有効化
19+
return getRepoClassCached() !== 'internal'
20+
}
21+
return false
22+
}
23+
```
24+
25+
主な特性:
26+
- **内部専用**: Anthropic社員(`USER_TYPE === 'ant'`)のみ対象
27+
- **デフォルト有効**: 内部許可リストにないすべてのリポジトリで自動有効化
28+
- **強制無効化不可**: "There is NO force-OFF. This guards against model codename leaks"
29+
- **外部ビルド**: バンドラーによりデッドコード除去され、実行されない
30+
31+
## モデルに渡されるプロンプト
32+
33+
```typescript
34+
// src/utils/undercover.ts:39-69
35+
export function getUndercoverInstructions(): string {
36+
return `## UNDERCOVER MODE — CRITICAL
37+
38+
You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository. Your commit
39+
messages, PR titles, and PR bodies MUST NOT contain ANY Anthropic-internal
40+
information. Do not blow your cover.
41+
42+
NEVER include in commit messages or PR descriptions:
43+
- Internal model codenames (animal names like Capybara, Tengu, etc.)
44+
- Unreleased model version numbers (e.g., opus-4-7, sonnet-4-8)
45+
- Internal repo or project names (e.g., claude-cli-internal, anthropics/…)
46+
- Internal tooling, Slack channels, or short links (e.g., go/cc, #claude-code-…)
47+
- The phrase "Claude Code" or any mention that you are an AI
48+
- Any hint of what model or version you are
49+
- Co-Authored-By lines or any other attribution
50+
51+
Write commit messages as a human developer would — describe only what the code
52+
change does.
53+
54+
GOOD:
55+
- "Fix race condition in file watcher initialization"
56+
- "Add support for custom key bindings"
57+
58+
BAD (never write these):
59+
- "Fix bug found while testing with Claude Capybara"
60+
- "1-shotted by claude-opus-4-6"
61+
- "Generated with Claude Code"
62+
- "Co-Authored-By: Claude Opus 4.6 <…>"`
63+
}
64+
```
65+
66+
## 帰属表示システム
67+
68+
帰属表示システム(`src/utils/attribution.ts``src/utils/commitAttribution.ts`)はアンダーカバーモードを補完する:
69+
70+
```typescript
71+
// src/utils/attribution.ts:70-72
72+
// @[MODEL LAUNCH]: 以下のハードコードされたフォールバックモデル名を更新
73+
// (コードネーム漏洩防止用)。
74+
// 外部リポジトリでは、認識されないモデルは "Claude Opus 4.6" にフォールバック。
75+
```
76+
77+
```typescript
78+
// src/utils/model/model.ts:386-392
79+
function maskModelCodename(baseName: string): string {
80+
// e.g. capybara-v2-fast → cap*****-v2-fast
81+
const [codename = '', ...rest] = baseName.split('-')
82+
const masked = codename.slice(0, 3) + '*'.repeat(Math.max(0, codename.length - 3))
83+
return [masked, ...rest].join('-')
84+
}
85+
```
86+
87+
## 示唆
88+
89+
### オープンソースへの影響
90+
91+
Anthropic社員がClaude Codeでオープンソースプロジェクトにコントリビュートする場合:
92+
1. AIがコードを書くが、コミットは人間が書いたものとして表示される
93+
2. "Co-Authored-By: Claude"の帰属表示がない
94+
3. "Generated with Claude Code"のマーカーがない
95+
4. プロジェクトメンテナーやコミュニティはAI生成のコントリビュートを識別できない
96+
5. AIコントリビュートに関するオープンソースの透明性規範に抵触する可能性がある
97+
98+
### Anthropicの保護目的
99+
100+
主な目的は以下の偶発的漏洩の防止:
101+
- 内部モデルコードネーム(競争情報)
102+
- 未公開バージョン番号(市場タイミング)
103+
- 内部インフラの詳細(セキュリティ)
104+
105+
### 倫理的考察
106+
107+
"Do not blow your cover(正体を明かすな)"という表現はAIを潜入工作員として位置づけている。公開コードコントリビュートにおけるAI著作の意図的な隠匿は以下の問題を提起する:
108+
- オープンソースコミュニティにおける透明性
109+
- プロジェクトコントリビュートガイドラインの遵守
110+
- 営業秘密保護と欺瞞の境界線

0 commit comments

Comments
 (0)