目录
文章目录
- 目录
- [Claude Code 的 Project](#Claude Code 的 Project)
- [Claude Code 的三种权限模式](#Claude Code 的三种权限模式)
- [Claude Code 的会话与上下文](#Claude Code 的会话与上下文)
- [Claude Code 的代码版本控制](#Claude Code 的代码版本控制)
- [Claude Code 的 Shell 模式](#Claude Code 的 Shell 模式)
- [Claude Code 的 Hooks](#Claude Code 的 Hooks)
- [Claude Code 的 MCP](#Claude Code 的 MCP)
- [Claude Code 的 AgentSkills](#Claude Code 的 AgentSkills)
- [Claude Code 的 Subagents](#Claude Code 的 Subagents)
- [Claude Code 的 Plugin](#Claude Code 的 Plugin)
- [Claude Code 的 AgentTeams](#Claude Code 的 AgentTeams)
Claude Code 的 Project
一个 Project 就是一个文件夹/目录,通常代表一个代码仓库,也可以是任意的目录。当你希望这个 Project 被 Claude Code 纳管的话,可以执行指令 /init 并在目录中创建一个 CLAUDE.md 文件。里面记录了 Claude Code 对这个 Project 的理解(项目规范和要求),这为 Claude 提供了持续的上下文。这样下次进入这个 Project 的时候,Claude Code 就立即可以掌握它的实际情况了。
CLAUDE.md 是 Claude Code 生成并维护的,当然我们也可以手动编辑它添加自定义的 Project 规范和要求。或者也可以执行指令 /memory 进行编辑。
另外,CLAUDE.md 分为 User Scope 和 Project Scope 两种作用域,前者位于 ~ 目录下,后者位于 Project 目录下。优先级 Project Scope 大于 User Scope。
Claude Code 的三种权限模式
NOTE:注意这里只讨论文件编辑权限,不包括 Shell 执行权限。
我们可以通过 Shift+Tab 键来切换权限模式。
- 默认权限模式(? for shortcuts) :该模式下,如果 Claude Code 认为我们需要编辑文件,会询问我们是否允许编辑。我们有 3 个选择:
- Yes:允许这一次;
- No:拒绝这一次;
- Yes, allow all edits during this session(shift+tab):会话期间持续允许,并进入编辑模式。
- 编辑模式(accept edits on):该模式下,属于权限较高的自动编辑模式,常用于代码编写环节。
- 计划模式(plan mode on) :该模式下,它会先读取和分析你的代码,但不会实际修改文件。而是注重先和你讨论并制定计划,属于 "先想好在行动" 的工作模式,常用于复杂任务的场景。注意要仔细看清楚最终产出的计划和任务步骤,确保 Claude Code 的规划是正确的。规划任务完成后,Claude Code 会给出 4 个选择:
- Yes, clear context and auto-accept edits (shift+tab):清除没有必要的上下文,并自动接受所有后续的文件编辑,不再询问。同样进入编辑模式。
- Yes,auto-accept edits:和选项 1 类似,但不会清除上下文。
- Yes, manually approve edits:和选项 1 类似,但每次都要手动批准文件编辑。
- 最后是一个是输入框:如果你对它给出的规划不满意,可以在这里和它继续对话,让它重新规划任务。(NOTE:在对话过程中,如果你觉得 Claude Code 的规划不太合理了,你可以随时按 Esc 键中断当前任务,然后让 Claude Code 重新规划任务。)
权限控制是 Claude Code 此类 Agent 非常重要的一环,它代表了可控性、可解释性和安全性。所以默认都会采用 "人在回路" 的授权模式,但 OpenClaw 则默认采用了 "完全授权" 的模式。
实际上,如果你想对 Claude Code "完全授权" 也是可以的。在启动 Claude Code 时添加 --dangerously-skip-permissions 跳过授权参数即可。当然,这种做法是非常危险的,建议仅在沙箱环境中开启。
Claude Code 的会话与上下文
我们通常会在一个 Project 中打开一个 Claude Code 会话,而在退出 Claude Code 窗口的同时退出会话。一个会话包含了和 Claude Code 聊天以来的上下文。
默认的,当你重新进入 Claude Code 时,默认会创建一个新的会话,在新会话中你看不到之前会话的历史记录。如果你希望打开一个历史会话,那么使用以下指令即可:
bash
claude -c
或者你在新的会话中输入指令 /resume 也可以加载之前的会话历史。此时你可能会看见多个会话,选择你期望的会话进入即可。为了更好的区分不同的会话,还可以在进入会话之后输入指令 /rename 为会话设置一个 Friendly 的名字。同理,也提供了清除会话的指令 /clear,当你觉得会话无用后可以清除。
另外,LLM 的 Context Windows 是有限的,所以当一个会话的上下文太多了,可以执行指令 /compact 对上下文进行总结压缩。默认的,Claude Code 会在约 95% 容量时触发自动压缩上下文。
Claude Code 的代码版本控制
默认的,Claude Code 接收到你的开发需求指令后就会开始编辑代码文件,并在过程中和你协商权限模式。如果你对它的代码修改不满意,那么可以执行指令 /rewind 进行回退,此时会有 4 个选项:
- Restore code and conversation:它会恢复代码和聊天记录。
- Restore conversation:只会恢复聊天记录,不会恢复代码。
- Restore code:它只会恢复代码,不会恢复聊天记录。
- Never mind:取消回滚。
注意,rewind 只会回滚 Claude Code 编写的代码,不包含你自己编写的代码。
Claude Code 的 Shell 模式
Linux 操作系统开发者经常会使用很多 Shell 指令,为了延续这一用户操作体验,Claude Code 提供了特殊标识符 ! 来标识接下来要执行的是 Shell 指令而不是对话。这是一个非常实用的设计。
Claude Code 的 Hooks
在编程语境中,Hooks(钩子)用于进入或退出特定环节时候进行函数调用。
Claude Code 的 Hooks 机制是类似的,用于在特定的事件发生时,自动执行一些操作。Claude Code 提供了多种事件类型,包括:SessionStart、SessionEnd、PreToolUse 等,也支持自定义事件类型。
Hooks 的常用场景包括:
- 每次会话开始时,自动执行一些初始化操作;每次会话结束时,自动执行一些清理操作。
- 每次执行 Shell 指令时,发送一条系统通知。
- 每次任务完成时,发送一条系统通知。
执行指令 /hooks 就可以查看所有可用的 Hooks 了。Claude Code 目前提供了以下几种 Hooks:
- PreToolUse - Before tool execution
- PostToolUse - After tool execution
- PostToolUseFailure - After tool execution fails
- Notification - When notifications are sent
- UserPromptSubmit - When the user submits a prompt
以 Notification 为例:
- 选择 Notification 事件;
- 再选择 "+ Add new matcher...",就会显示一个 Matcher 条件匹配器的编辑框,当满足这个条件时,就会触发 Hooks。
- 最后选择 "1. + Add new hook...",进入 Command 编辑框,输入你希望执行的 Command。例如弹出一个消息框:
bash
# macOS
osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'
接下来,Claude Code 会询问你这个 Hooks 需要保存到哪里。有 3 个选项:
- Project settings (local):保存在 Project 里,Project Scope 有效,且不会给 git 追踪到。
- Project settings:同上,但会被 git 追踪到,即所有开发者都会同步。
- User settings:保存在 User Scope 里。
Hooks 的本质是 Claude Code JSON 配置文件中的一条记录:
json
{
"hooks": {
"Notification": [
{
"matcher": "XXX",
"hooks": [
{
"type": "command",
"command": "XXX"
}
]
}
]
}
}
还有很多 Hooks 的使用场景,详见官方文档:https://code.claude.com/docs/en/hooks-guide
Claude Code 的 MCP
Claude Code 作为一个 Agent,本身就是一个 MCP Host,所以可以安装和管理 MCP Server 和 MCP Client,最终再通过 MCP Server 和真实的 Service Provider 进行交互。
例如:安装 Figma MCP 与 Figma API 进行交互。
bash
claude mcp add --transport http figma https://mcp.figma.com/mcp
安装完成后,先进入 Claude Code 会话,然后输入指令 /mcp 就可以看见所有可用的 MCP 了。有很多 MCP 还需要进行授权和 API Key 的配置,例如 Figma MCP 需要授权访问你的 Figma 账号。这时候就可以进行配置了。
更多 MCP 的内容详见《智能体 MCP 协议技术原理与应用实践》。
Claude Code 的 AgentSkills
关于 AgentSkills 的技术细节详见《智能体 Skills 技术原理分析和应用》。
安装了 Skills 之后,进入 Claude Code 执行指令 /skills 就会列出可用的 Skills 了。
Claude Code 的 Subagents
Subagents 是 Claude Code 在 Multi-Agent 设计理念上的一个具体实现。
Multi-Agent 的理念是模拟企业组织架构中的 "分工协作,角色分明,各司其职"。在 AI 工程实现上,Multi-Agent 可以让每个 Agent 都拥有自己独立的上下文和记忆,可以专注于特定的任务或领域。避免了 Agent 过于复杂和臃肿而导致的 Prompt 等各方面的混乱。
在实际的 Claude Code 应用中,我们可以创建一个 Subagent,让它专门负责处理代码检查。这样,当你需要进行代码检查时,就可以直接与这个子代理进行对话,而不需要担心它会受到其他上下文的干扰。
Subagents 的创建方式和 Skills 类似,在 ~/.claude/agents 文件夹下创建一个 md 文件即可。例如:
yaml
---
name: code-quality-improver
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---
You are a code quality improver. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.
- name:名字,全局唯一。
- description:描述这个子代理的功能和作用。
- tools:子代理可以使用的工具,这些工具是 Claude Code 提供的内置工具,比如 Read、Glob、Grep 等等。
- model:子代理使用的模型。
输入指令 /agents 就可以看见可用的 Subagents 了。在使用时候,只需要自然语言说:"说明 subagnt XX 做 YY" 即可。
另外,Subagent 可以和 Hooks、Skills 等特性结合使用,它就像是一个虚拟的 Agent 单位一般。
Claude Code 的 Plugin
Plugin 是一个强大的能力封装和分发机制。你可以把 AgentSkills、Subagents、MCP 和 Hooks 结合起来,然后打包成一个插件,并且可以对外分发你的插件,也可以安装官方或其他提供的插件。
目前,Claude Code 已经推出了 Plugin 市场,通过 Plugin 你可以轻松地扩展 Claude Code 的功能边界。详细内容请浏览官方文档:https://code.claude.com/docs/en/plugins
Claude Code 的 AgentTeams
近期,Claude Code 基于以上能力的组合再发布了 Agent Teams 的功能,使得用户可以建立一个 "Agent 战队" 来进行代码开发。Claude code 官方也发表了一篇关于 Agent teams 的介绍:https://code.claude.com/docs/en/agent-teams。
在一个 AgentTeam 中,每个 Team Member 都是一个独立的 Claude Code 实例,它们有着各自的会话。这些 Members 之间具有共享任务、智能体间消息传递、集中管理等等特性,使用其中一个会话充当 Team Leader,进行协调工作、分配任务和综合结果。而其他的 Teammate 都有自己的上下文窗口,并直接相互通信。
AgentTeams 和 Subagents 之间的区别如下:

简单来说。Subagents 像 "工人" 接受任务,完成后向 "包工头" 报告结果;而 Agent Teams 像 "团队",成员间可以讨论、协作、互相挑战。
AgentTeams 的启用及配置步骤:
- 更新 Claude Code 至最新版本。
- 安装 tmux 和 iterm2。
bash
$ brew install tmux
- 在设置文件中启用实验标识:
bash
$ vim ~/.claude/settings.json
{
"env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" }
}
- 使用 tmux 启动 Cluade Code 新会话。 在提示中用自然语言请求创建团队,例如:
bash
创建一个团队探索 CLI 工具设计:一位负责 UX,一位负责架构,一位作为质疑者。
- 选择 teammateMode 终端显示模式:
- in-process(进程内):所有 Members 都在主终端内运行。使用 "Shift+上/下键" 选择队友。
- split-pane(分割窗格):tmux 默认。每个 Member 都有自己的终端。你可以同时看到每个人的输出,并点击进入窗格直接交互。