前言¶
在 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。