内容来源:Bits, Bugs, and Opinions。https://tomakl.dev/posts/claude-code-btw-command/
原题:Claude Code /btw: asking questions while Claude is still working
原发布时间:2026-03-12
Claude Code 的
/btw命令让你可以在主任务继续运行时,通过浮层提出题外问题。本文介绍它如何融入真实工作流。
兼容性说明(核查于 2026-07-21):当前交互模式文档确认,
/btw可以看到当前对话、不具备任何工具、独立运行、只返回一条临时答案,也不会把这轮问答加入历史记录。它的成本较低,但并非免费,因为它会复用父会话的提示词缓存。原文所谓“反向子智能体”只是一种简化类比:非 Fork 智能体拥有隔离的上下文,但可以配置工具访问权限;Fork 智能体则会继承历史记录(参见子智能体文档)。原文将该命令与 2.1.72 版关联起来;当前变更日志虽然记录了该版本的发布日期,却没有把/btw列为新增功能,不过 2.1.79 版确实记录了一项后续的流式输出修复。下文完整保留原始正文。

长时间使用 Claude Code,会自然形成一种节奏:你正在处理任务,Claude 正在读取文件、运行命令,这时脑中突然冒出一个问题。不是与主线直接相关的问题,而是一个顺带想到的小问题。“等等,那个 curl 选项的参数是什么来着?”或者“Claude 刚才选的端口对吗?”
在 2.1.72 版之前,你能选择的做法都不太理想。你可以输入问题,打断主任务;可以再开一个终端;也可以把问题暂时记在脑中,希望稍后还能想起来。这些办法都算不上好。
/btw 解决了这个问题,而且方式比我预想的更简洁。
它能做什么
输入 /btw what was the database port Claude used earlier?,屏幕上就会出现一个带有答案的浮层,主任务仍会继续运行。对话历史不会发生任何变化。关闭浮层之后,答案也随之消失。
最后这一点值得细想:答案是临时的,从未进入对话。站在模型的角度看,你根本没有问过这个问题。
这个功能有趣的地方在于它的实现方式:/btw 智能体可以完整看到当前对话上下文,却没有任何工具。它不能读取文件、运行命令或编辑内容。它是只读的,了解上下文,用完即弃。
把它理解成“反向子智能体”
要理解 /btw 在智能体模型中的位置,可以采用这样一种思路。
子智能体拥有完整的工具访问权限(文件、Bash、编辑),但会从空白上下文开始。你必须明确提供它所需的一切。/btw 查询恰好相反:它继承完整的对话上下文,却完全没有工具。
两者都受到限制,只是限制方向相反。子智能体看不见,却能动手;/btw 知道前因后果,却只能被动回答。
这种设计是有意为之。题外问题几乎总是与已有上下文中的内容有关,例如“我们之前采用了什么方案?”或“我刚才提到的版本是什么?”回答这些问题不需要工具,只需要记忆,而 /btw 正好拥有这份记忆。
实际使用方法
语法是在 /btw 后面的同一条消息中直接写下问题。不要只输入 /btw 就按回车。问题必须从一开始就包含在消息里,因为临时智能体接收到的正是这条内容。
/btw what port did you configure the reverse proxy to listen on?
/btw was the --no-verify flag I used earlier actually correct for this git config?
/btw what's the correct syntax for jq to extract a nested key again?
最后一个例子有些勉强。如果 Claude 在当前会话中没有使用过 jq,/btw 就无法从上下文中提取相关信息。它可以依靠训练数据作答,但这和通过其他方式提问没有区别。真正的价值体现在问题与上下文中已有内容有关时。
哪些场景不适合使用
/btw 没有工具,所以凡是需要读取文件或运行命令的问题都行不通。如果输入 /btw can you check if the config file has the right value,智能体会告诉你自己做不到。这个回答没有错,却帮不上忙。遇到这类问题,应当正常提问并打断任务。
同样,如果你认为以后可能还要引用答案,/btw 也不合适。浮层一旦关闭,这轮问答就会消失。需要保留记录时,应当把它当作普通问题来问。
还有一个后续提问的问题:/btw 不是交互式的。你只能得到一条答案,随后浮层就会关闭。如果答案又引出了新问题,最终还是要打断主任务。
因此,它最适合的使用范围相当明确:你此刻就想知道、以后不会再用到的快速、临时、依赖上下文且只读的问题。
保持心流的价值
这个功能的重要性比表面看上去更高,原因在于:一次持续三小时的会话中,上下文中断会不断累积。每次为了询问题外问题而打断主任务,你都要付出恢复成本。不只是 Token,尽管这些消耗也会逐渐增加,更重要的是注意力。得到答案后,你必须重新弄清 Claude 正在做什么、重读最近几条消息,再找回工作节奏。
对于符合约束的问题,/btw 消除了这项成本。答案出现,你读完后关闭浮层,任务仍停留在你离开时的位置,一切都没有改变。
我主要用它来询问“我们之前做了什么决定”。会话已经进行了 90 分钟,你想不起 Claude 究竟以哪种方式配置了某个项目。此时回滚冗长的上下文很麻烦,而 /btw what did we set for the worker timeout? 很快就能给出答案。
Token 确实能省,但这只是次要收益
除了改善工作流,/btw 还有一项现实收益:它的回答不会进入对话历史。在长会话中,这一点很重要。每轮交流都会增加上下文长度;进行到某个阶段后,你会为大量已经不再相关的历史记录付费。那些通常会随手输入、问完就忘的题外问题,一直在悄悄增加这项成本。
每个问题省下的成本不多,但一场持续数小时、期间又冒出很多题外好奇的会话积累下来,也会形成一定差异。我不认为这是使用该命令的主要理由,更像是其设计附带的一项免费收益。
我希望改进的一点
浮层关闭后清除答案,理论上很简洁,实际使用时偶尔却很烦人。有时你想从 /btw 的回答中复制一条命令或一个值,却必须赶在不小心关闭浮层前迅速操作。如果浮层上有一个“复制到剪贴板”按钮,就能解决这个问题。也许第二版会加入吧。
/btw 命令随 Claude Code 2.1.72 提供。如果你经常使用自定义命令,或者运行长时间智能体会话,它遵循的是同一种理念:在不打断工具当前工作的前提下,充分发挥工具的能力。