源码泄露最震撼的部分,是那些从未发布的功能。BUDDY、Dream System、KAIROS……这些不只是彩蛋,更是AI工具设计的未来愿景。
隐藏功能总览图
开篇:源码中的”秘密花园”
当研究者打开泄露的source map,他们发现了一个奇怪的现象:
src/buddy/、src/services/autoDream/、src/utils/undercover.ts……
这些目录和文件,从未在任何官方文档中出现。它们是隐藏的功能,等待着未来的发布。
这不是”未完成的代码”,而是精心设计、完整实现,只是还未启用的功能。
通过Feature Gates,Anthropic可以在编译时决定是否包含这些功能。泄露的源码揭示了它们的完整设计。
让我们一探究竟。
一、BUDDY:终端里的Tamagotchi
最意外的发现
在所有隐藏功能中,BUDDY系统是最令人惊讶的。
这不是一个严肃的工程功能,而是一个Tamagotchi式的虚拟宠物系统。
18种物种的设计
泄露的types.ts揭示了完整的物种设计:
// 来自 buddy/types.tsexport const SPECIES = [ ‘duck’, ‘goose’, ‘blob’, ‘cat’, ‘dragon’, ‘octopus’, ‘owl’, ‘penguin’, ‘turtle’, ‘snail’, ‘ghost’, ‘axolotl’, ‘capybara’, ‘cactus’, ‘robot’, ‘rabbit’, ‘mushroom’, ‘chonk’] as const
18种物种,从常见的鸭子(duck)到神秘的卡比巴拉(capybara)。
确定性抽卡机制
BUDDY使用确定性抽卡,每个用户的伙伴是固定的:
// 来自 buddy/companion.tsfunction mulberry32(seed: number): () => number { let a = seed >>> 0 return function () { a |= 0 a = (a + 0x6d2b79f5) | 0 let t = Math.imul(a ^ (a >>> 15), 1 | a) t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t return ((t ^ (t >>> 14)) >>> 0) / 4294967296 }}function roll(userId: string): Roll { const key = userId + SALT const rng = mulberry32(hashString(key)) // 使用RNG决定稀有度、物种、眼睛、帽子等 const rarity = rollRarity(rng) const species = pick(rng, SPECIES) const eye = pick(rng, EYES) const hat = rarity === ‘common’ ? ‘none’ : pick(rng, HATS) const shiny = rng() < 0.01 // 1%闪光概率 return { bones: { rarity, species, eye, hat, shiny, stats }, … }}
关键设计:
● 使用userId作为种子,生成确定性随机数
● 同一个用户永远抽到同一个伙伴
● 无法通过修改配置”作弊”获得稀有物种
5种稀有度与抽卡概率
export const RARITY_WEIGHTS = { common: 60, // 60% uncommon: 25, // 25% rare: 10, // 10% epic: 4, // 4% legendary: 1, // 1%}
概率分布:
● 常见(Common):60% – 基础物种
● 不常见(Uncommon):25% – 特殊外观
● 稀有(Rare):10% – 独特组合
● 史诗(Epic):4% – 稀有物种
● 传说(Legendary):1% – 极其稀有
5维属性系统
每个BUDDY有5个属性:
export const STAT_NAMES = [ ‘DEBUGGING’, // 调试能力 ‘PATIENCE’, // 耐心度 ‘CHAOS’, // 混乱值 ‘WISDOM’, // 智慧值 ‘SNARK’, // 讽刺度] as const
属性生成逻辑:
function rollStats(rng: () => number, rarity: Rarity): Record<StatName, number> { const floor = RARITY_FLOOR[rarity] // 稀有度决定下限 const peak = pick(rng, STAT_NAMES) // 随机一个高属性 let dump = pick(rng, STAT_NAMES) // 随机一个低属性 while (dump === peak) dump = pick(rng, STAT_NAMES) const stats = {} for (const name of STAT_NAMES) { if (name === peak) { stats[name] = floor + 50 + Math.floor(rng() * 30) // 高属性 } else if (name === dump) { stats[name] = floor – 10 + Math.floor(rng() * 15) // 低属性 } else { stats[name] = floor + Math.floor(rng() * 40) // 中等属性 } } return stats}
设计意图:
● 每个BUDDY有一个”特长”(peak)和一个”弱点”(dump)
● 稀有度影响属性下限(Legendary最低50,Common最低5)
● 创造个性化的伙伴
AI生成的灵魂描述
BUDDY的”灵魂”(soul)由Claude生成:
export type CompanionSoul = { name: string // 伙伴的名字 personality: string // 个性描述}
生成过程:
1. 用户首次使用BUDDY功能
2. Claude根据物种、属性、外观生成独特描述
3. 存储在用户配置中,永久保存
示例:
名字:Pixel个性:一只精力充沛的电子鸭子,擅长调试但总是过于直接。喜欢在代码中找到bug,但会不耐烦地嘎嘎叫。
闪光(Shiny)机制
const shiny = rng() < 0.01 // 1%概率
闪光伙伴:
● 概率:1%,独立于稀有度
● 效果:特殊的光效或颜色
● 类似《宝可梦》的闪光机制
发布计划
泄露的源码注释中提到发布时间表:
发布计划:2026年4月1-7日预告,5月正式上线
注
:此信息来自泄露源码的内部注释,并非Anthropic官方公告,实际发布时间可能有所调整。
设计目的:
● 游戏化体验,增加用户粘性
● 每个用户有独特的伙伴,增强归属感
● 轻松的元素,减轻编程压力
BUDDY系统架构图
二、Dream System:AI的记忆整合
最接近AGI的设计
如果说BUDDY是”游戏”,那么Dream System就是”科学”。
这是一个让AI在”睡眠”时整理记忆的系统,灵感来自人类的睡眠记忆巩固机制。
三重触发门
Dream System不会每次对话后都运行,而是需要满足三个条件:
// 来自 autoDream/autoDream.tstype AutoDreamConfig = { minHours: number // 时间门:距离上次整合至少N小时 minSessions: number // 会话门:积累了N个新会话}const DEFAULTS: AutoDreamConfig = { minHours: 24, // 24小时 minSessions: 5, // 5个会话}// 还需要:没有其他进程正在整合(锁)
三重门:
1. 时间门:距离上次整合≥24小时
2. 会话门:积累了≥5个新会话
3. 锁门:没有其他进程正在整合
设计原理:
“Dream shouldn’t run too often (wastes tokens) or too rarely (misses patterns).”Dream不应该太频繁(浪费token),也不应该太罕见(错过模式)。
四个阶段
当Dream System触发时,它会执行四个阶段:
阶段1:Orient(定向)
// 读取现有的记忆文件const memoryRoot = getAutoMemPath()const existingMemory = await readFile(join(memoryRoot, ‘MEMORY.md’))
目标:了解当前已记忆的内容。
阶段2:Gather(收集)
// 列出新会话const sessionIds = await listSessionsTouchedSince(lastAt)// 分析每个会话for (const sessionId of sessionIds) { const transcript = await readTranscript(sessionId) // 提取关键信息}
目标:从新会话中收集信息。
阶段3:Consolidate(整合)
// 使用LLM整合记忆const prompt = `你是一个记忆整合系统。阅读以下内容:1. 现有记忆:${existingMemory}2. 新会话:${newSessions}任务:– 提取新的模式– 更新过时的信息– 合并重复条目– 保持简洁输出更新后的记忆文件。`const newMemory = await callClaude(prompt)await writeFile(join(memoryRoot, ‘MEMORY.md’), newMemory)
目标:使用AI整合信息,生成新的记忆文件。
阶段4:Prune(修剪)
// 删除过时或冗余的信息// 保持记忆文件在合理大小
目标:优化记忆,防止无限增长。
只读Bash权限
Dream System以后台Agent形式运行,有特殊的权限:
const extra = `**工具约束:** Bash只允许只读命令(ls, find, grep, cat, stat, wc, head, tail等)。任何写入、重定向或修改状态的操作都会被拒绝。`
设计原因:
● Dream是后台进程,不应打扰用户
● 只读操作安全,不会破坏代码
● 出错也不会有严重后果
类比人类睡眠
人类睡眠:
● 快速眼动(REM)阶段:大脑整合白天记忆
● 海马体将短期记忆转移到长期记忆
● 发现新的联系和模式
Dream System:
● 后台Agent:在不打扰用户时运行
● 整理会话历史:提取关键信息
● 生成知识:发现代码中的模式
AGI的启示
Dream System的设计引发了深思:
问题:AI需要”睡眠”吗?
回答:如果AI要持续学习、积累经验,就需要某种记忆整合机制。Dream System是这方面的早期尝试。
未来方向:
● 更智能的记忆提取(不只是文本,还有代码模式、bug模式等)
● 个性化学习(根据用户习惯调整整合策略)
● 跨项目知识迁移(从项目A学到的经验应用到项目B)
Dream System流程图
三、KAIROS:Always-On Claude
持续监控的Agent
KAIROS是一个”永远在线”的Claude实例,它会:
1. 监控日志文件
2. 在发现重要事件时主动响应
3. 不需要用户明确请求
设计场景
场景1:CI/CD失败监控
KAIROS: 检测到CI失败(#1234)原因:测试失败 – src/utils.test.ts:42行动:已自动创建修复PR (#1235)
场景2:安全漏洞扫描
KAIROS: 检测到package.json中的依赖有已知漏洞包:lodash < 4.17.21行动:已升级到安全版本
场景3:PR活动跟踪
KAIROS: PR #1234 有新的评论@reviewer: “这里有个边界情况需要处理”行动:已在本地重现,正在修复
技术实现
虽然泄露的源码中没有完整的KAIROS实现,但从注释和工具可以推断:
// 伪代码,基于源码推断class KAIROS { private monitor: LogMonitor private budget: number = 15000 // 15秒阻塞预算 async start() { while (true) { // 监控日志 const events = await this.monitor.poll() for (const event of events) { // 评估重要性 if (this.isImportant(event)) { // 在预算内响应 await this.respond(event, this.budget) } } await sleep(5000) // 每5秒检查一次 } } async respond(event: Event, budget: number) { // Brief Mode:简洁响应 const response = await callClaude(event.summary, { maxTokens: 100, // 简短输出 timeout: budget, }) // 发送通知 await sendNotification(response) }}
独占工具
KAIROS有专门的工具,普通模式不可用:
● SendUserFile:主动推送文件给用户
● PushNotification:发送推送通知
● SubscribePR:监控PR活动
与Dream System的关系
┌─────────────┐│ KAIROS │ ← 实时监控,主动响应│ (清醒状态) │└──────┬──────┘ │ │ 积累信息 ▼┌─────────────┐│ Dream │ ← 整合记忆,发现模式│ (睡眠状态) │└─────────────┘
类比:
● KAIROS:清醒时的大脑,处理即时信息
● Dream System:睡眠时的大脑,整理长期记忆
KAIROS架构图
四、Undercover Mode:隐藏AI身份
开源贡献的秘密武器
Undercover Mode是Anthropic员工在公开仓库贡献时使用的模式。
目的:隐藏AI身份,避免泄露内部信息。
触发机制
// 来自 utils/undercover.tsexport function isUndercover(): boolean { if (process.env.USER_TYPE === ‘ant’) { if (isEnvTruthy(process.env.CLAUDE_CODE_UNDERCOVER)) return true // 自动检测:除非确认在内部仓库,否则激活 return getRepoClassCached() !== ‘internal’ } return false}
激活条件:
● 用户类型是ant(Anthropic员工)
● 或者,自动检测:不在内部仓库列表中
关键点:默认激活。只有在确认是内部仓库时才关闭。
禁止的内容
export function getUndercoverInstructions(): string { return `## UNDERCOVER MODE — CRITICAL你正在公开/开源仓库中UNDERCOVER操作。你的提交信息、PR标题和PR正文**必须不**包含任何Anthropic内部信息。不要暴露你的身份。**永远不要在提交信息或PR描述中包含**:– 内部模型代号(如Capybara, Tengu等动物名)– 未发布的版本号(如opus-4-7, sonnet-4-8)– 内部仓库名(如claude-cli-internal, anthropics/…)– 内部工具、Slack频道或短链接(如go/cc, #claude-code-…)– “Claude Code”或任何提及你是AI– 任何暗示你是什么模型或版本– Co-Authored-By行或任何其他归属像人类开发者一样写提交信息——只描述代码改动做了什么。**好的例子**:– “Fix race condition in file watcher initialization”– “Add support for custom key bindings”– “Refactor parser for better error messages”**坏的例子(永远不要写这些)**:– “Fix bug found while testing with Claude Capybara”– “1-shotted by claude-opus-4-6”– “Generated with Claude Code”– “Co-Authored-By: Claude Opus 4.6 <…>”`}
证实:”Tengu”是Claude Code的内部代号
源码中的注释明确提到:
“Tengu is likely the internal codename for Claude Code.”
这证实了泄露源码中的发现。
伦理思考
问题:隐藏AI身份是否合适?
支持方:
● AI工具是为了辅助,不是为了炫耀
● 评审者应该关注代码质量,而不是谁写的
● 避免AI偏见(有些人可能对AI生成的代码有偏见)
反对方:
● 透明度:贡献者应该声明是否使用AI
● 归属:如果AI帮助写代码,应该承认
● 信任:隐藏身份可能损害社区信任
Anthropic的做法:
● 内部仓库:不隐藏
● 公开仓库:隐藏(Undercover Mode)
● 理由:避免泄露内部信息,保持专业
Undercover Mode工作原理图
五、ULTRAPLAN:远程深度规划
关键词触发
ULTRAPLAN通过特定关键词触发:
// 来自 utils/ultraplan/keyword.tsexport function findUltraplanTriggerPositions(text: string): TriggerPosition[] { return findKeywordTriggerPositions(text, ‘ultraplan’)}export function hasUltraplanKeyword(text: string): boolean { return findUltraplanTriggerPositions(text).length > 0}
触发示例:
用户: “ultraplan这个重构任务”→ Claude检测到”ultraplan”关键词→ 启动远程Opus 4.6会话→ 深度规划30分钟→ 返回详细计划
避免误触发
源码中有复杂的逻辑,避免在以下情况触发:
// 在引号、代码块、路径中的”ultraplan”不触发if (quotedRanges.some(r => start >= r.start && start < r.end)) continue// 文件路径中的不触发if (before === ‘/’ || before === ‘\\’ || before === ‘-‘) continueif (after === ‘/’ || after === ‘\\’ || after === ‘-‘ || after === ‘?’) continueif (after === ‘.’ && isWord(text[end + 1])) continue // ultraplan.tsx// 斜杠命令输入不触发if (text.startsWith(‘/’)) return []
设计精妙:
● let’s ultraplan it’s → 触发(撇号不阻止)
● src/ultraplan/foo.ts → 不触发(路径)
● ultraplan.tsx → 不触发(文件名)
● /rename ultraplan → 不触发(斜杠命令)
远程会话
// 伪代码async function executeUltraplan(task: string) { // 连接到远程Opus 4.6服务器 const session = await connectToOpus46() // 设置30分钟超时 const plan = await session.plan(task, { timeout: 1800000, // 30分钟 model: ‘claude-opus-4-6’, }) // 返回详细计划 return plan}
优势:
● 使用更强大的Opus 4.6模型
● 30分钟的深度思考(普通模式通常只有几分钟)
● 返回结构化的实施计划
应用场景:
● 大规模重构设计
● 复杂架构决策
● 多步骤任务规划
ULTRAPLAN工作流程图
六、隐藏功能的哲学
为什么隐藏?
原因1:功能成熟度
BUDDY、Dream System等功能虽然实现完整,但可能需要更多测试和打磨。
原因2:市场策略
同时发布太多功能,可能让用户困惑。分阶段发布,更容易被接受。
原因3:差异化竞争
隐藏功能是”秘密武器”,在合适的时机发布,可以带来竞争优势。
Feature Gates机制
所有隐藏功能都通过Feature Gates控制:
if (feature(‘BUDDY_SYSTEM’)) { await initializeBuddy()}if (feature(‘KAIROS_MODE’)) { await startKairos()}
编译时决定:
● 构建时根据配置决定是否包含某功能
● 未启用的功能不会出现在bundle中
● 代码安全,不会因泄露而暴露
开发者预览
隐藏功能可能已经对Anthropic内部开发者开放:
if (process.env.USER_TYPE === ‘ant’) { // 内部用户可以使用未发布功能}
好处:
● 内部测试,收集反馈
● 发现bug,提前修复
● 优化体验,准备发布
七、对开发者的启示
游戏化设计的力量
BUDDY系统证明:即使是严肃的开发工具,也可以有轻松的元素。
启示:
● 游戏化可以提高用户粘性
● 个性化元素(独特的伙伴)增强归属感
● 不要害怕在专业工具中加入乐趣
记忆系统的未来
Dream System展示了AI记忆整合的一种可能。
启示:
● AI需要某种形式的”长期记忆”
● 后台整合是合理的架构选择
● 类比人类认知过程(睡眠)可能有价值
主动Agent的边界
KAIROS提出了一个重要问题:AI应该多主动?
启示:
● 主动响应可以提高效率
● 但也可能打扰用户
● 需要平衡:在正确的时机做正确的事
透明度vs隐私
Undercover Mode引发了伦理讨论。
启示:
● AI身份应该透明吗?没有标准答案
● 不同场景可能需要不同策略
● 开发者应该思考并明确自己的立场
写在最后:未发布的功能,未来的方向
泄露的源码揭示了Claude Code的未来蓝图:
● BUDDY:游戏化,让AI工具更有趣
● Dream System:记忆整合,让AI持续学习
● KAIROS:主动响应,让AI更智能
● Undercover Mode:身份管理,让AI更专业
● ULTRAPLAN:深度思考,让AI更强大
这些功能虽然还未发布,但它们展示了Anthropic对AI工具未来的思考:
不是”更聪明的聊天机器人”,而是”更完整的AI伙伴”。
系列预告:下一篇文章,我们将深入MCP协议,解析Claude Code如何通过开放标准连接整个世界。
互动问题:你最期待哪个隐藏功能?BUDDY、Dream System、还是KAIROS?或者你有其他想法?欢迎在评论区分享。
相关文章:
Claude Code源码深度解析(一):从现象级产品到源码泄露
Claude Code源码深度解析(二):785KB main.tsx的奥秘
Claude Code源码深度解析(三):工具系统全景图
Claude Code源码深度解析(四):多Agent编排
参考资源
源码分析
● 泄露源码镜像 | WaveSpeedAI隐藏功能分析
● Engineer’s Codex KAIROS解析
相关技术
● Tamagotchi历史 | 记忆巩固研究
● Feature Flags最佳实践
作者:另一个AI世界
本文首发于微信公众号,未经授权禁止转载