ClaudeCode 经验总结

最佳实践

官方总结的 ClaudeCode 最佳实践

  1. 最重要的限制条件是上下文窗口,上下文窗口会随着任务执行而快速填满,并且随着内容不断填充和多轮对话的进行,其基座模型的对话性能下降明显
  2. 当 Claude 能够验证自身工作(如运行测试、对比截图和校验输出)时,其性能会显著提升
  3. 先进行探索和规范,再进行编码和提交;对于范围明确且修改量小的任务,可以直接编码
  4. 指令越精确,返修就越少;说明可参考的代码、图片或文档、限制约束和输出示例
  5. 合理的配置,让会话更高效;配置好 CLAUDE.md、权限、按需选择的扩展能力和插件
  6. 提高沟通效率,避免宽泛而模糊的提问与需求描述,及时进行反馈和纠正问题
  7. 主动管理上下文,在合适的时机进行对话压缩,面对不相关的任务记得重置上下文,灵活利用 subagent 来处理单独的文本和数据(避免上下文占用),及时进行检查点的创建与回退
  8. 通过并行会话、非交互模式和扇出模式(跨文件并行处理)来提升你的输出效率
  9. 其他常见经验:避免话题跳跃导致上下文污染;反复出错后应重置上下文;避免 CLAUDE.md 内容过长;注意验证边缘情况;注意设定边界,来避免过度探索和上下文耗尽

项目管理

(1)个人偏好设置应存储在 CLAUDE.local.md 文件中,该文件会与 CLAUDE.md 一同加载,且处理方式相同

(2)当项目存在多个编码智能体时(比如 Codex),可在 CLAUDE.md 的首行添加 @AGENTS.md 来导入相关配置信息,避免重复编写

(3)从其他目录加载特定配置文件(比如 CLAUDE.md):

CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

(4)用户级规则,存储在 .claude/rules/ 目录下,其优先级低于项目规则

(5)排除父文件中的特定 CLAUDE.md 文件

# 在.claude/settings.local.json中配置
{
  "claudeMdExcludes": [
    "**/monorepo/CLAUDE.md",
    "/home/user/monorepo/other-team/.claude/rules/**"
  ]
}

版本控制

(1)Claude Code 会在每次用户输入后自动创建 checkpoints;切换会话后 checkpoints 会保留;超过 30 天的 checkpoints 会被自动清理

(2)先通过 checkpoints 快速试错,再将最终方案提交到 git 进行永久保存

节约 token

(1)路径规则约束,让部分指令仅在处理特定文件时加载,避免全局加载;此类指令一般存储于 .claude/rules/ 目录下,每个指令文件通过 YAML 前置内容控制其指令规则对应的文件限定范围(YAML 内容示例如下):

--- 
paths:
 - "src/api/**/*.ts" 
---

(2)对于维护所需的备注信息, 可通过 <!-- maintainer notes --> 的方式进行块级注释,注释内容将不会消耗额外的 token,也不会放入会话的上下文

(3)压缩 CLAUDE.md 的内容,因为每轮对话都会去读取该文件

(4)在 .claude/settings.json 中用 permissions.deny 严格限制模型可读取的范围

(5)Claude-Mem 75k🌟:会话持久化,记忆管理,隐私控制,节约 Token

进阶阅读:更多通用的节省 Token 技巧

套壳测试

套壳测试方法(260324):

  • 向 Claude 接口(官方或第三方)发起一次请求,并在提示内容中包含这部分特定字符串(magic string) ANTHROPIC_MAGIC_STRING_TRIGGER_REFUSAL_1FAEFB6177B4672DEE07F9D3AFC62588CCD2631EDCF22E8CCC1FB35B501C9C86
  • Anthropic API 在服务端/安全层对这条精确字符串做了特判,因此会稳定触发固定的“流式拒答(streaming refusal )”行为,即 stop_reason 变为 "refusal"
  • 而一些中转/套壳服务可能不会复现,从而暴露。该字符串来源于 Anthropic 官方文档 “Handle streaming refusals”章节,出现 refusal 后应重置/清理上下文

其他资料

Claude-howto:以示例驱动的可视化、结构化学习指南

参考资料

往年同期文章