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,109 @@
# 遥测与隐私分析
> 基于网络公开资料与社区讨论整理的 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 种预批准事件类型
- **Token**: `pubbbf48e6d78dae54bceaa4acf463299bf`
来源: `src/services/analytics/datadog.ts`
## 收集了什么
### 环境指纹
每个事件都携带以下元数据 (`src/services/analytics/metadata.ts:417-452`)
```
- platform, platformRaw, arch, nodeVersion
- 终端类型
- 已安装的包管理器和运行时
- CI/CD 检测、GitHub Actions 元数据
- WSL 版本、Linux 发行版、内核版本
- 版本控制系统类型
- Claude Code 版本和构建时间
- 部署环境
```
### 进程指标 (`metadata.ts:457-467`)
```
- 运行时间、rss、heapTotal、heapUsed
- CPU 使用率和百分比
- 内存占用详情
```
### 用户追踪 (`metadata.ts:472-496`)
```
- 正在使用的模型
- 会话 ID、用户 ID、设备 ID
- 账户 UUID、组织 UUID
- 订阅等级 (max, pro, enterprise, team)
- 仓库远程 URL 哈希 (SHA256 前 16 位)
- 代理类型、团队名、父会话 ID
```
### 工具输入日志
默认截断工具输入:
```
- 字符串: 512 字符处截断,显示 128 + 省略号
- JSON: 限制 4,096 字符
- 数组: 最多 20 项
- 嵌套对象: 最多 2 层
```
然而,当设置 `OTEL_LOG_TOOL_DETAILS=1` 时,**完整工具输入会被记录**。
### 文件扩展名追踪
涉及 `rm, mv, cp, touch, mkdir, chmod, chown, cat, head, tail, sort, stat, diff, wc, grep, rg, sed` 的 Bash 命令,其文件参数的扩展名会被提取并记录。
## 无法退出的问题
第一方日志管道**无法被关闭**(对于直接使用 Anthropic API 的用户)。
`isAnalyticsDisabled()` 仅在以下情况返回 true
- 测试环境
- 第三方云提供商 (Bedrock, Vertex)
- 全局遥测退出(设置界面未暴露此选项)
**没有面向用户的设置可以禁用第一方事件日志。**
## GrowthBook A/B 测试
用户在不知情的情况下被分配到实验组。系统发送的用户属性包括:
```
- id, sessionId, deviceID
- platform, organizationUUID, subscriptionType
```
## 关键结论
1. **体量**: 每个会话收集数百个事件
2. **无法退出**: 直接 API 用户无法禁用第一方日志
3. **持久化**: 失败事件保存到磁盘并积极重试
4. **第三方共享**: 数据发送到 Datadog
5. **工具详情后门**: `OTEL_LOG_TOOL_DETAILS=1` 启用完整输入记录
6. **仓库指纹**: 仓库 URL 被哈希后发送用于服务端关联

View File

@@ -0,0 +1,82 @@
# 隐藏功能与模型代号
> 基于网络公开资料与社区讨论整理的 Claude Code v2.1.88 分析报告。
## 模型代号体系
Anthropic 使用**动物名称**作为内部模型代号。这些代号被严格保护,防止泄露到外部构建中。
### 已知代号
| 代号 | 角色 | 证据 |
|------|------|------|
| **Tengu**(天狗) | 产品/遥测前缀,也可能是模型 | 所有 250+ 分析事件和 feature flag 使用 `tengu_*` 前缀 |
| **Capybara**(水豚) | Sonnet 系列模型,当前版本 v8 | `capybara-v2-fast[1m]`v8 行为问题的 prompt 补丁 |
| **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 系统的物种通过 `String.fromCharCode()` 编码以避免触发金丝雀检查:
```typescript
// src/buddy/types.ts:10-13
// One species name collides with a model-codename canary in excluded-strings.txt.
// 运行时构造值,保持字面量不出现在构建产物中
```
那个冲突的物种就是 **capybara** — 既是宠物物种又是模型代号。
### Capybara v8 的行为问题
架构揭示了 Capybara v8 的具体行为问题:
1. **停止序列误触发** (~10% 概率) — prompt 尾部出现 `<functions>`
2. **空 tool_result 导致零输出** — 需要注入 marker workaround
3. **过度写注释** — 需要专门的反注释 prompt 补丁
4. **高虚假声明率**: v8 为 29-30%,而 v4 为 16.7%
5. **验证不足** — 需要 "thoroughness counterweight" 补丁
## Feature Flag 命名约定
所有 feature flag 使用 `tengu_` 前缀 + **随机词对**以掩盖用途:
| Flag | 用途 |
|------|------|
| `tengu_onyx_plover` | Auto Dream后台记忆整理|
| `tengu_coral_fern` | memdir 功能 |
| `tengu_herring_clock` | 团队内存 |
| `tengu_frond_boric` | 分析 kill switch |
| `tengu_amber_quartz_disabled` | 语音模式 kill switch |
| `tengu_amber_flint` | 代理团队 |
## 内外部用户的差异
Anthropic 员工 (`USER_TYPE === 'ant'`) 获得显著更好的待遇:
| 维度 | 外部用户 | 内部用户 (ant) |
|------|---------|--------------|
| 输出风格 | "尽量简洁" | "倾向于更多解释" |
| 虚假声明缓解 | 无 | 专门的 Capybara v8 补丁 |
| 数值长度锚定 | 无 | "工具间 ≤25 词,最终回复 ≤100 词" |
| 验证代理 | 无 | 非简单改动必须启用 |
| 主动性 | 无 | "发现用户误解要指出" |
## 隐藏命令
| 命令 | 状态 | 描述 |
|------|------|------|
| `/btw` | 活跃 | 顺带提问,不打断主对话 |
| `/stickers` | 活跃 | 订购 Claude Code 贴纸 |
| `/thinkback` | 活跃 | 2025 年度回顾 |
| `/good-claude` | 占位 | 隐藏的 stub 命令 |
| `/bughunter` | 占位 | 隐藏的 stub 命令 |

View File

@@ -0,0 +1,94 @@
# 卧底模式分析
> 基于网络公开资料与社区讨论整理的 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
// 自动模式:除非确认在白名单内部仓库,否则默认激活
return getRepoClassCached() !== 'internal'
}
return false
}
```
关键特性:
- **仅限内部**: 只对官方员工 (`USER_TYPE === 'ant'`) 生效
- **默认开启**: 在所有仓库中激活,除非在内部白名单上
- **无法强制关闭**: 为了防止模型代号泄露,没有提供关闭选项
- **外部构建**: 对普通用户版本不生效,相关代码在打包时会被消除
## 给模型的指令
```
## UNDERCOVER MODE — CRITICAL
You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository.
Do not blow your cover.
NEVER include in commit messages or PR descriptions:
- 内部模型代号(如 Capybara, Tengu 等动物名称)
- 未发布的模型版本号(如 opus-4-7, sonnet-4-8
- 内部仓库或项目名(如 claude-cli-internal
- 内部工具、Slack 频道或短链接
- "Claude Code" 这个词或任何你是 AI 的暗示
- 任何关于你是什么模型或版本的提示
- Co-Authored-By 行或任何其他归属
像人类开发者一样写 commit message。
好:
- "Fix race condition in file watcher initialization"
坏:
- "Fix bug found while testing with Claude Capybara"
- "Generated with Claude Code"
- "Co-Authored-By: Claude Opus 4.6 <…>"
```
关键词:**"Do not blow your cover"**(旨在要求模型隐藏其内部身份,确保不会在外部泄露未公开信息)。
## 归属系统
归属系统同样配合了这一模式:
```typescript
// src/utils/model/model.ts:386-392
function maskModelCodename(baseName: string): string {
// 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. 提交记录不会带有 "Co-Authored-By: Claude" 等明显的 AI 署名
2. 缺乏 "Generated with Claude Code" 等标记
3. 这在一定程度上模糊了代码是由 AI 辅助生成还是由人类直接编写的界限
4. 在开源社区中,有关 AI 贡献的透明度规范正在建立,这种做法可能引发一些关于透明度的讨论
### 对官方的保护
主要声明的目的是防止意外泄露公司机密:
- 内部模型代号(涉及竞争情报)
- 未发布的版本号(涉及产品发布节奏)
- 内部基础设施细节(涉及系统安全)
### 行业考量
"卧底模式" 这种设计展现了企业在保护商业机密与遵循开源透明度之间所面临的平衡挑战。在公开代码贡献中隐去 AI 身份,一方面有效防止了机密泄露,但另一方面也引发了业界关于代码归属透明度和贡献指南遵循情况的思考。

View File

@@ -0,0 +1,120 @@
# 远程控制与紧急开关
> 基于网络公开资料与社区讨论整理的 Claude Code v2.1.88 分析报告。
## 概述
Claude Code 实现了远程管理机制,允许官方(和企业管理员)通过远程配置来管理和更新客户端的特定行为,以确保系统安全和企业合规。
## 1. 远程托管设置
### 架构
客户端会从以下端点获取最新的配置信息:
```
GET /api/claude_code/settings
```
来源: `src/services/remoteManagedSettings/index.ts`
### 轮询行为
```typescript
const POLLING_INTERVAL_MS = 60 * 60 * 1000 // 每小时
const DEFAULT_MAX_RETRIES = 5
```
系统默认每小时检查一次更新,以确保配置的及时性。
### 适用范围
- Console 用户 (API key): 默认适用
- OAuth 用户: 主要面向 Enterprise/C4E 和 Team 订阅者进行企业级管控
### 安全变更确认
当远程设置涉及关键或敏感的权限变更时,系统会弹出确认提示框:
```typescript
// src/services/remoteManagedSettings/securityCheck.tsx:67-73
export function handleSecurityCheckResult(result: SecurityCheckResult): boolean {
if (result === 'rejected') {
gracefulShutdownSync(1) // 拒绝后安全退出
return false
}
return true
}
```
为了保障环境安全,如果用户拒绝了必须的安全配置更新,程序将安全退出。这是一种常见的强制合规策略。
### 故障容灾
当远程服务器不可达时,系统会回退使用本地缓存的配置,保证基础功能的可用性。
## 2. 功能开关 (Feature Flags)
系统使用 GrowthBook feature flag 实现了灵活的功能管控,可以在发现严重问题时紧急禁用特定功能:
### 权限绕过功能管控
```typescript
// src/utils/permissions/bypassPermissionsKillswitch.ts
// 用于在必要时关闭"绕过权限"功能,防止安全风险
```
### 自动模式断路器
```typescript
// src/utils/permissions/autoModeState.ts
// autoModeCircuitBroken 状态用于在异常情况下暂停自动模式
```
### 快速模式开关
```typescript
// src/utils/fastMode.ts
// 从 /api/claude_code_penguin_mode 获取状态
// 动态管理快速模式的可用性
```
### 数据上报通道控制
```typescript
// src/services/analytics/sinkKillswitch.ts:4
const SINK_KILLSWITCH_CONFIG_NAME = 'tengu_frond_boric'
```
### 语音模式开关
```typescript
// src/voice/voiceModeEnabled.ts:21
// 'tengu_amber_quartz_disabled' — 用于在发现语音模块缺陷时紧急关闭
```
## 3. 模型覆盖系统
为了进行灰度测试或应对线上突发情况,系统支持对内部员工等特定群体进行模型版本的动态切换:
```typescript
// src/utils/model/antModels.ts:32-33
// @[MODEL LAUNCH]: Update tengu_ant_model_override with new ant-only models
```
`tengu_ant_model_override` GrowthBook flag 可以:
- 设置默认模型
- 设置默认 effort level
- 追加系统提示词
- 定义自定义模型别名
## 总结
| 机制 | 范围 | 用户同意 |
|------|------|---------|
| 远程托管设置 | Enterprise/Team | 接受或退出 |
| GrowthBook feature flags | 所有用户 | 无 |
| Kill switches | 所有用户 | 无 |
| 模型覆盖 | 内部 (ant) | 无 |
| 快速模式控制 | 所有用户 | 无 |
远程控制基础设施极其广泛且在很大程度上没有用户可见性或同意机制。企业管理员可以强制执行用户无法覆盖的策略Anthropic 可以通过 feature flag 远程更改任何用户的行为。

View File

@@ -0,0 +1,123 @@
# 未来路线图 — 架构揭示的方向
> 基于网络公开资料与社区讨论整理的 Claude Code v2.1.88 分析报告。
## 1. 下一代模型: Numbat
从公开资料中的架构推测来看:
```typescript
// 架构内部推断代码片段
// @[MODEL LAUNCH]: Remove this section when we launch numbat.
```
**Numbat袋食蚁兽** 似乎是即将发布的模型代号。资料暗示 Numbat 发布时可能会移除某些当前的输出控制逻辑,这意味着新模型可能有更好的原生输出能力。
### 未来版本号
公开的讨论中提到了一些可能的版本号:
- 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天狗 → 遥测/产品前缀
```
### 模型发布清单
从网上整理的资料来看,架构中预留了许多 `@[MODEL LAUNCH]` 的标记,用于在未来新模型发布时更新配置,例如:
- 默认模型名称
- 知识截止日期
- 定价表
- 上下文窗口配置
- Thinking 模式支持
- 迁移脚本
## 2. KAIROS — 自主代理模式
被社区广泛讨论的未发布特性之一KAIROS 似乎旨在将 Claude Code 从被动助手转变为主动自主代理。
### 行为预期(根据公开资料推测)
```text
# 预期系统逻辑
代理将处于自主运行状态。
系统可能通过心跳信号(如 <tick>)保持代理活跃。
如果没有有用的事可做,代理可能会调用休眠功能。
在适当的情况下,代理可能会主动行动——读取文件、做修改、提交,无需用户每次确认。
```
### 关联工具推测
根据公开的讨论,可能涉及以下工具:
| 工具 | 用途推测 |
|------|------|
| SleepTool | 控制自主操作间的节奏 |
| SendUserFileTool | 主动向用户发送文件 |
| PushNotificationTool | 推送通知到用户设备 |
| SubscribePRTool | 订阅 GitHub PR webhook 事件 |
| BriefTool | 主动状态更新 |
### 行为特征
- 通过心跳机制保持活跃
- 根据用户在终端的活跃状态调整自主程度
- 可以独立 commit、push 和做决策
- 发送主动通知和状态更新
- 监控代码仓库(如 GitHub的变更
## 3. 语音模式
有资料显示,语音交互的基础设施可能已经在开发中,但目前尚未对外开放:
- **Push-to-Talk**: 可能实现类似对讲机的界面
- **Audio Capture**: 通过原生模块集成
- 仅限特定认证用户使用
## 4. 未上线工具
根据社区挖掘的信息,以下工具可能在开发计划中但尚未对外部用户开放:
| 工具 | 描述推测 |
|------|-------------|
| **WebBrowserTool** | 内置浏览器自动化,超越简单的网页抓取 |
| **TerminalCaptureTool** | 终端面板捕获和监控 |
| **WorkflowTool** | 执行预定义工作流脚本 |
| **MonitorTool** | 系统/进程监控 |
| **SnipTool** | 对话历史智能裁剪 |
| **ListPeersTool** | 用于代理间的对等发现 |
## 5. 协调器模式
多代理协调系统:
旨在支持多个代理之间的协调任务执行,可能具有共享状态和消息传递机制。
## 6. 虚拟宠物系统 (Buddy)
有传言称一个完整的虚拟宠物系统正在开发中,可能包含:
- **多种物种**: 如鸭子、鹅、猫、龙、章鱼等
- **不同稀有度**: 从普通到传说
- **个性化属性**: 如 DEBUGGING、PATIENCE 等
- 基于用户 ID 的确定性生成
## 7. 后台记忆整固
有资料提到一个类似"做梦"的后台任务,旨在使 AI 能在空闲时间自主处理和整固记忆。
## 总结:三大方向
从目前的公开资料来看Claude Code 可能在以下几个方向演进:
1. **新模型**: Numbat下一代、Opus 4.7、Sonnet 4.8
2. **自主代理**: KAIROS 模式 — 无人值守运行、主动行动、推送通知
3. **多模态与自动化**: 语音输入、浏览器自动化、工作流自动化
Claude Code 似乎正计划从一个**编程助手**进化为一个**全天候自主开发代理**。