Sooua
登录
返回文章列表
Claude Code··6 分钟阅读

第一个会话:让 AI 帮你改代码

在你的项目根目录打开终端,运行:

目标:完成第一次与 Claude 的交互,理解基本工作模式
预计时间:20 分钟
对应官方文档:Common Workflows


启动 Claude Code

在你的项目根目录打开终端,运行:

claude

Claude 会自动加载当前目录作为工作上下文


会话交互时序图

以下是你与 Claude 在一次典型会话中的交互流程:


场景一:添加一个简单功能

假设你有一个 Python 项目,想添加一个计算斐波那契数列的函数。

输入提示词:

> 请在 utils.py 中添加一个 fibonacci(n) 函数,返回第 n 个斐波那契数。要求使用缓存优化性能。

Claude 会做什么:

  1. 读取 utils.py 的内容
  2. 分析 文件结构、导入语句、代码风格
  3. 生成 符合项目风格的代码
  4. 询问 你是否同意修改
I'll add a fibonacci function to utils.py. Here's my plan:

1. Add functools.lru_cache import
2. Add the fibonacci(n) function with docstring

Allow edit to utils.py? (Y/n/b/d)

你的选择:

按键含义
Y同意修改(或按回车)
n拒绝修改
b查看 diff(改了什么)
d查看完整修改后的文件

查看 diff(按 b):

+ from functools import lru_cache
+
+ @lru_cache(maxsize=None)
+ def fibonacci(n: int) -> int:
+     """Return the nth Fibonacci number."""
+     if n < 0:
+         raise ValueError("n must be non-negative")
+     if n < 2:
+         return n
+     return fibonacci(n - 1) + fibonacci(n - 2)

满意的话按 Y 确认。


场景二:修复一个 Bug

假设测试失败了,你可以把错误信息贴给 Claude:

> 测试报错了:
> FAILED tests/test_math.py::test_divide - ZeroDivisionError: division by zero
> 
> 请修复这个问题。

Claude 会:

  1. 读取 tests/test_math.py 和相关的源码
  2. 分析错误原因
  3. 提出修复方案(比如添加除零检查)
  4. 运行测试验证修复

场景三:解释复杂代码

看到一段看不懂的代码?直接问:

> 请解释 auth/middleware.py 中 verify_token 函数的工作原理

Claude 会逐行分析,并用通俗的语言解释。


常用对话模式

1. 直接请求(最常用)

> 把用户注册功能改成异步的

2. 多步骤任务

> 1. 创建一个新的 API 端点 /health
> 2. 返回 JSON: {"status": "ok", "timestamp": "..."}
> 3. 添加对应的测试

3. 询问建议

> 我想优化数据库查询性能,有什么建议?

4. 代码审查

> 请审查 src/api.py,看看有没有安全问题

更多代码示例

示例 1:让 Claude 创建一个新文件

> 创建一个 Python 脚本 scripts/greet.py,接收 --name 参数并输出问候语

Claude 会生成类似以下代码:

#!/usr/bin/env python3
import argparse
 
def main():
    parser = argparse.ArgumentParser(description="Greet someone")
    parser.add_argument("--name", default="World", help="Name to greet")
    args = parser.parse_args()
    print(f"Hello, {args.name}!")
 
if __name__ == "__main__":
    main()

确认后运行验证:

python scripts/greet.py --name Alice

预期输出:Hello, Alice!

示例 2:让 Claude 批量重命名变量

> 把 src/config.py 里所有的 API_KEY 改成 api_key(小写蛇形命名)

Claude 会:

  1. 搜索 src/config.py 中所有 API_KEY 出现的位置
  2. 展示 diff:
- API_KEY = os.getenv("API_KEY")
+ api_key = os.getenv("API_KEY")
  1. 确认后自动修改,并提示是否运行相关测试

示例 3:多步骤重构指令

> 1. 读取 src/models.py
> 2. 将 User 类中的验证逻辑提取到 validators.py
> 3. 在 models.py 中导入并使用新的验证器
> 4. 运行相关测试确保没有破坏

Claude 会逐步执行每一步,每步都向你展示变更并请求确认。


实战场景

场景 1:为新功能补充单元测试

背景:你刚让 Claude 在 utils.py 中添加了 fibonacci(n) 函数,现在需要补充对应的单元测试。

操作步骤

  1. 在 Claude Code 中继续同一会话,输入:
    > 为刚才添加的 fibonacci 函数创建单元测试,放在 tests/test_utils.py
    > 要求覆盖:正常输入、边界值 n=0 和 n=1、负数异常
    
  2. Claude 读取现有测试文件结构,生成测试代码并展示 diff
  3. b 查看 diff,确认测试用例完整后按 Y 接受
  4. Claude 询问是否运行测试,按 Y 确认
  5. 终端显示:
    tests/test_utils.py::test_fibonacci_normal PASSED
    tests/test_utils.py::test_fibonacci_boundary PASSED
    tests/test_utils.py::test_fibonacci_negative PASSED
    

预期结果tests/test_utils.py 新增 3 个通过测试,函数覆盖率达到 100%。

场景 2:审查并修复安全漏洞

背景:你在审查 src/auth.py 时怀疑密码校验存在时序攻击漏洞,想让 Claude 帮你分析并修复。

操作步骤

  1. 启动 Claude Code 并输入:

    > 请审查 src/auth.py 中的 verify_password 函数,是否存在时序攻击漏洞?如果有,请修复。
    
  2. Claude 读取 src/auth.py,分析 verify_password 实现

  3. Claude 回复类似如下分析:

    发现问题:当前使用简单的字符串比较 `input_pw == stored_pw`,
    攻击者可以通过测量响应时间逐字节猜测密码。
    
    修复方案:使用 hmac.compare_digest 进行常量时间比较。
    
  4. 展示 diff:

    + import hmac
      def verify_password(input_pw: str, stored_pw: str) -> bool:
    -     return input_pw == stored_pw
    +     return hmac.compare_digest(input_pw.encode(), stored_pw.encode())
  5. Y 接受修改,再让 Claude 运行安全相关测试:

    > /test tests/test_auth.py
    

预期结果src/auth.py 中的密码比较改为常量时间比较,相关测试全部通过,安全漏洞被修复。


重要:始终审查 AI 的更改

AI 不是完美的,你需要

  • ✅ 查看 diff(按 b
  • ✅ 运行测试验证
  • ✅ 检查是否有副作用
  • ✅ 确认业务逻辑正确

Claude 会尽量安全,但最终责任在你。


退出会话

> /exit

或按 Ctrl+D

会话会自动保存,下次可以用 claude --continue 恢复。


下一步

04. 理解三种权限模式

分享

评论

登录 后参与讨论。

加载中…

相关文章