ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Claude Code 快速上手指南:用 CLAUDE.md、Hook 与 Subagent 搭好项目骨架

Claude Code 快速上手指南:用 CLAUDE.md、Hook 与 Subagent 搭好项目骨架 1. 为什么项目初始化阶段最容易翻车Claude Code 装好之后很多人第一反应是直接丢一句「帮我搭个后台管理系统」然后看着它噼里啪啦改文件。跑上十几分钟代码是生成了但目录结构跟团队约定对不上命名风格前后不一致改到一半还把你原有的配置文件覆盖了。问题不在模型能力而在于你没有在动手之前把项目上下文固化下来。Claude Code 跟普通聊天式 AI 最大的区别是它能读写文件、执行命令、调用工具是一个真正会「动手」的编码代理。能力越强越需要约束。项目初始化阶段要解决三件事让 Claude Code 知道这个项目是什么CLAUDE.md、在关键动作上卡住它Hook、把大任务拆给独立的子智能体Subagent。这三样配好后面写业务代码才顺。这篇面向第一次在真实项目里落地 Claude Code 的开发者聚焦初始化阶段。我会给出可以直接复制的 CLAUDE.md 骨架、settings.json 里的 Hook 配置片段、Subagent 定义示例并且每一项都告诉你怎么验证它真的生效了——配置写了不生效比不写还坑。如果你还没装 Claude Code先按官方方式装好并完成登录。国内网络环境下想稳定驱动 Claude Code可以用 TaoToken 这类兼容 Anthropic 接口的服务把 API 地址和 Key 配到环境变量里即可后面第 2 节会讲具体怎么接。2. 前置准备把 Claude Code 接到可用的模型服务上Claude Code 默认走 Anthropic 官方接口。如果你已经有可用的 API Key直接配环境变量就行。这里以 TaoToken 为例说明接入方式它的接口兼容 Anthropic 协议Claude Code 不需要改代码只改两个环境变量。先拿到 Key打开 https://taotoken.net/api-keys 登录后创建一个 API Key复制出来。注意这个 Key 只在创建时完整显示一次先存到安全的地方。然后在你的 shell 配置文件里写入环境变量。macOS / Linux 用~/.zshrc或~/.bashrcWindows 用系统环境变量或 PowerShell 的$PROFILE# ~/.zshrc 或 ~/.bashrc export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你的KeyWindows PowerShell 写法# $PROFILE $env:ANTHROPIC_BASE_URL https://taotoken.net/api $env:ANTHROPIC_API_KEY sk-你的Key改完执行source ~/.zshrc让配置生效然后进项目目录启动mkdir claude-demo cd claude-demo claude启动后如果没自动进入对话输入/login手动触发。想确认当前用的是哪个接口可以在 Claude Code 里执行! echo $ANTHROPIC_BASE_URL能打印出你配的地址就说明环境变量读到了。注意环境变量名必须是ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY写错一个字母 Claude Code 就会回落到官方接口表现为一直转圈或报鉴权失败。模型服务通了之后先别急着写业务。下一步是把项目上下文固化下来否则每次开新会话你都要重复交代一遍技术栈和规范。3. 用 CLAUDE.md 固化项目上下文CLAUDE.md 是 Claude Code 每次启动都会自动读取的文件相当于给模型的一份「项目说明书」。它解决的核心痛点是新会话不用重新交代背景。你写进去的技术栈、目录约定、命名规范、禁止事项模型每次都会带上。3.1 生成与放置位置最快的方式是在项目根目录执行/initClaude Code 会扫描项目结构自动生成一份 CLAUDE.md 草稿。但自动生成的往往太泛需要你手动补关键约束。放置位置有两种项目级放在项目根目录的CLAUDE.md随 Git 分发团队共享用户级放在~/.claude/CLAUDE.md只对你本机所有项目生效。团队协作场景优先用项目级。用/memory可以查看和编辑当前生效的 CLAUDE.md它会列出项目级和用户级两个入口。改完记得重启 Claude Code 让配置重新加载。3.2 可复制的 CLAUDE.md 骨架下面这份骨架是我在真实项目里用下来比较顺手的版本你可以直接复制后按项目改# 项目说明 这是一个基于 Next.js 14 TypeScript 的 B 端管理后台使用 App Router。 ## 技术栈 - 框架Next.js 14App Router - 语言TypeScriptstrict 模式 - 样式Tailwind CSS shadcn/ui - 状态Zustand - 请求TanStack Query - 包管理pnpm禁止使用 npm / yarn ## 目录约定 - app/ 路由与页面 - components/ 通用组件按功能分子目录 - lib/ 工具函数与请求封装 - hooks/ 自定义 Hook - types/ 全局类型定义 ## 编码规范 - 组件一律用函数组件 具名导出不用 default export - 文件名用 kebab-case组件名用 PascalCase - 所有异步请求必须处理 loading 和 error 状态 - 禁止在组件里直接写 fetch统一走 lib/api.ts ## 禁止事项 - 不要修改 pnpm-lock.yaml - 不要删除 .env.local - 不要引入新的 UI 库优先用现有 shadcn 组件 - 不要用 any必要时用 unknown 类型守卫 ## 常用命令 - 开发pnpm dev - 构建pnpm build - 类型检查pnpm typecheck - 测试pnpm test这份骨架的关键在于「禁止事项」和「目录约定」两段。模型能力再强也不会自动知道你们团队不用 default export、不许动 lock 文件。把这些写死能省掉大量来回纠正。3.3 验证 CLAUDE.md 是否生效配置写完必须验证否则你永远不知道它有没有被读到。开一个新会话直接问这个项目用什么包管理器组件导出方式有什么约定如果回答里明确说出「pnpm」和「具名导出」说明 CLAUDE.md 生效了。如果它答得含糊或者说「不确定」多半是文件位置不对或没重启。另一个验证方式是故意让它做被禁止的事比如「帮我在组件里写个 fetch 请求」看它是否会提醒你「按项目规范应走 lib/api.ts」。4. 用 Hook 卡住关键动作CLAUDE.md 是「告诉它怎么做」Hook 是「在它做的时候自动执行一段逻辑」。Hook 允许你在 Claude Code 调用工具的前后触发自定义命令最典型的用法是写完文件后自动格式化、提交前跑 lint、改到敏感文件时拦截。4.1 Hook 的配置位置Hook 配置写在 settings.json 里分三个层级层级配置文件生效范围本地项目级.claude/settings.local.json仅本机本项目不提交 Git项目级.claude/settings.json随 Git 分发团队共享用户级~/.claude/settings.json当前用户所有项目团队共享的规范放项目级个人偏好放本地级。也可以直接执行/hooks进入交互式配置但手写 JSON 更可控下面给完整片段。4.2 可复制的 Hook 配置片段这个配置实现两件事Claude Code 每次写完或编辑文件后自动用 Prettier 格式化每次执行 Bash 命令前把命令记到日志里方便审计。{ hooks: { PostToolUse: [ { matcher: Write|Edit, hooks: [ { type: command, command: jq -r .tool_input.file_path | xargs -I {} prettier --write {} 2/dev/null || true } ] } ], PreToolUse: [ { matcher: Bash, hooks: [ { type: command, command: jq -r .tool_input.command .claude/bash-audit.log } ] } ] } }几个关键点解释一下。matcher匹配工具名Write|Edit表示创建或编辑文件时触发Bash表示执行终端命令时触发。Claude Code 会把工具参数以 JSON 形式通过标准输入传给 Hook 命令所以用jq解析。PostToolUse是工具执行后PreToolUse是执行前。jq需要提前装好macOS 用brew install jqUbuntu 用apt install jq。Prettier 也要在项目里装好否则格式化命令会静默失败我加了|| true避免它阻塞流程。4.3 验证 Hook 是否生效验证 PostToolUse 最直接让 Claude Code 创建一个格式很乱的文件比如帮我创建 src/utils/format.ts随便写一个函数故意不要格式化它写完后你打开这个文件看缩进和分号是否被 Prettier 规整过。如果格式整齐说明 Hook 跑了。再验证 PreToolUse让它执行一条命令比如「运行 pnpm typecheck」然后检查.claude/bash-audit.log里有没有记录这条命令。如果 Hook 没生效按这个顺序排查settings.json 的 JSON 语法是否合法用jq . .claude/settings.json校验、jq是否在 PATH 里、matcher 的工具名拼写是否正确。Hook 命令失败默认不会中断主流程所以很容易「以为配了其实没跑」一定要用上面的动作实测。5. 用 Subagent 拆分独立任务当任务变大比如「审查整个 src 目录的代码质量」如果全在主对话里做中间过程会塞满上下文Token 消耗大还容易把主对话带偏。Subagent 就是解决这个问题的它有独立的上下文、独立的工具权限只把最终结果返回给主对话。5.1 Subagent 与 Agent Skill 的区别这两个概念容易混用一张表说清对比项Agent SkillSubagent上下文共享主对话上下文独立上下文互不影响适合场景与当前上下文关联强的小任务如写日报关联弱、影响大的任务如全量代码审查Token 消耗中间过程进入主上下文消耗较大只返回最终结果主上下文保持干净简单判断任务需要「看到」当前对话的来龙去脉用 Skill任务可以独立完成、只需要一个结论用 Subagent。5.2 可复制的 Subagent 定义执行/agent可以交互式创建也可以直接写文件。Subagent 定义放在.claude/agents/目录下一个文件一个 Agent。下面是一个代码审查 Subagent 的完整示例--- name: code-reviewer description: 用于代码审查的子智能体当用户要求审查代码质量、检查潜在 bug 时调用 model: claude-sonnet-4-5 color: green --- ## 职责 你是一个严格的代码审查员只做审查不修改代码。 ## 审查准则 ### TypeScript - 检查是否存在未处理的 Promise 异常 - 检查是否使用了 any应改为 unknown 类型守卫 - 检查异步函数的错误处理是否完整 ### React - 检查 useEffect 依赖数组是否完整 - 检查是否存在不必要的重渲染 - 检查事件处理函数是否用了 useCallback ## 输出格式 以表格形式输出包含四列文件名、行号、问题描述、修改建议。 按严重程度排序严重问题在前。description很关键Claude Code 靠它判断什么时候该调用这个 Subagent。写得太模糊会导致该调用时不调用。5.3 验证 Subagent 是否生效创建后重启 Claude Code执行/agent看列表里有没有code-reviewer。然后直接触发用 code-reviewer 审查一下 src/components 目录观察两点一是它是否真的启动了一个独立子任务界面上会有提示二是返回结果是不是按你定义的表格格式。如果它没调用 Subagent 而是自己直接审了说明description没匹配上把触发词写得更明确一些。6. 本篇常见错误排查配置类问题最烦人的地方是「不报错但不生效」。下面是我踩过的几个坑按现象对照排查。CLAUDE.md 写了但模型不遵守。先确认文件在项目根目录且名字大小写正确必须全大写CLAUDE.md。再确认改完后重启了 Claude Code。如果还不行检查是不是同时存在用户级和项目级两份内容冲突时以项目级为准但用户级里如果有相反的约束会干扰。Hook 命令报 jq: command not found。说明jq没装或不在 PATH。Hook 是在 Claude Code 的进程环境里执行的如果你在 shell 里能跑jq但 Hook 里不行多半是 PATH 没继承。可以在 Hook 命令里写jq的绝对路径比如/opt/homebrew/bin/jq。Hook 把文件格式化坏了。检查 Prettier 是否读到了项目的配置文件。如果项目根目录没有.prettierrcPrettier 会用默认规则可能跟团队风格不一致。确保项目里有 Prettier 配置并且 Hook 命令在项目根目录执行。Subagent 一直不被调用。九成是description写得太泛。把触发场景写具体比如「当用户要求审查代码、检查 bug、做 code review 时调用」覆盖用户可能用的说法。改了 settings.json 后 Claude Code 行为异常。先用jq . .claude/settings.json校验 JSON 合法性一个多余的逗号就会让整个配置失效。校验通过再重启。环境变量配了但 Claude Code 还是走官方接口。在 Claude Code 里执行! env | grep ANTHROPIC看实际读到的值。如果为空说明启动 Claude Code 的那个终端没加载到你的 shell 配置检查是不是在 IDE 内置终端里启动的IDE 有时不读~/.zshrc。7. 下一步把配置跑通再写业务项目初始化阶段把这三样配好后面写业务代码会顺很多。CLAUDE.md 让模型每次都知道项目规矩Hook 在关键动作上自动兜底Subagent 把重任务隔离出去不污染主对话。三者配合Claude Code 才真正像一个懂你项目的协作者而不是一个只会生成代码的工具。配置过程中如果卡在接入环节可以到 https://taotoken.net/api-keys 重新生成一个 Key 试试接口文档在 https://taotoken.net/doc 有完整的参数说明。想先验证模型对话是否正常用 https://taotoken.net/chat 发一条消息测一下最直接。如果你打算长期用 Claude Code 做编码和 Agent 任务可以了解下 Coding Plan按用量规划比零散调用更省心https://taotoken.net/coding-plan 。配好之后建议先在一个小项目上完整跑一遍「写 CLAUDE.md → 配 Hook → 建 Subagent → 验证生效」的流程把每个环节的验证动作都走一遍。等这套骨架稳定了再复制到正式项目里能少走很多弯路。
返回列表