概述:很多新手装好 Claude Code 后,随手敲一句"帮我改改这个项目",得到一个平庸的结果,就误以为它言过其实。问题几乎不在工具,而在怎么问和喂什么给它。本教程聚焦新手第一次上手最关键的三个动作——组织需求、引用文件、管理上下文——带你从"模糊一句话"进化到"一句话就能让 Claude 精准干活"。适合零基础开发者、第一次接触命令行 AI 编程助手、以及用了几天但觉得"不够聪明"的人。
node -v 能出版本号)cd、ls,就够如果你还没装好,先在终端执行:
npm install -g @anthropic-ai/claude-code
安装完,cd 进你的项目目录,敲:
claude
首次运行会引导你登录(浏览器 OAuth 最省事)。登录成功后,你会看到一个等待输入的提示符。从这里开始,本教程才真正开始。
这是新手最容易忽略的一点:Claude Code 是一个项目级的智能体,它默认只"看"得见你启动它时所在的目录及子目录。它不像网页版那样需要你手动粘贴代码,也不像全局搜索那样能跨盘扫描。
# 错误做法:在 home 目录启动,然后问项目里的事
cd ~
claude
> 帮我看看 my-app 里的登录逻辑 # 它根本不知道 my-app 在哪
# 正确做法:先进项目根目录再启动
cd ~/projects/my-app
claude
> 帮我看看登录逻辑 # 它能直接读到代码
预期结果:在项目根目录启动后,它的第一条响应会准确引用到具体文件和行号;在错误目录启动,它会反问"项目在哪"或瞎猜。
常见问题:
/add-dir 把另一个目录加进它的视野:
/add-dir ~/projects/shared-lib/add-dir,它只看启动目录。Claude Code 不是只能打字。把信息给它,有四种途径,新手至少要会用前三种:
| 方式 | 怎么用 | 适合场景 |
|---|---|---|
| 直接打字 | 正常输入框敲需求 | 简单指令、提问 |
@ 引用 |
看一下 @src/auth/login.ts |
让它读某个文件/目录 |
# 记忆 |
# 我们用 pnpm 不用 npm |
写进 CLAUDE.md 长期生效 |
| 管道喂入 | cat error.log \| claude -p "分析这段错误" |
喂动态输出、日志、大数据 |
@ 引用:最该养成习惯的动作很多新手喜欢把代码复制粘贴到对话框里。这有两个问题:一是粘贴可能丢缩进、换行;二是占满上下文。正确做法是用 @ 让它自己去读:
读一下 @src/lib/server/inventions.ts 和对应的测试 @tests/intentions.test.ts,
然后给 @intentions.ts 加上"过期 token"的处理逻辑,并补一个测试。
@ 后面可以跟:
- 文件:@package.json
- 目录:@src/utils/(它会遍历读)
- 图片:@docs/ui-mock.png(能看图!设计稿转代码就靠它)
预期结果:它会在回复里引用 文件名:行号,你点一下就能跳转。
# 记忆:说一次,永远记住# 这个项目用 pnpm,测试用 vitest,禁止用 npm/yarn
输入 # 开头的一句话,Claude Code 会问你存到哪一级(项目级 CLAUDE.md、用户级、还是本地级)。确认后,这条约定从此每次会话自动加载,再也不用重复说。
日志、命令输出、API 返回——这些没法 @ 引用的内容,用管道:
# 把报错日志直接喂给它分析
cat crash.log | claude -p "这是线上崩溃日志,帮我定位根因并给出修复方案"
# 让它先看仓库状态再回答
git diff | claude -p "审查这次改动,重点看有没有引入安全问题"
-p(print 模式)表示"问完即走,不开交互界面",特别适合一次性任务。
Claude Code 的输出质量,90% 取决于你的提问质量。下面是新手最常踩的坑。
❌ 坏问题 1:「这个有问题,帮我修一下」
—— 它不知道"这个"是啥,"问题"是啥
❌ 坏问题 2:「优化一下代码」
—— "优化"可以是性能、可读性、删冗余,方向太多
❌ 坏问题 3:「加个功能」
—— 哪个功能?加在哪?什么交互?
一个好问题包含四个要素:目标 + 约束 + 参考 + 验收标准。
✅ 改写示例:
目标:给 @src/auth/login.ts 加上登录失败次数限制,连续 5 次失败锁定账号 15 分钟。
约束:用现有的 Redis 客户端 @src/lib/redis.ts 存计数,不要引入新依赖;
保持现有函数签名不变,避免破坏调用方。
参考:错误处理的风格参照 @src/auth/signup.ts 里的 try/catch 写法。
验收:加完后跑 `pnpm test auth`,新增一个"锁定后再次登录应返回 429"的测试用例并跑通。
对比一下,第二种提问它几乎不可能跑偏,因为它知道做什么、用什么做、学谁的样子、做完怎么算成功。
涉及多文件、有风险的改动,别让它直接动手。先要计划:
我想重构 @src/utils/format.ts 里的日期格式化函数,拆成 3 个小函数。
先别改代码,给我一个改动计划,列出会动哪些文件、每个文件怎么改、有什么风险。
它给出计划后,你看一眼觉得没问题,再说"按这个计划执行"。这能避免它一口气改十个文件然后你发现方向错了、要全部回滚。
在 Claude Code 里,涉及实现的工作可以直接说"进入计划模式",或用
Tab切换到 plan 模式,它只会读和规划,不会写文件,直到你批准。
这是新手从"能用"到"用得好"的分水岭。
> 读 @src/auth/login.ts,解释它的核心流程
(它解释完)
> 那如果用户 token 过期了,现在会走到哪个分支?
> 把这个分支单独抽成一个函数 verifyExpiredToken
后两句不用重复贴代码,因为前面已经把文件读进上下文了。这就是"对话式"相比"一次性大段提示"的优势:你可以一步步逼近目标,每步基于上一步。
上下文窗口是有限的(虽然不小,但不是无限)。当你在同一个会话里换了一个完全不相干的任务,旧上下文反而会干扰它。判断信号:
这时果断 /clear:
/clear # 清空当前对话,从干净状态开始(不影响你的代码文件)
| 命令 | 作用 |
|---|---|
/compact |
把当前长对话压缩摘要,保留关键信息,腾出上下文空间。适合"任务还没完,但聊太久了" |
/resume |
之前 /clear 或关掉终端的会话,可以重新打开继续。适合"刚才那个任务还想接着做" |
/cost # 看这次会话花了多少 token / 多少钱,心里有数
/status # 看当前登录账号、模型、工作目录
/model # 切换模型(如切到更强或更快的模型)
养成习惯:长会话中途 /compact,换任务前 /clear,结束前 /cost 看一眼。
下面用一个最小可运行的项目,把前面所有技巧串起来。
在任意目录创建 todo.js:
// todo.js —— 一个有 bug 的简易待办工具
const fs = require('fs');
const FILE = 'todos.json';
function load() {
const raw = fs.readFileSync(FILE); // 第一次运行会崩:文件不存在
return JSON.parse(raw);
}
function add(task) {
const list = load();
list.push({ task, done: false });
fs.writeFileSync(FILE, JSON.stringify(list));
console.log('added:', task);
}
const cmd = process.argv[2];
const arg = process.argv[3];
if (cmd === 'add') add(arg);
cd 这个项目目录
claude
新手优质第一问(套用四要素公式 + @ 引用):
看 @todo.js。第一次运行 `node todo.js add 买菜` 会报错,因为 todos.json 不存在。
帮我修一下 load(),让文件不存在时返回空数组;
约束:不要改 add 的函数签名,保持同步写法;
验收:删掉(或不存在)todos.json 后,跑 `node todo.js add 买菜` 应该正常输出并生成文件,
再跑一次 `node todo.js add 写代码`,文件里应该有两条。
它会:
1. 读 todo.js,定位到 load() 的 readFileSync 没有处理文件缺失
2. 给出修改(通常是加一层存在性判断)
3. 因为你的验收标准里有"跑命令验证",它会主动执行 node todo.js add ... 自测
4. 把测试结果贴给你看,确认两条待办都在文件里
关键体验:因为你把"验收标准"写清楚了,它自己跑了测试并自证成功,而不是甩给你一段代码让你自己验证。这是好提问带来的质变。
接着上面,不需要重贴代码:
很好。再帮我加一个 `list` 命令,打印所有未完成的待办,格式是 `[1] 买菜` 这样的编号。
它会在已有理解上直接扩展,因为它已经知道这个文件的结构和你的风格。
#)# 这个项目用 CommonJS(require),不要改成 ESM(import);测试方式是直接 `node todo.js` 跑。
存为项目级 CLAUDE.md。下次新开会话,它自动遵守,你再也不用叮嘱。
/cost # 看这次大概花了多少
/clear # 干净结束,或直接关终端,下次 /resume 能找回
flowchart TD
A[cd 进入项目根目录] --> B[运行 claude 启动]
B --> C{要不要读现有代码?}
C -->|要| D[用 @ 引用文件/目录]
C -->|不要| E[直接描述需求]
D --> F[用四要素组织提问:目标+约束+参考+验收]
E --> F
F --> G{改动是否涉及多文件/有风险?}
G -->|是| H[先要计划, 批准后再执行]
G -->|否| I[直接让它改]
H --> I
I --> J[它自测并贴出结果]
J --> K{继续这个任务?}
K -->|是, 接着追问| L[利用上下文累积, 继续提问]
K -->|换任务了| M[/clear 清空]
K -->|聊太久但没完| N[/compact 压缩]
L --> F
M --> F
N --> F
F --> O[有通用约定? 用 # 写进 CLAUDE.md]
cd 到项目根再启动——这能解决一半的"它怎么不知道"问题。@ 就别复制粘贴——粘贴易出错且占上下文。Tab 进 plan 模式,批准了再动手。/clear——旧上下文是干扰源,不是资产。# 记下来——一次写入,永久生效。/cost——早期建立对 token 消耗的直觉,避免烧钱无感。support.claude.com/en/articles/14553413——把这篇打印出来贴在键盘旁,前两周照着查。code.claude.com/docs/en/cli-reference——所有 flag(如 -p、--model、--resume)的权威说明。/init 自动生成项目记忆文件,把本教程里 # 写的零散约定升级成结构化的项目文档。cd/ls、能看懂基础代码即可。@ 引用 + 验收标准"的提问,让 Claude Code 修好并自测通过。评判标准不是代码对不对,而是提问写得好不好。/clear、/compact、/init、/cost 等)与快捷键,本文斜杠命令清单与"打印贴在键盘旁"的建议来源于此。@path 引用文件与目录的用法,强调"显式引用告诉 Claude 哪些文件定义了正确性",本文 @ 引用与"别复制粘贴"的建议来源。-p(print 模式)与管道喂入用法的权威出处。[!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 等场景全覆盖。
