noya21th/claude-source-leaked

GitHub: noya21th/claude-source-leaked

对 Claude Code v2.1.88 源码进行静态逆向分析,完整揭示其系统提示词架构、隐藏功能标志、遥测机制与成本优化策略,为安全研究和工程实践提供参考。

Stars: 85 | Forks: 107

# Claude Code 揭秘 **首份 Claude Code 架构深度剖析、隐藏功能目录及成本优化指南 —— 基于 v2.1.88 源码分析(1,884 个文件,132K 行 TypeScript)。** [中文版](README_CN.md) | English ## 目录 - [系统提示词 (完整重构)](#system-prompt-complete-reconstruction) - [87 个隐藏的特性标志](#87-hidden-feature-flags) - [15 个隐藏的斜杠命令](#15-hidden-slash-commands) - [25 个仅供内部使用的命令](#25-internal-only-commands) - [潜伏模式 (Anthropic 如何隐藏 AI 归属)](#undercover-mode) - [成本优化 (源自代码的 10 个技巧)](#cost-optimization) - [架构图](#architecture-diagrams) - [Claude Code vs Cursor vs Cline](#claude-code-vs-cursor-vs-cline) - [遥测与隐私](#telemetry--what-data-is-collected) - [远程控制与熔断开关](#remote-control--killswitches) - [未来路线图 (未发布功能)](#unreleased-features--future-roadmap) - [CLAUDE.md 最佳实践](#claudemd-best-practices) ## 系统提示词 (完整重构) ### 5 层优先级系统 ``` Priority 0: Override (loop mode, testing) ← highest Priority 1: Coordinator (multi-worker orchestration) Priority 2: Agent (subagent definitions) Priority 3: Custom (--system-prompt flag) Priority 4: Default (standard Claude Code) ← lowest + appendSystemPrompt (always appended unless override) ``` ### 默认提示词的实际内容 系统提示词包含 **9 个主要部分**: 1. **身份** — “你是一个交互式代理,帮助用户完成软件工程任务” 2. **系统规则** — 工具执行、权限模式、提示词注入检测 3. **任务执行** — 最详细的部分: - 修改前必须阅读代码(强制要求) - 不要添加未要求的功能/重构 - 不要为一次性操作创建辅助函数 - “三行相似的代码胜过早熟的抽象” - 避免 OWASP Top 10 漏洞 4. **谨慎操作** — 破坏性操作需要用户确认 (rm -rf、force push 等) 5. **工具使用** — 使用专用工具 (Read/Edit/Glob/Grep) 代替 Bash 6. **语气** — 无表情符号,简洁,`file_path:line_number` 格式 7. **输出效率** — “如果你能用一句话说明白,就不要用三句” 8. **缓存边界** — `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` 分隔静态/动态部分 9. **环境** — CWD、平台、模型名称、知识截止日期 ### 缓存优化 提示词由 `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` 分隔: - **边界之前 (静态)**:全局缓存,在重复调用时节省 token - **边界之后 (动态)**:用户/会话特定,每次重新计算 (memory、MCP、语言等) ### 模型知识截止日期 | 模型 | 显示名称 | 截止日期 | |-------|-------------|--------| | claude-opus-4-6 | Claude Opus 4.6 | 2025 年 5 月 | | claude-sonnet-4-6 | Claude Sonnet 4.6 | 2025 年 8 月 | | claude-haiku-4-5 | Claude Haiku 4.5 | 2025 年 2 月 | ## 87 个隐藏的特性标志 这些是通过 `bun:bundle feature()` 实现的编译时开关。大多数在公开的 npm 构建版本中已被死代码消除。 ### 核心代号 | 代号 | 功能 | 跨文件引用 | |----------|-------------|----------------------| | **KAIROS** | 自主助手平台 (assistant mode、brief、channels、cron、webhooks) | 210 个文件 | | **PROACTIVE** | 主动任务规划和自动化 | 关联至 KAIROS | | **COORDINATOR_MODE** | 具备 worker 的多 agent 编排 | 45 个文件 | | **VOICE_MODE** | 具有跨平台二进制文件的语音输入/输出 | 38 个文件 | | **BUDDY** | 带有动画系统的 AI 伴侣精灵 | 14 个文件, 1,298 行 | | **ULTRATHINK** | 扩展的深度推理模式 | 编译时 | | **ULTRAPLAN** | 带有选择对话框的超级规划器 | 编译时 | | **TORCH** | 推理增强 | 编译时 | | **BRIDGE_MODE** | 移动/Web 远程控制 | 编译时 | | **CHICAGO_MCP** | 计算机使用 MCP 服务器 | 内部 | ### 上下文与压缩 | 标志 | 用途 | |------|---------| | CONTEXT_COLLAPSE | 智能上下文折叠 | | REACTIVE_COMPACT | 响应式会话压缩 | | CACHED_MICROCOMPACT | 微型缓存压缩 | | HISTORY_SNIP | 历史消息分片 | | BG_SESSIONS | 后台会话管理 | | AWAY_SUMMARY | 用户离开时自动摘要 | ### 混淆的运行时配置 (tengu_* 门控) 运行时标志使用 `tengu_` + **随机词对** 来刻意隐藏其用途: ``` tengu_frond_boric → Analytics killswitch (Datadog/FirstParty) tengu_passport_quail → Memory extraction gate tengu_moth_copse → Memory extraction enable tengu_bramble_lintel → Memory extraction frequency tengu_cicada_nap_ms → Background refresh throttle tengu_slate_prism → Connector text summarization tengu_amber_json_tools → JSON tool format (token-efficient) tengu_tool_pear → Structured output (strict tools) ``` ## 15 个隐藏的斜杠命令 这些需要特定的特性标志才能出现: | 命令 | 功能 | 所需标志 | |---------|----------|---------------| | `/assistant` | 助手模式 | KAIROS | | `/brief` | 简短消息 | KAIROS_BRIEF | | `/bridge` | 远程控制桥接 | BRIDGE_MODE | | `/voice` | 语音模式 | VOICE_MODE | | `/buddy` | AI 伴侣精灵 | BUDDY | | `/ultraplan` | 超级规划器 | ULTRAPLAN | | `/torch` | 推理加速 | TORCH | | `/workflows` | 工作流脚本 | WORKFLOW_SCRIPTS | | `/fork` | 子 agent 分支 | FORK_SUBAGENT | | `/peers` | 对等消息传递 | UDS_INBOX | | `/proactive` | 主动规划 | PROACTIVE | | `/force-snip` | 强制历史记录截断 | HISTORY_SNIP | | `/subscribe-pr` | PR 订阅 | KAIROS_GITHUB_WEBHOOKS | | `/remote-setup` | 远程 CCR 设置 | CCR_REMOTE_SETUP | | `/remote-control-server` | 远程控制服务器 | DAEMON + BRIDGE_MODE | ## 25 个仅供内部使用的命令 | 命令 | 功能 | |---------|----------| | `/bughunter` | 自动化 Bug 检测 | | `/good-claude` | 模型评估工具 | | `/commit` | 隐藏的 Git 提交 | | `/commit-push-pr` | 一键提交 → 推送 → 创建 PR | | `/ctx-viz` | 上下文可视化 | | `/break-cache` | 强制缓存失效 | | `/mock-limits` | 模拟速率限制 | | `/reset-limits` | 重置速率限制 | | `/ant-trace` | Anthropic 内部追踪 | | `/perf-issue` | 性能诊断 | | `/debug-tool-call` | 工具调用调试器 | | `/agents-platform` | Agents 平台管理 | | `/autofix-pr` | 自动修复 PR | | `/backfill-sessions` | 回填会话数据 | | `/share` | 会话共享 | | `/summary` | 会话摘要 | | `/onboarding` | 引导流程 | | `/init-verifiers` | 初始化验证器 | | `/bridge-kick` | 踢除桥接连接 | | `/version` | 版本显示 | | `/oauth-refresh` | OAuth token 刷新 | | `/env` | 环境变量 | | `/issue` | 问题跟踪 | | `/teleport` | 会话传送 | | `/tags` | 会话标签 | ## 潜伏模式 当 Anthropic 员工 (`USER_TYPE=ant`) 在公共代码库中工作时,Claude Code **会自动隐藏所有内部信息**。 ### 工作原理 ``` isUndercover() check: USER_TYPE !== 'ant' → always OFF (external users unaffected) USER_TYPE === 'ant' → CLAUDE_CODE_UNDERCOVER=1 → forced ON Repo in internal allowlist → OFF Repo is public/unknown → ON (safe default) ``` **没有强制关闭选项。** 如果 Claude Code 无法确认这是内部代码库,潜伏模式将保持开启。 ### 注入的内容 ``` ## UNDERCOVER MODE — 严重 You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository. NEVER include in commit messages or PR descriptions: - Internal model codenames (Capybara, Tengu, etc.) - Unreleased model version numbers - Internal repo or project names - The phrase "Claude Code" or any mention that you are an AI - Co-Authored-By lines or any other attribution ``` ### 内部代码库白名单 (22 个私有代码库) ``` anthropics/claude-cli-internal, anthropics/anthropic, anthropics/apps, anthropics/casino, anthropics/dbt, anthropics/dotfiles, anthropics/terraform-config, anthropics/hex-export, anthropics/feedback-v2, anthropics/labs, anthropics/argo-rollouts, anthropics/starling-configs, anthropics/ts-tools, anthropics/ts-capsules, anthropics/feldspar-testing, anthropics/trellis, anthropics/claude-for-hiring, anthropics/forge-web, anthropics/infra-manifests, anthropics/mycro_manifests, anthropics/mycro_configs, anthropics/mobile-apps ``` 来源: `src/utils/commitAttribution.ts` 第 30-75 行 ## 成本优化 ### 模型定价 (每百万 token) | 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | |-------|-------|--------|------------|------------| | Haiku 4.5 | $1 | $5 | $0.10 | $1.25 | | Sonnet 4.6 | $3 | $15 | $0.30 | $3.75 | | Opus 4.6 | $5 | $25 | $0.50 | $6.25 | | **Opus 4.6 Fast** | **$30** | **$150** | **$3.00** | **$37.50** | 来源: `src/utils/modelCost.ts` 第 36-69 行 ### 10 个省钱技巧 | # | 技巧 | 源码证据 | |---|-----|----------------| | 1 | 输出预留为 8K (不是 32K) — 触达上限时自动升级至 64K | `context.ts:24-25` | | 2 | 保持 CLAUDE.md 在 500 字以内 — 它会随每次请求发送 | `context.ts` getUserContext() | | 3 | 主动使用 `/compact` — 手动压缩仅使用 3K 缓冲区,而自动压缩使用 13K | `autoCompact.ts:62,65` | | 4 | 不要在会话中途切换模型 — 有 18 个维度的缓存失效机制 | `promptCacheBreakDetection.ts:28-99` | | 5 | Fast 模式 = 6 倍成本 — 在执行长任务时将其关闭 | `modelCost.ts:62-69` | | 6 | API Key 用户默认使用 Sonnet (更便宜) — 除非必要否则不要切换到 Opus | `model.ts:178-207` | | 7 | 设置 `CLAUDE_CODE_SUBAGENT_MODEL=haiku` — 子 agent 执行简单任务,成本降低 5 倍 | `agent.ts:37-95` | | 8 | 后台任务遇到 429/529 错误从不重试 (内置机制,节省级联成本) | `withRetry.ts:62-88` | | 9 | 压缩后的文件恢复有预算限制:最多 5 个文件,每个 5K token | `compact.ts:122-130` | | 10 | 缓存读取费用减免 90% — 保持系统提示词稳定以最大化缓存命中率 | `modelCost.ts` | ### 关键阈值 ``` Context window: 200,000 tokens Auto-compact trigger: ~167,000 tokens (200K - 20K output - 13K buffer) Manual compact buffer: 3,000 tokens Default max_output: 8,000 tokens (escalates to 64,000 on retry) Session memory min: 10,000 tokens Session memory max: 40,000 tokens Post-compact restore: 50,000 tokens budget, 5 files max ``` ## 架构图 ### 请求生命周期 ``` sequenceDiagram participant User participant REPL participant Query as QueryEngine participant API as Claude API participant Tool as Tool Executor User->>REPL: Input message REPL->>Query: submitMessage() Query->>Query: Build system prompt (5-layer priority) Query->>Query: Load CLAUDE.md + Memory Query->>API: messages.create(stream) loop Tool Loop API-->>Query: tool_use response Query->>Tool: Permission check → Execute Tool-->>Query: Tool result Query->>API: Continue with result end API-->>REPL: Final text response Query->>Query: Cost tracking + auto-compact check ``` ### 工具系统 **4 个权限级别中共有 40 多个内置工具:** | 级别 | 自动允许 | 示例 | |-------|-----------|---------| | 0 | 始终允许 | Read, Glob, Grep, LSP, TaskGet, ToolSearch | | 1 | 首次确认 | Write, Edit, WebFetch, WebSearch, Bash (安全) | | 2 | 每次确认 | Bash (危险: rm, git push, chmod) | | 3 | 阻止并警告 | rm -rf /, git push --force origin main, DROP TABLE | ### 权限模型 ``` 4 modes: Default (ask) → Plan (read-only) → Auto (smart judge) → Bypass (allow all) ``` ### 多 Agent 架构 ``` Main Thread → Agent tool → Subagent (fresh context, isolated) → Subagent (can use different model) → Subagent (can run in git worktree) ``` 子 agent 模型优先级:`CLAUDE_CODE_SUBAGENT_MODEL` 环境变量 > 工具指定 > agent 配置 > 继承父级 ## Claude Code vs Cursor vs Cline | 方面 | Claude Code | Cursor | Cline | |--------|------------|--------|-------| | **形态** | 终端 CLI | VS Code 分支 | VS Code 扩展 | | **模型** | 仅 Claude | OpenAI/Claude/Gemini/xAI | 任何兼容 OpenAI 的模型 | | **开源** | 否 | 否 | 是 (Apache 2.0) | | **最大上下文** | 1M token | ~272K (RAG) | 取决于提供商 | | **多 Agent** | 子 agent (无限) | 8 个并行 | 仅限单个 | | **权限** | 4 级分类 | 隐式信任 | 逐操作审批 | | **记忆** | 跨会话持久化 | 仅限会话内 | 无 | | **成本** | 按 token / 订阅 | $20-40/月 | 免费 (自带密钥) | | **代码库搜索** | 按需 ripgrep | AST + 嵌入索引 | VS Code 搜索 | | **自动化** | Hooks + Skills | 有限 | 有限 | ## 遥测 — 收集了哪些数据 ### 双通道架构 ``` Claude Code → First-Party (api.anthropic.com/api/event_logging/batch) [640+ event types] → Datadog (us5.datadoghq.com) [64 allowed events] → BigQuery Metrics (api.anthropic.com/api/claude_code/metrics) ``` ### 收集内容 - **环境**: 平台、架构、终端、包管理器、运行时、CI 检测 - **用户 ID**:_id (已去标识化)、user_bucket (SHA256 % 30)、session_id - **事件**: 会话生命周期、API 调用 (模型、token、延迟)、工具使用、权限决策、语音切换 - **默认不收集**: 用户提示词 (需要 `OTEL_LOG_USER_PROMPTS=1`)、完整文件路径 (仅限扩展名) ### 如何禁用 ``` DISABLE_TELEMETRY=1 # Disable analytics CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 # Disable all non-API network ``` ## 远程控制与熔断开关 ### 轮询机制 - **端点**: `{BASE_URL}/api/claude_code/settings` - **间隔**: 每 1 小时 - **缓存**: 基于 ETag 并带有 SHA256 校验和验证 - **故障模式**: 故障开放 (继续使用缓存/默认设置工作) ### 已知熔断开关 | 开关 | 控制项 | |--------|---------| | `tengu_frond_boric` | 分析数据流 (Datadog/FirstParty) | | `tengu_auto_mode_config` | 自动模式启用/禁用 | | Statsig 门控 | 权限绕过控制 | | `tengu_bridge_poll_interval_config` | 桥接轮询频率 | | `tengu_kairos_cron_config` | KAIROS cron 任务速率限制 | | `tengu_event_sampling_config` | 事件采样率 (0-100%) | ### 可远程修改的行为 数据上报、自动模式、权限绕过、轮询频率、事件采样、模型路由、记忆系统、缓存策略、Bash 分类、版本限制。 ## 未发布功能 — 未来路线图 通过**可验证的代码指标**评估,而非主观百分比: | 功能 | 专用代码 | 跨文件引用 | 基础设施 | |---------|---------------|----------------------|----------------| | **KAIROS** | 597 行 | **210 个文件** | 3 个 GrowthBook 门控 | | **Voice Mode** | 54 行 | 38 个文件 | 6 个平台的原生二进制文件 | | **Coordinator** | 369 行 | 45 个文件 | 专用系统提示词 | | **Buddy** | 1,298 行 | 14 个文件 | 动画 + 通知系统 | | **UltraPlan/Think/Torch** | 命令注册 | 分散 | 编译时标志 | | **Web Browser** | 0 个文件 (在 npm 中) | 特性门控 | 可能在内部 monorepo 中 | **108 个模块** 已从 npm 构建中死代码消除,仅存在于 Anthropic 的内部 monorepo 中。 ## CLAUDE.md 最佳实践 ### 加载顺序 ``` ~/.claude/CLAUDE.md (global) + project/CLAUDE.md (project) + .claude/CLAUDE.md → Merged → Injected into system prompt dynamic section → Sent with EVERY request ``` ### 推荐模板 ``` # CLAUDE.md ## Tech Stack - Language: TypeScript 5.x, strict mode - Framework: Next.js 14, App Router - Testing: vitest - Package manager: pnpm ## Conventions - Components: PascalCase, hooks: camelCase - Commits: conventional commits (feat/fix/chore) ## Project Structure - src/app/ — routes - src/components/ — shared components - src/lib/ — utilities ``` ### 不应该写的内容 - 不要重复系统提示词规则 (已硬编码) - 不要写长篇描述 (每次请求都会浪费 token) - 不要粘贴 API 文档 (让 Claude 去读取实际文件) - 不要放置 TODO 列表 (使用对话,而不是 CLAUDE.md) ## 准确性与方法论 基于对 Claude Code v2.1.88 的**静态源码阅读**: - 所有数字常量均已对照带有文件路径和行号的源码进行了验证 - 架构图是简化后的 — 实际流程可能存在未捕获的边缘情况 - 功能评估使用可验证的指标 (文件数、LOC、交叉引用) - Cursor/Cline 比较使用公开文档;内部细节可能有所不同 - **没有在运行时执行或测试任何代码** **发现错误?请附带源文件和行号提交 Issue。** ## 免责声明 - **未附属、未获认可、也非由 Anthropic 维护** - 所有原始源码均为 Anthropic 的知识产权 - 仅限**教育和安全研究目的** - **未重新分发任何专有源代码** — 所有内容均为原创分析 ## 许可证 分析与文档: MIT | 原始 Claude Code 源码: Anthropic (保留所有权利)
标签:AI编程助手, Claude Code, Cline, Cursor, IP 地址批量处理, MITM代理, SOC Prime, TypeScript, 云资产清单, 人工智能, 功能开关, 卧底模式, 安全插件, 对比评测, 开发工具, 成本优化, 提示词工程, 无线安全, 架构图, 源码分析, 用户模式Hook绕过, 策略决策点, 网络安全研究, 自动化攻击, 逆向工程, 遥测, 隐私