大部分人对 Claude Code 的使用开发不到 30%
Boris Cherny 在去年 5 月份对 Claude Code 的使用做了一个分享,视频链接:https://www.youtube.com/watch?v=6eBSHbLKuN0
Boris 这名字一听就是斯拉夫民族的,出生在乌克兰 Odesa,他爷爷是前苏联的程序员。现在有人提到为什么 Claude Code 设计之初为什么没有考虑 IDE,提到的原因有 2 个:
- 团队成员使用很多个 IDE 工具,比如 VSCode、XCode 等,如果是 IDE 形态的产品,很难满足不同开发成员的需求
- 未来产品的趋势是去 UI 化,在 IDE 形态上的产品投入是愚蠢的,所以上来就 CLI 的产品形态,就没考虑过 IDE。
他写过《Programming TypeScript》,所以在 Claude Code(后续简称 CC)的源码(估计很多人下载了 Claude Code 前端泄露的源码,但真去研究的估计很少,门槛太高了)里看到大量的 .ts 文件和 TypeScript 代码。

我不是 Coding 的典型用户,会拿它来编辑视频,但很多用法确实不知道而且是错误的。
1. CLAUDE.md 是多层次的
之前把很多指令性的东西放在全局「~/.claude/CLAUDE.md」,不论什么项目。
这完全是错误的(这会浪费模型不必要的 Context),如果某些指令是针对某个项目的,最好在这个项目下创建 CLAUDE.md
2. CC 本身也是可以设置主题的

之前 CC 在 Ghostty 显示的适合部分代码是灰色的,由于 Ghostty 背景是黑色的,这部分代码完全看不清楚,我一直以为是 Ghostty 主体配置问题,其实在 CC 里输入 /theme 命令切换成 Dark mode 就可以解决这个问题。
3. !可以直接输入命令

输入 !可以直接输入Bash 命令,CC 设计这个初衷是了解用户在终端的操作,做了什么事情,这样可以作为 Conversation History 的一部分。即使后续触发了 Compact 命令压缩了会话,Bash 命令交互过程也不会丢失。
第2条的 # 创建命令我看目前好像失效了,现在是通过 /memory 命令去创建记忆。
4. Commands 应该是 Skill 的前身

在 commands 文件夹下新建 xx.md 后就可以用 /xx 的方式去调用,我理解为这是 Skill 的早期形态,现在的 Skill 的能力更为强大。
5. CC 也可以通过 SDK 方式调用

这种方式就太偏开发了,大部分人估计用不到,如果集成到 CI/CD 环境里应该是很实用的,估计 Anthropic 内部存在这种实践方式。
6. CC 的设计算是一个小型操作系统
Claude Code 源代码泄露以后,很多人做了分析,但 https://y-agent.github.io/inside-claude-code/ 这个我认为是最全面的,如果你时间有限,看 Overview 部分就行了。
不知道 AI 圈子最近为啥又造了一个 Harness Engineering,Harness 这个词感觉充满了恶趣味。
下图就是 CC CLI 的整体架构,基本跟操作系统的分层体系差不多了。
大模型本身最稀缺的就是 Context Window,200 KB 大小,1MB 是要走 API 调用付费的,成本就更高,适合大型复杂的项目。
用户每一个 Query 后,CC 都会加一段 cached prefix, 包括用户配置的 CLAUDE.md、Skill、MCP 服务等。CC 的整个设计很多都是围绕这个最大限度地挖掘 Context 价值,让用户跟 CC 多轮对话以后还能有相对正常的体验,Context 信息的丢失不要太快。
前段时间很多人为了收集 Skill 装了很多 Skill,单 Context 视角来看这是愚蠢的,因为每一个 Skill 安装后其描述信息都会被整合到这个 cached prefix,让一些当前项目中用不到的 Skill 去占用宝贵的 Context,这都会加速你的 Token 消耗速度从而更快触发 Usage Limit。

上图说明了 Context Window 都是被什么内容占用的,虽然 Context Window 有 200KB 看上去也不小,但加上系统默认的,CC 开始第一次互动后其 Context Window 差不多只有 170KB 了。
在「III.2 — Context Compaction」里详细介绍了 CC 多重压缩机制,就是为了保证 Context 不会快速地被消耗。

CC 的 Reminder 机制也很有意思,在与用户互动过程中,文件的变动、Git 的状态等都会通过 Reminder 插入到会话中,让大模型能实时了解互动过程中 Context 的变化,让大模型不会在多轮会话中失去对用户名的聚焦。
当然这个随着会话轮次的增多,这种情况其实没法避免的:
LLMs suffer from instruction decay — the longer the conversation, the less attention the model pays to instructions at the beginning of the context. As the conversation history grows and pushes the system prompt further from the model’s current focus, critical behavioral rules fade in influence. System reminders counteract this by re-emphasizing rules at the point where they are most relevant.
所以一开始与 CC 互动的时候就把意图和任务完整地表达清楚,达到模型效能的最大化。
7. CC Agent 几种类型

CC 本身是内置了 Explore、Plan 等类型的 Agent。
其中 Explore 仅在读取文件查找内容时使用,模型默认用的 Haiku,也算降低 Token 消耗成本了。另外 Explore 或者 Plan 模式下的 Agent 是会主动忽略 CLAUDE.md 的内容,降低不必要的 Context Window。
另外,你也可以自己配置 Custome Agent,可以执行哪些 Bash 命令,做什么事情,目前我还没挖掘这种方式的使用场景。

CC 的 Agent 只有 Plan Mode 是单独对外的,从 Prompt 设计来看就是软件架构师的角色。