【会话】openclaw中的by the way(btw)
📘 /btw(别名 /side)
在日常使用 AI 助手完成复杂任务时,我们常会遇到这样的场景:主任务正在运行,却突然冒出一个临时疑问——比如“当前编辑的文件路径是什么?”或“这个报错的具体含义是什么?”——这些追问往往不需要进入会话历史,也不应干扰主任务的上下文。
/btw(by the way)正是为此而生。它像是一次“会话旁注”,允许你在不打断主流程、不污染历史记录的前提下,快速获取一个独立的辅助答案。
🧠 一览
| 特性 | 说明 |
|---|---|
| 独立上下文 | 基于当前会话快照,但仅作为参考背景,不影响主任务 |
| 一次性查询 | 每次 /btw 都是独立的单次问答,不会延续或恢复 |
| 历史无痕 | 问题和答案绝不写入 chat.history,重新加载后自动消失 |
| 主任务无干扰 | 即使主运行活跃,/btw 也只在旁支线程中处理,主线程不受影响 |
| 多渠道适配 | 在 TUI、Web、外部聊天工具中均有不同但一致的交互表现 |
⚙️ 运行环境
/btw 的实现高度依赖当前会话的底层架构。OpenClaw 针对三种主要环境采用了不同的技术策略,但核心目标一致:隔离副作用,复用上下文。
1️⃣ Codex harness 会话(原生线程派生)
当你在一个 Codex 驱动的会话中输入 /btw 时,系统会派生(fork)当前活动的 Codex app-server 线程,创建一个临时子线程。
-
不用单独的 API 调用
因为 Codex 会话拥有独立的 OAuth 认证、原生工具绑定(如文件读写、终端命令)、审批策略和沙箱环境。派生线程可以完整继承这些状态,而无需重新初始化,既高效又安全。 -
派生线程的边界提示
子线程会收到一个特殊指令:“边界之前的所有内容(即主会话历史)仅作为参考上下文,并非当前有效的指令;只有边界之后的消息(即/btw的问题)才是实时交互。” 这确保了模型不会误将历史指令当成新任务去执行。 -
资源隔离
子线程运行期间,父线程(主任务)完全不受影响,两者并行。子线程结束后自动销毁,不留下任何痕迹。
2️⃣ CLI 运行时(单次调用模式)
对于非 Codex 的 CLI 后端,/btw 会触发一次全新的 CLI 调用,但会注入经过净化的对话上下文作为背景。
- 系统会禁用工具捆绑和可复用会话状态(如历史缓存)。
- 同时附加后端支持的禁止恢复和禁止使用工具的标志,确保这次调用纯粹用于问答,不会触发任何副作用操作。
3️⃣ 直接运行时(单次提供商调用)
如果运行时既不是 Codex 也不是 CLI,系统则直接调用底层 AI 提供商的 API,进行一次无状态的单次补全请求。此时,上下文仅包含当前会话的摘要快照,模型会基于此回答问题。
🔄 完整工作流程(Mermaid 图)
📦 传递模型:区别于普通聊天
普通助手消息通过 chat 事件传递,而 /btw 使用独立的 chat.side_result 事件。这样做的目的:
- 客户端的消息处理逻辑能清晰区分主对话和附带问答。
- 避免在重新加载会话时,这些临时问答被重放,从而保持历史记录的纯净。
🖥️ 界面行为对照表
不同前端对 /btw 的呈现方式各具特色,但都强调了“临时性”和“非侵入性”:
| 界面 | 行为描述 |
|---|---|
| TUI(终端UI) | 在聊天日志中内联渲染,以独特样式(如颜色或边框)与普通回复区分。用户可按 Enter 或 Esc 快速关闭该回复。 |
| 外部渠道(Telegram、WhatsApp、Discord等) | 作为一条带有明确标签(如“💬 附带回答”)的一次性消息发送。由于这些平台没有本地临时浮层,用户会看到一条独立消息,但不会进入会话历史。 |
| Control UI / Web | 以浮动面板形式固定在线程上方,答案逐轮累积在面板内。提供“继续提问”输入框,可连续进行多个 /btw 问答。• 关闭面板( Esc 或点击 X)会隐藏但保留对话历史,下次收到答案时重新打开。• 点击垃圾桶按钮会彻底丢弃当前附带对话并停止任何正在运行的 btw 请求。 |
| 选择弹窗(Control UI 文本高亮) | 当用户高亮聊天消息中的文本时,会出现两个操作: • “更多详情” – 自动发送一个隐式 /btw,要求模型结合上下文解释高亮内容,答案显示在浮动面板中。• “在附带聊天中提问” – 在输入框中预填一个引用高亮文本的 /btw 草稿,方便用户键入自定义问题。 |
💡 典型使用场景
| 场景 | 示例命令 |
|---|---|
| 快速状态确认 | /btw 我们正在编辑哪个文件? |
| 任务概括 | /btw 用一句话总结当前任务 |
| 临时计算 | /btw 17 * 19 等于多少? |
| 错误解读 | 高亮报错信息 → 点击“更多详情” |
| 上下文澄清 | /side 这个函数的参数是什么意思? |
⚠️ 如果某个问题或答案需要成为后续主会话的长期上下文(例如作为下一步任务的依据),请务必直接在主线会话中正常提问,不要使用
/btw。
❓ 题外问题示例解答
/btw 有什么变化?
当你在长时间运行的任务中途输入此命令,模型会基于当前会话快照,对比之前的状态(比如文件内容、变量值、上次回答等)总结出变化点。例如,如果刚执行了一次代码修改,/btw 有什么变化? 会列出修改的文件和主要改动——但这一问答不会被记录,也不会影响后续主任务的执行。
/side 这个错误是什么意思?
高亮错误信息并选择“更多详情”时,系统会隐式发送 /btw 让模型解释该错误。模型会结合上下文(如当前文件内容、运行命令等)给出可能的原因和解决方案。所有解释只在浮动面板中展示,不会干扰主线对话。
🧩 /btw 设计
| 设计决策 | 背后考量 |
|---|---|
| 不写入历史 | 保持主会话的聚焦,避免临时杂音污染长期上下文,节省 token 成本。 |
| 独立线程/进程 | 确保主任务(尤其是长时间运行)不被打断,同时能快速获得答案。 |
| 继承上下文但只作参考 | 让模型“知道你在做什么”但“不把你说的当任务”,防止误操作。 |
| 多渠道差异化 UI | 尊重各平台交互习惯,同时统一传达“临时、不持久”的语义。 |
🎯 总结
/btw 是高级会话管理中的一颗明珠,它让你在深度工作流中随时捕获灵光一现的疑问,却不必担心副作用的干扰。无论是快速检查状态、消化错误信息,还是临时计算,它都像一位随时待命的副驾驶,安静而高效。
现在,就在下一次会话中试试 /btw 吧! 🚀
葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。
更多推荐

所有评论(0)