Claude Code高阶实战:打造顶级AI开发流

核心命题:Claude 能力边界决定协作深度
Holman 抛出了整场演讲最重要的一句话:「If Claude can't do everything you can do, it can't do your job with you.」
开箱即用的 Claude 只能看到一个代码仓库和一个 shell。对于从零到一、没有历史包袱、没有团队约定的小项目来说,这已经足够。但一旦进入专业软件工程的场景——尤其是有成千上万工程师协作的大型 monorepo——这种「香草味」的 Claude 就远远不够了。
**Monorepo(单一代码仓库)**是一种将多个项目、服务或组件的代码集中存储在同一版本控制仓库中的工程实践。Google、Meta、Microsoft 等科技巨头均采用此模式,其中 Google 的 monorepo 据报道超过 20 亿行代码,涵盖数万名工程师的日常工作。这种架构的优势在于跨项目重构的原子性和依赖关系的统一管理,但其代价是构建系统、代码导航和权限管理的极度复杂化。对 AI Agent 而言,monorepo 环境意味着无法简单地「读完所有代码」——光是理解依赖图谱、构建规则和团队约定,就需要大量超出源代码本身的隐性知识。
她指出了一个被严重低估的事实:专业软件工程中的大部分工作根本不存在于源代码里。决策发生在 Slack 讨论中,设计写在设计文档里,动机藏在会议记录和邮件往来中。当你觉得 Claude「走错了方向」时,往往是因为你大脑里有一些它无法访问的信息。让 Claude 能够访问这些信息,它的判断就会与你的思路高度一致。
她给出了一个极具操作性的实验建议:尝试一整天不离开 Claude Code 终端来完成工作。每当你需要切换到其他工具、Alt+Tab 去复制粘贴时,就把它记在纸上。到一天结束时,想办法把这些工具都接入 Claude。「你会发现差距比你想象的大得多。」
三大定制维度:访问、知识与工具
如果说有一条主线贯穿如何定制 Agent,那就是三个维度:Access(访问)、Knowledge(知识)、Tooling(工具)。
访问:让 Claude 看到「为什么」
需要接入的信息源包括:团队聊天(Slack 中的决策过程)、CI/CD(Holman 明确表示「你现在不应该再自己手动修 CI 失败了,Agent 非常擅长这件事」)、生产环境仪表盘、以及内部文档、设计文档、运行手册等。
她分享了一个高效习惯:团队开始录制并转录所有会议,会后她会立刻把会议纪要喂给 Claude,问「这里有没有可以立即处理的低垂果实?」——每次会议能收获两三个 PR。
知识:为什么微调(Fine-tuning)不是答案
面对「能否把代码库约定训练进模型」的常见问题,Holman 给出了明确否定。她引用相关论文指出,在专业信息上做微调反而可能导致更多幻觉,而且成本效益极差——前沿模型迭代速度如此之快,等你微调完,模型早已过时。
这里涉及两个已知的 ML 问题:「灾难性遗忘」和「过拟合专业域」。当模型在狭窄的专业语料上微调时,它可能在该域内生成更流畅、更「像样」的输出,但实际上增加了自信错误(confident hallucination)的概率——模型学会了用该领域的语言风格表达,却不一定真正理解领域约束。此外,前沿模型的迭代速度远超企业微调周期,导致微调产物很快成为「慢速模型+特定风格」的组合,反而落后于直接使用最新模型加 ICL 的方案。
基于「苦涩的教训(The Bitter Lesson)」,通用 AI 长期终将胜出。这是 Richard Sutton 在2019年提出的 AI 研究领域最具影响力的论断:过去70年的 AI 历史反复证明,依赖通用方法(尤其是利用大规模计算和数据的方法)最终总会胜过依赖人类先验知识的专用方法。每当研究者试图将领域知识硬编码进模型时,短期内看似有效,但随着算力增长,通用学习方法总会后来居上——ImageNet 时代的深度学习替代手工特征,AlphaGo Zero 抛弃人类棋谱自我对弈,都是例证。因此定制 Claude 行为的唯一现实路径就是上下文学习(In-Context Learning, ICL)。
ICL 是指大语言模型无需更新权重,仅通过在输入提示中提供示例或指令就能执行新任务的能力——这一能力在 GPT-3 论文中被首次系统性描述。Holman 用调侃的口吻定义 ICL:「这是个让你显得很聪明的花哨词,其实说白了就是文本文件。」好处是——你无需理解模型权重,一切定制都只是文本文件,上手极其简单,版本控制友好,且能随基础模型升级自动受益。
工具:为 Agent 打造「红色波浪线」
这是全场最精彩的类比之一。Holman 问:Claude 版的 IDE 应该长什么样? 人类写代码有语法高亮、LSP、代码补全,而 Claude 开箱只有一个 edit 工具——「这比 Vim 还原始,这是 ED 的水平」。

她重点谈到了「红色波浪线(red squigglies)」的哲学:当你敲错变量名时,那条红线不会强制阻止你,而是温和地提醒你再想一遍——你可以选择忽略它继续写。她主张为 Agent 构建同样的机制,而 Post-tool-use hooks 正是 Agent 的红色波浪线。
Post-tool-use hooks 是 Claude Code 插件系统中的事件钩子机制,在 Agent 每次调用工具(如文件编辑、命令执行)完成后自动触发,允许开发者注入自定义验证逻辑。这一设计借鉴了现代 IDE 的 Language Server Protocol(LSP)思想——LSP 将编辑器与语言分析工具解耦,通过标准化协议实现代码补全、错误提示等功能,而 hooks 则将 Agent 的工具调用行为与外部质量检查逻辑解耦。典型用法包括:在 Agent 修改文件后自动运行类型检查器,将错误信息作为文本反馈给模型;或在代码提交前运行 linter,将风格警告以「可忽略提醒」的方式注入对话,而非强制中断流程。
由此引出了一个关键的工具分类框架:
- 补偿智能不足的工具:例如硬性禁止 Claude 使用未定义的变量。这确实能减少错误,但会强迫 Claude 按特定顺序写代码,无法随模型变强而受益。
- 随智能增长的工具(scale with intelligence):例如可覆盖的提醒式 nudge。模型越强,这类工具越有用。
Holman 强调,「让 Agent 更懂你代码库的最快方式不是更聪明的模型,而是更紧的反馈循环。」 而这些反馈脚本(linter、类型检查器)你其实早就有了——因为你曾经要为人类开发者搭建环境。
上下文窗口管理:在 Arduino 上跑 npm
所有定制最终都要装进上下文窗口。Holman 指出一个反直觉的事实:上下文窗口并没有在变大。前沿模型长期维持在百万 token 量级,但模型能力已发生天翻地覆的变化。这意味着上下文工程面对的是一个固定不变的目标。

她用了一个精彩的比喻:这就像在 Arduino 上运行 npm——内存极其有限,你必须找出最重要的东西,用最精简的版本放进去,为真正的工作留出空间。这里她援引了 C++ 的经典原则「Don't pay for what you don't use(不为你不使用的东西付费)」,即零开销抽象原则。
零开销抽象原则由 C++ 之父 Bjarne Stroustrup 提出,完整表述为两条互补原则:「你不使用的东西,不应为其付费;你使用的东西,不可能手写得更好。」C++ 的 std::sort 在大多数平台上性能等于或优于手写快排,正是此原则的体现。将这一思想迁移至 Agent 系统设计,意味着好的 Agent 基础设施应让开发者只为实际使用的能力付出上下文代价——Hooks 在不触发时零 token 消耗,Skills 描述在不被加载时仅占一行,都是这一原则的体现。按此标准衡量,任何在未被使用时仍持续占用上下文的设计,都违反了这一原则的第一条。
更复杂的是 KV 缓存约束。在 Transformer 架构的自注意力机制中,每个 token 在被处理时需要计算 Query、Key、Value 三个向量。KV 缓存(Key-Value Cache)的核心思想是:对于已经处理过的前缀,其 Key 和 Value 矩阵无需在后续推理中重复计算,可以直接缓存复用,将长文本推理的计算复杂度从 O(n²) 降至接近 O(n)。然而,KV 缓存的有效性依赖于前缀的字节级完全匹配——哪怕系统提示中一个空格发生变化,其后所有 token 的缓存全部失效,需要重新计算。Anthropic 的 Prompt Caching 功能将缓存命中价格设为未缓存的10%,这正是 Holman 所说成本高达 10 倍的来源。这意味着传统的 LRU 缓存式「淘汰不常用工具」的思路已经行不通——你无法在不使整个缓存失效的情况下移除工具块中的任何内容。
因此正确的策略是:把稳定、共享的内容放在最前面,把易变的、任务相关的信息放在靠后位置,以便低成本地淘汰。
四大插件原语:哪些能真正扩展?
Holman 以「如果我有 10 万个这样的东西会怎样」为标尺,审视了四个插件原语。有些公司的 monorepo 里已经有数万甚至数十万个 skill,正在撞上扩展性天花板。
MCP:设计于聊天机器人时代
MCP(Model Context Protocol)是 Anthropic 于2024年11月以 Apache 2.0 许可证开源的标准化协议,其设计灵感直接来自 Microsoft 于2016年发布的 Language Server Protocol(LSP)——LSP 通过定义编辑器(客户端)与语言分析工具(服务器)之间的标准通信协议,彻底解决了「M 个编辑器 × N 个语言」需要 M×N 个集成的碎片化问题;MCP 则试图对「AI 模型 × 外部工具/数据源」做同样的事。协议底层采用 JSON-RPC 2.0 消息格式,支持 stdio(本地进程通信)和 SSE(Server-Sent Events,用于远程服务)两种传输方式,并提供工具调用(Tools)、资源读取(Resources)和提示模板(Prompts)三类原语。
MCP 诞生于 LLM 还很简单的年代,主要面向没有 shell、无法运行命令的聊天机器人。它的优点是传输协议无关、自动处理认证,适合企业向公众发布集成。
但在专业工程环境中,如果你已经有了 CLI,把它包装成 MCP 往往没有意义——除非你要交付给非技术客户。更好的做法是写一个 skill 告诉 Claude 如何使用这个 CLI。当然,连接 Slack、邮件等外部服务时,你仍然需要别人的 MCP 服务器。
扩展性问题:每个工具的名称、描述、schema 都要放进系统提示。其主要局限在于协议的元数据必须在连接建立时全量加载进上下文,缺乏懒加载机制。20 个服务器、每个 15 个工具,你的上下文窗口大半就被工具定义占满了。Anthropic 的新方案「工具搜索(tool search)」采用懒加载——只把名称放进系统提示,让 Claude 用一个工具去搜索工具。但问题在于,除非用户明确提到(如「Slack」),Claude 未必知道自己需要去搜索。这是一顿「稍微便宜一点的午餐」,而非免费午餐。
Skills:懒加载的系统提示
Holman 将 skill 形容为「懒加载的系统提示」——本质是一个带 markdown 文件的文件夹,front matter 里的一行描述会进入系统提示,Claude 可按需加载完整的 skill.md。

它的 body 是按需付费的(好事),但描述始终加载,所以不是完全零开销。可靠触发一个 skill 有时需要 300-400 token 的描述。而且目前 skill 还没有层级结构,无法懒加载子技能(这项功能正在开发中)。「它算是能扩展,但我们原本希望它能扩展得更好。」
Hooks:真正的零开销抽象
Hooks 是四者中唯一真正的零开销抽象。它在特定事件触发时调用你提供的脚本,脚本在上下文窗口之外运行,零 token 成本。
关键在于:你可以拥有 10 万个 hook,只要其中 99995 个不触发或不返回文本,你就完全不付出上下文代价。你把一个极度受限的资源(上下文)扩展成了一个受限度低得多的资源(你的计算机)。这正是设计此类系统时应寻找的属性。前面提到的「红色波浪线」就住在这里。
Subagents:独立的上下文空间
子代理拥有独立的上下文——主上下文只需为工具调用和返回结果付费,子代理可以读 50 个文件而不占用主循环。但每个子代理的一行描述仍然要待在父提示里,同样面临 10 万描述的扩展问题。
关于 CLAUDE.md:Holman 解释了她为何一直拒绝「让插件提供 CLAUDE.md 文件」的请求——如果允许,几乎每个插件都会无条件塞一段文本进用户上下文,「它看起来极其便宜,但根本无法扩展」。如果确实需要,可以通过 session-start hook 返回文本,这样至少让用户清楚地看到自己在无条件付费。
异步与并行:AI 时代工程师的新工作方式

Holman 认为未来的两大主题是异步(asynchrony)与并行(parallelism),这意味着工程师必须擅长上下文切换。作为一个曾热爱连续八小时心流状态的「程序员中的程序员」,她坦言这种转变令人不适,但这是高效工程的必然方向。她分享的实用技巧包括:
- Git worktrees:Git 2.5(2015年)引入的特性,允许同一仓库在文件系统中同时维护多个工作目录,每个目录检出不同分支,但共享同一个底层对象数据库和
.git目录。在传统人类工作流中,worktrees 主要用于需要同时处理多个 bug fix 或特性分支的场景,避免频繁 stash/pop 的上下文切换成本。在 AI Agent 场景中,其价值被几何级放大:为每个工作树配一个独立的 Claude Code 实例,让它们互不干扰——你就成了「多个 Claude 的技术主管」,工作模式从串行心流转向并行监督。她本人维护着一批长期存活、各自拥有目录的持久化 Agent。 - 给会话重命名和改颜色(
/color):颜色能高效触发人脑记忆,是「智能体时代人类的语法高亮」。 - Claude 之间互相通信:Agent 可以给其他 Agent 发消息——因为「你现在工作的地方之一,就是另一个 Claude」。
/loop(内部名 crontool):按固定间隔运行 prompt,用于「照看」PR,即使 CI 要跑两小时,也能让它自动修复 CI bug。- Auto 权限模式:不是危险的 skip-permissions,而是带分类器和对抗性检查 Agent 的安全机制,代价约多 30-40% token,但让 Loop、Agent 团队和过夜工作成为可能。
- 远程控制:晚饭后花 30 秒在手机上确认 Agent 是否卡住。
三条核心心法
Holman 用三句话收尾(她笑称「Mind the box」这句是 Claude 帮她想的):
- Give it access(给它访问权限)——让 Claude 能触达你工作的一切信息源。
- Mind the box(看好这个盒子)——时刻思考你的上下文窗口。
- Pick abstractions that scale(选择可扩展的抽象)——想象当你的 monorepo 有一亿行代码、十万个 skill 时,你的插件会是什么样。
这场分享的深层价值在于,它把「用 AI 写代码」提升到了「用 AI 做软件工程」的高度——真正的挑战不在于让模型更聪明,而在于如何在固定的上下文预算内,通过精心的工程抽象,把恰当的信息在恰当的时机送到模型面前。
相关推荐

开源权重模型之争:安全与开放如何平衡
深入分析开源权重模型的核心争论:模型权重公开发布带来透明度与创新,但也引发安全滥用风险。本文探讨分级发布、红队测试等折中方案,解读开源AI背后的行业博弈与治理挑战。

抱怨如何侵蚀你的心智:注意力自我强化效应解析
习惯性抱怨正在训练大脑发现更多负面信息,形成恶性循环。本文从注意力自我强化机制出发,解析抱怨的心理侵蚀过程,并提供主动管理注意力、跳出负面循环的实用方法。

Steam恶意软件溯源:比特币、Cookie和外卖订单如何锁定攻击者
一起Steam恶意软件案件中,调查人员通过比特币交易链、Google Cookie和Uber Eats外卖订单三条线索交叉验证,成功溯源攻击者真实身份。深入解析数字取证技术与匿名幻觉。