Claude Code内部使用心法合集

Agent · Skills · 工具设计 · 性能优化
Claude Code内部使用心法合集
Anthropic 官方团队核心经验
Contents
01 架构设计:文件系统是 Agent 的记忆
02 性能优化:Prompt Caching 决定成败
03 工具设计:匹配模型能力
04 Skills 实战:9 大类型
05 从命令式到声明式
06 扩展大于加速
07 创新实践:Playgrounds
附 Karpathy 使用感受
01
架构设计:文件系统是 Agent 的记忆
核心原则:不要把所有信息塞进上下文窗口。用 bash 写文件,用 grep 搜索,而不是让 Agent 从海量信息里碰运气。
当你需要回答”本周打车花了多少钱”:
❌ 错误做法:把所有100封邮件都塞进上下文,让模型大海捞针
✅ 正确做法:用 bash 把邮件写入文件 → Agent 用 grep 搜索 → 验证总额
为什么可靠性提升一个量级?可反复验证、渐进式披露、范围明确不碰运气。即使是”完全不写代码的 Agent”,给它 bash 和文件系统,可靠性也会大幅提升。
编程从来不是靠”记住所有东西”完成的,而是靠”知道去哪里找”。
02
性能优化:Prompt Caching 决定成败
Claude Code 团队的习惯:缓存命中率掉几个百分点就会拉警报,严重时直接声明 SEV。因为几个百分点的下降意味着成本翻倍、延迟加倍。
缓存的工作方式是前缀匹配——从请求开头一直缓存到 cache_control 断点。这意味着:中间改一个字,后面全废。
错误
放时间戳
每次请求缓存失效
错误
随机工具顺序
每次排列不同失效
正确
分层缓存
静态优先,动态后置
正确缓存层次:
第一层(全局):静态系统提示词 + 工具定义
第二层(项目内):项目配置
第三层(会话内):会话上下文
第四层:对话消息
信息过时了怎么办?在下一轮消息里加 <system-reminder> 标签告诉模型”现在是周三了”,而不是改系统提示词破坏缓存。
别在对话中途改任何东西。
改工具会破坏缓存,切模型也会破坏缓存。如果真要切,用子 Agent,让 Opus 准备交接消息给 Haiku。
03
工具设计:匹配模型能力
演进案例:AskUserQuestion 工具的诞生
第一次:ExitPlanTool 加参数让它输出问题列表 → Claude 搞混了
第二次:让 Claude 用特殊 markdown 格式提问 → 不按套路出牌
最终:独立 AskUserQuestion 工具,Claude 可以随时调用,触发后弹出模态框阻塞 Agent,直到用户回答。
TodoWrite → TaskTool:早期每 5 轮提醒”别忘了 Todo List”;Opus 4.5 后模型不需要提醒,反而觉得是束缚。最终方案:换成 TaskTool,可跨 Agent 同步、有依赖关系。这是从”帮模型记事”变成”帮模型协作”。
纸张、计算器、计算机,你选哪个取决于你的能力。
模型也一样,曾经需要的工具,现在可能在限制它。
04
Skills 实战:9 大类型与最佳实践
Anthropic 内部已有数百个 Skills 在活跃使用,可分为九大类别:
1️⃣ 库与 API 参考 — billing-lib、frontend-design 等,Gotchas 部分最重要
2️⃣ 产品验证 — signup-flow-driver、checkout-verifier,与 Playwright/TMUX 配合
3️⃣ 数据获取与分析 — funnel-query、grafana,连接数据监控栈
4️⃣ 业务流程自动化 — standup-post、weekly-recap,将重复工作一道命令搞定
5️⃣ 代码脚手架 — new-workflow、new-migration,生成框架代码
6️⃣ 代码质量与审查 — adversarial-review,生成对抗性子 Agent 挑毛病
7️⃣ CI/CD 与部署 — babysit-pr、deploy-service
8️⃣ 运行手册 — service-debugging、oncall-runner,症状→结构化报告
9️⃣ 基础设施运维 — resource-orphans,加护栏防止误删
制作 Skills 的核心技巧
Description 是给模型看的触发条件,不是摘要。Claude Code 启动时扫描所有 Skill 描述判断”是否有 Skill 能处理此请求”。
Skill 是文件夹,不只是 markdown。可以放脚本、数据、模板,支持渐进式披露。
Gotchas 部分信号密度最高,从 Claude 常见失败点构建,随时间更新。
给 Claude 最强大的工具是代码。脚本和库让 Claude 专注”下一步该做什么”,而不是重复写冗余代码。
数据存储用${CLAUDE_PLUGIN_DATA}避免升级丢失。
05
从命令式到声明式
Karpathy 的关键洞察:LLM 特别擅长循环直到满足特定目标。
不要告诉 Agent 做什么,给它成功标准并看着它运行:
· 让它先编写测试然后通过它们
· 将它放在与浏览器 MCP 的循环中
· 先写朴素算法,再要求优化并保持正确性
Agent 永远不会累,永远不会气馁。
看着它挣扎 30 分钟然后成功,是真正”感受 AGI”的时刻。
06
扩展大于加速:你的角色在转变
真相:真正发生的不是”同样的事情做得更快”,而是”做了完全不同的事情”。以前有个小工具想写但不值得花时间,现在 10 分钟让 Agent 搞定,那就写了。表面上”编码速度提升了 3 倍”,实际上是”做的事情变成了原来的 5 倍”。
这不是加速,更像是扩展。你的能力边界变大了。
Karpathy 的工作流:左边开几个 Claude Code 会话,右边开着 IDE 看代码、手动改。因为模型还是会犯错——不是语法错误那种明显的错,而是概念上的微妙问题。IDE 不再是写代码的地方,而是监督 Agent 的地方。你得像鹰一样盯着。
你的角色从”执行者”变成了”指挥者”,能管的范围自然就大了。
07
创新实践:Playgrounds
Anthropic 发布了 playground 插件,帮助 Claude 生成独立的 HTML 文件,让你可以:可视化问题、交互,生成输出提示粘贴回 Claude Code。
适用场景:
· 可视化代码库架构
· 调整组件设计
· 头脑风暴布局
· 调整游戏平衡
Thariq 的建议:想一个与模型交互的独特方式,然后要求它表达出来。
附
Andrej Karpathy 的使用感受
“这是我近 20 年编程生涯中基本编码工作流程的最大变化,而且发生在几周内。我从 80% 手动编码 + 20% Agent,转变为 80% Agent 编码 + 20% 编辑润色。”
但他也坦言:模型仍然会犯微妙的概念错误,需要像鹰一样监视它们。
– END –
夜雨聆风