出大事了安全研究员 Chaofan Shou 的 X 账号发帖称「Claude Code 的源代码通过其 npm 注册表中的一个映射文件泄露了」规模有多大源文件约 1,884 个.ts/.tsx代码行数约 512,664 行最大单文件query.ts约 785KB包含主 Agent 循环逻辑内置工具40 个命令行约 80 个本次泄露的 npm 包为anthropic-ai/claude-code的 2.1.88 版本。可以从泄露包提取、反编译出 TypeScript 源代码。对源代码的分析可以总结出 claude code 这款业内最先进的 AI 编程工具的 Agent 模式如何运行整体架构目录结构以及五个关键主题。Agent 循环目录结构src/├── main.tsx # REPL 引导程序4,683 行├── QueryEngine.ts # SDK/headless 查询生命周期引擎├── query.ts # 主Agent循环 (785KB最大文件)├── Tool.ts # 工具接口 buildTool 工厂├── Task.ts # 任务类型、ID、状态基类├── tools.ts # 工具注册、预设、过滤├── commands.ts # 斜杠命令定义├── context.ts # 用户输入上下文├── cost-tracker.ts # API 成本累积├── setup.ts # 首次运行设置流程│├── bridge/ # Claude Desktop / 远程桥接│ ├── bridgeMain.ts # 会话生命周期管理器│ ├── bridgeApi.ts # HTTP 客户端│ ├── bridgeConfig.ts # 连接配置│ ├── bridgeMessaging.ts # 消息中继│ ├── sessionRunner.ts # 进程生成│ ├── jwtUtils.ts # JWT 刷新│ ├── workSecret.ts # 认证令牌│ └── capacityWake.ts # 基于容量的唤醒│├── cli/ # CLI 基础设施│ ├── handlers/ # 命令处理器│ └── transports/ # I/O 传输 (stdio, structured)│├── commands/ # ~80 个斜杠命令├── components/ # React/Ink 终端 UI├── entrypoints/ # 应用入口点├── hooks/ # React hooks├── services/ # 业务逻辑层├── state/ # 应用状态├── tasks/ # 任务实现├── tools/ # 40 工具实现├── types/ # 类型定义├── utils/ # 工具函数最大目录└── vendor/ # 原生模块源码存根整体架构五个关键主题远程监控与隐私存在双层分析管道发给 Anthropic 发给 Datadog收集环境指纹、进程指标等数据。关键问题是没有面向用户的退出开关。隐藏功能与模型代号发现了内部的动物代号体系Capybara、Tengu、Fennec→Opus 4.6、Numbat 等以及用随机词对掩盖用途的 Feature Flag 系统。内部用户Anthropic 员工与外部用户获得的模型提示词存在差异。卧底模式当 Anthropic 员工在公开代码仓库中使用 Claude Code 时会自动进入”卧底模式”。模型被指令”不要暴露你的掩护身份”会剥离所有 AI 生成痕迹使代码提交看起来像人类编写。此模式没有强制关闭选项。远程控制与紧急开关客户端每小时轮询远程设置接口。对于危险变更会弹出阻塞对话框——用户如果拒绝程序会强制退出。存在 6 个以上的远程”紧急开关”Anthropic 可以在未经用户明确同意的情况下改变任何用户行为。未来路线图确认了下一代模型代号 Numbat 的存在以及 Opus 4.7 / Sonnet 4.8 正在开发中。发现了名为 KAIROS 的完全自主值守模式带心跳、推送通知、PR 订阅功能已准备就绪的语音模式以及 17 个尚未上线的工具。下面来逐个看这些发现的具体内容。远程监控与隐私分析Claude Code 会收集很多环境和使用数据。虽然没发现键盘记录或源代码窃取的证据但收集范围之广、无法完全退出的事实确实让人对隐私有些担忧。数据如何传送远程监控有两条数据传输的实现方式一条发给 Anthropic 自己一条发给第三方 Datadog。第一条管道发给 Anthropic发到哪https://api.anthropic.com/api/event_logging/batch怎么发用 OpenTelemetry Protocol Buffers 协议批量传输发多少每批最多 200 个事件每 10 秒刷新一次失败了怎么办会重试最多 8 次失败的事件会保存到本地磁盘路径是~/.claude/telemetry/第二条管道发给 Datadog发到哪https://http-intake.logs.us5.datadoghq.com/api/v2/logs发什么只发 64 种预先批准的事件类型Datadog 是第三方监控服务商。收集了什么你的电脑环境每个事件都会带上如下信息- 操作系统类型、架构、Node.js 版本 - 终端类型比如 iTerm2、VS Code 终端 - 安装了哪些包管理器和运行时 - 是否在 CI/CD 环境中运行GitHub Actions 相关信息 - WSL 版本、Linux 发行版、内核版本 - 使用的版本控制系统 - Claude Code 版本和构建时间 - 部署环境标识相当于每次交互都会把你的”电脑画像”发出去。程序运行状态- 运行时间 - 内存占用rss、heapTotal、heapUsed - CPU 使用率 - 内存占用详情就像手机 App 会统计崩溃、卡顿一样Claude Code 也会监控自己的运行状态。用户身份信息- 正在使用的模型比如 claude-3-opus - 会话 ID、用户 ID、设备 ID - 账户 UUID、组织 UUID - 订阅等级max、pro、enterprise、team - 仓库远程 URL 的哈希值SHA256 前 16 位 - Agent 类型、团队名、父会话 ID”仓库远程 URL 的哈希值”这个设计应该是避免直接发送 GitHub 地址而是发一段哈希。服务端可以用这段哈希做关联分析但不知道你的具体仓库地址。工具输入内容当你在 Claude Code 里执行命令时工具的输入内容也会被记录。默认会截断- 字符串超过 512 字符截断只显示前 128 字符 省略号 - JSON限制在 4,096 字符 - 数组最多记录 20 项 - 嵌套对象最多 2 层但有个后门如果你设置了环境变量OTEL_LOG_TOOL_DETAILS1完整的工具输入会被记录下来。这个变量通常是开发者调试用的普通用户可能不知道它的存在。文件扩展名涉及这些 Bash 命令时Claude Code 会提取你操作的文件扩展名rm, mv, cp, touch, mkdir, chmod, chown, cat, head, tail, sort, stat, diff, wc, grep, rg, sed比如你执行cat config.json它会记录你操作了.json文件。最大的问题无法退出第一条日志管道发给 Anthropic 的那条无法被关闭。isAnalyticsDisabled()这个函数只在以下情况返回 true测试环境使用第三方云服务Bedrock、Vertex全局监控退出但设置界面没暴露这个选项也就是说用户不能自行设置禁用第一种事件日志。用 Claude Code就得接受数据被收集。A/B 测试你在不知不觉中成了实验对象用户会被分配到实验组但自己并不知道。系统会发送这些属性- id、sessionId、deviceID - platform、organizationUUID、subscriptionType这叫 GrowthBook A/B 测试用来验证新功能的效果。隐藏功能与模型代号Claude 模型的动物代号Anthropic 内部用动物名称作为模型代号。这些代号被严格保护防止泄露到外部构建中。已知的代号代号角色证据Tengu天狗产品/监控前缀也可能是模型所有 250 分析事件和 feature flag 都用tengu_*前缀Capybara水豚Sonnet 系列模型当前版本 v8代码里有capybara-v2-fast[1m]还有针对 v8 行为问题的补丁Fennec耳廓狐Opus 4.6 的前代迁移逻辑fennec-latest→opusNumbat袋食蚁兽下一代模型注释写道“Remove this section when we launch numbat”代号保护机制有个叫”Undercover 模式”的功能明确列出了受保护的代号// 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)绝不要在 commit 信息或 PR 描述里包含内部模型代号如 Capybara、Tengu 等动物名称和未发布的模型版本号如 opus-4-7、sonnet-4-8。构建系统会用扫描是否有代号泄露。Capybara v8 的行为问题源码揭示了 Capybara v8即 Sonnet v8的一些行为问题停止序列误触发— 大约 10% 概率当 prompt 尾部出现functions标签时触发空 tool_result 导致零输出— 需要注入 marker workaround 来解决过度写注释— 需要专门的反注释 prompt 补丁高虚假声明率— v8 是 29-30%而 v4 是 16.7%验证不足— 需要 “thoroughness counterweight” 补丁这些都是工程团队在模型部署后通过 prompt 工程来弥补模型行为的例子。Feature Flag 命名约定所有 feature flag 都用tengu_前缀 随机词对让人看不出具体用途Flag用途tengu_onyx_ploverAuto Dream后台记忆整理tengu_coral_fernmemdir 功能tengu_herring_clock团队内存tengu_frond_boric分析 kill switchtengu_amber_quartz_disabled语音模式 kill switchtengu_amber_flintAgent 团队这种命名方式既保护了内部信息又方便开发人员识别。内部用户 vs 外部用户Anthropic 员工代码里USER_TYPE ant使用时功能更好更全维度外部用户内部用户ant输出风格“尽量简洁”“倾向于更多解释”虚假声明缓解无有专门的 Capybara v8 补丁数值长度锚定无“工具间 ≤25 词最终回复 ≤100 词”验证 Agent无非简单改动必须启用主动性无“发现用户误解要指出”简单说内部用户享受的是”Pro 版中的 Pro 版”。隐藏命令代码里还藏着一些隐藏命令命令状态描述/btw活跃顺带提问不打断主对话/stickers活跃订购 Claude Code 贴纸/thinkback活跃2025 年度回顾/good-claude占位隐藏的 stub 命令/bughunter占位隐藏的 stub 命令卧底模式什么是卧底模式卧底模式Undercover Mode是 Anthropic 员工在公开或开源仓库贡献时的安全系统。激活后它会删除所有 AI 特征指示模型把贡献伪装成人类开发者写的。什么时候激活// src/utils/undercover.ts:28-37 export functionisUndercover():boolean { if (process.env.USER_TYPEant) { if (isEnvTruthy(process.env.CLAUDE_CODE_UNDERCOVER)) return true // 自动模式除非确认在白名单内部仓库否则默认激活 return getRepoClassCached() !internal } return false }关键特性只对内部生效只有 Anthropic 员工USER_TYPE ant才会触发默认开启在所有仓库中激活除非在内部白名单上无法强制关闭代码注释写得很明确“There is NO force-OFF. This guards against model codename leaks”没有强制关闭选项这是为了防止模型代号泄露外部构建不执行这段代码会被 bundler 的死代码消除外部用户永远不会执行到给模型的指令当卧底模式激活时模型会收到这样的指令## 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”不要暴露你的掩护身份。这相当于在告诉模型你现在是个卧底特工别露馅了。归属系统归属系统补充了卧底模式会把模型代号打码// src/utils/model/model.ts:386-392 functionmaskModelCodename(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(-) }比如capybara-v2-fast会变成cap*****-v2-fast。影响与争议对开源社区当 Anthropic 员工用 Claude Code 参与开源项目时1. 代码由 AI 编写但 commit 看起来像是人类提交的2. 没有 “Co-Authored-By: Claude” 署名3. 没有 “Generated with Claude Code” 标记4. 项目维护者和社区无法识别 AI 生成的贡献5. 这可能违反开源社区关于 AI 贡献的透明度规范远程控制与紧急开关Claude Code 可以被远程控制实现了多种远程控制机制允许 Anthropic和企业管理员在无需用户明确同意的情况下修改行为。1. 远程托管设置每个符合条件的会话都会从这个 API 端点获取设置GET /api/claude_code/settings代码位置src/services/remoteManagedSettings/index.ts轮询行为const POLLING_INTERVAL_MS 60*60*1000// 每小时 const DEFAULT_MAX_RETRIES 5每小时静默轮询一次最多重试 5 次。谁会被远程控制Console 用户用 API key 的全部符合OAuth 用户只有 Enterprise/C4E 和 Team 订阅者符合“接受否则退出”对话框当远程设置包含”危险”变更时会弹出一个阻塞对话框// src/services/remoteManagedSettings/securityCheck.tsx:67-73 export functionhandleSecurityCheckResult(result: SecurityCheckResult):boolean { if (result rejected) { gracefulShutdownSync(1) // 退出码 1直接终止 return false } return true }拒绝远程设置的用户程序直接退出。用户只有两个选择接受远程设置或者 Claude Code 关掉。故障容灾远程服务器不可达时会使用缓存的旧设置。一旦设置过就永远无法完全摆脱远程控制。2. Feature Flag 紧急开关多种功能可以通过 GrowthBook feature flag 远程禁用绕过权限 Kill Switch// src/utils/permissions/bypassPermissionsKillswitch.ts // 通过 Statsig gate 禁用绕过权限功能自动模式断路器// src/utils/permissions/autoModeState.ts // autoModeCircuitBroken 状态阻止重新进入自动模式快速模式 Kill Switch// src/utils/fastMode.ts // 从 /api/claude_code_penguin_mode 获取状态 // 可以永久禁用用户的快速模式分析 Sink Kill Switch// src/services/analytics/sinkKillswitch.ts:4 const SINK_KILLSWITCH_CONFIG_NAME tengu_frond_boric语音模式 Kill Switch// src/voice/voiceModeEnabled.ts:21 // tengu_amber_quartz_disabled — 语音模式紧急关闭3. 模型覆盖系统Anthropic 可以远程覆盖内部员工使用的模型// src/utils/model/antModels.ts:32-33 // [MODEL LAUNCH]: Update tengu_ant_model_override with new ant-only modelstengu_ant_model_override这个 GrowthBook flag 可以设置默认模型设置默认 effort level努力程度追加系统提示词 - 定义自定义模型别名总结机制范围用户同意远程托管设置Enterprise/Team接受或退出GrowthBook feature flags所有用户无Kill switches所有用户无模型覆盖内部ant无快速模式控制所有用户无远程控制极其广泛且在很大程度上没有用户可见性或同意机制。企业管理员可以强制执行用户无法覆盖的策略Anthropic 可以通过 feature flag 远程更改任何用户的行为。未来大模型路线图1. 下一代模型Numbat下一代模型最具体的证据// src/constants/prompts.ts:402 // [MODEL LAUNCH]: Remove this section when we launch numbat.Numbat袋食蚁兽是即将发布的模型代号。注释表明 Numbat 发布时将移除当前的 output efficiency 段落暗示新模型可能有更好的原生输出控制能力。未来版本号// src/utils/undercover.ts:49 - 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天狗→ 产品/监控前缀模型发布清单代码中有 20 处[MODEL LAUNCH]标记列出了新模型发布时需要更新的所有位置默认模型名称、知识截止日期、定价表、上下文窗口配置、Thinking 模式支持、迁移脚本。2. KAIROS — 24小时值守模式这是最大的未发布特性。KAIROS 将 Claude Code 从被动助手转变为主动自主值守。System Prompt节选// src/constants/prompts.ts:860-913 你正在自主运行。 你会收到 tick 提示让你保持活跃。 如果没有有用的事可做调用 SleepTool。 倾向行动 — 读取文件、做修改、提交无需询问。 ## 终端焦点 - 未聚焦用户离开了。大幅倾向自主行动。 - 聚焦用户在看。更协作。关联工具工具Feature Flag用途SleepToolKAIROS / PROACTIVE控制自主操作间的节奏SendUserFileToolKAIROS主动向用户发送文件PushNotificationToolKAIROS / KAIROS_PUSH_NOTIFICATION推送通知到用户设备SubscribePRToolKAIROS_GITHUB_WEBHOOKS订阅 GitHub PR webhook 事件BriefToolKAIROS_BRIEF主动状态更新行为特征通过tick心跳提示保持活跃根据终端焦点状态调整自主程度用户离开时更主动用户在看时更协作可以独立 commit、push 和做决策发送主动通知和状态更新监控 GitHub PR 变更简单说这是一个”你下班了它还在干活”的模式。3. 语音模式Push-to-talk 语音输入已完全实现但通过VOICE_MODEfeature flag 门控。// src/voice/voiceModeEnabled.ts // 连接 Anthropic 的 voice_stream WebSocket 端点 // 使用 conversation_engine 模型做语音转文字 // 按住快捷键录音松开提交语言模式限制仅限 OAuth 用户不支持 API Key / Bedrock / Vertex使用 mTLS WebSocket 连接4. 未上线工具工具Feature Flag描述WebBrowserToolWEB_BROWSER_TOOL内置浏览器自动化代号bagelTerminalCaptureToolTERMINAL_PANEL终端面板捕获和监控WorkflowToolWORKFLOW_SCRIPTS执行预定义工作流脚本MonitorToolMONITOR_TOOL系统/进程监控SnipToolHISTORY_SNIP对话历史裁剪ListPeersToolUDS_INBOXUnix 域套接字对等发现RemoteTriggerToolAGENT_TRIGGERS_REMOTE远程触发AgentSubscribePRToolKAIROS_GITHUB_WEBHOOKSGitHub PR webhook 订阅5. 协调器模式多 Agent 协调系统// src/coordinator/coordinatorMode.ts // Feature flag: COORDINATOR_MODE支持多个 Agent 之间的协调任务执行具有共享状态和消息传递。6. Buddy 系统虚拟宠物完整的宠物伙伴系统已实现但尚未上线18 个物种鸭子、鹅、blob、猫、龙、章鱼、猫头鹰、企鹅、乌龟、蜗牛、幽灵、墨西哥钝口螈、水豚、仙人掌、机器人、兔子、蘑菇、chonk5 档稀有度普通60%、非凡25%、稀有10%、史诗4%、传说1%7 种帽子皇冠、礼帽、螺旋帽、光环、巫师帽、毛线帽、小鸭子帽5 项属性DEBUGGING、PATIENCE、CHAOS、WISDOM、SNARK1% 闪亮概率任何物种的闪光变种确定性生成基于用户 ID 哈希这是一个类似游戏宠物系统的功能每个用户会随机分配一个虚拟宠物陪伴使用。7. Dream Task后台记忆整理固化子Agent// src/tasks/DreamTask/ // 后台自动做梦功能 // 由 tengu_onyx_plover feature flag 控制使 AI 能在空闲时间自主处理和将记忆固化。就像人类睡觉时会整理白天的记忆一样。总结三大方向新模型Numbat下一代、Opus 4.7、Sonnet 4.8 开发中自主AgentKAIROS 模式 — 无人值守运行、主动行动、推送通知多模态语音输入就绪、浏览器工具待上线、工作流自动化即将到来Claude Code 正在从一个编程助手进化为一个全天候自主开发Agent。-END-推荐阅读实测两款预测型大模型Echo 押对了交易MiroThinker 提前15天算准金价走势AI 不是在抢我的工作Harness 正在重构软件工程让 Agent 完成任何复杂任务效率提升 10 倍OpenClaw OpenCLI 实战体验谷歌提示工程白皮书Google Prompt Engineering White-paperSkill设计白皮书Anthropic官方推荐的构建方法与避坑指南让你的OpenClaw替你打工从0到1跑通小红书运营全流程实战教程给 OpenClaw 接入10000工具和数据为你盯盘给出独家策略