How to use Claude Code for coding

codingbeginner3 分钟阅读2026/6/4

我用Claude Code写了一周代码——这些才是真正管用的招数

上周二,我碰壁了。我盯着一个TypeScript错误——类型“undefined”不能赋值给类型“string”——这个错误遍布我接手的一个React Native项目的47个文件。前任开发者没留下任何测试、注释,还把undefined像烫手山芋一样穿过六层props传递。我通常的做法——grep搜索、逐个文件修复、重复操作——得花两天时间。

我打开终端,输入claude code,看着它在不到四分钟内重写了整个props类型定义。七个文件被修改。零回归(我检查过了)。就在那一刻,我不再把Claude Code当成玩具,而是开始像使用一个永不休息的高级开发者那样用它。

以下是我具体的使用方法、它会在哪里出问题,以及如果你不小心会在哪里浪费时间。

Claude Code到底是什么

Claude Code是Anthropic开发的基于终端的编码助手。它在你现有的项目目录中运行,读取你的文件,并能直接编辑它们。与Cursor或GitHub Copilot的聊天功能不同,这个东西直接操作你的文件系统——它可以执行git commit、运行测试,甚至在对话中途安装npm依赖。

我在macOS(Apple Silicon)上测试过,但它也能在Linux和通过WSL2的Windows上运行。安装只需一行命令:

npm install -g @anthropic-ai/claude-code

然后用你的API密钥进行身份验证。你需要一个付费的Anthropic账户——免费版处理不了玩具项目以外的任何任务。

帮我省下数小时的设置

在让Claude做任何事情之前,先在项目根目录运行这个:

claude code

这会打开一个交互式会话。我做的第一件事是给它提供上下文:

我正在开发一个使用TypeScript的React Native应用。项目使用了:
- React Navigation v6
- Redux Toolkit管理状态
- Jest + React Native Testing Library进行测试
- 目前没有配置linter

请读取package.json和tsconfig.json,然后告诉我你对这个项目的理解。

这一步至关重要。Claude Code会扫描你的项目结构并在整个会话中记住它。我发现它在持续20-30分钟的活跃对话后开始忘记文件路径。如果你在处理复杂任务,每小时重启一次会话。

真实案例:重构一个混乱的组件

这是Claude Code大显身手的地方。我有一个800行的UserProfile组件,混合了API调用、表单状态和渲染逻辑。我给了它这个提示:

找出src/components中所有超过300行的组件。
对每个组件,建议一个重构方案,将其拆分为:
- 一个用于逻辑的自定义hook
- 一个用于渲染的展示组件
- 保持相同的公共API(props接口)

将方案写入REFACTOR.md,然后在进行修改前征求我的意见。

Claude Code读取了目录中每个.tsx文件,识别出三个臃肿的组件,并写了一个详细的方案。然后它请求允许继续。我同意了,然后它:

  1. 创建了包含所有状态逻辑的useUserProfile.ts
  2. 创建了只包含JSX的UserProfileView.tsx
  3. 更新了原始的UserProfile.tsx来组合这两者
  4. 运行了npx tsc --noEmit检查类型错误
  5. 向我展示了差异

整个过程大约花了90秒。差异看起来是这样的:

- const UserProfile: React.FC<UserProfileProps> = ({ userId, onError }) => {
-   const [user, setUser] = useState<User | null>(null);
-   const [loading, setLoading] = useState(true);
-   const [error, setError] = useState<string | null>(null);
-   
-   useEffect(() => {
-     fetchUser(userId).then(setUser).catch(setError).finally(() => setLoading(false));
-   }, [userId]);
-   
-   // 200多行渲染代码...
- }

+ const UserProfile: React.FC<UserProfileProps> = (props) => {
+   const { user, loading, error } = useUserProfile(props.userId);
+   return <UserProfileView user={user} loading={loading} error={error} onError={props.onError} />;
+ }

它会在哪里出问题(以及如何修复)

到目前为止,我遇到了三个硬性限制。

1. 它会幻觉出文件路径。 我让它"更新auth中间件",它创建了src/middleware/auth.ts,而实际文件在server/middleware/auth.js。解决方法:始终在提示中指定完整的相对路径。

2. 它无法处理循环依赖。 当我让它重构一个有循环导入的模块时,它创建了无法编译的文件。错误信息也很晦涩。解决方法:在要求重构之前运行npx madge --circular src/,并提前告诉Claude任何循环依赖。

3. 它会忘记测试文件。 我让它"给API客户端添加错误处理",它更新了源文件但没有修改对应的测试文件。当我运行测试时,它们失败了,因为模拟数据与新的类型不匹配。解决方法:明确说"同时更新src/__tests__/api.test.ts测试文件以匹配修改"。

从不失败的提示模式

经过几十次会话,我总结出一个90%情况下有效的结构:

上下文:[一句话描述项目]
任务:[一句话描述要做什么]
约束条件:[列出绝对不能做的事情]
验证方法:[如何检查是否成功]

示例:

上下文:这是一个使用Prisma ORM的Express.js API。
任务:为GET /users端点添加分页功能。使用基于游标的分页,使用`cursor`和`take`查询参数。
约束条件:
- 不要修改现有的响应结构——添加`cursor`和`hasMore`字段
- 保持现有的错误处理模式
- 不要安装任何新包
验证方法:运行`npm test`确认所有现有测试通过,然后检查端点返回分页数据。

这个模式有效是因为Claude Code会被歧义搞糊涂。如果你说"提升性能",它会重写你的整个代码库。如果你说"为GET /users路由添加60秒TTL的Redis缓存",它就能精确命中。

真正有效的调试工作流

当出现问题的时候,我不会问"为什么这个坏了?"——那只会得到泛泛的建议。相反,我会这样做:

我在运行`npm run build`时遇到这个错误:

[ERROR] src/api/users.ts:42:3 - error TS2322: 类型'string | undefined'不能赋值给类型'string'

这是第40-50行的相关代码:

export function createUser(name: string | undefined): User {
  return { name }; // 这里报错
}

请读取完整文件,找出为什么name在调用处可能是undefined,并提出一个不改变函数签名的修复方案。

Claude Code会追踪调用栈,找到undefined的来源,并提出修复方案。它发现了一个情况:路由处理器在调用createUser之前没有验证请求体。这为我节省了20分钟的手动追踪时间。

我希望早点知道的一件事

Claude Code有一个--resume标志,可以让你从上次中断的地方继续。但诀窍在于:它只在保存会话的情况下有效。这样做:

claude code --resume

如果你看到"未找到之前的会话",说明你从未保存过会话,或者你在没有保存的情况下关闭了终端。会话会在退出时自动保存,但如果你强制退出终端,就会丢失。

另外,Claude Code默认会在不询问的情况下写入文件。我曾经因此丢失了一个配置文件。在你的项目根目录创建.claude项目文件,添加以下内容:

ask_before_edit: true
safe_files:
  - "*.env"
  - "node_modules/**"
  - ".git/**"

这帮我避免了意外将API密钥提交到公共仓库。

你的下一步(别跳过这个)

关闭这篇文章。打开你的终端。导航到一个你熟悉的小项目——少于20个文件的那种。运行claude code并输入:

读取这个项目中的每个文件。然后告诉我三件事:
1. 最可能有人遇到的bug是什么?
2. 哪段代码重复最多?
3. 哪个重构能在不改变行为的前提下提高可维护性?

在进行任何修改前先征求我的意见。

看看它会说什么。你很可能会惊讶于它发现的东西——我就是这样。我那个"简单"的待办事项应用在状态管理中有一个竞态条件,我几个月都没发现。

这就是Claude Code真正的力量:不是为你写代码,而是向你展示你一直忽略的东西。把它当作一个阅读每个文件的代码审查员,而不是一个代码生成器,你就再也不会回头了。

相关 Agent

C

Codex CLI

OpenAI's terminal-based coding agent. Codex CLI brings AI-powered code generation, editing, and analysis directly to your terminal with a natural language interface. It supports multiple AI models, runs locally, and integrates seamlessly with git workflows.

了解更多 →