本教程面向完全零基础的开发者:你已经装好了 Claude Code,打开终端却不知道"第一句话该说什么"。我们将用一次完整的、可复现的实战,带你从"一句话需求"走到"一个能运行、能验收、能用 Git 回滚的真实小程序",并在每一步讲清楚 Claude Code 此刻在做什么、你该按什么。学完你将掌握对话式编程的最小可用闭环,不再是"装好就吃灰"。
claude 出现提示符)安装与环境受限场景,可先看《终端零基础:三平台三形态装通 Claude Code》与《内网受限环境装好跑通 Claude Code》。本文假设你已经能敲出
claude并看到欢迎界面。
很多新手吃亏在这一点:把 Claude Code 当"更聪明的搜索引擎",丢一句 怎么写一个 for 循环 就结束了。这不是它的用法。
Claude Code 是一个会动手的智能体(agent)。你用自然语言下达任务,它会:
所以"第一句话"不是问句,而是任务交付。区别如下:
| 写法 | 心智 | 结果 |
|---|---|---|
| "Python 怎么读 CSV" | 搜索 | 得到一段示例代码,你自己粘 |
| "在当前目录建一个 Python 脚本,读取 data.csv 并统计每列缺失值,打印报告" | 任务交付 | 它建文件、写代码、跑起来,你验收 |
记住这条分界线,后面的所有步骤都会顺。
进入你准备好的空目录,启动会话:
mkdir my-first-project && cd my-first-project
claude
预期结果:终端顶部出现一行状态栏,显示版本号、当前模型、工作目录,下面是一个闪烁的输入提示符。
先做三件"体检"小事,养成良好的开局习惯:
/login 重新认证。Pro 计划的额度每 5 小时重置一次,无超额扣费,但有一个周上限,连续多天高强度使用也可能触顶。/doctor,它会报告安装是否健康、是否有可改进项(如是否装了 Git、Node 版本等)。/model 查看当前使用的模型。新手保持默认即可,不用纠结切换。常见问题
command not found: claude:重启终端(PATH 未刷新是最常见问题)。仍不行就重装。/doctor 提示未检测到 Git:装一个 Git,它会成为你后续每次改动的安全网。新手最常犯的错误是需求太模糊。Claude Code 不会替你猜清楚业务,模糊的需求只能换来平庸的结果。一个好的"第一句话"应包含四要素:
本步骤只做"写好第一句话",先不要急着发——把它当成一份迷你需求文档。
对比两种写法:
❌ 差的写法:
写一个温度转换程序
✅ 好的写法:
用 Python 写一个命令行温度转换工具 temp.py:
- 支持摄氏、华氏、开尔文三种单位的互相转换
- 用法:python temp.py <数值> <源单位> <目标单位>,如 python temp.py 100 C F
- 输入非法(单位不认识、非数字)时打印友好错误提示并以非零状态码退出
- 附一个简单的自测:跑几组典型值,确认转换正确
常见问题
把第 2 步那句话发出去后,屏幕上会发生一系列"动作"。新手要学的不是动作本身,而是如何看懂和把控它。Claude Code 在工作时通常会展示这些信号:
Read(读文件)、Write(写新文件)、Edit(改文件)、Bash(跑命令)。Yes / Yes, and don't ask again for similar / No / ...这是新手最重要的肌肉记忆:先看 diff,再决定按哪个键。
No,让它解释;解释还不满意 → 让它换个方案Yesdon't ask again(它会写进权限配置,谨慎使用)常见问题
default 模式)。可以了解 acceptEdits、bypassPermissions 等权限模式,但新手不要急着开自动通过,先靠逐条确认建立对它的判断力。git status 看改了什么,git restore . 一键还原,回到干净状态重头来。Claude 写完 temp.py 后,让它自己跑起来验证。你可以直接说:
跑一下,用 100 C F、0 C K、32 F C、abc X Y 这四组输入测试,把输出贴给我
预期结果:它会调用 Bash 执行 python temp.py ...,把四组输出贴回来。前三组应得到正确转换结果,第四组(非法输入)应打印友好错误并退出。
这一步教你一个核心观念:AI 写的代码,默认要怀疑,直到它自己证明能跑。 让它跑、让它自测、让它把结果摆出来,比"它说写完了"更可信。
常见问题
真实开发从不一次成型。第一次迭代有三个值得练的动作:
A. 增量改需求。 不要重写整个程序,只说增量:
再加一个功能:不加参数直接运行 python temp.py 时,进入交互模式,反复读入一行输入并转换,输入 q 退出。
它会只改必要的地方,而不是推倒重来。
B. 让它修 Bug。 如果某组输入结果不对,直接把现象告诉它:
我发现 0 C K 得到 273.15,但 -300 C 也算出了负的开尔文,温度低于绝对零度应该报错,修一下
它会定位代码、改正、再跑一遍验证。
C. 主动让它"反向提问"。 这是新手容易忽略的高级技巧。在开始一个稍微复杂的需求前,说:
先别动手。就这个需求,列出 3 个你不确定、需要我澄清的问题。
它会问你边界条件、错误处理偏好等——这种"先对齐再动手"的习惯,能把试错成本降一个数量级。(会话内还可用计划模式先审方案再执行,适合稍大的改动。)
常见问题
/compact 压缩历史,或用 /clear 开新会话(注意 /clear 会丢掉当前对话记忆,可用 claude --continue 续跑)。看一眼 /context 能了解上下文占用。CLAUDE.md(项目记忆文件),每次启动它都会自动读取,比在对话里反复提醒可靠得多。这一步很多新手跳过,但它是长期使用 AI 写代码最重要的工程习惯。
git init # 如果还没初始化
git add -A
git commit -m "feat: 温度转换 CLI 工具(含交互模式与边界校验)"
为什么必须做:
git status 看一眼改了什么;不满意 git restore . 回退git reset --hard 能瞬间回到安全版本常见问题
git add / git commit,但提交信息和暂存范围由你把关,敏感文件(.env、密钥)绝不进版本库。把上面六步串成一次完整实战。下面是你和 Claude Code 的真实交互流(文字模拟终端)。
① 开局体检
$ cd my-first-project && claude
> /doctor # 一切正常,检测到 Git ✅
> /model # 当前默认模型,保持不变
② 对齐需求(反向提问)
> 先别动手。我要用 Python 写一个命令行温度转换工具,支持 C/F/K 互转。
列出 3 个你需要我澄清的问题。
Claude 回复: - 单位用什么字母表示?(C/F/K 还是 celsius/fahrenheit) - 非法输入如何处理?(报错退出 vs 进入提示重输) - 是否需要交互模式?
③ 正式下达(含四要素)
> 单位用 C/F/K。命令行用法:python temp.py <值> <源单位> <目标单位>。
非法输入打印友好错误并以状态码 1 退出。低于绝对零度(< -273.15℃)也要报错。
写完后用 4 组输入自测并贴出输出。
④ 看它执行并逐条确认
Claude 的工作流(你会逐个看到并确认):
1. Write temp.py —— 创建文件(你看了 diff,按 Yes)
2. Bash: python temp.py 100 C F → 212.0
3. Bash: python temp.py 0 C K → 273.15
4. Bash: python temp.py 32 F C → 0.0
5. Bash: python temp.py abc X Y → 错误:无法识别的单位 'X'(退出码 1)
temp.py 的核心逻辑长这样(Claude 生成、你审过):
import sys
ABSOLUTE_ZERO_C = -273.15
UNITS = {"C", "F", "K"}
def to_celsius(value, unit):
if unit == "C": return value
if unit == "F": return (value - 32) * 5 / 9
if unit == "K": return value - 273.15
raise ValueError(f"无法识别的源单位 '{unit}'")
def from_celsius(c, unit):
if unit == "C": return c
if unit == "F": return c * 9 / 5 + 32
if unit == "K": return c + 273.15
raise ValueError(f"无法识别的目标单位 '{unit}'")
def main():
if len(sys.argv) != 4:
print("用法: python temp.py <值> <源单位> <目标单位>,如 python temp.py 100 C F")
sys.exit(1)
try:
value = float(sys.argv[1])
except ValueError:
print(f"错误:'{sys.argv[1]}' 不是合法数字"); sys.exit(1)
src, dst = sys.argv[2].upper(), sys.argv[3].upper()
if src not in UNITS or dst not in UNITS:
print(f"错误:单位必须是 {UNITS} 之一"); sys.exit(1)
c = to_celsius(value, src)
if c < ABSOLUTE_ZERO_C:
print(f"错误:温度 {value}{src} 低于绝对零度"); sys.exit(1)
print(round(from_celsius(c, dst), 2))
if __name__ == "__main__":
main()
⑤ 迭代
> 再加:不带参数运行时进入交互模式,循环读取输入,输入 q 退出。
> 我发现 -500 C 没被拦住——哦你已经加了绝对零度校验,跑一下 -500 C F 确认。
Claude 增量改 main(),新增交互分支;重跑 -500 C F 得到"低于绝对零度"报错 ✅。
⑥ 收尾
> 帮我把 temp.py 暂存并提交,提交信息:feat: 温度转换 CLI(C/F/K 互转+交互模式+边界校验)
> (你审了 git status,确认没有敏感文件,同意执行)
至此你完成了一次完整的"一句话 → 能跑 → 能改 → 可回滚"闭环。整个过程你没有亲手写一行逻辑代码,但每一行都经你审阅、每一处命令都经你放行。
flowchart TD
A[打开终端<br/>进入项目目录] --> B[claude 启动会话]
B --> C[/doctor /login 体检/]
C --> D{需求清楚吗?}
D -- 否 --> E[让它反向提问<br/>先对齐再动手]
E --> D
D -- 是 --> F[下达四要素任务<br/>做什么/用什么/约束/验收]
F --> G[Claude 规划并展示 diff]
G --> H{看 diff<br/>方向对吗?}
H -- 不对 --> I[Esc 打断<br/>让它改方案]
I --> G
H -- 对 --> J[逐条确认放行<br/>Write/Edit/Bash]
J --> K[让它自测并贴输出]
K --> L{验收通过?}
L -- 否 --> M[增量改需求/修 Bug]
M --> K
L -- 是 --> N[git add + commit<br/>打成检查点]
N --> O[🎉 第一个能跑的程序交付]
O -.翻车时.-> P[git restore / reset<br/>回到安全版本]
P --> F
/help、/compact、/clear、权限模式)官方 Referencecd、mkdir)。/doctor、claude --continue、claude -p 等技巧参照。[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
