<!-- title: 零基础首战：一句话跑出第一个程序 -->

# 零基础首战：一句话跑出第一个程序

## 概述

本教程面向**完全零基础**的开发者：你已经装好了 Claude Code，打开终端却不知道"第一句话该说什么"。我们将用一次完整的、可复现的实战，带你从"一句话需求"走到"一个能运行、能验收、能用 Git 回滚的真实小程序"，并在每一步讲清楚 Claude Code 此刻在做什么、你该按什么。学完你将掌握对话式编程的最小可用闭环，不再是"装好就吃灰"。

## 适用人群

- 刚装好 Claude Code、还没跑通过任何真实任务的开发者
- 习惯"把代码粘到聊天框"的传统 AI 编程用户
- 第一次接触命令行 AI 工具的学生与转行者

## 前置条件

- Claude Code 已安装并能启动（输入 `claude` 出现提示符）
- 一个有效的账号：Claude **Pro / Max** 订阅、Console API 余额，或 Bedrock / Vertex 企业接入
- 终端能正常使用（macOS/Linux/WSL 任一）
- **强烈建议**已安装 Git——它是你 AI 写代码时唯一的"后悔药"
- 一个空的工作目录（下面会带你在里面建项目）

> 安装与环境受限场景，可先看《终端零基础：三平台三形态装通 Claude Code》与《内网受限环境装好跑通 Claude Code》。本文假设你已经能敲出 `claude` 并看到欢迎界面。

---

## 第 0 步：建立"对话式编程"的心智模型

很多新手吃亏在这一点：把 Claude Code 当"更聪明的搜索引擎"，丢一句 `怎么写一个 for 循环` 就结束了。这不是它的用法。

Claude Code 是一个**会动手的智能体（agent）**。你用自然语言下达任务，它会：

1. **读**你的目录，搞清楚这是个什么项目
2. **规划**要做哪几件事（建哪些文件、改哪些代码、跑什么命令）
3. **动手**：创建文件、编辑代码、运行命令、运行测试
4. **每一步都请你确认**——尤其是改文件和执行命令

所以"第一句话"不是问句，而是**任务交付**。区别如下：

| 写法 | 心智 | 结果 |
|------|------|------|
| "Python 怎么读 CSV" | 搜索 | 得到一段示例代码，你自己粘 |
| "在当前目录建一个 Python 脚本，读取 data.csv 并统计每列缺失值，打印报告" | 任务交付 | 它建文件、写代码、跑起来，你验收 |

记住这条分界线，后面的所有步骤都会顺。

## 第 1 步：启动并确认环境就绪

进入你准备好的空目录，启动会话：

```bash
mkdir my-first-project && cd my-first-project
claude
```

**预期结果**：终端顶部出现一行状态栏，显示版本号、当前模型、工作目录，下面是一个闪烁的输入提示符。

先做三件"体检"小事，养成良好的开局习惯：

1. **确认账号已登录**。首次启动会引导浏览器登录；若中途掉线，在会话内输入 `/login` 重新认证。Pro 计划的额度每 **5 小时**重置一次，无超额扣费，但有一个**周上限**，连续多天高强度使用也可能触顶。
2. **看一眼诊断**：输入 `/doctor`，它会报告安装是否健康、是否有可改进项（如是否装了 Git、Node 版本等）。
3. **确认模型**：输入 `/model` 查看当前使用的模型。新手保持默认即可，不用纠结切换。

**常见问题**

- **提示 `command not found: claude`**：重启终端（PATH 未刷新是最常见问题）。仍不行就重装。
- **登录后立刻报额度错误**：可能撞上 5 小时窗口或周上限，等重置或升级 Max（5 倍 / 20 倍额度）。
- **`/doctor` 提示未检测到 Git**：装一个 Git，它会成为你后续每次改动的安全网。

## 第 2 步：给 Claude 一个"高质量的第一句话"

新手最常犯的错误是需求太模糊。Claude Code 不会替你猜清楚业务，模糊的需求只能换来平庸的结果。一个好的"第一句话"应包含四要素：

- **做什么**（What）：明确的功能
- **用什么**（Tech）：技术栈与运行方式
- **约束**（Constraint）：错误处理、命名风格、是否要测试
- **验收**（Acceptance）：怎样算"做完了"

> 本步骤只做"写好第一句话"，先不要急着发——把它当成一份迷你需求文档。

对比两种写法：

❌ 差的写法：
```
写一个温度转换程序
```

✅ 好的写法：
```
用 Python 写一个命令行温度转换工具 temp.py：
- 支持摄氏、华氏、开尔文三种单位的互相转换
- 用法：python temp.py <数值> <源单位> <目标单位>，如 python temp.py 100 C F
- 输入非法（单位不认识、非数字）时打印友好错误提示并以非零状态码退出
- 附一个简单的自测：跑几组典型值，确认转换正确
```

**常见问题**

- **我不知道该写哪些约束**：那就只写"做什么 + 用什么 + 验收"，约束让它先按最佳实践来，跑通后再迭代。
- **需求我自己也没完全想清**：可以直接让 Claude 帮你把需求问清楚——见第 5 步的"反向提问"。

## 第 3 步：看懂 Claude 的规划与执行（最关键的一步）

把第 2 步那句话发出去后，屏幕上会发生一系列"动作"。新手要学的不是动作本身，而是**如何看懂和把控它**。Claude Code 在工作时通常会展示这些信号：

1. **思考 / 计划文字**：它会先用一段话说明"我打算怎么做"。如果你看到方向不对，**立刻 Esc 打断**，比让它跑完再返工省得多。
2. **工具调用**：它会显示正在调用什么工具，例如 `Read`（读文件）、`Write`（写新文件）、`Edit`（改文件）、`Bash`（跑命令）。
3. **Diff 与权限确认**：每次要改你的文件或执行命令前，它会停下来等你确认。你会看到：
   - 改动预览（新增了哪些行、删了哪些行）
   - 一个选择菜单：`Yes / Yes, and don't ask again for similar / No / ...`

**这是新手最重要的肌肉记忆：先看 diff，再决定按哪个键。**

- 看不懂的改动 → 选 `No`，让它解释；解释还不满意 → 让它换个方案
- 改动合理且是一次性的 → 选 `Yes`
- 这类简单安全操作以后都信任 → 选 `don't ask again`（它会写进权限配置，**谨慎使用**）

**常见问题**

- **它一直问我要不要执行命令，很烦**：说明它的权限较保守（默认 `default` 模式）。可以了解 `acceptEdits`、`bypassPermissions` 等权限模式，但**新手不要急着开自动通过**，先靠逐条确认建立对它的判断力。
- **它跑偏了，已经改了一堆文件**：这就是为什么第 1 步强调 Git。`git status` 看改了什么，`git restore .` 一键还原，回到干净状态重头来。

## 第 4 步：第一次运行与验收

Claude 写完 `temp.py` 后，让它自己跑起来验证。你可以直接说：

```
跑一下，用 100 C F、0 C K、32 F C、abc X Y 这四组输入测试，把输出贴给我
```

**预期结果**：它会调用 `Bash` 执行 `python temp.py ...`，把四组输出贴回来。前三组应得到正确转换结果，第四组（非法输入）应打印友好错误并退出。

这一步教你一个核心观念：**AI 写的代码，默认要怀疑，直到它自己证明能跑。** 让它跑、让它自测、让它把结果摆出来，比"它说写完了"更可信。

**常见问题**

- **它说"已完成"但没真跑**：明确要求"运行并粘贴输出"，别接受"应该可以"这种含糊说法。
- **跑出来报错**：这是好事，进入第 5 步——让它在错误中自我修复。

## 第 5 步：第一次迭代——改需求、修 Bug、让它"反向提问"

真实开发从不一次成型。第一次迭代有三个值得练的动作：

**A. 增量改需求。** 不要重写整个程序，只说增量：

```
再加一个功能：不加参数直接运行 python temp.py 时，进入交互模式，反复读入一行输入并转换，输入 q 退出。
```

它会只改必要的地方，而不是推倒重来。

**B. 让它修 Bug。** 如果某组输入结果不对，直接把现象告诉它：

```
我发现 0 C K 得到 273.15，但 -300 C 也算出了负的开尔文，温度低于绝对零度应该报错，修一下
```

它会定位代码、改正、再跑一遍验证。

**C. 主动让它"反向提问"。** 这是新手容易忽略的高级技巧。在开始一个稍微复杂的需求前，说：

```
先别动手。就这个需求，列出 3 个你不确定、需要我澄清的问题。
```

它会问你边界条件、错误处理偏好等——这种"先对齐再动手"的习惯，能把试错成本降一个数量级。（会话内还可用计划模式先审方案再执行，适合稍大的改动。）

**常见问题**

- **改着改着上下文变长、响应变慢**：用 `/compact` 压缩历史，或用 `/clear` 开新会话（注意 `/clear` 会丢掉当前对话记忆，可用 `claude --continue` 续跑）。看一眼 `/context` 能了解上下文占用。
- **它好像忘了之前说好的约定**：把约定写进 `CLAUDE.md`（项目记忆文件），每次启动它都会自动读取，比在对话里反复提醒可靠得多。

## 第 6 步：用 Git 收尾——你的安全网

这一步很多新手跳过，但它是长期使用 AI 写代码**最重要**的工程习惯。

```bash
git init                          # 如果还没初始化
git add -A
git commit -m "feat: 温度转换 CLI 工具（含交互模式与边界校验）"
```

为什么必须做：

- AI 每次大改动前，`git status` 看一眼改了什么；不满意 `git restore .` 回退
- 把"能跑通的版本"提交成检查点，后面翻车了 `git reset --hard` 能瞬间回到安全版本
- 长期看，git 历史就是你和 AI 协作的"工作日志"

**常见问题**

- **要不要让 Claude 直接帮我提交**：可以，让它执行 `git add` / `git commit`，但**提交信息和暂存范围由你把关**，敏感文件（`.env`、密钥）绝不进版本库。

---

## 实战案例：一个会自我修复的温度转换 CLI

把上面六步串成一次完整实战。下面是你和 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 生成、你审过）：

```python
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` 得到"低于绝对零度"报错 ✅。

**⑥ 收尾**
```bash
> 帮我把 temp.py 暂存并提交，提交信息：feat: 温度转换 CLI（C/F/K 互转+交互模式+边界校验）
> （你审了 git status，确认没有敏感文件，同意执行）
```

至此你完成了一次完整的"一句话 → 能跑 → 能改 → 可回滚"闭环。整个过程你**没有亲手写一行逻辑代码**，但每一行都经你审阅、每一处命令都经你放行。

---

## 工作流程图

```mermaid
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
```

---

## 五个最该养成的开局习惯（给零基础的你）

1. **把"提问"换成"下达任务"**——四要素齐全，别让它猜。
2. **方向不对，立刻 Esc**——打断比返工便宜十倍。
3. **每个 diff 都过目**——这是你建立"AI 可信度判断力"的唯一途径。
4. **能跑才算完成**——不接受"应该可以"，要它贴出真实输出。
5. **Git 是安全带**——每次稳妥的版本都提交成检查点。

## 延伸阅读

- 官方 Quickstart（安装、登录、首次会话、Git 集成、Pro Tips）：https://code.claude.com/docs/en/quickstart
- 《How Claude Code Works》——理解智能体循环与上下文窗口：https://code.claude.com/docs/en/overview
- 《Best Practices》——把"聊天机器人"变成"编程搭档"的官方建议
- 斜杠命令与权限模式（`/help`、`/compact`、`/clear`、权限模式）官方 Reference

---

## 训练营适用性评估

- **适合的训练营类型**：面向**零基础 / 转行 / 学生**的"AI 编程入门营""程序员第 0 天营""通识数字化素养营"。也可作为企业内部"让非研发岗体验 AI 编程"破冰课的开场。
- **预计教学时长**：
  - **1.5–2 小时**讲解 + 跟练（含温度转换案例完整跑通）
  - 若叠加"反向提问""计划模式""CLAUDE.md 项目记忆"等进阶动作，可扩展为 **半天（3–4 小时）工作坊**
- **前置依赖**：学员需已完成 Claude Code 安装与登录（可由《终端零基础》一课覆盖），并具备最基本的终端操作能力（`cd`、`mkdir`）。
- **难度定位**：⭐（入门）。**不建议**作为有经验开发者的内容——他们应直接进入 Skills / MCP / Hooks 等进阶主题。
- **可考核产物**：每位学员独立交付一个"能跑、能改、已 git commit"的小工具，并能在 diff 前正确做出放行/拒绝判断。

---

## 参考来源

1. [Quickstart — Claude Code Docs（官方）](https://code.claude.com/docs/en/quickstart) — 安装、登录、首次会话、首次代码改动与 Git 集成的权威步骤，本文命令与登录流程以此为准。
2. [How to Use Claude Code (Beginner Guide) — builder.io](https://www.builder.io/blog/how-to-use-claude-code) — 从安装到首次真实改动的实战视角；Pro/Max 计划、5 小时额度重置、周上限、浏览器认证等细节来源。
3. [Claude Code Tutorial for Beginners 2026 — DEV Community](https://dev.to/ayyazzafar/claude-code-tutorial-for-beginners-2026-from-installation-to-building-your-first-project-1lma) — 2026 年初学者全流程教程；本文"温度转换 CLI"实战案例的灵感来源与 CLAUDE.md、`/doctor`、`claude --continue`、`claude -p` 等技巧参照。
4. [Claude Code for Beginners: Your First Project in 30 Minutes — lowcode.agency](https://www.lowcode.agency/blog/claude-code-first-project-tutorial) — "30 分钟跑通首个项目"的零基础节奏参考，佐证本文的时长评估与分步策略。

> [!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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
