Claude Code 内置能力
Claude Code 是 Anthropic 官方推出的终端 AI 编程工具,深度集成 Claude 模型。本章作为 Claude Code 的能力索引,指向各详细参考文件。
能力一览
Claude Code 的核心能力可以按以下维度组织:
| 维度 | 简介 | 详细参考 |
|---|---|---|
| 内置命令 | /init、/compact、/cost、/doctor 等 15+ 个斜杠命令 | 命令参考 |
| 文件工具 | Read(文本+PDF)、Write、Edit(精确替换) | —(见下方工具集) |
| 执行工具 | Bash(命令执行,支持超时) | — |
| 搜索工具 | Grep(正则)、Glob(文件模式) | — |
| 网络工具 | WebFetch(URL 抓取) | — |
| Agent 模式 | Plan Mode(只读分析)、Code Mode(默认读写) | —(见下方 Agent(智能体) 模式) |
| 项目指令 | CLAUDE.md 多级配置(全局/项目/目录) | 扩展机制参考 |
| 自定义命令 | .claude/commands/*.md 自动注册为 / 命令 | 扩展机制参考 |
| MCP Server | 通过 JSON-RPC 接入外部工具和数据源 | 扩展机制参考 |
| 权限控制 | 细粒度工具调用权限管理 | 扩展机制参考 |
| 成本追踪 | /cost 查看 Token 使用统计 | 命令参考 |
| 生态与社区 | Anthropic 生态、MCP(模型上下文协议) 协议、社区资源 | 生态参考 |
工具集速览
Claude Code 内置工具集聚焦核心编码场景:Read(支持 PDF)、Write(覆盖写入)、Edit(oldString/newString 精确匹配替换)、Bash(Shell 执行)、Grep(正则搜索)、Glob(文件名匹配)、WebFetch(URL 抓取)。
Agent 模式
| 命令 | 功能 |
|---|---|
/init | 初始化项目,生成 CLAUDE.md 文件 |
/clear | 清除当前对话上下文 |
/compact | 压缩上下文,减少 Token 消耗 |
/cost | 显示当前会话的 Token 使用统计 |
/doctor | 诊断环境问题,检查配置完整性 |
/help | 显示帮助信息 |
/login | 登录 Anthropic 账户 |
/logout | 登出当前账户 |
/memory | 编辑 CLAUDE.md 记忆文件 |
/model | 切换当前使用的模型 |
/permissions | 查看和管理工具调用权限 |
/review | 对代码变更进行审查 |
/status | 显示当前状态信息 |
/terminal-setup | 设置终端集成(Shell 集成、快捷键等) |
→ 完整命令列表和详细用法见 Claude Code 命令参考。 → 扩展体系详解见 Claude Code 扩展机制参考,涵盖 CLAUDE.md、Skills、MCP、Subagent、Hook、Plugin 六层架构。 → Plugin 系统 详细介绍了 OpenCode 的 Plugin/Skill/MCP 三层扩展架构。
命令使用示例
/init # 首次进入项目时初始化
/compact # 上下文过长时压缩
/cost # 查看消耗了多少 Token
/doctor # 遇到问题时诊断环境
/model claude-sonnet-4-20250514 # 切换到 Sonnet 模型
工具集
Claude Code 内置的工具集相对精简,聚焦于核心编码场景。
文件操作
| 工具 | 功能 | 说明 |
|---|---|---|
| Read | 读取文件内容 | 支持文本和 PDF |
| Write | 写入文件 | 覆盖写入 |
| Edit | 精确文本替换 | 基于 oldString/newString 匹配 |
命令执行
| 工具 | 功能 | 说明 |
|---|---|---|
| Bash | 执行 shell 命令 | 支持超时设置 |
搜索
| 工具 | 功能 | 说明 |
|---|---|---|
| Grep | 正则内容搜索 | 按正则表达式搜索文件内容 |
| Glob | 文件模式匹配 | 按 glob 模式搜索文件名 |
网络
| 工具 | 功能 | 说明 |
|---|---|---|
| WebFetch | URL 抓取 | 获取网页内容 |
Agent 模式
Claude Code 支持 6 种权限模式,通过切换控制 AI 的操作范围。
6 种权限模式
| 模式 | 说明 |
|---|---|
| default | 每次执行敏感操作前询问用户确认 |
| acceptEdits | 自动接受文件编辑(Write/Edit),执行命令时询问 |
| plan | 只读分析,不能修改文件或执行命令。适合动手前先规划 |
| auto | 自动批准所有操作,无交互确认 |
| dontAsk | 不主动询问,静默拒绝权限外的操作 |
| bypassPermissions | 绕过所有权限检查,完全信任 Agent |
通过 --permission-mode 标志或 /permissions 命令切换。
自定义配置
Claude Code 的自定义主要通过文件配置实现。
CLAUDE.md 项目指令
CLAUDE.md 是 Claude Code 的项目级指令文件,放在项目根目录。它告诉 Claude 在这个项目中应该怎么工作,类似 OpenCode 的 AGENTS.md。
CLAUDE.md 通常包含:
- 项目简介和技术栈说明
- 代码风格和命名规范
- 测试和构建命令
- 常用路径和模块说明
- 不能做的事(约束条件)
Claude Code 支持多级 CLAUDE.md:
~/.claude/CLAUDE.md— 全局配置,所有项目生效项目根目录/CLAUDE.md— 项目级配置子目录/CLAUDE.md— 目录级配置,进入该目录时加载
.claude/ 目录结构
Claude Code 使用 .claude/ 目录管理项目配置:
.claude/
settings.json # 项目设置
commands/ # 自定义命令
权限配置
Claude Code 对工具调用有细粒度的权限控制。每次调用 Bash、Write 等敏感工具时,会提示用户确认。可以通过配置文件预设权限规则,减少重复确认。
权限配置示例:
{
"permissions": {
"allow": [
"Bash(npm test)",
"Bash(npm run build)",
"Write(src/**)"
],
"deny": [
"Bash(rm -rf *)",
"Write(.env*)"
]
}
}
与 OpenCode 的主要差异
了解两者的能力差异,有助于选择合适的工具。
| 维度 | OpenCode | Claude Code |
|---|---|---|
| 模型支持 | 多模型(Claude、GPT、Gemini、本地模型) | 仅 Claude 模型 |
| 扩展机制 | Plugin(插件) + Skill(技能) + MCP + 自定义 Agent | CLAUDE.md + Skills + MCP + Subagents + Hooks + Plugins 六层 |
| 工具链 | 完整(AST-grep、LSP、CodeGraph 等) | 基础(文件、命令、搜索) |
| Hook 系统 | 20+ Hook Points,事件驱动 | 无 |
| 成本控制 | 内置 Token 追踪 | /cost 命令查看 |
| 会话管理 | 压缩、导出、分享、撤销 | 压缩、清除 |
| 开源状态 | 开源 | 闭源 |
扩展机制
Claude Code 的扩展方式相对收敛,主要依赖配置文件和外部协议。
CLAUDE.md 自定义指令
CLAUDE.md 是最核心的扩展手段。通过编写结构化的指令,你可以改变 Claude 在项目中的行为,无需编写任何代码。多级 CLAUDE.md 支持全局、项目、目录三个层次的配置叠加。
自定义命令
在 .claude/commands/ 目录下放置 Markdown 文件,每个文件自动注册为一个 / 命令。文件名即命令名,文件内容作为发送给 Claude 的 Prompt(提示词)。这相当于一种轻量级的 Skill 机制,适合封装重复性的项目操作。
.claude/commands/
review.md # → /review 命令
fix-lint.md # → /fix-lint 命令
deploy.md # → /deploy 命令
MCP Server 连接
Claude Code 支持连接外部 MCP Server,通过 .claude/settings.json 配置。MCP 为 Claude Code 提供了接入外部工具和数据源的能力,比如数据库查询、API 调用、文件系统操作等。
扩展方式对比
| 扩展方式 | 实现形式 | 灵活度 | 适用场景 |
|---|---|---|---|
| CLAUDE.md 指令 | Markdown 文本 | 低 | 行为规范、编码约束 |
| Skills | SKILL.md + YAML frontmatter | 低 | 可复用指令集 |
| MCP Server | 外部进程 JSON-RPC | 高 | 外部工具、数据源接入 |
| Subagents | Markdown + YAML frontmatter | 中 | 隔离上下文的子任务代理 |
| Hooks | JSON + Shell / LLM / Agent | 中高 | 生命周期事件自动化 |
| Plugins | plugin.json 清单打包 | 高 | 分发以上所有组件 |
与 OpenCode 的扩展体系相比,Claude Code 没有 Plugin 层(无法在 Agent 进程内注入运行时逻辑),也没有 Skill 市场(无法从社区安装可复用的指令包)。扩展能力集中在“指令配置 + 外部协议“两个维度。
→ 扩展体系详解见 Claude Code 扩展机制参考,涵盖 CLAUDE.md、Skills、MCP、Subagent、Hook、Plugin 六层架构。 → Plugin 系统 详细介绍了 OpenCode 的 Plugin/Skill/MCP 三层扩展架构。
生态与社区
Anthropic 生态
Claude Code 的生态紧密围绕 Anthropic 的产品体系:
- Anthropic Console:统一管理 API Key、用量监控、账单
- Claude 模型家族:Sonnet(性价比)、Opus(最强能力)、Haiku(最快速度)
- Model Context Protocol:Anthropic 主导的开放协议,用于标准化 AI 工具与外部系统的连接
MCP 是 Claude Code 生态中最有价值的部分。通过 MCP,Claude Code 可以连接数据库、版本控制、CI/CD 流水线、项目管理工具等。Anthropic 维护了一份 MCP Server 参考实现列表,社区也贡献了大量 Server 实现。
社区资源
Anthropic 官方提供了完整的 Claude Code 使用指南。GitHub 上有多个展示 CLAUDE.md 最佳实践的参考项目,开发者也在论坛和社交媒体上分享配置方案和使用技巧。
生态对比
| 生态维度 | Claude Code | OpenCode |
|---|---|---|
| 模型生态 | 仅 Claude 模型族 | Claude/GPT/Gemini/本地模型等 10+ Provider |
| 工具扩展 | MCP Server(JSON-RPC) | MCP + Plugin + Skill + 自定义 Tool |
| 社区资产 | CLAUDE.md 模板、MCP Server 实现 | Skill 市场、Plugin 仓库、oh-my-openagent 社区 |
| 协议标准 | MCP(Anthropic 主导) | MCP(完全兼容) + 原生 Plugin API |
| 扩展粒度 | 指令级 + 外部工具级 | 代码级(Hook)+ 指令级 + 工具级 |
Claude Code 的生态优势在于 Anthropic 的品牌背书和 MCP 协议的标准化推广。OpenCode 的生态优势在于多模型支持和更丰富的扩展层次(Plugin 可以拦截任意 Agent 行为)。
→ MCP 服务器 详细讲解了 MCP 协议在 OpenCode 中的配置和实践。
使用建议
选择 Claude Code 还是 OpenCode
两个工具的适用场景有明显重叠,但也各有侧重。如果你的团队已经全面使用 Claude 模型,且项目不需要复杂的 Agent 编排,Claude Code 的简洁性是一个优势。它上手快、配置少、没有 Plugin/Skill 的认知负担。
如果你需要多模型灵活切换、自定义 Agent 行为、或团队共享工作流,OpenCode 的扩展体系更适合。OpenCode 的 Plugin 和 Skill 系统让你可以把最佳实践编码化,在团队内复制和演进。
CLAUDE.md 写作建议
写好 CLAUDE.md 的关键:具体、可执行、有边界。避免空泛的描述,给出明确的规则。推荐的 CLAUDE.md 结构:
- 项目简介:一两句话说清楚这是什么项目
- 技术栈:语言、框架、包管理器
- 代码规范:命名约定、格式化规则、禁止的写法
- 常用命令:构建、测试、lint 的具体命令
- 约束条件:不能修改的文件、不能执行的操作
权限配置建议
Claude Code 的权限提示虽然安全,但频繁弹出会打断工作流。建议在项目早期就把常用的构建、测试命令加入白名单,把危险操作(如 rm -rf)加入黑名单。既保证安全,又减少干扰。
→ 命令参考 — Claude Code 全部命令的详细用法 → 扩展机制参考 — 六层扩展体系完整参考(CLAUDE.md、Skills、MCP、Subagent、Hook、Plugin) → 生态参考 — 社区生态和最佳实践 → Claude Code Agent(智能体) 设计与开发指南 — 自定义 Agent 与 Subagent 的从入门到生产完整教程 → Claude Agent(智能体) SDK:编程式 Agent 开发 — 通过
@anthropic-ai/claude-agent-sdk编程式驱动 Agent → OpenCode 内置能力 — 对应功能的对比参考 → 核心概念 — 设计哲学深入对比
2026年6月更新
以下是 2026 年 6 月期间 Claude Code 新增或变更的主要功能:
| 功能 | 说明 |
|---|---|
| 嵌套子 Agent | 支持最多 5 层深度的子 Agent 嵌套调用,复杂任务可拆分为多级子任务 |
fallbackModel 配置 | 支持配置最多 3 个备选模型,主模型不可用时自动切换 |
动态工作流(/workflows) | 新增 /workflows 命令,支持定义和执行多步骤工作流 |
| Artifacts | 实时更新的网页分享功能,生成可交互的代码预览或文档 |
| Safe mode | --safe-mode 启用安全模式,限制高风险操作 |
/cd 命令 | 新增 /cd 命令,快速切换工作目录 |
| 社区工具市场 | 支持从社区安装第三方工具和 MCP Server |
| Agent checkpointing (beta) | Agent 执行过程中支持检查点保存和恢复(Beta) |
| Per-agent 成本归属 | --attribution 标志支持按 Agent 粒度追踪成本 |
常见反模式
只用 Claude Code 的默认工具集而不探索扩展能力
许多开发者初次使用 Claude Code 时只停留在内置的 Read/Write/Edit/Bash/Grep/Glob 工具上,从不配置 MCP 服务器或创建自定义命令。Claude Code 的真正价值不在于它内置了什么,而在于它能连接什么。一个没有配置 GitHub MCP Server 的 Claude Code,无法直接操作 PR 和 Issue;一个没有连接数据库 MCP Server 的 Claude Code,只能通过 Bash 执行 psql 命令来查询数据,既不安全也不高效。
在开始正式使用前,花 10 分钟配置你最常用的 MCP 服务器(GitHub、文件系统、数据库),并为团队的高频操作创建自定义命令。这一步投入能将后续的效率提升放大数倍。
在 CLAUDE.md 中堆砌冗余规则
另一个常见反模式是把 CLAUDE.md 写成“百科全书“,包含 Claude 本身就能推断的规则(比如“使用 TypeScript“),或者过于详细的 API 文档。过长的 CLAUDE.md 会消耗宝贵的上下文窗口,导致后续对话中 Claude 对项目规则的遵循率下降,这被称为 “lost in the middle” 效应。
CLAUDE.md 应聚焦于 Claude 无法从代码推断的内容:构建命令、环境怪异之处、团队特有的架构决策、常见陷阱。保持在 200 行以内,把详细的 API 文档改为链接引用。定期审查和修剪 CLAUDE.md,删除不再适用的规则。
混淆 acceptEdits 和 bypassPermissions 的适用场景
有些开发者为了减少交互确认,直接使用 bypassPermissions 模式,即使他们的 Agent 需要执行写入操作。bypassPermissions 意味着 Agent 可以不经确认执行任何操作,包括删除文件、执行任意 Shell 命令、修改系统配置。在团队共享的项目中,一个人配置的宽松权限可能影响整个团队的安全边界。
正确做法是根据任务类型选择最小权限模式:只读分析用 plan,常规开发用 acceptEdits,只有在严格隔离的 CI/CD 沙箱环境中才考虑 bypassPermissions。使用 --permission-mode 标志或 /permissions 命令配置白名单,把常用的构建和测试命令加入 allow 列表。
适用场景与限制
仅支持 Claude 模型族
Claude Code 最显著的限制是只支持 Anthropic 的 Claude 模型系列(Sonnet、Opus、Haiku)。如果你的团队已经在使用 GPT-4o、Gemini 或其他模型,Claude Code 无法直接切换。这意味着你在不同项目中可能需要维护多套 AI 编程工具的配置,增加了团队的工具链复杂度。
对于需要多模型灵活切换的场景,OpenCode 提供了更好的支持。它内置了 75+ LLM 供应商的集成,可以在同一会话中按需切换模型。如果你的团队有混合模型需求,建议评估 OpenCode 作为替代方案。
缺乏代码级扩展 API
Claude Code 的扩展全部通过配置文件(CLAUDE.md、Skills JSON、Hook Shell 脚本)和外部进程(MCP 服务器)实现,没有类似 OpenCode definePlugin 的 TypeScript 回调 API。这意味着你无法在 Agent 进程内部拦截和修改任意行为——例如,你不能像 OpenCode 那样注册一个 Hook 在每次工具调用前注入自定义验证逻辑。
如果你需要深度定制 Agent 行为(比如实现复杂的审批流、自定义 Agent 编排),Claude Code 的配置驱动方式可能不够灵活。此时可以考虑使用 Agent SDK 进行编程式集成,或者迁移到扩展体系更丰富的 OpenCode。
工具集相对精简
Claude Code 内置工具集只有 7 个核心工具(Read、Write、Edit、Bash、Grep、Glob、WebFetch),没有 AST-grep、LSP、CodeGraph 等代码智能工具。对于需要精确代码重构、跨文件引用分析、AST 级别操作的场景,纯靠内置工具的 LLM 推理能力可能不够精确。
弥补方式是通过 MCP 服务器接入外部工具,或者使用 Agent SDK 的 tool() API 创建自定义工具。但这些都需要额外的配置和开发工作,不如 OpenCode 的开箱即用体验。
常见失败与陷阱
/init 生成的 CLAUDE.md 质量参差不齐
执行 /init 后 Claude Code 会自动生成 CLAUDE.md 文件,但生成质量取决于项目结构的清晰度和 Claude 的推断能力。对于技术栈不常见、目录结构不规范的项目,自动生成的 CLAUDE.md 可能包含错误的构建命令或遗漏关键规则。
不要盲目信任 /init 的输出。生成后必须人工审查:验证构建命令是否正确执行,检查是否有遗漏的环境变量要求,确认架构决策是否与团队约定一致。将审查后的 CLAUDE.md 提交到 Git,确保团队成员获得一致的行为。
MCP 服务器连接失败时的静默降级
Claude Code 在 MCP 服务器连接失败时不会中断会话,而是静默降级到不包含该工具的工作模式。这意味着你可能以为 Agent 有 GitHub 集成能力,实际上 MCP 服务器早已断开,Agent 在每次尝试调用时都失败但没有明确报错。
定期运行 /mcp 检查服务器连接状态。在 CI/CD 环境中,建议在会话启动时验证关键 MCP 服务器的可用性。对于生产级工作流,可以在 CLAUDE.md 中添加“如果 GitHub MCP 不可用,请明确告知用户“的指令,让 Claude 主动报告工具缺失。
上下文压缩导致早期指令丢失
Claude Code 的自动压缩(Compaction)在上下文接近窗口上限时触发,它会对较早的对话历史进行摘要。这意味着你在会话早期给出的详细指令可能在压缩后被简化或丢失,Agent 的行为在长会话中可能偏离预期。
关键规则和约束应该放在 CLAUDE.md 中而非对话 prompt 中。CLAUDE.md 在每次请求时都会重新注入,不受压缩影响。对于需要跨整个会话保持的重要状态,使用 /compact 时附带自定义指令来保留关键信息,或者拆分为多个短会话。
关联章节
- ← Claude Code 扩展机制 — 详细讲解自定义命令和 Skills 系统
- → Claude Code 命令参考 — 内置命令和捆绑 Skill 的详细用法