iyllyt/dsh-btw:为 DSH 增加 /btw 旁路提问插件

前言

在 DeepSeek Harness(DSH)中执行主任务时,经常会遇到一种夹缝问题:主 Agent 还在继续工作,你临时想确认一个当前上下文里已经出现过的细节。直接发送普通消息,会把问题带入主会话,可能影响后续任务;另开一个会话,又会缺少刚才讨论过的背景。

dsh-btw 是 iyllyt 维护的非官方社区插件,许可证为 MIT。它为 DSH 提供 /btw 旁路提问:在主 Agent 忙碌时提交一次与当前上下文相关的快速提问,回答显示在临时面板中,不进入主会话历史。

这是什么

一句话定位:dsh-btw 是面向 DSH 的一次性旁路问答插件。

它复用父会话当前可共享的上下文,生成一次回答;主任务继续执行,BTW 的问题和回答不写入普通会话历史。

核心功能

  • 主任务并行:主 Agent 忙碌时也可以提交 /btw,主任务不会被暂停。
  • 共享上下文:复用父会话当前的模型配置、系统提示词、工具 schema 和安全消息前缀。
  • 一次性回答:只进行一轮模型生成,不执行工具,也不会继续追问。
  • 会话隔离:不向主 SessionStore 写入用户消息、回答或隐藏 Session。
  • 临时界面:Markdown 回答显示在 composer 上方,不遮挡输入框。
  • 隐私存档:可选择私有 JSONL、仅内存或完全不保存三种 sidechain 模式。
  • 缓存保护:Anthropic/pi-ai 路由把缓存边界移回共享前缀;其他路由交给 provider 管理。
  • 可取消:关闭面板会中止请求,并支持独立超时控制。

安装

下面是已核实事实中给出的 web profile 安装命令:

dsh plugin --profile web add github:iyllyt/dsh-btw

该插件是非官方社区插件,与 Anthropic、Claude Code 或 DeepSeek AI 没有关联。许可证为 MIT。安装前建议检查源码与许可证,并确认它将在当前 DSH 进程权限下运行。

典型用法

先在主会话发送至少一条消息,然后在输入框输入:

/btw 刚才说的配置文件叫什么?

也可以用来确认当前上下文中的设计选择或报错关系:

/btw 为什么这里选择队列而不是直接执行?
/btw 我们最终决定使用哪种缓存策略?
/btw 这个报错和刚才修改的代码有关吗?

交互方式:

  • / :滚动长回答
  • Enter / Space / Esc:关闭回答
  • 请求未完成时点击 Cancel:中止本次 BTW

适用场景与限制

适合用于当前上下文已知细节的快速提问,例如确认刚才提到的配置文件、已经讨论过的方案、已读代码中的选择。

不适合以下需求:

  • 读取尚未看过的文件
  • 执行命令
  • 联网搜索
  • 连续追问
  • 真正修改文件或执行操作

原因是 BTW 没有工具权限,也没有后续轮次;它是额外的一次模型请求,不等同于普通消息或带工具的子任务。

隐私与存档

  • 可选择 private-jsonlmemorynone 三种 sidechain 模式。
  • 默认 sidechain 模式为 private-jsonl,写入 $DSH_HOME/btw-sidechains/v1
  • private-jsonl 目录权限为 0700,文件权限为 0600,并按天数和最大数量自动清理。
  • 会话隔离方面,BTW 不向主 SessionStore 写入用户消息、回答或隐藏 Session。
  • 卸载插件不会自动删除已经写入 $DSH_HOME/btw-sidechains/v1 的私有审计记录。

配置与兼容性

  • 当前版本:0.2.0
  • 目标 DSH:0.1.0-rc.6
  • Node.js:>=22
  • 配置覆盖会替换同一插件行的整个 config,而不是递归合并;覆盖时需写出希望保留的全部字段。
  • Anthropic/pi-ai 路由会把缓存边界移回共享前缀;其他路由交给 provider 管理。
  • pi-ai 缓存桥接会在预期的 rc.6 adapter internals 改变时 fail closed。

相关链接

仓库地址:https://github.com/iyllyt/dsh-btw

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜