Shrivu Shankar 在这篇文章中分享了他使用 Claude Code 的丰富经验。他从个人爱好项目到专业工作场景,详细探讨了 Claude Code 的各种功能,包括其核心文件 CLAUDE.md、上下文管理、自定义命令、子代理、钩子、计划模式、技能(Skills)、模型上下文协议(MCP)以及 GitHub Actions 等。文章的核心论题是帮助开发者更好地理解和利用 Claude Code 的强大功能,以提高开发效率和代码质量。Shrivu 强调了在实际使用中对这些功能的优化和最佳实践,以及如何通过这些工具实现更高效的开发流程。
How I Use Every Claude Code Feature
CLAUDE.md 管理项目CLAUDE.md 是 Claude Code 的核心文件,它相当于项目的“宪法”,为 Claude 提供了关于特定代码库如何工作的基本事实。对于个人项目,Shrivu 通常让 Claude 自由地在该文件中记录内容;而在专业项目中,这个文件则被严格维护,目前其团队的单体仓库中的 CLAUDE.md 已达到 13KB(并且可能会增长到 25KB)。文件内容仅记录被 30% 或更多工程师使用的工具和 API,其他工具则记录在特定的产品或库的 Markdown 文件中。此外,团队还为每个内部工具的文档分配了最大令牌数限制,类似于出售“广告位”,如果不能简洁地解释工具,那么它就不适合出现在 CLAUDE.md 中。
Shrivu 提出了几点关于编写有效 CLAUDE.md 的建议:
CLAUDE.md 应从小处着手,基于 Claude 出错的地方进行记录。CLAUDE.md 中直接提及其他文档文件,这会增加上下文窗口的负担。相反,应该向代理说明何时以及为何需要阅读这些文件。-foo-bar 标志”这样的负面约束,因为这会让代理在认为必须使用该标志时陷入困境。总是提供替代方案。CLAUDE.md 作为强制函数:如果 CLI 命令复杂且冗长,不要编写大量文档来解释它们。相反,编写一个简单易用的 Bash 包装器,并在其中记录该工具的使用方法。保持 CLAUDE.md 的简洁性,可以促使团队简化代码库和内部工具。通过这些方法,Shrivu 的团队能够有效地利用 CLAUDE.md 来指导开发工作,并推动团队构建更友好、更高效的工具。
Shrivu 强调了上下文管理的重要性,并分享了他常用的几种上下文管理策略。他建议在编码过程中至少运行一次 /context 命令,以便了解如何使用 200k 令牌的上下文窗口。在他们的单体仓库中,一个新会话的基础成本约为 20k 令牌(占 10%),剩下的 180k 令牌用于实际的代码更改,这可能会很快用完。
他主要使用以下三种工作流:
/compact:自动压缩通常是不透明的、容易出错且优化不佳的。/clear + /catchup(简单重启):这是他的默认重启方式。他会先清除状态,然后运行自定义的 /catchup 命令,让 Claude 读取当前 Git 分支中所有已更改的文件。.md 文件中,然后清除状态,并在新会话中让 Claude 读取该 .md 文件并继续工作。通过这些策略,Shrivu 能够有效地管理上下文,避免自动压缩带来的问题,并在需要时快速重启会话或为复杂任务创建持久的外部“记忆”。
Shrivu 认为自定义命令只是常用提示的简单快捷方式。他的设置非常简单,主要包括两个命令: