作为 Claude Code 的深度用户,看到这篇文章感觉非常棒,因此推荐给大家。原文链接:
How I Use Every Claude Code Feature
以下是本篇文章的翻译,根据实际情况选择阅读。
我几乎每天都使用 Claude Code。
在个人项目中,我每周会在虚拟机里运行它多次,经常配合
--dangerously-skip-permissionsCLI 代理工具已经进入激烈竞争:Claude Code、Gemini CLI、Cursor、Codex CLI 等等。坦率地说,今天更像是 Anthropic 与 OpenAI 的直接对抗。不过,很多开发者的选择常常受一些“表面因素”影响,比如某个功能“恰好”更顺手,或系统提示语的“氛围感”更对味。整体来看,这些工具都已相当成熟。我也发现不少人过度关注输出风格或 UI。例如那种“你说得完全正确!”的过度恭维,我并不视为严重问题;它更多说明你将人类介入看得太重。我更倡导“交付后不干预”:把任务委托出去,提供好上下文,让它自行完成。评判工具时,我只看最终 PR(拉取请求)是否可合并,不纠结它的过程。
过去几个月我持续使用 Claude Code,这篇文章是我对其生态的系统性思考。内容几乎覆盖我用过的每一个功能(以及我刻意不用的功能):从基础的
CLAUDE.mdCLAUDE.md
想高效使用 Claude Code,仓库根目录的
CLAUDE.md如何维护这个文件要看场景。对个人项目,我基本放任 Claude 写入它认为必要的内容。
在工作中,我们在单仓库中严格维护
CLAUDE.mdCLAUDE.md写作建议与常见反模式
随着时间推移,我们形成了编写高效
CLAUDE.md@FooBarErrorpath/to/docs.md--foo-barCLAUDE.mdCLAUDE.md下面是一个简化示例:
# Monorepo
## Python
- Always ...
- Test with <command>
... 10 more ...
## <Internal CLI Tool>
... 10 bullets, focused on the 80% of use cases ...
- <usage example>
- Always ...
- Never <x>, prefer <Y>
For <complex usage> or <error> see path/to/<tool>_docs.md
...
最后,我们将该文件与
AGENTS.md结论:把
CLAUDE.md感谢阅读 Shrivu 的 Substack!订阅可免费接收新文章并支持我的写作。
Compact、Context 与 Clear
建议在编码过程中至少运行一次
/context
我主要有三种工作流:
/compact/clear+/catchup(基本重启):我的默认操作方法。首先使用
/clear/catchup“记录并清空”(高级重启):用于大型项目。首先让 Claude 将计划与进度写入一个
.md/clear.md结论:不要依赖自动压缩。简单任务使用
/clear自定义斜杠命令
我将斜杠命令视为常用提示语的快捷键,仅此而已。我的设置非常简洁:
/catchup/pr结论:将斜杠命令当作简单、个性化的快捷方式,而不是用来替代更易用的
CLAUDE.md自定义子代理
从理论上讲,自定义子代理是 Claude Code 在上下文管理方面最强大的功能。思路是:复杂任务需要
XYZN(X + Y + Z) * N(X + Y) * NZ这个思路很强,但在实践中自定义子代理会带来两类问题:
上下文被“守门”。如果我创建了一个
PythonTests我更倾向于使用 Claude 的内置
Task(...)CLAUDE.md在我的《Building Multi-Agent Systems(Part 2)》一文中,我称此为“主-克隆架构”,并认为它明显优于自定义子代理所提倡的“领导-专家模型”。
结论:自定义子代理是相对脆弱的方案。将关键上下文放在
CLAUDE.mdTask/Explore(...)恢复、继续与历史
简而言之,我经常使用
claude --resumeclaude --continue。claude --resumeCLAUDE.md更进一步,Claude Code 会将所有会话历史存储到
~/.claude/projects/。结论:使用
claude --resumeclaude --continue钩子(Hook)
钩子非常重要。个人项目中我用得不多,但在复杂的企业仓库中,它们对引导 Claude 至关重要。钩子与
CLAUDE.md我们使用两类钩子:
提交阶段阻断钩子:这是我们的主要策略。一个包裹
Bash(git commit)PreToolUse/tmp/agent-pre-commit-pass我们刻意不在写入阶段阻断(如
EditWrite)。中途打断会让代理困惑甚至感到“挫败”。更好的做法是让它完成计划,再在提交阶段检查最终结果。
结论:在提交阶段用钩子强制状态校验(提交阶段阻断),避免在写入阶段阻断——先让代理完成计划,再检查结果。
规划模式(Planning Mode)
对于任何“大型”功能变更,规划模式都是必需的。
在个人项目中,我只用内置的规划模式。它用于开始前与 Claude 对齐:既明确“如何实现”,也定义必须停下来的“检查点”。经常使用会帮助你形成直觉,弄清实现好方案所需的最小上下文,避免 Claude 将实现环节搞砸。
在工作单仓库中,我们开始基于 Claude Code SDK 推出自定义规划工具。它与原生规划模式相似,但通过强化提示让输出符合我们的技术设计格式,并内置执行最佳实践——从代码结构到数据隐私与安全。工程师可以“自由规划”新特性,像资深架构师一样(至少这是我们的目标)。
结论:复杂变更务必先使用内置规划模式完成对齐,再让代理开工。
我赞同 Simon Willison 的观点:技能可能比 MCP 更重要。如果你关注过我的文章,会知道我在多数开发流程中逐渐远离 MCP,更偏好构建简单的 CLI(参见《AI 读不懂你的文档》)。我对代理自主性的心智模型经历了三个阶段:
基于这个模型,代理技能是显而易见的下一步。它是“脚本化层”的正式产品化。如果你和我一样更偏向 CLI 而非 MCP,其实早已隐性获得了技能的好处。
SKILL.md
只是更有组织、可共享、可发现地记录这些 CLI 与脚本,并将它们暴露给代理的方式。
结论:技能是正确的抽象。它把“脚本化”代理模型正式化,比传统偏“API 模型”的 MCP 更健壮、更灵活。
技能并不意味着 MCP 已死(另见《Everything Wrong with MCP》)。过去很多 MCP 做得很差,堆满上下文,几十个工具只是镜像一个 REST API(
read_thing_a()、read_thing_b()、update_thing_c())。
“脚本化”模型(现已由技能正式化)更好,但需要一种安全方式访问环境。这对我而言是 MCP 的新定位:更聚焦。MCP 不应是臃肿的 API,而应是简单、安全的网关,只提供少量高层次的强大工具:
download_raw_data(filters…)
take_sensitive_gated_action(args…)
execute_code_in_environment_with_state(code…)
在这种模型下,MCP 的职责不是为代理抽象现实,而是负责认证、网络与安全边界,然后尽量“退出视野”。它只提供入口,代理再通过脚本与 Markdown 上下文完成实际工作。
我目前只使用 Playwright 的 MCP,这很合理——它属于复杂、有状态的环境。而对 Jira、AWS、GitHub 等无状态工具,我都迁移到简单的 CLI。
结论:将 MCP 用作数据网关。只给代理一两种高层工具(如原始数据导出),让它自行脚本化使用。
Claude Code 不仅是交互式 CLI;它还是一个强大的 SDK,能构建全新的代理——既可做编码任务,也可处理非编码任务。多数新的个人项目我都把它作为默认代理框架,替代 LangChain/CrewAI。
我主要有三种使用方式:
claude -p "in /pathA change all refs from foo to bar"。这比让主代理管理几十个子代理任务更可控、更易扩展。结论:Claude Code SDK 是强大的通用代理框架。先用它完成批量代码处理、内部工具与快速原型,再考虑更复杂的框架。
Claude Code 的 GitHub Action(GHA)可能是我最喜欢、也最容易被忽视的功能之一。概念很简单:在 GHA 中运行 Claude Code。正因为简单,威力更大。
它类似 Cursor 的后台代理或 Codex 的托管 Web UI,但可定制性更强。你可以掌控整个容器与环境,拿到更多数据,并在沙箱隔离与审计控制方面,远胜多数同类产品。同时也支持钩子与 MCP 等高级功能。
我们用它构建了“随处触发 PR”的定制工具。用户可以在 Slack、Jira,甚至 CloudWatch 告警中触发 PR;GHA 会修复问题或增加新功能,并返回一个已通过测试的 PR1。
由于 GHA 日志就是完整代理日志,我们建立了公司层面的运维流程,定期审阅这些日志,查找常见错误、Bash 异常或不符合工程规范的做法。它形成数据驱动的飞轮:Bug → 改进
CLAUDE.md/CLI → 更加出色的代理。
$ query-claude-gha-logs --since 5d | claude -p "看其他 Claude 卡在哪儿并修复,然后提一个 PR"
结论:GHA 是实现 Claude Code 运营化的最终手段。它将工具从个人使用提升为工程体系中的核心、可审查、能自我优化的组件。
settings.json
最后,
settings.json
里有几项我认为对个人与工作都至关重要的配置:
HTTPS_PROXY
/
HTTP_PROXY
:非常适合调试。我会用它查看 Claude 发出的原始请求。对于后台代理,这也是实现细粒度网络沙箱的强大工具。
MCP_TOOL_TIMEOUT
/
BASH_MAX_TIMEOUT_MS
:我会适当调高超时时间。因为我经常运行耗时较长、较复杂的命令,默认的超时设置通常过于保守。坦率地说,在 Bash 后台任务已经支持的情况下,这可能不再必要,但我仍然保留以防万一。
ANTHROPIC_API_KEY
:在工作中,我们使用企业级 API Key(通过
apiKeyHelper
)。这使我们从“按座位授权”转向了“按用量计费”,更符合我们的使用习惯。
它能反映出开发者使用量的巨大差异(我们见过 1:100 的差距)。
它允许工程师在单一企业账号下尝试各类非 Claude Code 的 LLM 脚本。
"permissions"
:我会不定期自查,审计允许 Claude 自动执行的命令列表。
结论:
settings.json
是进行高级定制的关键入口。
结语
内容不少,希望对你有所帮助。如果你还没有尝试过像 Claude Code 或 Codex CLI 这样的 CLI 代理工具,现在可能是时候了。关于这些高级功能的优质指南较少,最有效的学习方式就是亲自实践。
更多Vibe Coding相关内容,也可以关注我的这个分类:
Vibe Coding - 程序猿DD
扫码加好友,拉您进群



收藏
