首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Claude Code 进阶配置指南:5 大配置(CLAUDE.md + MCP + Hooks + Skills + 权限)从"能用"到"好用"

Claude Code 进阶配置指南:5 大配置(CLAUDE.md + MCP + Hooks + Skills + 权限)从"能用"到"好用"

作者头像
术哥
发布2026-04-01 19:26:16
发布2026-04-01 19:26:16
4.5K1
举报
文章被收录于专栏:运维有术运维有术

🚩 2026 年「术哥无界」系列实战文档 X 篇原创计划 第 40 篇,AI 编程最佳实战「2026」系列第 6 篇 大家好,欢迎来到 术哥无界 | ShugeX | 运维有术

我是术哥,一名专注于 AI 编程、AI 智能体、Agent Skills、MCP、云原生、Milvus 向量数据库的技术实践者与开源布道者Talk is cheap, let's explore。无界探索,有术而行。

Claude Code 进阶配置概览
Claude Code 进阶配置概览

Claude Code 六大配置维度全景图

你已经在用 Claude Code 了,能读代码、改文件、跑命令。但总觉得差点意思——每次开新会话都要重新解释项目背景,频繁的权限确认打断思路,重复的操作流程一遍遍手动执行。

问题不在工具,在配置。这篇文章帮你把 Claude Code 从"能用"配置成"好用"。

读完这篇文章,你能得到什么?

  • 身份定制:让 Claude 懂你的项目习惯和代码风格
  • 工具扩展:通过 MCP 协议连接 GitHub、数据库、Slack 等外部工具
  • 自动化工作流:代码修改后自动运行 lint,提交前自动检查分支
  • 可复用技能包:把最佳实践打包成 Skills,团队共享
  • 权限安全管理:精细控制 Claude 能做什么、不能做什么
  • 团队协作配置:通过 git 共享配置,建立团队约定

前置条件

在开始之前,确保你已经:

  • 安装并使用过 Claude Code 基础功能
  • 了解基本的命令行操作
  • 有一个可以测试配置的项目目录
配置文件层级关系图
配置文件层级关系图

Claude Code 配置文件层级关系:以 CLAUDE.md 为中心

1. 身份配置:CLAUDE.md 定制化

一句话总结:CLAUDE.md 是 Claude 的"项目说明书",告诉它你的项目习惯、代码风格、工作流程。

WHY:为什么需要 CLAUDE.md?

Claude Code 启动时会自动读取项目中的 CLAUDE.md 文件。这个文件相当于给 Claude 写了一份"项目说明书",让它知道:

  • 你的项目用什么命令构建、测试
  • 代码风格有什么特殊要求
  • 有哪些架构决策和注意事项
  • 常见的坑和解决方案

没有这份说明书,Claude 每次都要从代码中推断这些信息。有了它,Claude 就能"秒懂"你的项目。

HOW:如何配置 CLAUDE.md?

文件位置选择

CLAUDE.md 有四个作用域,优先级从高到低:

作用域

位置

用途

共享范围

Managed

系统配置目录

组织级指令

所有用户

Project

./CLAUDE.md

项目团队共享

通过 git 共享

User

~/.claude/CLAUDE.md

个人偏好

仅自己

Local

./CLAUDE.local.md

项目特定个人配置

仅自己(不提交)

推荐做法

  • 项目通用配置 → ./CLAUDE.md(提交到 git)
  • 个人偏好(如模型选择)→ ./CLAUDE.local.md(不提交)
配置内容建议

✅ 应该包含的内容

代码语言:javascript
复制
# Build & Test Commands
- Build: `npm run build`
- Test: `npm test`
- Lint: `npm run lint`

# Code Style
- Use TypeScript strict mode
- Prefer functional components
- 2-space indentation

# Architecture
- See @docs/architecture.md for system design
- API handlers in src/api/handlers/

# Workflow
- Always run tests before committing
- Use conventional commit messages

# Common Gotchas
- Database migrations must be backwards compatible
- JWT tokens expire after 24 hours

❌ 不应该包含的内容

  • Claude 能从代码中推断的信息(如"这是一个 React 项目")
  • 标准的语言约定(如"使用驼峰命名")
  • 详细的 API 文档(应该链接到文档文件)
  • 频繁变化的信息
高级技巧:文件导入

当配置变长时,使用 @path 导入其他文件:

代码语言:javascript
复制
# Architecture
See @docs/architecture.md for system design
See @docs/api-conventions.md for API conventions

WHAT:配置后的效果

配置好 CLAUDE.md 后:

  • Claude 启动时自动读取,无需每次重复说明
  • 生成的代码符合你的项目风格
  • 执行的命令使用你的项目约定
  • 避开已知的坑和陷阱

最佳实践:控制在 200 行以内,只包含 Claude 无法从代码推断的信息。

2. MCP 工具扩展:工具集成和配置

一句话总结:MCP(Model Context Protocol)让 Claude Code 能连接外部工具和数据源,如 GitHub、数据库、Slack 等。

WHY:为什么需要 MCP?

Claude Code 默认只能访问本地文件和执行命令。但实际工作中,你需要:

  • 查询 GitHub Issues 和 Pull Requests
  • 读取数据库中的数据
  • 发送 Slack 通知
  • 访问内部 API

MCP 协议让 Claude 能安全地连接这些外部工具,扩展其能力边界。

HOW:如何配置 MCP?

三种传输方式

方式

适用场景

特点

HTTP

远程服务

推荐,支持认证和加密

Stdio

本地进程

通过命令启动本地服务

SSE

已弃用

建议迁移到 HTTP

添加 MCP 服务器
代码语言:javascript
复制
# HTTP 服务器(推荐)
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

# 带认证的 HTTP
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

# Stdio 本地服务器
claude mcp add --transport stdio --env DB_URL=xxx db \
  -- npx -y @bytebase/dbhub --dsn "postgresql://localhost/mydb"
配置作用域
代码语言:javascript
复制
# 本地作用域(默认,仅自己)
claude mcp add --scope local server-name

# 项目作用域(通过 git 共享)
claude mcp add --scope project server-name

# 用户作用域(全局)
claude mcp add --scope user server-name
.mcp.json 配置文件

手动配置时,创建 .mcp.json 文件:

代码语言:javascript
复制
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "database": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@bytebase/dbhub", "--dsn", "${DB_DSN}"]
    },
    "slack": {
      "type": "http",
      "url": "https://mcp.slack.com/anthropic",
      "headers": {
        "Authorization": "Bearer ${SLACK_TOKEN}"
      }
    }
  }
}

环境变量扩展:使用 {VAR_NAME} 或 {VAR_NAME:-default} 语法。

WHAT:配置后的效果

配置好 MCP 后:

  • Claude 能查询 GitHub Issues:帮我看看 #123 这个 bug 的最新进展
  • 能操作数据库:查询上个月的订单数据
  • 能发送通知:部署完成后通知 Slack #dev 频道

常见问题排查

问题

解决方案

连接失败

检查 URL、网络、防火墙

认证失败

验证 token 是否有效

stdio 服务不工作

确认命令可执行,检查环境变量

3. Hooks 机制:自动化工作流

一句话总结:Hooks 让你在工具执行前后插入自定义逻辑,实现自动化工作流。

WHY:为什么需要 Hooks?

想象这些场景:

  • 每次修改代码后,自动运行 lint 和格式化
  • 执行危险命令前,自动检查当前分支
  • 工具执行失败后,自动发送通知

这些都可以通过 Hooks 自动化,无需手动干预。

HOW:如何配置 Hooks?

Hook 生命周期
代码语言:javascript
复制
SessionStart → UserPromptSubmit → PreToolUse → [PermissionRequest] →
Tool Execution → PostToolUse/PostToolUseFailure → Stop → SessionEnd
常用 Hook 事件

事件

触发时机

可否阻止

典型用途

PreToolUse

工具执行前

验证命令安全性

PostToolUse

工具成功后

自动 lint、格式化

PostToolUseFailure

工具失败后

发送通知

UserPromptSubmit

提交提示词

过滤敏感信息

配置示例
代码语言:javascript
复制
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/validate-bash.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npm run lint",
            "timeout": 30
          }
        ]
      }
    ]
  }
}
Hook 脚本示例
代码语言:javascript
复制
#!/bin/bash
# .claude/hooks/quality-check.sh

# 读取工具输入
INPUT=$(cat)
FILE_PATH=$(echo"$INPUT" | jq -r '.tool_input.file_path')

# 只检查 TypeScript 文件
if [[ "$FILE_PATH" =~ \.(ts|tsx)$ ]]; then
# 运行 ESLint
if ! npx eslint "$FILE_PATH" --fix; then
    jq -n '{
      hookSpecificOutput: {
        hookEventName: "PostToolUse",
        decision: "block",
        reason: "ESLint found issues that could not be auto-fixed"
      }
    }'
    exit 0
fi
fi

exit 0

WHAT:配置后的效果

配置好 Hooks 后:

  • 代码修改后自动 lint 和格式化
  • 危险命令自动拦截
  • 工具执行失败自动通知
  • 无需手动执行重复的检查流程

常见问题

问题

解决方案

Hook 不生效

检查 matcher 正则、脚本权限、JSON 语法

Hook 超时

增加 timeout 参数(默认 60 秒)

无法阻止操作

确认 Hook 事件支持阻止(如 PreToolUse)

Hooks 工作流图
Hooks 工作流图

Hooks 完整生命周期:从会话开始到结束

4. Skills 和 Subagents:技能和子代理

一句话总结:Skills 是可复用的工作流模板,Subagents 是专门的子代理,两者都能在团队间共享。

WHY:为什么需要 Skills?

有些工作流程是重复的:

  • 代码审查:检查安全漏洞、性能问题、代码风格
  • 部署流程:测试 → 构建 → 部署 → 验证
  • PR 总结:读取 diff → 分析变更 → 生成摘要

把这些流程打包成 Skills,可以一键调用,还能在团队间共享。

HOW:如何配置 Skills?

Skill 配置语法
代码语言:javascript
复制
---
name:code-reviewer
description:Reviewcodeforbestpracticesandpotentialissues
allowed-tools:Read,Grep,Glob
disable-model-invocation:false
user-invocable:true
---

Review the code following these guidelines:

1.Checkforcommonsecurityvulnerabilities
2.Verifyerrorhandlingiscomprehensive
3.Ensurecodefollowsprojectconventions
4.Identifypotentialperformanceissues

Providespecificlinereferencesandsuggestions.
Skill 存放位置
代码语言:javascript
复制
.claude/
└── skills/
    ├── code-reviewer/
    │   └── SKILL.md
    └── deploy/
        └── SKILL.md
动态上下文注入

使用 !command 语法插入实时数据:

代码语言:javascript
复制
---
name:pr-summary
description:Summarizepullrequestchanges
---

## PR Context
-Diff:!`ghprdiff`
-Comments:!`ghprview--comments`
-Files:!`ghprdiff--name-only`

SummarizethisPR...

WHAT:配置后的效果

配置好 Skills 后:

  • 一键调用复杂工作流:review 这个文件
  • 团队共享最佳实践:把 Skills 提交到 git
  • 动态获取上下文:实时数据自动注入

Subagents 与 Skills 的区别

  • Skills:工作流模板,定义"做什么"
  • Subagents:专门的代理,定义"谁来做"(如安全审查专家、API 设计师)

5. 权限和安全:沙箱配置、权限管理

一句话总结:通过精细的权限控制,让 Claude 在安全边界内自主工作,减少确认打断。

WHY:为什么需要权限配置?

默认情况下,Claude 执行敏感操作时需要你确认。这些确认是必要的,但频繁的确认会打断工作流。

通过权限配置,你可以:

  • 预批准安全的命令(如 npm test
  • 阻止危险的命令(如 rm -rf /
  • 限制访问敏感文件(如 .env

HOW:如何配置权限?

权限规则语法
代码语言:javascript
复制
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git *)",
      "Read(./src/**)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Read(./.env)",
      "Read(./secrets/**)"
    ],
    "additionalDirectories": [
      "../shared-config/"
    ]
  }
}
沙箱配置

更安全的做法是启用沙箱模式:

代码语言:javascript
复制
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["docker"],
    "filesystem": {
      "allowWrite": ["//tmp/build", "~/.kube"],
      "denyRead": ["~/.aws/credentials"]
    },
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org"],
      "allowUnixSockets": ["/var/run/docker.sock"]
    }
  }
}

WHAT:配置后的效果

配置好权限后:

  • 安全命令自动执行,无需确认
  • 危险命令自动拦截
  • 敏感文件受保护
  • Claude 在安全边界内自主工作

安全建议

  1. 生产环境禁用 --dangerously-skip-permissions
  2. 使用沙箱模式隔离风险
  3. 定期审计权限配置
  4. 敏感信息存储在环境变量中

6. 下一步:总结和行动建议

核心要点回顾

  1. CLAUDE.md 是核心:控制在 200 行以内,只包含必要信息
  2. 分层配置:User → Project → Local → Managed,优先级递增
  3. Hooks 是自动化关键:工具执行前后插入自定义逻辑
  4. MCP 扩展能力:连接 GitHub、数据库、Slack 等外部工具
  5. Skills 提供可复用工作流:团队间共享最佳实践
  6. 权限和沙箱保障安全:精细控制 Claude 的操作范围

行动建议

如果你是个人开发者
  1. 创建 ~/.claude/CLAUDE.md,写入你的个人偏好
  2. 在项目中创建 CLAUDE.md,说明项目特定配置
  3. 配置常用的 MCP 服务器(如 GitHub)
  4. 设置基本的 Hooks(如自动 lint)
如果你是团队负责人
  1. 创建 .claude/settings.json,配置团队共享的权限和 hooks
  2. 创建 .claude/skills/ 目录,存放团队工作流
  3. 创建 .mcp.json,配置项目 MCP 服务器
  4. 通过 git 共享这些配置,建立团队约定
如果你在企业环境
  1. 配置 Managed settings,强制执行安全策略
  2. 设置 allowedMcpServers,限制可用的 MCP 服务器
  3. 启用 allowManagedHooksOnly,只允许管理配置的 hooks
  4. 定期审计配置和日志

进阶技巧

  1. 使用 Subagents:将复杂任务委托给专门的子代理
  2. 动态上下文注入:使用 !command 语法插入实时数据
  3. 条件规则:使用 .claude/rules/ 按文件类型加载规则
  4. Git Worktrees:并行处理多个任务而不冲突
  5. 通知集成:配置 Notification hooks 获取桌面通知

推荐配置策略

场景

推荐配置

快速上手

只配置 CLAUDE.md

提升效率

配置 MCP + Hooks

团队协作

配置 Skills + 共享 settings

企业部署

配置 Managed settings + 沙箱

配置策略决策树
配置策略决策树

根据你的场景选择合适的配置路径

配置不是一蹴而就的,建议从 CLAUDE.md 开始,逐步添加 MCP、Hooks、Skills,根据实际需求持续优化。

你在配置 Claude Code 时遇到过什么问题?欢迎在评论区分享你的经验和踩过的坑。

好啦,谢谢你观看我的文章,如果喜欢可以点赞转发给需要的朋友,我们下一期再见!敬请期待!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维有术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 读完这篇文章,你能得到什么?
  • 前置条件
  • 1. 身份配置:CLAUDE.md 定制化
    • WHY:为什么需要 CLAUDE.md?
    • HOW:如何配置 CLAUDE.md?
      • 文件位置选择
      • 配置内容建议
      • 高级技巧:文件导入
    • WHAT:配置后的效果
  • 2. MCP 工具扩展:工具集成和配置
    • WHY:为什么需要 MCP?
    • HOW:如何配置 MCP?
      • 三种传输方式
      • 添加 MCP 服务器
      • 配置作用域
      • .mcp.json 配置文件
    • WHAT:配置后的效果
  • 3. Hooks 机制:自动化工作流
    • WHY:为什么需要 Hooks?
    • HOW:如何配置 Hooks?
      • Hook 生命周期
      • 常用 Hook 事件
      • 配置示例
      • Hook 脚本示例
    • WHAT:配置后的效果
  • 4. Skills 和 Subagents:技能和子代理
    • WHY:为什么需要 Skills?
    • HOW:如何配置 Skills?
      • Skill 配置语法
      • Skill 存放位置
      • 动态上下文注入
    • WHAT:配置后的效果
  • 5. 权限和安全:沙箱配置、权限管理
    • WHY:为什么需要权限配置?
    • HOW:如何配置权限?
      • 权限规则语法
      • 沙箱配置
    • WHAT:配置后的效果
  • 6. 下一步:总结和行动建议
    • 核心要点回顾
    • 行动建议
      • 如果你是个人开发者
      • 如果你是团队负责人
      • 如果你在企业环境
    • 进阶技巧
    • 推荐配置策略
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档