交互模式与非交互
Claude Code 不是只有一种用法。同一个
claude命令,加不同参数就是完全不同的工作模式。选对模式,效率能差好几倍。
三种运行模式
Claude Code 常用的运行方式有三种,分别对应三类日常场景。
REPL 交互模式
在项目目录里直接输入 claude,回车,就进入了 REPL。这是最常见也最强大的模式,你可以一句一句地和它对话,它读文件、改文件、跑命令都会先征求你同意。适合探索性任务,也适合大改动,因为每一步都在你眼皮底下。
cd my-project
claude进入之后光标停在提示符前,输入自然语言即可。想退出按两次 Ctrl+C 或者输入 /exit。
单次执行模式
任务很小、结果只要一段文本,用 claude -p 直接一次问一次答,不进入交互界面。这条命令跑完就结束进程,非常适合当作命令行工具的一部分被别的程序调用。
claude -p "帮我看下 src/auth.js 里的 verifyToken 函数有没有边界问题"-p 是 --print 的缩写,Claude Code 跑完就退出,把结果打印到 stdout。适合塞进脚本、CI、别的自动化流程里。返回值可以用管道再传给下游命令,就像用一个普通的 Unix 工具一样。
Pipe 模式
claude -p 还能接管道,非常适合处理日志、diff、报错这种场景。你手头的命令行输出可以直接顺进 Claude Code,让它当场分析,不用打开文件也不用先存到临时文件里。
cat error.log | claude -p "分析这个错误的可能根因,按优先级列出"
git diff main --name-only | claude -p "评估这批文件的改动风险"
tail -200 app.log | claude -p "有没有异常,抓出来告诉我"标准输入的内容会自动作为 Prompt 的一部分喂给模型,你不用手动拷贝粘贴。这也是把 Claude Code 融进现有工具链最省事的方式,任何能产生文本的命令都可以直接接过来问它一句。
会话续接
REPL 会话默认在退出时结束,但 Claude Code 会把每一次对话都存下来。想接上之前的对话有两种方式,分别对应两种记忆方式。
claude --continue或缩写claude -c,直接续上当前项目最近一次会话,你不用记会话编号,也不用去挑列表,最省事。claude --resume或缩写claude -r,会弹出这个项目下的会话列表,按最近使用时间排序,你可以挑一个恢复,也可以看每条历史的第一句话,方便定位。历史越长的项目越用得上。
指定 session 恢复时,你可以在命令行直接给出 session id:claude --resume <sessionId>,跳过挑选那一步,脚本自动化里很好用。
小提示
一天里如果反复被打断,claude -c 是你最常用的命令之一。真的不用每次都从头解释项目背景,你昨天走到哪一步、跑过什么命令,它都还记得。
四种输入前缀
在 REPL 里,你打的每一行不一定都是普通 Prompt。Claude Code 认识四种特殊前缀,各有各的用途,混合用会让效率再翻一倍。
- 普通文本:就是自然语言 Prompt,直接说人话就行,中英文都可以。它会作为本轮对话的正文喂给模型。
@file:把某个文件塞进上下文,例如@src/index.ts 帮我看看这个入口。相对路径按当前项目根算,输入@之后会有文件名补全,不用记完整路径。可以在同一段里@多个文件,Claude Code 会依次读进来。!command:立刻执行一条 bash 命令,结果连同上下文一起给模型。例如!git status或者!npm test。适合在跟它讨论之前,先把当前状态摆到桌面上。#note:把这行内容记进当前项目的 CLAUDE.md 里作为长期备忘,下次开新会话也能读到。适合把项目约定、常用路径、跑测试的方式沉淀下来。
这四个前缀可以在同一段 Prompt 里混合使用,写一段 Markdown 一样自由。例如你可以先 !git diff --stat,再 @src/routes/order.ts,最后写一句自然语言问它这批改动够不够安全,模型会把三段拼起来一起看。
什么时候用哪种
一个简单的判断标准:
- 需要来回讨论、多次读改、要看它每一步反应:REPL。
- 一句话一个结果,结果要拿到脚本或者 CI 里用:
-p。 - 输入本身是文件流或者命令输出,比如日志、diff、错误堆栈:
-p加 pipe。 - 上一次没聊完、需要接着搞:
-c续上,或者-r挑一条历史。
四种组合用熟了,日常八成的场景都覆盖到了。剩下的两成是脚本化、多会话协作、跨机远程之类的高级玩法,后面的章节会陆续讲到。