Claude Code 日常使用手记

接手一个陌生项目、追踪一个诡异 bug、把老掉牙的代码翻新一遍------这些几乎是每位开发者都会遇到的场景。Claude Code 像一个随时待命的结对编程伙伴,可以在这些日常任务里搭把手。这篇文章会从旁观者的角度,把开发者们常用的一套流程整理出来,看看它到底能帮上哪些忙。


探索陌生代码库

刚进入一个新项目,最怕的不是代码难,而是不知道从哪儿开始。Claude Code 可以从宏观到微观,帮人一点点摸清脉络。

快速了解整体结构

  1. 进入项目根目录
    cd /path/to/project
  2. 启动 Claude Code
    claude
  3. 直接问一个概况
    给我一个代码库的概览
  4. 再深入具体模块
    解释一下这里用到的架构模式
    关键的数据模型有哪些?
    认证是怎么实现的?

小技巧

  • 先从宽泛的问题问起,再慢慢缩小到具体领域
  • 可以问一下项目里用了哪些编码规范和模式
  • 如果项目里有一些特定术语,可以让它做个术语表

定位相关代码

如果想找某个功能对应的代码:

  1. 让 Claude 帮忙找文件
    找出处理用户认证的文件
  2. 了解这些组件如何协作
    这些认证文件是怎么一起工作的?
  3. 梳理执行流程
    从前端到数据库,把登录过程串一遍

小技巧

  • 描述要具体,尽量用项目里已有的术语
  • 如果安装了对应语言的代码智能插件,Claude 能获得更精确的"转到定义"和"查找引用"能力

高效修 bug

遇到报错时,开发者通常会这样用 Claude Code:

  1. 把错误信息贴出来
    运行 npm test 的时候报了这个错
  2. 让它提几个修复思路
    针对 user.ts 里的 @ts-ignore 给几个修复建议
  3. 应用其中一种方案
    按你说的,在 user.ts 里加上空值检查

小技巧

  • 告诉 Claude 怎么重现问题,最好附上堆栈
  • 说明复现的步骤
  • 如果错误是偶发性的,一定要告诉它

重构代码

想把旧代码改成更现代的写法,可以一步步来:

  1. 先找到需要重构的部分
    找出代码库里还在用废弃 API 的地方
  2. 请它给重构建议
    怎么把 utils.js 改成用现代 JavaScript 特性?
  3. 按建议安全地改动
    把 utils.js 改成 ES2024 的写法,但行为要保持不变
  4. 验证改动是否正确
    跑一下重构后相关的测试

小技巧

  • 让 Claude 解释一下新写法的好处
  • 需要保持向后兼容的话,提前说明
  • 每次重构的改动尽量小,可以随时测试

使用专用子代理(subagent)

Claude Code 内置了一些专门干杂活的小助手,也可以自己定制。

  1. 查看有哪些子代理可用
    /agents
    这个命令会列出所有可用子代理,还能新建。
  2. 子代理通常会自动被调用
    比如:
    帮我 review 最近改动的代码,看看有没有安全问题
    跑一遍所有测试,把失败的地方修好
    ------Claude 会自动把任务派给合适的子代理。
  3. 也可以直接点名让某个子代理干活
    用 code-reviewer 子代理检查一下 auth 模块
    让 debugger 子代理调查一下为什么用户登不上去
  4. 创建适合自己项目的子代理
    /agents
    选"创建新子代理",然后按提示填:
    • 一个标识符(比如 code-reviewer、api-designer)
    • 描述清楚什么时候该用它
    • 它能访问哪些工具
    • 一个系统提示词,描述它的职责

小技巧

  • 项目相关的子代理可以放在 .claude/agents/ 目录下,方便团队共享
  • 描述写清楚,Claude 才会自动调用它
  • 给子代理的权限只给必要的,不要多给

计划模式:安全地分析代码

计划模式让 Claude 只读不改,适合在做大改动前先踩点、规划。在这种模式下,Claude 会用 AskUserQuestion 先收集需求,确认目标后再出计划。

什么时候用计划模式

  • 改动涉及很多文件
  • 想在动手之前先仔细研究代码
  • 想和 Claude 一起迭代方向

怎么用

  • 在会话中切换
    普通模式下按 Shift+Tab 先进入自动接受模式(终端底部显示 ⏵⏵ accept edits on),再按一次 Shift+Tab 就进入计划模式(显示 ⏸ plan mode on)。
  • 新会话直接进入计划模式
    claude --permission-mode plan
  • 在"无头模式"下使用
    claude --permission-mode plan -p "分析认证系统,给出改进建议"

示例:规划一次复杂重构

plain 复制代码
claude --permission-mode plan
我需要把认证系统改成 OAuth2,帮我制定一个详细的迁移计划。

Claude 会先分析现有实现,给出全面计划。可以接着问:
向后兼容性怎么考虑?
数据库迁移怎么搞?

Ctrl+G 可以把计划在默认编辑器里打开,手动修改后再让 Claude 执行。

当接受一个计划时,Claude 会自动用计划内容命名会话,这个名字会显示在提示栏和会话选择器里。如果之前已经用 --name/rename 设过名字,接受计划不会覆盖它。

设置为默认模式

可以在 .claude/settings.json 里配:

json 复制代码
{
  "permissions": {
    "defaultMode": "plan"
  }
}

更多配置见设置文档。


与测试打交道

给代码加测试,Claude 可以这样帮忙:

  1. 找出没测到的代码
    找出 NotificationsService.swift 里没有被测试覆盖的函数
  2. 生成测试骨架
    给通知服务加测试
  3. 补充有意义的测试用例
    给通知服务加一些边界情况的测试
  4. 跑起来验证
    运行新加的测试,修好失败的地方

Claude 会参考项目里已有的测试风格,包括测试框架、断言方式等。如果想覆盖得更全,可以让它主动找找可能漏掉的边缘场景------比如错误条件、边界值、异常输入等。


创建 Pull Request

有两种方式:直接让 Claude 做,或者按步骤来。

直接方式
帮我给这次改动建个 PR

分步方式

  1. 总结改动
    总结一下我对认证模块做的改动
  2. 生成 PR
    创建 PR
  3. 改进描述
    在 PR 描述里多补充一点安全改进的背景

如果通过 gh pr create 创建 PR,Claude 会自动把这个 PR 链接到当前会话。之后可以用 claude --from-pr <编号> 直接恢复针对这个 PR 的对话。

提醒一下:PR 生成之后最好自己再看一遍,也可以让 Claude 高亮一下可能的风险点。


处理文档

需要补充或更新文档时:

  1. 找出缺文档的地方
    在 auth 模块里,哪些函数没有 JSDoc 注释?
  2. 生成文档
    给 auth.js 里缺注释的函数加上 JSDoc
  3. 检查并完善
    把生成的文档改得更好一点,加上上下文和示例
  4. 验证是否符合规范
    检查一下这些文档是否符合我们项目的标准

小技巧

  • 明确说明想要哪种文档风格(JSDoc、docstring 等)
  • 要求加上示例
  • 对公开 API、接口和复杂逻辑尤其要文档完整

处理图片

有些场景里,一张图片比文字描述更管用。

  1. 把图片加入对话
    可以:
    • 直接拖拽图片到 Claude Code 窗口
    • 复制图片,在终端里按 ctrl+v 粘贴(注意不是 cmd+v
    • 告诉它图片路径:分析这张图片:/path/to/your/image.png
  2. 请 Claude 分析图片
    这张图片里是什么?
    描述一下这个截图里的 UI 元素
    这个图里有没有什么不合适的地方?
  3. 用图片提供上下文
    这是错误截图,问题出在哪?
    这是我们现在的数据库 schema,新功能该怎么改它?
  4. 根据图片内容要代码建议
    按这个设计稿写 CSS
    用什么 HTML 结构能复现这个组件?

小技巧

  • 当文字描述不清或太啰嗦时,用图片更直观
  • 可以放错误截图、UI 设计稿、架构图等
  • 一次对话里可以传多张图
  • Claude 提到图片时(比如 [Image #1]),可以用 Cmd+点击(Mac)或 Ctrl+点击(Windows/Linux)打开查看

引用文件和目录

@ 可以快速把文件或目录内容带进对话,不用等 Claude 自己读。

  1. 引用单个文件
    解释一下 @src/utils/auth.js 的逻辑
    这会直接把文件全部内容带进对话。
  2. 引用一个目录
    @src/components 的结构是什么样的?
    这会显示目录列表和文件信息。
  3. 引用 MCP 资源
    展示 @github:repos/owner/repo/issues 的数据
    格式是 @服务器名:资源,需要先连接 MCP 服务器。详见 MCP 资源文档。

小技巧

  • 路径可以用相对路径或绝对路径
  • @ 引用文件时,会把文件所在目录和上级目录的 CLAUDE.md 也加入上下文
  • 引用目录只展示文件列表,不展示文件内容
  • 一条消息里可以引用多个文件,比如 @file1.js 和 @file2.js

扩展思维模式

扩展思维(Extended Thinking)默认是开启的,让 Claude 在回答前有更多空间做内部推理。开启详细模式(按 Ctrl+O)就能看到这些思考过程,以灰色斜体显示。

Opus 4.6 和 Sonnet 4.6 还支持自适应推理(adaptive reasoning),会根据选择的"努力程度"动态分配思考的 token 数,而不是固定预算。

扩展思维尤其适合:复杂架构决策、难缠的 bug、多步实现规划、评估不同方案的取舍。

注意:像"think"、"think hard"、"think more"这样的词只是普通指令,并不会分配思考 token。

配置思维模式

方式 说明
调整努力程度 运行 /effort,或在 /model 里调整,或设置环境变量 CLAUDE_CODE_EFFORT_LEVEL。控制 Opus 4.6 和 Sonnet 4.6 的思考深度。
ultrathink 关键词 在任意 prompt 里包含"ultrathink",单次将努力程度设为高(仅 Opus 4.6 / Sonnet 4.6)。适合临时需要深度推理的任务。
快捷键切换 Option+T(Mac)或 Alt+T(Windows/Linux),在当前会话里开关思维模式(对所有模型有效)。可能需要终端允许 Option 快捷键。
全局默认 /config 切换思维模式,会影响所有项目。保存在 ~/.claude/settings.jsonalwaysThinkingEnabled 字段。
限制 token 预算 设置环境变量 MAX_THINKING_TOKENS,限制思考 token 数。对于 Opus 4.6 / Sonnet 4.6,只有设为 0 时才生效(除非禁用自适应推理)。例如 export MAX_THINKING_TOKENS=10000

想看 Claude 的思考过程,按 Ctrl+O 打开详细模式,就能看到内部推理显示为灰色斜体。

扩展思维如何工作

  • 更多思考空间,可以探索更多解法、分析边缘情况、自我纠错
  • Opus 4.6 / Sonnet 4.6 采用自适应推理,根据努力程度动态分配 token
  • 旧模型使用固定的 token 预算,可以通过环境变量限制或 /config / 快捷键完全关闭

关于收费:所有用掉的思考 token 都会计费,即使 Claude 4 的模型在输出时只显示总结后的思考过程。


恢复之前的对话

Claude Code 会自动保存每次会话。要恢复之前的对话,可以:

  • 恢复当前目录最近的一次对话
    claude --continue
  • 打开会话选择器,或按名称恢复
    claude --resume
    claude --resume auth-refactor
  • 恢复关联到某个 PR 的会话
    claude --from-pr 123

在会话内部,可以用 /resume 切换到其他对话。

会话是按项目目录存储的。/resume 选择器会显示同一个 git 仓库下的所有会话(包括工作树)。

给会话起名字

给会话起个有意义的名字,以后好找:

  • 启动时命名
    claude -n auth-refactor
  • 在会话中改名
    /rename auth-refactor
    改名后名字会显示在提示栏上。
  • 在会话选择器里重命名
    运行 /resume,选中某个会话,按 R 就能重命名。

之后可以通过名字恢复:
claude --resume auth-refactor

或在会话里用 /resume auth-refactor

会话选择器

/resume(或 claude --resume 不带参数)会打开交互式选择器,功能包括:

快捷键 作用
↑ / ↓ 在会话间移动
→ / ← 展开或折叠分组
Enter 选择并恢复会话
P 预览会话内容
R 重命名选中的会话
/ 搜索过滤
A 切换"当前目录"和"所有项目"
B 只显示当前分支的会话
Esc 退出选择器或搜索

选择器会显示会话名称或首条 prompt、上次活动时间、消息数量、git 分支等信息。分支出来的会话(通过 /branch/rewind--fork-session 创建)会归组在根会话下。

小技巧

  • 早点给会话起名字:开始一个新任务就用 /rename 取名,比之后翻"解释这个函数"要好找得多
  • 常用 --continue 快速回到当前目录最近的一次会话
  • 知道名字用 --resume 名字,不确定时用 --resume 浏览
  • 脚本里可以用 claude --continue --print "prompt" 非交互式恢复
  • 在选择器里按 P 可以先预览会话内容再决定恢复

恢复的会话会沿用原来的模型和配置。


用 Git 工作树运行并行会话

当同时处理多个任务时,每个 Claude 会话需要一份独立的代码副本,避免改动互相干扰。Git 工作树可以做到这一点------每个工作目录都有自己的文件和分支,但共享同一个仓库历史和远端。

使用 --worktree 创建隔离环境

claude --worktree feature-auth

这会创建名为 feature-auth 的工作树目录和同名分支。

如果不指定名字,Claude 会随机生成一个,比如 claude --worktree 会生成类似 bright-running-fox 这样的名字。

工作树创建在 <仓库>/.claude/worktrees/<名字>,分支从远端默认分支(即 origin/HEAD 指向的分支)切出,分支名是 worktree-<名字>

如果远端默认分支后来改了,但本地 origin/HEAD 没更新,工作树仍会从旧的默认分支切出。可以用以下命令同步:
git remote set-head origin -a

如果想完全控制工作树的创建方式(比如基于其他分支),可以配置 WorktreeCreate hook,它会完全替换 Claude 默认的 git worktree 逻辑。

子代理工作树

子代理也可以使用工作树隔离,实现并行工作。只需对 Claude 说"给你的 agent 用工作树",或者在自定义子代理的前置说明里加上 isolation: worktree,每个子代理就会得到自己的工作树,任务结束后自动清理。

工作树清理

退出工作树会话时,Claude 会根据是否有改动来处理:

  • 没有改动:自动删除工作树目录和分支
  • 有改动或提交:Claude 会询问是保留还是删除。保留则目录和分支都留着,以后还能回来;删除则丢弃所有未提交的改动和提交。

手动清理可以用常规的 git worktree 命令。

建议把 .claude/worktrees/ 加到 .gitignore,避免工作树内容在主仓库里显示为未跟踪文件。

把 gitignored 文件复制到工作树

Git 工作树是全新检出,不会包含主仓库里未跟踪的文件(如 .env.env.local)。如果需要自动复制这些文件,可以在项目根目录放一个 .worktreeinclude 文件,用 .gitignore 的语法列出要复制的文件。只有匹配且已被 gitignore 的文件才会被复制,不会复制跟踪的文件。

plain 复制代码
.env
.env.local
config/secrets.json

这个机制对 --worktree、子代理工作树、桌面版应用中的并行会话都生效。

手动管理工作树

如果需要更灵活地控制工作树位置和分支,可以直接用 Git 创建:

plain 复制代码
# 新建一个工作树和新分支
git worktree add ../project-feature-a -b feature-a

# 基于已有分支创建工作树
git worktree add ../project-bugfix bugfix-123

# 进入工作树启动 Claude
cd ../project-feature-a && claude

# 清理
git worktree list
git worktree remove ../project-feature-a

每个新工作树需要按项目要求初始化开发环境(安装依赖、设置虚拟环境等)。

如果使用 SVN、Perforce 等非 Git 版本控制系统,可以通过配置 WorktreeCreateWorktreeRemove hook 来自定义工作树逻辑,此时 .worktreeinclude 不会被处理,需要在 hook 脚本里自行复制配置。


当 Claude 需要人注意时

如果让 Claude 跑一个长任务,自己切出去做别的事情,可以配置桌面通知,让它在完成或需要输入时提醒。

  1. 在设置里添加通知 hook
    打开 ~/.claude/settings.json,添加 Notification hook,调用系统原生通知命令。
    • macOS
json 复制代码
{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}
复制代码
- **Linux** 和 **Windows** 也有对应的命令示例,可以在文档中找到。
  1. 可选:缩小匹配范围
    matcher 字段可以指定只针对某些通知类型触发:
matcher 触发时机
permission_prompt Claude 需要用户批准某个工具操作
idle_prompt Claude 完成工作,等待下一条 prompt
auth_success 认证完成
elicitation_dialog Claude 向用户提问
  1. 验证
    输入 /hooks 选择 Notification,确认 hook 已显示。选中它会显示要运行的命令。可以故意让 Claude 执行一个需要授权的命令,然后切出终端,看是否能收到通知。

把 Claude 当 Unix 工具用

Claude Code 也可以被当作命令行工具集成进脚本。

加入验证流程

比如在 package.json 里添加一个脚本,让 Claude 做 linter:

json 复制代码
{
  "scripts": {
    "lint:claude": "claude -p '你是一个 linter,请检查当前相对于 main 分支的改动,报告所有拼写问题。每行输出文件名和行号,第二行输出问题描述。不要输出其他内容。'"
  }
}

这样可以把 Claude 集成到 CI/CD 里做代码审查,还可以根据项目需要定制检查内容。

管道输入输出

可以用管道把数据喂给 Claude,再把结果接出来:

plain 复制代码
cat build-error.txt | claude -p '简要解释这个构建错误的根本原因' > output.txt

结合其他 Unix 工具,可以组合出很强大的工作流。

控制输出格式

如果需要结构化输出,可以指定格式:

  • 纯文本(默认)
    cat data.txt | claude -p '总结这些数据' --output-format text > summary.txt
  • JSON 格式
    cat code.py | claude -p '分析这段代码的 bug' --output-format json > analysis.json
    输出一个 JSON 数组,包含消息和元数据(耗时、费用等)。
  • 流式 JSON
    cat log.txt | claude -p '解析这个日志里的错误' --output-format stream-json
    实时输出一系列 JSON 对象,每个对象是一段消息。整个输出不是合法的 JSON,因为每行一个独立对象。

小技巧

  • 简单集成用 text 格式就行
  • 需要完整对话日志用 json
  • 需要实时输出用 stream-json

让 Claude 定时执行任务

想让 Claude 每天早上自动检查 PR、每周审核依赖、或者夜间跑 CI 结果,可以把它放在定时任务里。

根据运行环境不同,有几个选择:

选项 运行位置 适用场景
云端定时任务 Anthropic 托管的基础设施 即使电脑关机也要执行的任务,可在 claude.ai/code 配置
桌面端定时任务 本地电脑(桌面应用) 需要访问本地文件、工具或未提交改动的任务
GitHub Actions CI 流水线 与仓库事件绑定的任务,比如 PR 打开时,或基于 cron 的计划任务
/loop 当前 CLI 会话 在会话打开期间快速轮询,会话退出后任务取消

给定时任务写 prompt 时,要明确成功标准和对结果的处理方式。因为是自动执行,它无法再问问题,所以 prompt 要写得足够清楚。例如:"检查所有标记为 needs-review 的未合并 PR,对问题留下行内评论,然后把总结发到 #eng-reviews Slack 频道。"


问 Claude 它自己能做什么

Claude 内置了自己的文档,可以直接问它关于能力的问题。比如:

  • Claude Code 能创建 PR 吗?
  • 权限是怎么处理的?
  • 有什么可用的 skills?
  • 怎么用 MCP?
  • 怎么配置 Amazon Bedrock?
  • Claude Code 有什么限制?

它会基于最新的文档回答这些问题。如果想看具体的可执行示例,可以参考前面的各个工作流部分。

小技巧

  • 无论用的是什么版本,Claude 总能访问到最新文档
  • 问题越具体,答案越详细
  • 它可以解释复杂功能,比如 MCP 集成、企业配置、高级工作流等

以上便是开发者日常使用 Claude Code 时最常见的场景。从第一次走进陌生代码库,到深夜追查 bug,再到给老项目动手术------它像一个耐心、知根知底的伙伴,在需要的时候总能聊上几句,一起把问题理清楚。

相关推荐
oscar99918 小时前
为 Claude Code 选择合适的权限模式
permission·claude code
爱听歌的周童鞋21 小时前
Learn-Claude-Code | 笔记 | Tools & Execution | s01 The Agent Loop | s02 Tools
llm·agent·note·claude code·tool use·agent loop
门豪杰1 天前
Claude Code 斜杠命令实践指南
claude·claudecode·claude code
超b小哥1 天前
【超详细】Claude Code Ubuntu平台完整部署指南
linux·人工智能·ubuntu·ai·claude code
老黑2 天前
开源工具 AIDA:给 AI 辅助开发加一个数据采集层,让 AI 从错误中自动学习(Glama 3A 认证)
前端·react.js·ai·nodejs·cursor·vibe coding·claude code
irpywp2 天前
HolyClaude:一行命令,随时随地运行 Claude Code
开源·github·claude code
oscar9992 天前
探秘Claude Code的“.claude”目录:那些藏在背后的配置与记忆
memory·配置·rule·claude code·sikil
oscar9992 天前
打开Claude Code的黑匣子:一次会话中,上下文窗口里到底发生了什么?
context·claude code
xufengzhu2 天前
Claude Code Hooks 报错异常处理:解决 Windows 环境下的 jq 命令缺失问题
人工智能·windows·claude code