当前位置: 首页 > news >正文

Claude Code的一些核心用法

在Boss上投了一个岗位,是以claude code为核心工具搭建自动化工具链的,所以今天好好研究一下


1. Memory

Claude Code 每次启动都会自动加载 CLAUDE.md。两个位置:

  • ~/.claude/CLAUDE.md— 用户级,对你所有项目生效
  • ./CLAUDE.md— 项目级,只对当前项目生效,通常随项目一起提交到 Git

两者都会被加载,项目级在用户级之后加载,内容更具体,冲突时以项目级为准。

在 Claude Code 输入框里输/init,它会扫描当前项目,自动生成或更新CLAUDE.md 。之后用/memory可以查看当前加载了哪些记忆并进行修改。


2. Plan Mode

普通模式下说"修 bug",Claude Code 可能边查边改。Plan Mode 换了一种方式:先只读代码、分析问题、给出方案,等用户批准了再动手。

输入/plan进入。

即使不在 Plan Mode 下,也可以在 prompt 末尾加一句 “先读代码给方案,不要修改文件”,效果一样的。核心都是让 Claude 知道要先商量好再改。


3. Skills

用一段时间后你会发现,很多操作每次都要粘贴同样一段长提示词。Skill 就是把这些流程封装成一个可复用的/命令

项目级 Skill 放在.claude/skills/<name>/SKILL.md,用户级放在~/.claude/skills/<name>/SKILL.md

创建 Skill 后,输入/skill-name就能调用。

Skill 是一套流程说明——规定"审查 diff 时查哪些东西、输出什么格式"。subAgent 是一个专门执行者——“负责代码审查的专家,只允许读文件和搜索,不允许写代码”。两者的关系是:可以让 subAgent 按 Skill 规定的流程执行。Skill 是 procedure,subAgent 是 executor。

直接在 Claude Code 里说 “请帮我创建一个项目级 Skill,名字叫 review-diff,放在 .claude/skills/review-diff/SKILL.md。先展示内容,我确认后再创建” 就可以。当然,也可以自己写或者网上下载别人的Skill。

具体的我在另一篇博客里详细写过:Agent 三件套


4. Hook

Skills是AI选择去调用。Hook 是在某个时机到了之后自动触发一段检查或命令。

4.1 结构

  • event— 什么时候触发
  • matcher— 匹配什么工具或场景(正则表达式)
  • handler— 匹配后执行什么(shell 命令 / LLM prompt / agent)

比如下面这个配置写进.claude/settings.json

{"hooks":{"PostToolUse":[{"matcher":"Edit|Write","hooks":[{"type":"command","command":"echo '文件已修改,记得跑测试'"}]}]}}

PostToolUse(工具执行成功后触发)→ 匹配 Edit 或 Write(写文件时触发)→ 执行 shell 命令打印提醒。Claude 每次改完文件你都能看到这条提示。

4.2 常用事件

不需要全记,记住最常用的几个:

事件触发时机适合做什么
PreToolUse工具调用前拦截危险命令、阻止修改敏感文件
PostToolUse工具调用成功后改完文件自动格式化、跑实验后自动读结果
PostToolUseFailure工具调用失败后记录失败日志
StopClaude 准备结束本轮回复时结束前再检查一次指标是否达标
UserPromptSubmit用户提交 prompt 时自动追加规则、记录输入
SessionStart会话开始时加载自定义环境
PreCompact上下文压缩前提醒保存关键信息
NotificationClaude 需要用户注意时发桌面通知
SubagentStart/SubagentStopsubAgent 启动/结束时记录 agent 活动

4.3 Handler 类型

handler 不只是跑 shell 命令,有三种:

  • command— 跑一个 shell 命令,上下文信息(session_id、tool_name、tool_input 等)以 JSON 通过 stdin 传入,你可以用jq解析
  • prompt— 调 LLM 评估条件,比如"这个 bash 命令安全吗?"
  • agent— 调一个 agent 做验证,比如"检查测试是否通过"

大部分场景用 command 就够了。

4.4 实战:实验自动迭代

假设你有一个 ML 训练项目,每次跑python train.py后结果写入results/metrics.json。你想要的效果是:Claude 每次跑完实验后自动读结果,如果 accuracy < 0.90 或 loss > 0.30,就不要继续做别的事,回头分析原因、改代码、重新实验,直到达标为止。

这个效果不能只靠一个 Hook,需要组合:

第一步,创建检查脚本.claude/hooks/check_result.py,读取results/metrics.json,判断指标是否达标。不达标就输出 “不要继续,请分析原因并修改代码”,达标就输出 “通过”。

第二步,写 Hook 配置——让 PostToolUse 事件在 Bash 命令包含pythontrain等关键词时,自动跑检查脚本:

{"hooks":{"PostToolUse":[{"matcher":"Bash","hooks":[{"type":"command","command":"python .claude/hooks/check_result.py results/metrics.json","if":"Bash(*python*)"}]}],"Stop":[{"matcher":"","hooks":[{"type":"command","command":"python .claude/hooks/check_result.py results/metrics.json"}]}]}}

PostToolUse 里加了"if": "Bash(*python*)",意思是只在 Bash 命令包含 “python” 时才触发检查,避免每次 ls、git 都跑一遍。Stop Hook 在 Claude 准备结束时再检查一次——如果不达标就提醒 Claude 不要结束,继续迭代。

第三步,开始实验时给 Claude 主规则,规定它必须根据 Hook 的反馈行动:

接下来做实验迭代。每次改代码或参数后必须跑python train.py,每次实验后必须读results/metrics.json。如果 Hook 提示不达标,不要写总结、不要进入下一阶段——先分析原因、改代码、重新实验。只有 accuracy >= 0.90 且 loss <= 0.30 时才允许进入下一阶段。

Hook 不等于完整自动化——它负责"触发检查"这一步。剩下的分析、修改、重新实验,需要主提示词和 Skill 配合。

不推荐手动改 settings.json—— JSON 嵌套层级容易出错。直接在 Claude Code 里说 “请帮我创建 Hook 配置,先展示完整内容,我确认后再写” 更稳。


5. subAgent

5.1 意义

如果主 Claude 自己排查一个复杂 bug,可能读十几个文件、跑好几条搜索、试多个假设,主对话上下文很快塞满。到后面你真正需要的是"根因是什么、怎么改",但对话里塞的全是搜索记录。

subAgent 的做法是:派一个专门的专家助手自己去查,最后只把结论带回来。主对话不被中间过程塞满。

5.2 创建

输入/agents,进入管理界面。默认停在Running页——这里是看"当前有没有 agent 在跑"的,没有任务时就是空的。按右方向键 →切到Library页创建。

更推荐的方式是直接用对话创建,因为可以精确描述职责和权限:

请帮我创建一个项目级 subAgent,名字叫 experiment-runner。放在 .claude/agents/experiment-runner.md。

作用:负责实验迭代。每轮运行实验命令、读取 results/metrics.json、判断 accuracy/loss 是否达标,不达标就提出修改方向。

权限:Read、Grep、Glob、Bash、Edit、Write

约束:修改代码前必须先说明要改什么和为什么。创建前先展示 agent 文件内容,我确认后再写。

5.3 agent 权限

这是 subAgent 最重要的设计原则——不是所有 agent 都该有全权限:

  • debugger:Read、Grep、Glob、Bash — 只读,不允许改代码
  • code-reviewer:Read、Grep、Glob、Bash — 只输出建议,不允许写代码
  • test-writer:Read、Grep、Glob、Edit、Write、Bash — 可以写测试文件
  • security-reviewer:Read、Grep、Glob — 只读,Bash 都不给
  • experiment-runner:全集,但受实验规则约束

5.4 调用

创建后不会自动运行。可以在Claude Code输入中指定,比如调用方式:

请使用 experiment-runner agent 做实验迭代。不要由主会话直接去做迭代。目标:accuracy >= 0.90 且 loss <= 0.30。实验命令:python train.py。


6. MCP

前面的 Memory、Skill、Hook、subAgent 都在 Claude Code 自己的世界里。MCP(Model Context Protocol)让 Claude Code 能接外部系统:GitHub、PostgreSQL、Figma、Slack、Sentry、Jira 等。

/mcp查看当前连接了哪些服务和状态。在终端添加新连接:

# HTTP 类型claude mcpadd--transporthttp github https://example.com/mcp# stdio 类型(本地进程)claude mcpadd--transportstdio myserver --nodeserver.js

MCP安全风险其实挺多的,建议在 CLAUDE.md 里写死 MCP 安全规则:

  • 所有 MCP 默认只读
  • 数据库 MCP 默认只允许 SELECT
  • GitHub MCP 默认只读 issue,不直接修改 issue 或 PR
  • 涉及写操作必须先给方案、影响范围和确认点

我这篇博客也详细讲了MCP: Agent 三件套


7. worktree

7.1 概念

Claude Code 的 worktree 是基于 Git worktree的。你的项目必须有 Git 仓库才能用。

普通情况下你只有一个项目目录。如果开两个终端跑两个 Claude 会话,都在同一个目录里改文件,改的是同一份文件,很容易互相覆盖。

worktree 让你从一个 Git 仓库开出多个独立目录,每个目录有自己的文件副本:

my-project/ # 主目录 my-project/.claude/worktrees/exp-a # worktree 目录 A my-project/.claude/worktrees/exp-b # worktree 目录 B

7.2 启动

在终端:

cdmy-project claude--worktreeexp-a# 创建或进入 worktree exp-a

再开另一个终端:

cdmy-project claude--worktreeexp-b

exp-a 里的 Claude 改 exp-a 目录下的文件,exp-b 里的 Claude 改 exp-b 目录下的文件,主目录不受影响。

7.3 关键认知

这是很容易踩坑的地方。三个概念要分清:

  • worktree 名字:启动时写的,比如exp-a
  • worktree 目录:磁盘路径,比如.claude/worktrees/exp-a/
  • worktree 对应的分支:不一定叫exp-a,必须查出来

在主项目目录下跑:

gitworktree list

输出示例:

D:/my-project abc1234 [main] D:/my-project/.claude/worktrees/exp-a def5678 [worktree-exp-a] D:/my-project/.claude/worktrees/exp-b 8910111 [worktree-exp-b]

方括号[]里的才是分支名。合并时合并的是方括号里的分支名,不是 worktree 名字,不是目录路径。几个例子:

git worktree list 输出分支名合并命令
[login-fix]login-fixgit merge login-fix
[worktree-exp-a]worktree-exp-agit merge worktree-exp-a
[claude/test1]claude/test1git merge claude/test1

不要猜。先查再 merge。

7.4 合并和冲突

cdD:/my-projectgitcheckout maingitmerge worktree-exp-a# 查出来的分支名# 跑测试确认没问题gitmerge worktree-exp-b

如果两个 worktree 改了同一个文件的同一段代码,Git 会报 CONFLICT。这时候让 Claude 分析冲突:

当前合并出现冲突。分析冲突文件:A 改了什么、B 改了什么、可以同时保留吗、推荐合并方案。先不要修改文件。

最好开 worktree 时就明确分工,给每个 Claude 下限制:

你现在在 worktree exp-a 中工作。只允许修改模型结构相关文件。不要修改数据处理文件。如果确实需要改,先停下来说明原因。

完成后清理:

gitworktree remove .claude/worktrees/exp-agitbranch-dworktree-exp-a# 分支也不要了就删

8. Multi-Agent

8.1 概念

  • subAgent:主 Claude在一个会话里派一个专家去查,专家返回结果。专家不和其他专家讨论。
  • worktree:隔离的代码目录。不是助手,是文件系统层面的隔离。
  • Agent Team多个 Claude 实例组成团队,各自领任务,lead 汇总。这是多会话之间的协作。这个功能现在还不成熟,Antropic也说了现在是在实验阶段。

**适用场景:**大型重构、前后端同时分析、复杂 bug 多方向排查、实验多方向并行、一个写代码一个写测试一个 review。它是为复杂任务设计的,不要为了用而用。

8.2 用法

关键不是"多叫几个 Claude",而是拆任务 + 定角色 + 定权限 + 定输出 + lead 汇总 + 你批准后再改。缺一步就是多份混乱。

给 lead 的提示词:

Use an agent team for this task.

目标:重构用户登录模块,保持现有行为不变。

角色:

  1. frontend-agent — 只分析登录页面、表单组件、路由跳转。只读,不修改。
  2. api-agent — 只分析 auth API、token 存储、错误处理。只读,不修改。
  3. test-agent — 只分析现有测试覆盖,提出需要补的测试。只读,不修改。
  4. reviewer-agent — 在前三个完成后,审查汇总方案是否有风险。只读,不修改。

规则:

  • 第一轮所有人只读代码,不修改文件
  • 每个 teammate 输出自己的发现
  • lead 汇总最终计划
  • 我批准前不要改代码

核心速查

功能作用怎么访问
Memory项目说明书,启动自动加载/init生成,/memory查看
Plan Mode先读代码给方案,批准再改/plan,或claude --permission-mode plan
Skill封装重复流程为 /命令.claude/skills/<name>/SKILL.md
Hook到时机自动触发检查.claude/settings.json/hooks查看
subAgent派专家查问题,只带回结论/agents→ Library 创建
MCP连接 GitHub、数据库等/mcp查看,claude mcp add添加
worktreeGit worktree 隔离目录并行工作claude --worktree <name>git worktree list查分支
Agent Team多 Claude 组队分工协作拆任务 → 定角色 → 定权限 → lead 汇总
http://www.jsqmd.com/news/1153675/

相关文章:

  • umy-ui架构解析:Vue 2.0企业级大数据表格性能优化实战指南
  • GitHub下载速度革命:Fast-GitHub插件10倍加速终极指南
  • Poppler Windows预编译包:一站式PDF处理解决方案
  • 免费通配符SSL证书申请+Nginx自动部署+到期监控完整教程
  • KMS_VL_ALL_AIO:基于微软KMS协议的企业级系统激活架构解析
  • 深度解析SMAPI架构设计:如何构建跨平台星露谷物语模组生态系统
  • 《用AI做公众号流量主》第2课:收益底层逻辑,谁在付钱?
  • 电脑越用越慢?3个步骤让Windows系统重获新生
  • RVC语音克隆技术深度解析:如何用10分钟数据构建专业级AI音色系统
  • 从ZUC-128算法实现看流密码:原理、代码与5G通信安全实践
  • CircuitJS1 Desktop Mod:零基础上手,打造你的个人电子实验室
  • 4类打架检测数据集对比:UBI-Fights、Hockey等3000+视频的场景与性能分析
  • CVE与CNVD漏洞申报指南:从实战发现到证据链构建
  • MP2672A充电管理芯片与PIC18F97J94微控制器的电池系统设计
  • 告别网盘限速困扰:九大平台直链下载助手全面指南
  • 网络安全实战能力进阶:从DVWA到SRC的靶场训练全路径指南
  • SQLite 快速入门:基础知识与 Python 实战
  • 语音转换技术突破:Retrieval-based-Voice-Conversion-WebUI实现10分钟数据高效训练与实时变声
  • 《Linux文本编辑器学习笔记 vim命令+课后练习》
  • 免费在线法线贴图生成器:3分钟将普通图片变3D纹理的终极指南
  • Kueue 学习第三篇:安装、配额借用与优先级抢占
  • 174、VS Code 调试配置:launch.json、条件断点、logpoint、Debug Console 实战
  • CCRC数据安全资质全解析:从PIPA到CSERE,甲方到底认哪个?
  • 主权AI战略解析:韩国万卡GPU集群建设与开发者机遇
  • 告别网盘限速烦恼:9大平台直链下载工具全攻略
  • 别再只盯着TPS了!性能测试的最高境界,是看懂“排队论”
  • DINO自监督学习论文复现:ViT特征提取能力的实验验证
  • 搬家品牌的工程评估维度——日式搬家与普通搬家的技术差异
  • IRENE 多模态诊断模型:双向注意力机制解析与3类传统融合方案对比
  • 指标中心如何终结跨部门口径之争:统一定义、统一血缘、统一权限