最近正式开始使用Claude Code/Codex/Gemini CLI+CC-Switch+API的Agent Coding的方式构建项目。之前是直接用Copilot和Trae这种跟IDE结合更紧密,也提供了编辑文件,浏览目录以及测试命令的功能,但Claude Code明显提供了更好的体验以及更先进的AI编程工程范式。
这里做一些实战总结,主要是Claude Code使用上。
Claude Code 是一个代理编码工具,可以读取你的代码库、编辑文件、运行命令,并与你的开发工具集成。可在终端、IDE、桌面应用和浏览器中使用。Claude Code 是一个由 AI 驱动的编码助手,可帮助你构建功能、修复错误和自动化开发任务。它理解你的整个代码库,可以跨多个文件和工具工作以完成任务。
考虑到国内充值付费问题,使用方式可参考国内丝滑落地 Claude Code/Codex Agent 编程的硬核指南.使用第三方中转站
如何工作
通过Agent循环工作,而这个循环中包含模型推理和工具调用。ClaudeCode提供工具、上下文管理以及执行环境。

模型
执行引擎。在会话期间使用 /model 切换或使用 claude --model <name> 启动。
工具
没有工具,Claude 只能用文本回应。有了工具,Claude 可以采取行动:读取您的代码、编辑文件、运行命令、搜索网络并与外部服务交互.
内置工具通常分为五个类别,每个类别代表不同类型的代理能力。
| 类别 | Claude 可以做什么 |
|---|---|
| 文件操作 | 读取文件、编辑代码、创建新文件、重命名和重新组织 |
| 搜索 | 按模式查找文件、使用正则表达式搜索内容、探索代码库 |
| 执行 | 运行 shell 命令、启动服务器、运行测试、使用 git |
| 网络 | 搜索网络、获取文档、查找错误消息 |
| 代码智能 | 编辑后查看类型错误和警告、跳转到定义、查找引用(需要代码智能插件) |
工具调用时机本质还是利用模型根据提示和沿途学到的内容选择使用哪些。
可以使用 skills 扩展 Claude 知道的内容、使用 MCP 连接到外部服务、使用 hooks 自动化工作流,以及将任务卸载给 subagents。
平台集成
本身可以直接在终端运行,也可以跟VS Code,JetBrains IDEs 结合
事实上,可以通过终端、桌面应用、IDE 扩展、claude.ai/code、远程控制、Slack 和 CI/CD 管道访问 Claude Code。
claude配置主要是两个地方,一个是用户目录,另一个是项目目录

扩展Claude
使用 CLAUDE.md 文件为 Claude 提供持久指令,并让 Claude 通过自动记忆功能自动积累学习内容。
每个 Claude Code 会话都从一个全新的上下文窗口开始。两种机制可以跨会话传递知识:
- CLAUDE.md 文件:你编写的指令,为 Claude 提供持久上下文Claude 如何记住你的项目 - Claude Code Docs
- 自动记忆:Claude 根据你的更正和偏好自己编写的笔记
| CLAUDE.md 文件 | 自动记忆 | |
|---|---|---|
| 谁编写 | 你 | Claude |
| 包含内容 | 指令和规则 | 学习和模式 |
| 范围 | 项目、用户或组织 | 每个工作树,跨 worktrees 共享 |
| 加载到 | 每个会话 | 每个会话(前 200 行或 25KB) |
| 用于 | 编码标准、工作流、项目架构 | 构建命令、调试见解、Claude 发现的偏好 |
Claude Code 读取
CLAUDE.md,而不是AGENTS.md。如果你的存储库已经为其他编码代理使用AGENTS.md,创建一个导入它的CLAUDE.md
- 加载时机。在每个会话开始时加载到上下文窗口中。CLAUDE.md 文件无论长度如何都完整加载。
- 语法规则。通过
@引用,每个 CLAUDE.md 文件目标在 200 行以下;编写具体到足以验证的指令;模块化加载。
自动记忆让 Claude 跨会话积累知识,无需你编写任何内容。Claude 在工作时为自己保存笔记:构建命令、调试见解、架构笔记、代码样式偏好和工作流习惯。Claude 不会每个会话都保存内容。它根据信息在未来对话中是否有用来决定什么值得记住。
本质是存储在~/.claude/projects/<project>/memory/的各种文件,比如
1 | ~/.claude/projects/<project>/memory/ |
MEMORY.md 的前 200 行或前 25KB(以先到者为准)在每次对话开始时加载。超过该阈值的内容在会话开始时不加载。Claude 在你的会话中读取和写入记忆文件。当你在 Claude Code 界面中看到”Writing memory”或”Recalled memory”时,Claude 正在主动更新或读取 ~/.claude/projects/<project>/memory/。
.claude目录
Claude Code 读取 CLAUDE.md、settings.json、hooks、skills、commands、subagents、rules 和自动内存的位置。
.claude目录包括个人的~/.claude以及项目的.claude.~/.claude 中的文件是个人配置,适用于所有项目。
| 您想要 | 编辑 | 范围 | 参考 |
|---|---|---|---|
| 为 Claude 提供项目上下文和约定 | CLAUDE.md | 项目或全局 | 内存 |
| 允许或阻止特定工具调用 | settings.json permissions 或 hooks | 项目或全局 | 权限、Hooks |
| 在工具调用前后运行脚本 | settings.json hooks | 项目或全局 | Hooks |
| 为会话设置环境变量 | settings.json env | 项目或全局 | 设置 |
| 将个人覆盖保留在 git 之外 | settings.local.json | 仅项目 | 设置范围 |
添加使用 /name 调用的提示或功能 | skills/<name>/SKILL.md | 项目或全局 | Skills |
| 定义具有自己工具的专门 subagent | agents/*.md | 项目或全局 | Subagents |
| 通过 MCP 连接外部工具 | .mcp.json | 仅项目 | MCP |
| 更改 Claude 格式化响应的方式 | output-styles/*.md | 项目或全局 | 输出样式 |
上下文窗口与prompt caching
运行 /context 以获取按类别的实时分解和优化建议。运行 /memory 以检查在启动时加载了哪些 CLAUDE.md 和自动内存文件。探索上下文窗口查看一个上下文的组成
既然每次跟模型的对话都会重发一些内容, 有哪些方式可以优化以节约成本呢。目前常用的技术还是prompt caching和/compact裁剪
每次在 Claude Code 中发送消息时,它都会发出新的 API 请求。模型在请求之间不记得任何东西,所以 Claude Code 重新发送完整的上下文:系统提示、您的项目上下文、每条先前的消息和工具结果,以及您的新消息。新内容附加在末尾,这意味着每个请求的大部分与前一个请求相同。Prompt caching 是 API 避免重新处理未更改部分的方式。
为了充分利用前缀匹配,Claude Code 组织每个请求,使回合之间很少更改的内容首先出现:
| 层 | 内容 | 更改时间 |
|---|---|---|
| 系统提示 | 核心指令、工具定义、输出样式 | MCP 服务器连接或断开连接,或 Claude Code 升级 |
| 项目上下文 | CLAUDE.md、自动内存、无范围规则 | 会话开始,或在 /clear 或 /compact 之后 |
| 对话 | 您的消息、Claude 的响应、工具结果 | 每个回合 |
权限模式
每种模式在便利性和监督之间做出不同的权衡。
| 模式 | 无需询问即可运行的操作 | 最适合 |
|---|---|---|
default | 仅读取 | 入门、敏感工作 |
acceptEdits | 读取、文件编辑和常见文件系统命令(mkdir、touch、mv、cp 等) | 迭代您正在审查的代码 |
plan | 仅读取 | 在更改代码库前进行探索 |
auto | 所有操作,带后台安全检查 | 长时间任务、减少提示疲劳 |
dontAsk | 仅预先批准的工具 | 锁定的 CI 和脚本 |
bypassPermissions | 所有操作,带后台安全检查 | 仅隔离容器和 VM |
在会话期间:按 Shift+Tab 循环切换 default → acceptEdits → plan。当前模式显示在状态栏中。并非每种模式都在默认循环中:
auto:当您的账户满足 auto mode 要求时出现;循环到 auto 会显示一个选择加入提示,直到您接受它,或选择不,不再询问以从循环中移除 autobypassPermissions:在您使用--permission-mode bypassPermissions、--dangerously-skip-permissions或--allow-dangerously-skip-permissions启动后出现;--allow-变体将模式添加到循环中而不激活它dontAsk:永远不会出现在循环中;使用--permission-mode dontAsk设置它
会话管理
会话是与项目目录关联的已保存对话。Claude Code 在您工作时将其本地存储,因此您可以从中断处恢复、分支以尝试不同的方法,或在任务之间切换。每次在一个项目目录启动claude都视为一次独立的会话,在~/.claude/projects/下有不同项目下的若干个会话。
对于会话,可以进行恢复,命名,分支会话,导出以及管理会话内的上下文.
恢复会话通过/resume进行选择,命名通过/rename,管理上下文通过\clear清除以及/compact压缩
实操
扩展能力
- 创建
commands,在项目中.claude/commands下创建*.md文件
Claude Code 里的 slash commands 大致分四类:
- Built-in commands:Claude Code 自带的命令,如
/help、/clear、/model - Skills 形式的命令:通过
SKILL.md定义,仍然可以用/name调用 - Plugin commands:安装 plugin 后带来的命令
- MCP prompts:由 MCP server 暴露出来的命令
*.md文件中包含内容,frontmatter 包含描述,允许的工具等,此外还有工作流程。
- 更改memory
包括CLAUDE.md和自动内存.
CLAUDE.md包含内容如下。可以通过/init常见,/memory查看或编辑
- 哪些目录最重要
- 哪些规则最容易被忽略
- 提交前必须做什么
- 哪些工具是本项目默认用法
- 哪些文件不要乱动
- 测试和验证的最低标准
3.skiils
skill可以理解成:
- 一个带 frontmatter 的
SKILL.md - 可附带脚本、模板、参考资料
- 会被 Claude 自动发现和按需加载
- 更适合长期复用的工作流能力
skill基本结构
1 | skill-name/ |
SKILL.md负责
- 定义 skill 名称
- 说明 skill 在什么情况下应该触发
告诉 Claude 该怎么做
templates/:输出模板scripts/:辅助脚本references/:参考规则或背景知识
4.subagents
subagents 是 Claude Code 里做复杂任务拆分的关键能力。你可以把它理解成“主 Claude 把某个子任务交给一个更专业、上下文更独立的助手去做”。
subagent 具备这些特点:
- 有自己的角色定位
- 有自己的上下文窗口
- 可以限制可用工具
- 可以使用单独的 system prompt
- 适合做任务拆分和专业分工
| 价值 | 说明 |
|---|---|
| 上下文隔离 | 避免主对话被复杂细节污染 |
| 专业分工 | 不同 agent 做不同任务 |
| 工具隔离 | 可以限制某个 agent 能做什么 |
| 可复用 | 适合团队共享常用角色 |
| 类型 | 路径 | 作用域 |
|---|---|---|
| 项目级 | .claude/agents/ | 当前项目 |
| 用户级 | ~/.claude/agents/ | 所有项目 |
subagent 文件通常是:
- YAML frontmatter
- 后面跟 Markdown 形式的 system prompt
1 | --- |
subagents:主 Claude 委派一个边界清晰的子任务,等它把结果带回来Agent Teams:多个 Claude Code 实例协作,彼此有独立上下文窗口,还能直接通信
本质上是分配一个新角色,它有独立的上下文,职责不同,执行完后能返回结果。
5.mcp使用
如果没有 MCP,Claude 只能基于你提供的上下文回答。
有了 MCP,它可以:
- 获取实时数据
- 调用外部工具
- 访问项目外的信息源
- 把结果带回当前工作流
MCP 常见应用场景
- GitHub PR / issue 查询
- 数据库读写
- 文件系统访问
- Slack / Docs / 其他 SaaS 工具集成
在.mcp.json中配置
1 | { |
6.hooks
hooks 是 Claude Code 的“事件触发自动化”机制。它允许你在某些时机自动做点事情,例如:
- 调工具前先检查风险
- 写完文件后自动格式化
- 提交前跑测试
- 结束前记录日志或上下文
可以把 hook 理解成一条规则:
- 某个事件发生
- 匹配某个工具或场景
- 自动执行一个动作
这些动作可以是:
- shell command
- HTTP webhook
- prompt 型判断
- agent 型评估
hooks 最大的价值,是把“你本来每次都要手动做的检查”变成自动流程。
配置位置
~/.claude/settings.json:用户级,对所有项目生效.claude/settings.json:项目级,适合团队共享.claude/settings.local.json:本地项目配置,不建议提交- plugin 内的
hooks/hooks.json
一般结构
1 | { |
hooks有匹配工具,类型,执行的命令等
1 | "hooks": { |
7.plugins
anthropics/claude-plugins-official
plugin 通常会组合这些内容:
- commands
- skills
- subagents
- hooks
.mcp.json- 辅助脚本与模板
所以它特别适合:
- 团队统一工作流
- 跨项目复用
- 把一套最佳实践做成可分发单元
plugin配置如下
1 | my-plugin/ |
8.checkpoints
可以把 checkpoint 理解成当前会话状态的快照,通常包括:
- 对话消息
- 文件改动
- 工具使用历史
- 会话上下文
当你需要回退时,就使用 rewind 返回到某个 checkpoint。Claude Code 会自动创建 checkpoints,所以你不需要手动先“存档”才能用。
常见有这些:
- Restore code and conversation:代码和对话都回退
- Restore conversation:只回退对话
- Restore code:只回退代码
- Summarize from here:从这一点开始压缩总结,释放上下文窗口
- Never mind:取消
1 | 先让 Claude 改 |
这在这些任务里尤其好用:
- UI 重构
- API 重构
- auth / permission 变更
- 大批量文档整理
9.高级功能
权限模式
| 模式 | 适合什么 |
|---|---|
default | 日常安全使用 |
acceptEdits | 希望编辑流畅一些 |
plan | 只想分析,不想改 |
dontAsk | 非交互脚本 |
bypassPermissions | 可信环境中的强自动化 |
auto | 有更高自动化诉求、且明确接受风险 |
通过--dangerously-skip-permissions切换到bypassPermissions,可以通过shift+tab切换,也可以通过claude --permission-mode plan.也可以通过\config配置。
claude -p输出模式适合shell脚本以及CI/CD等人物。此外还有后台任务\background让耗时任务后台跑,不阻塞当前会话.
10.CLI功能
| 命令 | 用途 |
|---|---|
claude | 打开交互模式 |
claude "query" | 带初始问题进入 REPL |
claude -p "query" | print mode,一次执行后退出 |
claude -c | 继续最近一次会话 |
claude -r "session" | 恢复指定 session |
claude mcp | 管理 MCP |
claude agents | 打开 Agent View,多 session 管理界面 |
claude agents --json | 以 JSON 输出 Agent View session 列表,适合脚本、状态栏和 session picker |
claude plugin | 管理 plugins |
claude remote-control | 启动远程控制 |
claude auth status | 查看登录状态 |
claude project purge [path] | 清理某个项目的本地 Claude Code 状态,先用 --dry-run 预览 |
claude plugin prune | 清理无主的自动安装 plugin 依赖 |
claude ultrareview [target] | 在无头模式里运行 /ultrareview,适合 CI / PR gate |
| flag | 用途 |
|---|---|
-p, --print | 进入 print mode |
-c, --continue | 继续最近一次会话 |
-r, --resume | 恢复指定 session |
-n, --name | 给 session 起名 |
-w, --worktree | 在 worktree 中启动 |
--model | 指定模型 |
--effort | 指定思考强度;现在支持 xhigh |
--permission-mode | 指定权限模式 |
--bare | 以最小模式启动 |
--add-dir | 加额外目录到工作上下文 |
--tmux | 给 worktree / 多任务场景创建 tmux 会话 |
--exclude-dynamic-system-prompt-sections | 排除系统提示中的动态段落,帮助 prompt cache 更稳定命中 |
CLI 常见会和这些配置一起使用:
--model--fallback-model--effort--settings--append-system-prompt
示例:
1 | claude --model opus "design a caching strategy" |
工具与权限相关 flags
--permission-mode--dangerously-skip-permissions--allowedTools--disallowedTools--tools
学习资料
- Claude Code: A Highly Agentic Coding Assistant - DeepLearning.AI
- Spec-Driven Development with Coding Agents - DeepLearning.AI
- lhfer/claude-howto-zh-cn: Claude Code 中文全面上手指南。基于 luongnv89/claude-howto 本土化重写,面向中国小白用户,保留命令与配置兼容性,并附学习路径与本地化校验护栏。
- Claude Code 权限配置 | 菜鸟教程
- Claude Code Docs
- Trellis 技术分享资料:大模型科普与 AI Coding 框架 | Koi’s Blog
- 让 Claude Code 在你睡觉时持续运行:完整实战指南 · 唐巧的博客
- claude->/powerup
























