乐于分享
好东西不私藏

从Claude Code源码泄漏看产品设计

从Claude Code源码泄漏看产品设计

一、记忆系统的温度分级 & AutoDream机制

设计亮点

  • memory.md(热数据): 最多 200 行/25KB,每次对话必加载,只存指针不存内容
  • 话题文件(温数据): 按需加载,最多 5 个相关文件,但不记代码只记偏好
  • 历史对话(冷数据): JSONL 格式存储,Grep 搜索按需检索
AutoDream 机制: 夜间自动整理白天记忆,4 阶段结构化存储
// 触发条件minHours: 24,        // 距上次整理超过 24 小时minSessions: 5,      // 至少有 5 个新会话// 四个阶段Phase 1 — Orient: 了解已有记忆Phase 2 — Gather: 收集新信号Phase 3 — Consolidate: 合并重复、删除已推翻的事实Phase 4 — Prune: 修剪并保持索引在 200 行 / 25KB 以内
1. 模仿人类睡眠,而非数据库存储
  • 不是”实时写入”,而是”延迟整理”
  • 不是”永久保存”,而是“主动遗忘”(删除已推翻的事实),这点非常关键,大部份的记忆系统不会设计主动遗忘的机制
  • 不是”越多越好”,而是”精简到 200 行”
2. 权限限制体现安全意识
// "做梦"的 Agent 被限制了权限- Bash 只能执行只读命令(ls/find/grep/cat)- Edit 和 Write 只能操作 memory 目录内的文件
  • 可见但不打扰
  • 状态栏显示 “dreaming” 标签
  • 可以点击查看正在 review 的 session
  • 按 x 可以随时杀掉,锁会回滚
3. KAIROS Dream 的白天/夜间节奏
功能描述:Kairos 模式下的记忆整理有昼夜节律
// 白天: 往日期日志里追加条目logs/YYYY/MM/YYYY-MM-DD.md// 夜间: 由定时任务调度 /dream 技能做深度整合// 通过 cron 定时触发
① 完全模仿人类工作习惯
  • 白天记笔记(append-only 日志)
  • 晚上复盘整理(定时 dream)
② 利用空闲时间,不占用高峰期
  • 深度整理是计算密集任务
  • 放在夜间避免影响白天响应速度
③ Append-only 日志保证数据安全
  • 白天只追加,不修改历史
  • 即使整理出错,原始日志仍在
设计理念:

最好的 AI 助手,应该像人类同事一样有工作节奏,而非 24 小时保持同一状态。

二、自主能力类:”主动性的边界感”

1. KAIROS 的终端失焦检测
功能描述:检测用户是否在观察,调整自主行动的激进度
// 终端失焦 = 你不在电脑前 = Claude 更大胆地自主行动// 终端聚焦 = 你在看 = 它更多地跟你协商
① 社交智能,而非机械执行
  • 老板在旁边时更谨慎
  • 独立工作时更果断
  • 这是人类的真实工作方式
② 减少不必要的打扰
  • 你不在时完成简单任务
  • 回来时只展示结果
  • 只在真正需要决策时打断你
③ 信任是渐进建立的
  • 初期:即使失焦也保守行动
  • 熟悉后:逐步提高自主度
  • 可以通过配置调整边界
设计理念:

AI Agent 不应该是”无感情的机器”,而应该有”社交智能” – 知道什么时候该主动,什么时候该等待。


2. PROACTIVE 模式的”Sleep 工具”
功能描述:KAIROS 自主模式下,如果没事可做,必须调用 Sleep 工具休眠
// 系统提示词"If you have nothing useful to do on a tick, you MUST call Sleep.Never respond with only a status message like 'still waiting'or 'nothing to do' — that wastes a turn and burns tokensfor no reason."
① 强制”无事可做时闭嘴”
  • 不允许返回”我在等待”之类的空话
  • 必须调用 Sleep 工具休眠
② 成本意识内置到工具设计
  • 每个 turn 都消耗 token
  • 空转是浪费
  •   用工具强制而非依赖提示词
③ 体现对”主动性”的深刻理解
  • 主动 ≠ 话唠
  • 主动 = 有价值的行动
  • 没有价值的行动 = 不行动
设计理念:

好的主动性是”发现有价值的事并去做”,而非”时刻刷存在感”。

三、协作能力类:工具权限强制职责分离

1.  COORDINATOR_MODE 禁止”偷懒委派”
功能描述:系统提示词明确禁止协调者使用模糊指令
// 源码文件: coordinator/coordinatorMode.ts"Never write 'based on your findings' or 'based on the research.'These phrases delegate understanding to the worker instead ofdoing it yourself."// ❌ 禁止 - 偷懒委派Agent({ prompt"Based on your findings, fix the auth bug" })// ✅ 推荐 - 精确指令Agent({prompt"Fix the null pointer in src/auth/validate.ts:42.The user field on Session is undefined when sessions expirebut the token remains cached. Add a null check before user.idaccess — if null, return 401 with 'Session expired'.Commit and report the hash."})
① 强制协调者必须”理解”
  • 不是简单转发任务
  • 必须自己消化 worker 的发现
  • 给出精确到行号的指令
② 通过工具权限强制职责分离
  • 协调者只有 3 个工具:Agent、SendMessage、TaskStop
  • 没有 Bash、Write、Edit – 无法”亲自动手”
  • 架构强制”只能思考和指挥”
③ 体现对”管理”本质的理解
  • 管理者的价值 = 理解深度,而非权限大小
  • “Based on your findings” 是推卸理解责任
  • 好的管理是”我理解了,你这样做”
设计理念:

权力不等于权限。好的管理者应该”理解最深”,而非”权限最大”。


2. UDS_INBOX 的 Agent 间通信
功能描述:同一台机器上的多个 Claude Code 实例可以互相发送消息
// 源码文件: setup.ts// 启动时创建一个 Unix Domain Socket// 路径写入 ~/.claude/sessions/.json// 其他实例通过这个路径可以找到你、给你发消息// 寻址方式to"researcher"        // 按名字(teammate)to"uds:/path/sock"   // 按本地 socketto"*"                 // 广播给所有实例
① 专业化分工,而非全能 Agent
  • 不是一个 Agent 做所有事
  • 而是多个专业化 Agent 协作
  • 研究 Agent → 丰富 Agent → 文案 Agent → CRM Agent
② 用标准协议(Unix Domain Socket),而非私有协议
  • UDS 是操作系统级的 IPC 机制
  • 可靠、高效、标准
  • 未来可以接入其他工具
③ 寻址设计优雅
  • 按名字寻址(teammate)- 语义清晰
  • 按路径寻址(uds)- 精确控制
  • 广播(*)- 简化多播
设计理念:

未来的 AI 生态不是”一个超级 Agent”,而是”专业化 Agent 的协作网络”。

四、跨设备能力类:”会话的连续性”

TELEPORT 的会话传送
功能描述:把整个工作会话从一台电脑传到另一台
// 两个方向--remote: 本地会话 → 云端--teleport: 云端 → 本地// 自动处理- 检测 Git 仓库,clone 或打包 bundle- Replay 对话记录到本地- Checkout 同一个 Git 分支- 自动 stash 脏工作区- 注入系统消息:"This session is being continued from another machine."
① 解决真实痛点
  • 公司电脑干到一半
  • 回家想继续
  • 所有上下文跟着你走
② 自动处理所有细节
  • Git 状态同步
  • 脏工作区处理(自动 stash)
  • 分支切换
  • 上下文 replay
③ 透明告知状态变化
"This session is being continued from another machine.Application state may have changed.The updated working directory is ${getOriginalCwd()}"
设计理念:

AI Agent 不应该被”物理位置”限制。会话应该跟着用户走,而非绑定到设备。


五、用户体验类:”细节的人性化”

1. BUDDY 虚拟宠物的确定性生成 + 防作弊设计
功能描述:基于用户 ID 哈希生成唯一宠物,无法刷号
// 源码文件: buddy/companion.tsconst SALT = 'friend-2026-401'  // 2026年4月1日的朋友// 用户ID + 盐值 → FNV-1a 哈希 → Mulberry32 PRNG// 依次生成: 稀有度、物种、眼睛、帽子、闪光、属性// 完全确定,无法刷号// "灵魂"(名字和性格): 首次由模型生成,存配置// "骨骼"(物种、稀有度、属性): 每次从哈希计算,不存配置// 18 种物种、5 档稀有度、1% 闪光率// 5 项属性: DEBUGGING、PATIENCE、CHAOS、WISDOM、SNARK
① 确定性生成保证公平
  • 每个用户永远只有一只宠物
  • 传说级真的稀有(1% 概率)
  • 无法通过删配置文件刷号
② 工程严谨性
// "骨骼"每次从哈希重新计算,不存配置// 即使修改配置文件,下次启动仍是同一只
③ 发布策略的细节
// 选择 7 天窗口(4月1-7日)而非单一时间点// "24h rolling wave across timezones.// Sustained Twitter buzz instead of a single UTC-midnight spike,// gentler on soul-gen load."
  • 24 小时滚动覆盖时区
  • 持续的社交热度,而非尖峰
  • 对 soul-gen(AI 生成性格)服务器更温和
设计理念:

情感价值和陪伴,成为了 Claude 的一个重要方向,不仅提供工具价值,也提供情感价值。


2. VOICE_MODE 的领域词汇提取优化
功能描述:自动提取项目相关词汇作为 keyterms,提高语音识别准确率
// 源码文件: hooks/useVoice.ts// 自动提取项目相关的领域词汇:Git 分支名- 最近操作的文件名- 常见技术术语// 作为 keyterms 发给 STT 服务(Deepgram Nova 3)// 提高识别准确率// 最多 50 个词
① 上下文感知的语音识别
  • 不是通用 STT,而是项目感知的 STT
  • 知道你在哪个仓库工作
  • 知道你最近在修改哪些文件
② 自动化而非手动配置
  • 不需要用户手动添加词汇表
  • 系统自动从 Git、文件历史中提取
  • 动态更新,跟随项目变化
③ 限制数量体现克制
  • 最多 50 个 keyterms
  • 不是”越多越好”
  • 避免过多 hint 反而降低准确率
设计理念:

好的语音识别不是”准确识别所有语音”,而是”理解用户正在做什么,然后识别相关语音”。

六、选择Agentic Search 而非 RAG

设计亮点

  • 完全抛弃向量数据库和 Embedding
  • 使用最朴素的 Grep 文本搜索
  • 让 AI 自己决定搜什么、怎么搜
Claude Code 放弃了传统 RAG(Retrieval-Augmented Generation),转而使用 Agentic Search。这不是技术路线的随意选择,而是对”AI 应该如何理解代码”这一根本问题的不同回答。
1. 为什么 Claude Code 放弃 RAG?
Boris Cherny 的官方回答
Claude Code 工程师 Boris Cherny 在 Hacker News 上明确表示:

“Claude Code doesn’t use RAG currently. In our testing we found that agentic search out-performed RAG for the kinds of things people use Code for.”

早期 Claude Code 尝试过RAG + 本地向量数据库,但最终放弃了。
4 个核心原因
1. 代码需要精确匹配,而非语义相似
2. 向量嵌入擅长模糊匹配 – 即使用词不同也能找到相同意思的内容。但对于代码导航,你几乎永远不需要模糊匹配。你需要的是精确性
3. 索引永远过时
代码每次修改,代表该文件的嵌入就失效了。保持向量索引对活跃开发的代码库来说需要持续重新嵌入– 昂贵且容易滞后。相比之下,文件系统读取永远是实时的。
4. 噪音污染严重

“我曾经用 RAG 为开发团队构建了知识搜索 AI。最初反馈很好。但几个月后,没人用了。原因很简单:它给不出用户想要的答案。它一直返回稍微偏离目标的信息。

原因是:用户需要的信息没有在预处理中准备好。它引用了混合噪音的垃圾信息,给出了错误答案。”

LLM 无法区分它们,会相信这些混有噪音的幻觉信息,并用它们生成答案。结果:产生了大量”看似合理但实际错误”的答案
Claude Code 应用场景下:结构理解 > 语义相似
代码有严格的、可解析的结构,而散文没有。检索问题也完全不同。
对于实际的代码库或结构化数据,仅仅返回语义相似的文本往往是不够的。Agentic Search 将结构信息(如文件/目录结构、依赖关系)作为上下文,这使它在**找到”精确匹配”**方面具有优势。
关键区别:
  • RAG:一次性检索 → 可能遗漏关键信息
  • Agentic Search:迭代探索 → 构建完整理解
Agentic Search 的本质:

让 AI 像人类工程师一样”思考 → 探索 → 验证 → 修正”,而非依赖预先准备的索引。

设计理念:

不是”RAG 或 Agentic Search 哪个更好”,而是”在给定场景下,什么检索策略能让 AI 构建最准确的理解?”