---
title: "`claude \"query\"`：带初始提示启动"
description: "已经想好第一句时，把问题直接跟在命令后面，进入会话即开工。这一节讲清引号规则、它和单次模式的区别，以及第一句怎样写才不浪费。"
updated: 2026-11-13
canonical: https://docai.cc/learn/start-repl-with-prompt/
markdown_mirror: https://docai.cc/learn/start-repl-with-prompt.md
---
## 省掉那一步「进去再问」

打开终端、进项目、敲 `claude`，等界面出来，再把心里那句问题打进去。这套动作每天重复十次，就是十次多余的等待。

如果你已经知道第一句要问什么，把它跟在命令后面即可：

```bash
claude "帮我看看 src/index.ts 有没有明显的空指针风险"
```

启动完成后，这句话已经作为第一轮输入发出，界面里直接出现它的回应。这不是一次性执行——回答完之后你仍然可以继续追问。

## 引号不是装饰，是语法

命令行按空格切分参数。提示词不整体包起来，后半句就会被当成另一个参数，轻则报错，重则静默丢掉一半信息。

```bash
# 错：后半句被当成独立参数
claude 检查 src 下所有 async 函数

# 对：整句放进一对引号
claude "检查 src/ 下所有 async 函数有没有漏掉错误处理"
```

还有两种情况值得留心：

- 提示词里含反引号或 `$` 时，双引号仍会让 shell 尝试求值。改用单引号，它就原样传过去；
- 中文问句里的逗号、问号不是命令分隔符，不用转义，但整句仍要包好。

```bash
claude '对比 src/old.ts 和 src/new.ts，说明哪个更好，并给出理由'
```

## 它和 `-p` 完全是两回事

名字相近，行为差别很大：

| 写法 | 进入对话 | 适合 |
| --- | --- | --- |
| `claude` | 是，空白开始 | 还没想好从哪问 |
| `claude "query"` | 是，首句已发出 | 想好了第一句，还要继续聊 |
| `claude -p "query"` | 否，跑完退出 | 脚本、流水线、一次拿结果 |

最容易混的是后两者。`claude "query"` 只是把第一轮提前，会话照样开着；`-p` 是无人值守模式，进程结束即走。把该交互的任务写成 `-p`，你会看到一个跑到一半没人确认的进程；反过来，把脚本任务留给交互模式，就永远自动不起来。

## 第一句写什么最划算

首轮的价值在于「对齐」，不在于「产出」。开场先让它读、再说理解，你才有机会纠正方向：

> 先读 README、package.json 和 src/ 的入口文件，然后用五条以内的要点告诉我：这个项目怎么启动、测试怎么跑、核心模块各负责什么。先不要改任何文件。

这类请求有三个好处：范围清楚、结果可核对、零副作用。它读偏了你立刻能发现，而不是等改完代码才察觉。

相反，首句就写「重构整个项目」通常换来一份泛泛的计划。任务越大，第一轮的偏差越难纠正。

## 把条件一并带上

启动参数可以直接和提示词组合：

```bash
claude --model <模型名> "读一遍 src/api/，画出模块之间的依赖"
claude --permission-mode plan "给出重构方案，先不要动手"
claude --append-system-prompt "回答一律用简体中文，先结论后理由" "检查这次改动"
```

`plan` 这类权限模式适合只想要方案、不想让它落地的场合；具体取值以当前版本为准，可用 Tab 补全查看。相关概念见[提示词](/concepts/prompt/)。

参数建议集中放在提示词前面：读起来更像一句完整的命令，复制给别人时也不容易漏掉引号。

## 接着上次的会话继续

一天里常常是同一件事分几段做。每次重新交代背景很浪费，可以把上一次的上下文接回来：

```bash
# 继续最近一次会话
claude --continue

# 继续，并在开头补一句新任务
claude -c "刚才那个缓存函数，补一组单元测试"

# 恢复指定会话；不给 ID 时通常会出现列表让人挑
claude --resume
```

`-c` 是继续最近一次，`--resume` 是挑一次恢复；两者都会带回之前的讨论与改动记录。会话按项目目录归档，换一个目录启动时可能看不到，先 `cd` 回原来的项目再恢复。恢复之后的第一句同样要写清目标，别默认它记得你脑子里的事。具体参数以当前版本的 `claude --help` 为准。

## 进到界面里：按键与 Vim 模式

进入交互界面后，几组按键值得先记住：

| 操作 | 按键 | 说明 |
|---|---|---|
| 发送 | Enter | 单行输入直接发送 |
| 换行 | Shift+Enter | 多数现代终端原生支持；不生效时查终端配置，或临时用反斜杠加回车 |
| 中止当前操作 | Ctrl+C | 空闲时再按一次退出 |
| 清屏 | Ctrl+L | 只清显示，上下文还在 |
| 翻历史输入 | ↑ / ↓ | 找回上一条问过的话 |
| 看斜杠命令 | `/help` | 列出当前可用的命令 |

习惯 Vim 的可以在 `/config` 里把 Editor mode 设为 vim（也可以把 `"editorMode": "vim"` 写进设置文件）；开启后 `i` 进插入模式，`Esc` 回普通模式，编辑长提示词会顺手很多。只想先熟悉界面，可以看[交互式会话入门](/learn/start-interactive-repl/)。

## 三个常见的坑

1. **不加引号。** 多词提示词被拆散，最隐蔽的后果是它只收到前半句却照样回答。
2. **首句塞进五件事。** 它通常挑一件做，其余被忽略；拆成几轮，每轮一个目标。
3. **在错误目录启动。** 它读不到目标文件，只能凭文件名猜，答案看着像模像样却对不上你的项目。多目录的项目先 `cd` 到主目录，再用 `--add-dir` 把其他目录加进可读范围。

另外，别把密钥、口令粘进首句。需要的凭据走环境变量或登录态，不要出现在命令历史里。

启动阶段报错，先按三层排查：提示命令不存在，查全局安装是否成功（`npm list -g @anthropic-ai/claude-code`）；要求登录或鉴权失败，先确认变量有值，再重新走一次 `/login`；想看清请求细节，加 `--verbose`。这三层都和提示词无关，别急着改问法。

带初始提示启动省下的是一步操作，真正决定效果的是第一句的范围。想先了解它和普通对话的差别，可以看[什么是 Claude Code](/concepts/claude-code/)。下一节换到无人值守的场景，看[单次查询模式](/learn/print-mode-sdk-query/)怎么把结果交给脚本。
