乐于分享
好东西不私藏

ClaudeCode源码学习:AI产品的天花板设计

ClaudeCode源码学习:AI产品的天花板设计

关于Claude Code我的疑惑

清明节前ClaudeCode源码泄漏了,好多人已经解析源码的妙处了。但是我总觉得自己看过,不如自己研究过的资料内化的好。所以过完清明,一有时间就来学习”先进思想”了。我得先表态:我是产品经理,扒源码打开看原理不应该是产品经理的技能,还是需求分析、讲故事的能力最重要。我只是想把“故事”从骨架到细节都理解清楚,所以拆开看细节。

我使用claude的感受主要有:

  1. 它不是纯聊天,是真的能做很多事。感觉它很“聪明”,我命令它执行的时候,很少很少出错。我很好奇它是如何规划的,如何决定用什么工具的?怎么保证工具的输出效果?(大部分工具,规划完做着做着就把任务忘了…)
  2. 究竟怎么记住我们沟通的信息的?我觉得它从来没有忘记过。
  3. 怎么确定一个topic的?怎么能理解到一个话题已经结束了?因为用其他AI的时候经常出现不合时宜的重启话题或者继续话题。
我查了下主要有以下几个特别的模块造成了我的感受:
模块
一句话总结
Query Loop
“思考→行动→再思考”的循环,直到认为完成了。使用Coordinator编排多个人并行工作,自己只做综合决策。
上下文和记忆管理
三层记忆 + 自动压缩,不会忘也不会溢出
工具系统
Claude的”手”,能做读文件、改代码、跑命令
权限系统
每次危险操作都要你确认
所以我沿着这几个模块详细看了下。

PS:没想到我都没为Claude充过值,还能吃上细糠看到充值都买不到的原理。

Query Loop流程

简单理解:Query Loop是拆解问题后不断的循环,直到问题解决为止,负责循环、调用LLM、执行工具Coordinator就是一套”管理者”的大脑配置+专用工具,它让一个LLM从”自己干活”变成”指挥别人干活”。

给我的感受:

  1. 由一个coordinator指挥多个agent自己干活、回收结果的形式现在已经挺普遍了,不是什么新鲜事情了,不这么做才是有点奇怪;

  2. 但是我之前没见过Loop直到问题解决的形式,这个思想还是挺新颖的;

  3. PS:里面prompt写得好棒,我觉得有必要再把这个项目中的所有prompt捞出来学一下。写得任务清楚、边界清晰、没有废话,毕竟产品经理是prompt engineer,这个得好好学。

上下文和记忆管理

有两个概念:session和topic,一个session可以包含很多topics。Session是用户与AI交互的全局上下文容器,Topic是Session内的子上下文(对应用户单次连续意图,如 “查机票→问退改政策→选座位” 为一个 Topic)。这俩都有状态:Init、active、suspended、destroyed/completed,基本就是一个非常简单的状态机。

分了三层记忆:

记忆周期
对应系统层级
核心存储内容
核心价值
短期记忆
话题级原始上下文+ 工具级临时缓存
单 Topic 完整对话、未压缩原始消息、工具实时调用记录
保证单意图对话流畅、不丢失细节
中期记忆
话题级压缩摘要(autoCompact 生成)
早期对话的精简摘要、关键行为总结、压缩后的上下文
控制 Token 不超限,同时记住核心内容,长对话不忘
长期记忆
会话级持久化记忆
Session 状态、所有 Topic 元信息、项目偏好、全局配置
保证跨话题、跨时段的会话连续性

管理记忆的流程图如下,主要cover内容:如何压缩记忆、如何使用/召回记忆、如何失效记忆。

「如何使用/召回记忆」

  • 第一优先级(短期记忆):当前激活 Topic 的工具级临时缓存(最新工具调用结果、命令执行状态)、原始交互上下文(未压缩的最新对话)
  • 第二优先级(中期记忆):当前 Topic 的压缩摘要(早期对话精简内容)
  • 第三优先级(长期记忆):会话级全局配置 + 历史 Topic 元信息(跨话题通用信息)

「如何压缩记忆」

  • 短期记忆更新:实时追加核心信息仅存「用户输入 + AI 响应 + 工具命令 / 关键输出 / 执行状态」,不存全量日志,保持轻量化;
  • 中期记忆更新:压缩触发时更新短期记忆超Token阈值 → 自动生成摘要,替换短期记忆的早期内容;
  • 长期记忆更新:话题 / 会话状态变更时更新仅同步Topic状态、会话配置、核心摘要,不同步原始冗余对话。

「如何失效记忆」

  • 短期记忆失效:工具调用完成/超时 → 工具级缓存立即清理;Topic切换/挂起 → 原始对话停止更新,等待压缩
  • 中期记忆失效:仅在Session 彻底销毁时失效;会话活跃期间永久保留,保障长对话不遗忘;
  • 长期记忆失效:会话手动删除/超期归档 → 仅保留用户/项目核心偏好,原始会话记录清理,仅留存统计摘要。

给我的感受:

session和topic的概念,再叠加三层记忆,明确定义了这些内容间转换的逻辑、节点,用工程化的思想来限制AI的输出,解决每个步骤中可能出现的各种问题。举个小例子:上下文压缩环节(短期记忆→中期记忆)下罗列出触发的几类场景,还是挺细致的:
触发场景
核心判定规则
上下文长度阈值触发
话题级记忆+工具级记忆的总Token数≥LLM上下文窗口80%(可配置)
状态切换触发
Topic从 “激活→挂起”、Session从 “挂起→活跃” 时,对非当前核心记忆做压缩
工具调用完成触发
工具调用结束(如FileReadTool读取大文件),对工具返回的全量内容做摘要压缩
时间衰减触发
同一Topic内交互超 N 轮(如 20 轮),对早期冗余交互做压缩
这种管理记忆的思想可以在所有AI项目中借鉴,值得有时间挖得更深入(或者让研发/算法帮忙挖)。

工具管理

工具分类
功能与例子说明
1.1 文件操作工具
读取文件内容(如 Read (“src/auth/login.ts”))、精确替换修改文件(如在第 42 行加一行代码)、创建 / 覆盖文件(如新建 test.js)、按模式搜索文件(如找所有 *.test.ts)、搜索文件内容(如在代码里找 “JWT”)、编辑 Jupyter notebooks(如修改.ipynb 文件)
1.2 命令执行工具
执行命令行(如 git commit -m “fix”)、执行 Windows 系统专用的 PowerShell 命令
1.3 网络工具
搜索网页(如查 “React best practices”)、获取指定 URL 的网页内容
1.4 Agent 协同工具
启动子 Agent(如并行做多件事)、给 Agent 发消息(如继续某个 Agent)、停止 Agent(如中途叫停)、获取任务输出(如查看 Agent 做了什么)、创建团队(启用多 Agent 协作)、删除团队(结束协作)
1.5 任务管理工具
创建 / 更新任务列表(如跟踪进度)、创建后台任务(如后台运行)、列出任务(如查看任务状态)、更新任务(如标记完成)
1.6 模式切换工具
进入计划模式(如先计划再执行)、退出计划模式(如批准执行)
1.7 技能工具
执行Skill(如调用 /commit 或 /review-pr)
1.8 其他工具
向用户提问、生成简报、代码智能(如跳转到定义等)、调用外部 MCP 服务、读取 / 修改配置、浏览器控制、屏幕捕获、设置定时任务
如果需要额外的其他工具也可以通过MCP的形式来定义工具。

给我的感受:提前定义的工具都是非常必要、一定会用上的,而且支持添加其他工具,可拓展性比较好。把工具提前打包好的思想肯定是非常有必要的,不过不同的项目可能借鉴的工具范围也不同,还是要从场景出发去思考。

权限管理

定义了6种全局的权限模式,根据不同的权限模式走不同的流程。默认使用的是default模式,可以通过命令行来调整模式。

模式
翻译
使用场景
default
所有危险操作都要问
日常开发
plan
先看计划再问
想先确认Claude要做什么
acceptEdits
改文件不问,危险命令问
信任文件修改,但不信任shell
bypassPermissions
完全不问,盲信
自动化脚本
dontAsk
完全不问,直接拒绝
不想Claude做任何操作
auto
Claude 自己判断
Anthropic 内部

又在此基础上定义了规则,支持:alwaysAllow/alwaysDeny/alwaysAsk。

操作危险操作时流程为:

给我的感受:管的可真细致、灵活啊。

把这些内容都看完之后,不禁猜测团队究竟多少人、能赚多少钱、怎么讲故事吸引到融资的、团队是怎么管理的才能看起来代码挺和谐。希望有朝一日可以翻翻看他们的财报找答案吧!