AI Coding 提效实战:用 Claude Code + MCP + Hooks 搭建工程级开发工作流
把 AI 助手从一个能聊天的 Copilot,升级成真正嵌进你工具链的开发"副驾"。
AI 编程工具这两年爆发式增长,但大多数人还停留在"开个聊天窗口、复制粘贴代码"的阶段。这种模式的问题很明显:上下文割裂、重复劳动、缺乏工程级质量保障。
本文不聊"AI 能不能替代程序员"这种伪命题,我们聊一个更实际的问题:怎么把 AI Coding 工具做成一个能跑在自己的质量标准和工具链里的工程化工作流。
核心武器三件套:Claude Code CLI + MCP 协议 + Hooks 自动化层。
一、先认识你的基础设施:Claude Code 配置体系
Claude Code 不是"装好就能用"的东西——它有一套分层的配置体系,理解这个层次关系,后续所有操作才不会踩坑。
1.1 配置文件优先级(从高到低)
项目/.claude/settings.local.json | |||
项目/.claude/settings.json | |||
项目/.mcp.json | |||
~/.claude/settings.json | |||
~/.claude.json |
核心原则:高级别直接覆盖低级别,不存在深度合并。而且 deny 规则一旦在某层级生效,低层级无法重新放开——这是安全基线。
1.2 权限模型:别一上来就全开
很多人图省事直接开 bypassPermissions,这不是工程思维。正确的做法是用 三层权限策略:
{ "permissions": { "allow": [ "Bash(pnpm test:*)", "Bash(pnpm lint:*)", "Bash(git diff:*)", "Bash(git log:*)", "Read", "Write(.claude/**)" ], "deny": [ "Bash(rm -rf:*)", "Bash(curl | bash:*)", "Read(.env*)", "Read(**/*.pem)", "Read(**/*.key)" ] }}白名单放行:所有确定性的、无害的日常操作(跑测试、读文件、写配置)。黑名单封锁:破坏性命令、管道注入、敏感文件读取一律禁止。
2026 年 Claude Code 新增了
"defaultMode": "auto"模式——自动放行安全操作、拦截风险操作,是目前推荐的基础模式。
二、MCP:让 AI 真正接入你的工具链
2.1 MCP 解决了什么问题?
传统 AI Coding 的致命缺陷是 AI 只看代码,看不见运行环境。它不知道数据库表结构,不知道生产环境有没有报错,不知道你的 Issue 跟踪系统里有什么上下文。
MCP(Model Context Protocol)就是给 AI 装上一套标准化的"感官系统"——通过协议化的方式,让 AI 直接操作数据库、调用 API、读写文件系统、访问项目管理工具。
2.2 必备 MCP Server 推荐
| Filesystem | ||
| GitHub | ||
| Playwright | ||
| Postgres/Supabase | ||
| Sentry | ||
| Context7 | ||
| Linear/Jira |
2.3 配置实战
本地 stdio 模式——常用于数据库、文件系统这类本地服务:
# 添加项目级别的 Postgres MCP Serverclaude mcp add project-db \ -s project \ -e DATABASE_URL=postgresql://localhost:5432/myapp \ -- npx -y @modelcontextprotocol/server-postgres远程 HTTP 模式——常用于 SaaS 服务(Sentry、Linear 等):
claude mcp add sentry \ -s user \ --transport http \ https://mcp.sentry.dev配置文件长这样(.mcp.json,提交到仓库共享给团队):
{ "mcpServers": { "project-db": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-postgres"], "env": { "DATABASE_URL": "${DATABASE_URL}" } }, "playwright": { "type": "stdio", "command": "npx", "args": ["-y", "@anthropic/mcp-server-playwright"] } }}配置完成后,在 Claude Code 中输入 /mcp 就能看到所有已连接的 Server 及其可用工具。
2.4 MCP 安全红线
• Filesystem MCP 务必限制到项目目录,绝不开系统根目录 /• API Key、数据库连接串只放在 settings.local.json,绝不提交• 用 disabledMcpjsonServers/enabledMcpjsonServers按项目选择性启用
三、Hooks:你的自动化质量防线
如果说 MCP 是"感官系统",那 Hooks 就是**"条件反射"**——它在你与 AI 互动的每个关键节点自动执行检查动作,不需要你手动触发。
3.1 Hook 事件地图
PreToolUse | ||
PostToolUse | ||
SessionStart | ||
UserPromptSubmit | ||
Stop | ||
PreCompact |
3.2 五种 Hook 处理器
2026 年的 Claude Code 支持五种 Hook 类型:
command | ||
http | ||
mcp_tool | 直接调用 MCP Server | |
prompt | ||
agent |
其中 mcp_tool 是 2026 年最重要的新特性——不需要起 shell 子进程,直接通过 MCP 协议调用已连接的 Server。比 command 更快、更可靠、不依赖 PATH 环境。
3.3 三条核心 Hook 实战
Hook 1:每次文件写入后自动安全扫描
{ "hooks": { "PostToolUse": [{ "matcher": "Write|Edit", "hooks": [{ "type": "command", "command": "npx eslint --fix ${tool_input.file_path}" }] }] }}这行配置意味着:AI 每次写文件后,自动跑 ESLint 修复。你不需要记得手动 Lint,也不会出现"写完才发现代码风格不一致"的情况。
Hook 2:任务完成时自动跑测试
{ "hooks": { "Stop": [{ "hooks": [{ "type": "command", "command": "pnpm test --run 2>&1 | tail -20" }] }] }}AI 在执行完你的需求后、标记"完成"之前,自动跑一遍测试套件。测试不过,任务就不算完。
Hook 3:每次 prompt 自动注入最新文档
{ "hooks": { "UserPromptSubmit": [{ "hooks": [{ "type": "mcp_tool", "server": "context7", "tool": "get_library_docs", "input": { "prompt": "${prompt}" }, "timeout": 15 }] }] }}你每次提问,AI 会先自动调用 Context7 拉取相关库的最新文档——再也不用担心 AI 基于旧版 API 写幻觉代码。
四、CLAUDE.md:团队行为准则
settings.json 控制"能做什么",CLAUDE.md 控制"怎么做才对"。
一个合格的 CLAUDE.md 应该短小精悍(< 300 行),用渐进式披露指向详细文档:
# 项目行为指引## 技术栈- 前端:React 18 + TypeScript + Vite- 后端:Node.js + Fastify + Prisma- 测试:Vitest + Playwright## 编码约定- 严格遵循 `docs/CODING-STANDARDS.md` 中的规范- 所有 API 端点必须有对应的集成测试- 数据库迁移使用 Prisma Migrate,禁止手动改表## 安全红线- 绝不输出/记录用户输入的敏感信息- 所有外部依赖必须过审后才能引入关键思路:不要把代码规范全写在 CLAUDE.md 里——用 .editorconfig、ESLint、prettier 等工具规则 + Hook 来自动执行,CLAUDE.md 只写 AI 无法从工具规则中推断的内容。
五、一个完整的日常工作场景
假设你接到一个需求:"给用户列表接口加一个按创建时间筛选的参数"。
传统模式你会:开 IDE、读代码、改代码、跑测试、提交。而工程化的 AI Coding 工作流是这样的:
你:给 GET /api/users 接口加一个 created_after 查询参数,支持按 创建时间筛选,默认不过滤,非法输入返回 400。Claude Code: 1. [自动] 通过 Context7 拉取 Fastify 和 Prisma 的最新文档 2. 读取路由文件,理解现有代码结构 3. 修改路由 handler,新增参数解析逻辑 4. [PostToolUse Hook 触发] ESLint 自动修复格式问题 5. 编写对应的集成测试 6. [Stop Hook 触发] 自动跑 pnpm test,通过后标记完成全程你需要做的只是描述需求,然后审查最终结果。Lint、测试、文档检索全是自动化的。
六、进阶:多 Agent + Scoped Hooks
当你的团队不止一两个人在用 Claude Code 时,可以引入 Agent 级 Hook 来做角色隔离:
# .claude/agents/backend-developer.mdname: backend-developerdescription: 负责 API 和数据库逻辑hooks: PostToolUse: - matcher: "Write" hooks: - type: command command: "npx eslint --fix ${tool_input.file_path}" Stransform: translateY( - hooks: - type: agent prompt: "检查所有新增 API 端点是否都有测试覆盖。缺少则阻止完成。"前端 Agent 有前端的 Hook 规则,后端有后端的——互不污染,各自在自己的质量防线里工作。
七、推荐的文件布局
项目根目录/├── .mcp.json # MCP Server 定义 → 提交├── CLAUDE.md # 项目行为指引 → 提交├── .claude/│ ├── settings.json # 团队权限与 Hooks → 提交│ ├── settings.local.json # 个人 Key/机密 → 不提交│ └── agents/│ ├── backend-developer.md│ └── frontend-developer.md└── docs/ ├── CODING-STANDARDS.md └── ARCHITECTURE.md八、落地 Checklist
如果你准备在自己的项目里落地这套工作流,按这个顺序来:
1. 安装 Claude Code: npm install -g @anthropic-ai/claude-code2. 配置权限基线:创建 .claude/settings.json,定义 allow/deny 规则3. 接入至少 3 个 MCP Server:Filesystem + GitHub + 一个你的核心技术栈相关的 4. 写三个核心 Hook:PostToolUse 自动 Lint、Stop 自动测试、UserPromptSubmit 自动拉文档 5. 写一份 CLAUDE.md:控制在 200 行以内,只写指南不写规则 6. 全员推广: .mcp.json和.claude/settings.json提交到仓库,团队开箱即用
AI Coding 的终局不是"自动写代码",而是让代码的生产过程像流水线一样可控、可追溯、可自动化。Claude Code + MCP + Hooks 这套组合,就是目前最接近这个目标的工程化方案。
夜雨聆风