Appearance
开工准备
本页要点
- 仓能跑 — 用 AI 带着装环境;你确认版本 /
check/ 页面 - 会派活 — 任务卡 → 复述 → diff → 纠错 → 再提交
- 可进阶段 1 — 干净的
learner/week-01分支
写业务前只做上面三件事,约 1.5~2.5 小时。
现在 Node 24 · npm 11 · Git阶段 3 Python阶段 4 Docker
一、装环境 · 跑通仓
这一步干什么 目标仍是「仓能开页」,但步骤让 AI 带着做:你贴任务卡 → 它给下一条命令 → 你执行并回贴输出 → 你确认过关信号。别自己闷头扒文档。
1.1 先贴「装环境」任务卡
在 Cursor / 任意 AI 对话里,整段粘贴:
给 AI · 装环境派活一次只给一条命令;你执行后把输出贴回去
text
【任务】
帮我把教学仓 chenyue-ai-coding-lab 在本机跑到「环境已就绪」。
【目标版本】
- Node.js 24.x
- npm 11.x
- Git(当前稳定版即可)
- 阶段 3 才需要 Python;阶段 4 才需要 Docker。本节不要让我装 Docker。
【仓库】
https://github.com/chenximo/chenyue-ai-coding-lab.git
默认分支应为 starter。
【成功标准 · 由我人工确认】
1. node / npm 版本符合上面
2. git branch 显示 starter,git status 干净
3. 在仓库根目录 npm run check 全部 exit 0
4. npm run dev:web 后,浏览器打开终端给出的地址,看到「环境已就绪」
【协作方式】
- 先复述成功标准,再开始
- 每次只给我「下一条要执行的命令」(或两步以内)
- 等我贴回终端原文输出,再给下一条
- 若报错:先判断是版本 / 权限 / 目录问题,再给修复命令
【禁止】
- 不要让我改 package.json、Vite 配置或测试脚本来「绕过」
- 不要让我提交被改坏的 package-lock.json
- 不要一次甩出整页命令清单让我自己猜顺序复述里应出现:版本、starter、check、页面「环境已就绪」。漏了就补问,再往下。
1.2 你怎么验收(AI 说完不算)
按 AI 给出的命令做完后,你自己确认:
| 看什么 | 过关样子 |
|---|---|
node --version / npm --version | 24.x / 11.x |
git branch --show-current | starter |
git status --short | 空 |
npm run check | exit 0 |
| 浏览器 | 「环境已就绪」 |
本节过关 上表五项都对。AI 说「好了」但你没亲眼看到页面 —— 不算过。
常见失败(点开)
| 现象 | 先查 | 处理 |
|---|---|---|
npm ci engine 不匹配 | node / npm 版本 | 切到 24 / 11,重开终端 |
| clone 无权限 | GitHub 账号 | 找仓库方开通 |
npm ci 改了 lockfile | 是否误用 npm install | 用对版本后重 clone,勿提交 lockfile |
| 端口占用 | 旧 dev 进程 | 关掉再 dev:web |
1.3 中途报错 · 续聊 Prompt
把完整报错贴回同一对话即可;若开了新对话,用下面整段:
给 AI · 环境续聊同一任务,带上刚才的输出
text
接上:我在跑通 chenyue-ai-coding-lab starter 基线。
【刚才执行的命令】
(贴)
【完整终端输出 / 报错】
(从第一行贴到末尾,不要截断)
【请你】
1. 先判断是版本、权限、目录还是依赖问题
2. 只给下一条命令(或两步以内)
3. 仍遵守:不改 package.json 绕过、不提交烂 lockfile二、练一次驾驭 AI
这一步干什么不是让你手写业务代码。下面有一张「任务卡」——整段复制给 AI。练的是:怎么把活说清楚、怎么拦它乱改、怎么用命令验收。只动两个练习文件,页面先不动。
先开练习分支(命令也可让 AI 给,你执行):
bash
git switch starter
git switch -c practice/ai-workflow
git status --short2.1 任务卡是什么 · 怎么用
| 块 | 人话 |
|---|---|
| 【任务】 | 要 AI 干什么(加「母婴阶段」几个 ID 和两个小函数) |
| 【Canonical data】 | 四个阶段的固定数据,别让它自己编 |
| 【允许改】/【禁止改】 | 只能动哪两个文件;页面、配置一律别碰 |
| 【验收】 | 怎样算做对(含:先写测试看到红,再写实现) |
| 【命令】/【交回】 | 你要跑什么;AI 要交回什么证据,不能只说「好了」 |
用法: 整段复制 → 先说「只复述,先别改文件」→ 它说对「只改两文件 + 四个 ID」后,再说「按任务卡实现」。
给 AI · Prompt(任务卡)(练习用)看不懂每一行也没关系:复制给 AI;你盯「改没改错文件」
text
【任务】
在 apps/web/src/domain/ 增加母婴阶段定义、StageId、isStageId()、getStage()。
【Canonical data】
- pregnancy / 孕期 / 孕期
- baby-0-6 / 宝宝 0–6 月 / 0–6 月
- baby-6-12 / 宝宝 6–12 月 / 6–12 月
- toddler-1-3 / 宝宝 1–3 岁 / 1–3 岁
【允许改】
- apps/web/src/domain/stages.ts
- apps/web/src/domain/stages.test.ts
【禁止改】
- 任何 page / component / 推荐 data
- package.json、lockfile、构建配置
- 其他测试文件
【验收】
- StageId 从 STAGES 推导;禁止写成 string
- 四个 ID 唯一;isStageId 只接受这四个
- 非约定 ID(如 future-stage)→ false
- getStage("baby-6-12").name === "宝宝 6–12 月"
- isStageId 必须是 TypeScript type predicate(value is StageId)
- 先写测试并跑出 RED,再写实现
【命令】
- npm run test:web -- stages.test.ts
- npm run typecheck:web
【交回】
- 改了哪些文件
- RED / GREEN 原始终端输出
- diff 摘要(不要只写「已完成」)它复述时若漏了「只改两个文件」或四个 ID —— 补一句再让它动手。
2.2 RED → 实现
复述通过后:让 AI 只先写测试,你跑:
bash
npm run test:web -- stages.test.ts合理情况:测试先失败(红)——例如还找不到文件。然后再说:「按任务卡写实现,仍只改允许的两个文件。」
2.3 你看 diff · 它写歪了就纠错
bash
git diff --stat
git diff -- apps/web/src/domain/stages.ts apps/web/src/domain/stages.test.ts常见翻车:类型被写成随便的 string。看到就贴下面整段:
给 AI · 纠错禁止删测试、放宽断言来「假绿」
text
StageId 不能使用 string。请从 STAGES 推导 StageId,
并把 isStageId() 改回 value is StageId。
保持 canonical data 和测试期望不变。
不要改允许文件以外的内容。
改完后跑:
- npm run test:web -- stages.test.ts
- npm run typecheck:web
把原始终端输出贴回来。2.4 收口提交
bash
npm run test:web -- stages.test.ts # 要 4 passed
npm run typecheck:web
git status --short # 只允许上面两个文件
git add apps/web/src/domain/stages.ts apps/web/src/domain/stages.test.ts
git diff --cached
git commit -m "feat(web): validate stage ids"练习 commit 可留在 practice/ai-workflow。
三、开阶段 1 分支
bash
git switch starter
git switch -c learner/week-01
git status --short工作区应为空,然后进阶段 1。