Claude Code 使用技巧整理

Claude Code 使用技巧整理

这篇文档主要记录我在使用 Claude Code 过程中的一些稳定工作流、提问方式和插件使用经验。目标不是把所有功能列一遍,而是整理出真正能提高交付效率的做法。


Claude Code 适合做什么

如果从游戏开发、工具链开发和内容工程的视角来看,Claude Code 更适合以下几类任务:

  • 理解已有工程结构
  • 批量重构脚本或工具代码
  • 补测试、补文档、补脚手架
  • 对接第三方 SDK、服务接口或命令行工具
  • 做中等复杂度的多文件改动

它的优势不是“直接无脑一把梭”,而是:

  • 长上下文理解能力比较稳定
  • 对代码解释、重构、归纳总结表现较好
  • 适合先分析、再执行的工作流

如果任务非常碎、非常即时,比如一边写一边需要行级补全,那还是 IDE 内补全工具更直接。


Claude配置文件位置

项目根/CLAUDE.md ~/.claude/settings.json ~/.claude.json
语义 给 Claude 的指令 用户配置 系统内部状态
谁写 用户手写 用户手动编辑 Claude Code 自动维护
内容 项目规范、编码风格、工作流约定 API 密钥、模型配置、权限规则、MCP 服务器 启动次数、工具使用统计、项目级会话记录
类比 .editorconfig / .eslintrc VS Code 的 settings.json VS Code 的 state.vscdb
版本控制 应提交到 git 不提交(含密钥) 不提交(含用户 ID)
env — API 地址、模型名 —
permissions — 工具白名单 —
mcpServers — 全局 MCP 服务器 —
enabledPlugins — 插件开关 —
numStartups — — 启动总次数
projects — — 每个项目的 MCP、信任状态、会话统计
toolUsage — — 每个工具的调用次数和最后使用时间
tipsHistory — — 已展示过的提示信息
备注 这个文件一直存在于上下文中。

我比较稳定的使用流程

先要求它说明影响面

在改公共模块、基础类库、构建脚本之前,可以先问:

1
2
如果修改这个函数签名,会影响哪些调用方?
请按文件列出来,并说明高风险点。

这一步对避免误改很有价值。

让它顺手补验证步骤

除了改代码,我还会顺带要求:

1
2
3
4
修改完成后,请补充:
1. 如何验证
2. 建议执行的命令
3. 可能失败的边界情况

这样最后产出更接近可交付状态。

把“不要做什么”写明

例如:

  • 不要改 public API
  • 不要引入新依赖
  • 不要动 UI 样式
  • 不要修改数据库结构

这类负向约束非常重要,尤其是在已有项目里。

  • 另外,Claude Sonnot会有比较严重的上下文焦虑。所以它只适合用于来做短暂的快速完成的小功能。

ClaudeCode底层实现讨论

模型自带的搜索能力WebSearch如何实现的

Claude Code 内置了两个独立的联网工具,经常被混为一谈:

工具 职责 输入 输出
WebSearch 搜索引擎入口 关键词 query 标题 + 链接列表
WebFetch 页面内容读取 具体 URL 页面正文

两者配合使用:先用 WebSearch 找到相关链接,再用 WebFetch 读取具体内容。

底层调用链路

这里有个比较有意思的实现细节,是社区通过逆向 Claude Code 流量发现的:

  1. 主对话触发:当 Claude 判断需要搜索时,主会话调用 WebSearch,传入 query 参数
  2. 派生子对话:Anthropic 服务端会为这次搜索单独起一个 Claude Opus 子会话,调用 Anthropic 内部的 web_search 服务端工具
  3. 结果回传:子会话处理完后,结果作为工具返回值传回主对话
  4. 可能多轮:整个过程可能在单次请求中重复多次(比如先搜一次,根据结果决定再搜一次)

这个设计的意图是让主 Agent 保持轻量,并限制注入面(injection surface),搜索逻辑在隔离的子会话里运行。

版本与收费说明

  • 目前最新工具版本是 web_search_20260209,支持动态过滤(Dynamic Filtering,正式”进入 Claude 上下文之前”,先让代码过滤一遍,只保留有用的部分**)
  • API 用户:WebSearch 是单独计费的附加功能,每次搜索额外收费
  • Max 套餐用户:已经包含在套餐里,不单独扣费,可以直接用
  • 这也是为什么有人反馈”用 Claude 订阅账号跑 Claude Code 时 WebSearch 显示 Rate limit,但用 API Key 却正常”——两者走的是不同的配额通道

和 MCP 搜索插件的区别

如果你已经用 Max 套餐,内置的 WebSearch + WebFetch 对日常搜索够用,不需要额外装 Tavily、Brave 这类 MCP 搜索插件。MCP 搜索插件更适合需要更高频次搜索、或者需要自定义搜索行为的 API 用户。

Plugin /其他工具/工作流

插件或者外部工具接入,真正的价值不是“功能变多”,而是让 Claude Code 可以从“只会说”变成“能查、能跑、能验证”。

我的判断标准通常是三条:

  1. 能不能减少手动切换上下文
  2. 能不能把分析结果落到真实工程上
  3. 能不能形成稳定工作流,而不是偶尔演示一次

ralph-loop (循环插件)

ralph-loop 这类插件我更倾向把它看成“循环执行框架”或者“任务闭环增强器”。

它比较适合下面这些场景:

  • 一个任务需要多轮分析、执行、检查
  • 需要让 AI 按固定节奏反复迭代
  • 需要把大任务拆成可观察的小回合

自动化同意问题

如果你的目标只是“允许它直接修改当前工作区里的文件,不要每次都弹确认”,优先用 Claude Code 自带的权限模式,而不是指望插件本身绕过确认。

我建议分两档理解:

方案 1:只自动同意编辑文件

这是更稳的做法。

Claude Code 有一个 acceptEdits 模式,核心效果是:

  • 工作区内的文件编辑可以批量接受
  • 但执行命令、联网请求、其他有副作用的操作,仍然会继续询问

如果你主要烦的是“改这个文件能不能同意”这种提示,那应该优先用这一档。

可以通过 /config 或 /permissions 检查当前模式,也可以在设置文件里显式写上:

1
2
3
4
5
6
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"defaultMode": "acceptEdits"
}
}

常见放置位置:

  • 全局生效:~/.claude/settings.json
  • 当前仓库本地生效:.claude/settings.local.json
  • 团队共享配置:.claude/settings.json

如果你只是想在自己机器上对当前项目放开,最适合放到 .claude/settings.local.json。这样不会提交进仓库,也不会影响别的项目。

方案 2:连命令确认也一起跳过

如果你希望 Claude Code 连命令执行、工具调用这些确认也尽量别问,可以直接用启动参数:

1
claude --dangerously-skip-permissions

这个模式相当于直接跳过权限确认,适合你完全信任当前仓库、并且明确知道它可能会自动执行改文件、跑命令、调用工具等操作的场景。

但这一档风险明显更高,不建议默认长期打开。更适合:

  • 自己的个人仓库
  • 隔离良好的测试环境
  • 临时做高频迭代任务

不太建议直接用于:

  • 来路不明的仓库
  • 混有敏感配置的工程
  • 会执行部署、发布、数据库操作的项目

实战建议

如果你的诉求只是“ralph-loop 在多轮执行时别一直问我能不能改文件”,那优先级应该是:

  1. 先把默认权限模式切到 acceptEdits
  2. 用 .claude/settings.local.json 只对当前仓库生效
  3. 只有在你连命令确认都嫌打断流程时,才改用 --dangerously-skip-permissions

简单说:

  • 只想免掉文件编辑确认,用 acceptEdits
  • 想把所有确认基本都跳过,用 --dangerously-skip-permissions

前者适合日常主力使用,后者适合你明确接受风险时再开。

简单说,ralph-loop 不是让 Claude Code “更聪明”,而是让你的任务编排更稳定。

Oh My Claude Code(OMC,Claude智能体集合)

主打一个零成本学习Claude的一个工具。提供一个预设好的agent合集。

安装方式

我使用npm包管理。在terminal里执行:
npm i -g oh-my-claude-sisyphus@latest
然后omc setup,完成设置。
项目网站

提供了5种模式

🔸 Autopilot(完全自主) - 从规划、实施到测试的全流程自动化
🔸 Ultra Pilot(并行加速) - 最多5个并行工作者同时处理,速度提升5倍
🔸 Swarm(协作团队) - 多个智能体像开发团队一样协作,从共享任务池领取工作
🔸 Pipeline(流水线) - 按固定顺序串联智能体,适合必须按步骤推进的工作流
🔸 EcoCode(经济模式) - 在保持效率的前提下最大化节省 token 消耗

Autopilot 用法

触发: 显式 /autopilot <任务>,或自然语言说 autopilot / build me / create me / full auto / handle it all。
输入要具体三件: 领域 + 关键功能 + 技术约束。

1
autopilot 用 TypeScript 写一个带 CRUD 的书店库存 REST API

太虚会被引导去 /deep-interview 先做澄清;中途用 /oh-my-claudecode:cancel 停,可断点续跑。

6 阶段(自动顺序): 扩展(出 spec)→ 规划(计划 + Critic 反验)→ 执行(独立任务并行)→ QA(build/test 循环,最多 5 轮,同错 3 次自动停)→ 验证(架构 / 安全 / 代码质量三票全过)→ 清理。

适合从零搭的多阶段项目(新 API、CLI 工具);不适合单点 bug(用 ralph)、方案探索(用 plan)、小改小补(直接干)。

注意: 强依赖 OMC 运行时(.omc/ 状态 + architect/security-reviewer/code-reviewer agent),删 OMC 即废。其”难活给 Opus、查活给 Haiku”的分级路由,若你在 settings 里把多档模型映射成同一个(如全 glm-5.1),这层智能会空转,三视角评审的多样性也会打折。

新版本claude命令行下的标识问题

[OMC#4.11.2] | session:33m | ctx:32% | T:17 A:1
● 这是 OMC 状态栏的显示,各项含义:

  • [OMC#4.11.2] — OMC 插件版本号
  • session:33m — 当前会话已持续 33 分钟
  • ctx:32% — 上下文窗口已使用 32%
  • T:17 — Tool calls,本次会话已执行的工具新调用次数(17 次)
  • A:1 — Agents,当前活跃的子代理数量(1 个)

在运行命令的时候,遇到一个报错:

1
2
3
4
● Ran 4 stop hooks (ctrl+o to expand)
⎿  Stop hook error: Failed with non-blocking status code: /usr/bin/bash: line 1: node: command not found
⎿  Stop hook error: Failed with non-blocking status code: /usr/bin/bash: line 1: node: command not found
⎿  Stop hook error: Failed with non-blocking status code: /usr/bin/bash: line 1: node: command not found

首先建议全局安装 OMC,这样在全局的命令行里都能调用到这个,比在plugin里面管理会好些:

1
2
npm install -g oh-my-claude-sisyphus
omc setup

上面提到的这个问题可能是因为没有安装tmux,

1
winget install psmux

claude-tap(API 流量追踪器)

一个本地代理工具,用来拦截并可视化 Claude Code、Codex CLI、Gemini CLI 等编程代理的真实 API 流量。

核心用途:调试 AI 行为时,能直接看到底层发生了什么——

  • 查看完整的系统提示词、对话历史、工具定义与工具调用结果
  • 比较相邻两次请求的差异,精确定位是哪条提示、哪个参数发生了变化
  • 每次运行生成 JSONL 日志 + 自包含 HTML 查看器,方便留存和分享
  • 数据全留本地,无需任何托管仪表盘,常见 auth header 会自动脱敏

安装(需 Python 3.11+):

1
2
3
uv tool install claude-tap
# 或
pip install claude-tap

GitHub 项目地址
第一次使用

1
claude-tap --tap-live

工具在当前时间点不支持 Python 3.14 这个版本,所以为了适用这工具,我还特地降级为 3.13.


常用命令

这里有一个小区别:claude --resume 是在终端里执行的启动参数,/xxx 则是在 Claude Code 会话里直接输入的命令。

  • claude --resume:恢复最近一次或指定会话。终端意外关闭,或者你想接着上次上下文继续做时很好用。
  • /rewind:把当前会话回退到前面的某个节点。刚刚几轮思路跑偏、想撤回一段操作时非常方便。
  • /resume / /continue:在会话里恢复已有 session,或者直接打开会话选择器继续之前的任务。
  • /remote-control / /rc:把当前本地会话开放给远程控制,可以在 claude.ai/code 或移动端继续接手当前任务。这个功能很适合临时离开电脑但又不想断掉上下文的场景。
  • claude --dangerously-skip-permissions:启动时直接跳过权限确认,不再逐次询问用户同意。适合你完全信任当前仓库、并且希望 Claude Code 自主连续执行改文件、跑命令、调用工具的场景,但风险也最高,最好只在个人项目或隔离环境里临时使用。
  • /compact:把当前上下文压缩成摘要后继续同一会话。上下文快满、但你又不想重新解释项目背景时特别省事。(这个OMC不支持)
  • /doctor:检查 Claude Code 的安装、权限和配置问题。命令失效、插件不工作、环境异常时,先跑它通常能省掉不少排查时间。
  • /context: 得到类似于这样的图形化上小文大小反馈,适合用来判断模型上下文大小。
    ⛀ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛀ ⛁ ⛀ ⛁ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ glm-5.2[1m]

报错及Debug

PreToolUse / PostToolUse Hooks 报错

报错示例:

1
2
3
4
5
Read 1 file (ctrl+o to expand)
⎿ PreToolUse:Read hook error ⎿ ECONNREFUSED
⎿ PreToolUse:Read hook error ⎿ ECONNREFUSED
⎿ PostToolUse:Read hook error ⎿ ECONNREFUSED
⎿ PostToolUse:Read hook error ⎿ ECONNREFUSED

原因分析:
一些公司会通过 Hooks 的方式监控 Claude 的使用情况,它同时还是 Claude Code 的 LLM 网关 —— ANTHROPIC_BASE_URL 也指向同一个端口。

“内网AI网关工具们”监听的 Endpoint:

Endpoint 触发时机 用途(推断)
/hook/claude UserPromptSubmit / Stop / StopFailure / Subagent* / PostToolUseFailure 通用事件流 —— 把”用户提交了 prompt”、”会话结束”、”子 agent 启停”这类生命周期事件喂给“内网AI网关工具们”
/hook/claude/pre-tool PreToolUse 工具调用前拦截 —— “内网AI网关工具们”能在这里看到你要调什么工具、什么参数
/hook/claude/post-tool PostToolUse 工具调用后回执 —— “内网AI网关工具们”能看到工具返回了什么

“内网AI网关工具们”拿这些数据干嘛:

  1. 会话观测 / 录制 —— “内网AI网关工具们”是 GUI,需要实时知道 Claude Code 当前在做什么,才能在它的界面里展示”当前会话、调了哪些工具、用了多少 token”。
  2. 多 agent 编排 —— 看它的扩展代码(gateway-dispatch.ts),“内网AI网关工具们”内部跑了一个 daemon,可以在 Codex / Claude / Gemini / CodeMaker 之间分发任务、做后台任务卡片。Hooks 是它统一观察这些 agent 的入口。
  3. 可能的策略干预 —— PreToolUse hook 在 Claude Code 里是有能力 block / 改写工具调用的(这是规范的能力),但具体“内网AI网关工具们”用没用没看到证据。用空 {} 打 pre-tool 它回 422,说明它确实在解析 payload。

小结:

这些 hooks 是“内网AI网关工具们”把自己 UI 接到 Claude Code 上的观测 + 控制通道,不是必需。如果你不用“内网AI网关工具们”的 GUI 看会话状态、不用它编排多 agent,可以删;但因为 ANTHROPIC_BASE_URL 也走“内网AI网关工具们”,“内网AI网关工具们”进程本身仍然必须活着。

Windows 中文环境 PowerShell 乱码

报错示例:

1
2
3
4
5
6
7
8
● Bash(powershell.exe -NoProfile -Command "...")
⎿ Error: Exit code 1
����λ�� ��:1 �ַ��: 169
+ ... ref])|Out-Null;if(.Count -eq 0){'OK: no syntax errors'}else{|%{extglo ...
+ ~
������ʹ�ÿչ��Ԫ��
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement

原因分析:

Windows 简体中文版默认 code page 是 936 (GBK/GB2312),但 Claude Code 内部按 UTF-8 处理字符串。PowerShell 输出中文错误信息时用 GBK 编码,Claude Code 按 UTF-8 解读 → 乱码。

这是一个非常常见的问题,几乎所有 CJK(中日韩)Windows 用户都会遇到。英文 Windows 不会触发,因为 code page 437 与 UTF-8 在 ASCII 范围内兼容。
修复方案:在 Claude Code settings 里设置环境变量

在项目级 .claude/settings.local.json 中添加:

1
2
3
4
5
{
"env": {
"CHCP": "65001"
}
}

或全局生效,写入 ~/.claude/settings.json。

为什么不推荐改系统区域设置:

Windows 提供”Beta: 使用 Unicode UTF-8 提供全球语言支持”选项,会把系统 code page 从 936 改成 65001,效果最彻底,但属于全局不可逆改动,可能导致少数旧中文软件(GBK 硬编码的安装程序、老版压缩工具等)乱码。env CHCP=65001 只在 Claude Code 的 shell 进程里生效,系统其他部分完全不受影响。

修改后需要重启 Claude Code 会话才能生效。


参考资料

一个B站博主的学习视频