📘 /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 图)

Codex 会话

CLI 运行时

直接运行时

用户输入 /btw 问题

检测当前运行时

派生当前 app-server 线程

子线程继承认证、工具、沙箱

注入边界提示: 历史仅作参考

子线程执行单次问答

返回结果,子线程销毁

创建新 CLI 进程

注入净化后的历史上下文

禁用工具和恢复标志

执行单次问答

进程结束

调用提供商 API

发送会话快照 + 问题

接收单次回答

通过 chat.side_result 事件传递

界面展示附带结果

不写入 chat.history


📦 传递模型:区别于普通聊天

普通助手消息通过 chat 事件传递,而 /btw 使用独立的 chat.side_result 事件。这样做的目的:

  • 客户端的消息处理逻辑能清晰区分主对话和附带问答。
  • 避免在重新加载会话时,这些临时问答被重放,从而保持历史记录的纯净。

🖥️ 界面行为对照表

不同前端对 /btw 的呈现方式各具特色,但都强调了“临时性”和“非侵入性”:

界面 行为描述
TUI(终端UI) 在聊天日志中内联渲染,以独特样式(如颜色或边框)与普通回复区分。用户可按 EnterEsc 快速关闭该回复。
外部渠道(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 吧! 🚀

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。

更多推荐