@andrewhmir/dsh-btw:在 DSH Web GUI 里用 `/btw` 做不落盘的旁路提问

前言

在 DeepSeek Harness(DSH)里跑长会话时,常会想临时问一句:某段对话和 compaction、工具结果之间是什么关系?若把问题直接发给主对话,问答会进入 transcript,下一轮模型也会看到,既占上下文,也可能干扰主任务节奏。

子智能体(subagent)走的是另一条路:工具面完整、上下文为空。社区插件 @andrewhmir/dsh-btw(维护者 andrewhmir,分类:客户端)提供相反组合:带上当前会话已提交的完整对话上下文,但不挂工具、不写历史,答案在覆盖层里流式显示,关掉后会话里不留痕迹。

这是什么

@andrewhmir/dsh-btw 是面向 DeepSeek Harness 的非官方社区插件,为 Web GUI 的输入框增加一种手势:在 composer 里输入 /btw <问题>,或在 / 菜单里选择对应项。一次调用对应一次无工具的 LLM 请求,使用当前会话路由的 provider / model / reasoning effort;除提供商计费外,设计上不持久化问答内容。

目录页:https://www.skillhub.cn/plugins/andrewhmir/dsh-btw
源码与说明:https://github.com/andrewhmir/dsh-btw

核心能力(与 README 行为表一致)

维度 行为
调用 /btw <question>,或 / 菜单
上下文 当前 session 已提交的完整对话
工具 无工具 schema、无工具历史
回答 流式输出到应用框架上的 overlay
关闭 Space、Enter、Escape,或关闭按钮 / 背景
持久化 不进入 session history
并发 主回合流式输出时仍可用,且不中断主回合
形态 单次问答,overlay 内无多轮跟进

与「子智能体」的对比(README 原意):子智能体是完整工具面、空上下文;/btw 是完整对话上下文、无工具。

实现要点(便于理解边界):

  • 故意不在 host 命令目录注册 /btw,避免 command/run 等 durable 日志进历史;由客户端半部注册 '/' 输入触发源,在裁决时抢先处理 /btw <question>,并 POST /btw/ask。
  • Host 半部用 Session.deriveMessages() 快照模型可见历史,追加一条旁路用户消息,单次 ctx.llm.stream(),无 tools、无单独 system prompt;消息前缀与父请求一致,便于复用提供商 prompt cache。
  • 路径上不调用 session.append、命令注册表、agent loop 或 inbox,因此旁路交换是契约级 ephemeral;test/e2e/ephemerality-check.mjs 会扫描 session.v*.jsonl.zstd 验证问答未落盘。

安装与启用

要求:DSH >= 0.2.0-rc.2 且使用 Web GUI(dsh web)。包为 DSH bundle(dsh.bundle.patch,插件行 id: btw)。Node.js 22+ 仅验证脚本需要;插件在 harness 进程内运行。

从插件市场(需启用 DSH 自定义插件市场并添加含本包的社区索引;仓库带 dsh-plugin GitHub topic): 在 Discover 安装 @andrewhmir/dsh-btw。

通过 agent:

plugin_manager install_bundle  target: @andrewhmir/dsh-btw@0.1.2

从本地目录:

plugin_manager install_bundle  target: /absolute/path/to/dsh-btw

安装后必须重启 dsh web,再确认组合:

dsh --profile web --dump-config

期望退出码 0,且出现 id: btw / name: @andrewhmir/dsh-btw,无 not found、unknown key、cannot resolve。仅改 client.js 时客户端 HMR 可热更新;改 host 半部需重启。

典型用法

在 Web GUI 会话中途,于 composer 输入例如:

/btw how does the compaction checkpoint interact with the surface?

答案以 Markdown 渲染在 overlay(旧 shell 可能回退纯文本)。主回合若在流式输出,仍可发起 /btw;快照不含尚未提交的进行中 assistant 文本,旁路看到的是截至上一笔已提交事件的历史。若当前轮末尾有未完成的 tool call,host 会裁掉未提交的 trailing step,避免提供商报「tool calls need immediate results」。

可选配置(写入 bundle 的 insert 行,均有默认值):

- insert:
    - id: btw
      name: '@andrewhmir/dsh-btw'
      config:
        maxTokens: 1200    # 单次旁路回答的 completion 上限(默认 1200)
        timeoutMs: 120000  # 单次旁路调用的硬超时(默认 120000)

问题最长 4000 字符;请求体上限 32 KiB。

适用场景与注意

适合: 在长会话里快速核对上下文含义、术语或设计细节,又不想污染主 transcript 或 token 计量里的 session history;需要「全上下文、零工具」的一次性旁路,而非开子智能体跑工具链。

已知限制(README):

  • 进行中的 partial assistant 文本不在快照内。
  • 旁路调用不会出现在 session-log 成本面板;费用以提供商账单为准。
  • 调用与 overlay 为 Web GUI 能力;host 路由虽通用,但 CLI 等场景无同等入口。
  • 本版本 overlay 内文案为英文(展示元数据含中英文)。
  • 若未来 harness 内置同名 host btw 命令,会优先于本插件(host 目录先于插件源裁决)。
  • 仅单次问答,overlay 内不能继续多轮。

安全与信任: 插件以当前 dsh 进程权限运行,会向提供商发送当前会话已提交历史的快照加你的旁路问题。安装前请阅读源码与许可证(MIT),自行评估是否纳入所用 profile。社区目录与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本包为社区贡献,非官方发行物。

兼容性:engines.dsh 为 >=0.2.0-rc.2;README 记录在 0.2.0-rc.2 与 0.2.1-rc.2 上的验证结果见仓库 docs/VERIFICATION.md。

结尾

@andrewhmir/dsh-btw 把「旁路问一句」做成可预期的 ephemeral 契约:全对话上下文、无工具、不进历史,适合在 Web GUI 里做不打断主线的侧向澄清。需要安装步骤与行为细节时,以 GitHub README 为准;在社区目录检索插件见 https://www.skillhub.cn/plugins/andrewhmir/dsh-btw,仓库地址 https://github.com/andrewhmir/dsh-btw。

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

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

Xiaoye