前言¶
在 DeepSeek Harness(DSH)里跑长任务时,常会想顺手问一句:某个缩写什么意思、某段逻辑在哪个文件里。若把问题写进正常 prompt,通常要等当前 turn 结束,回答还会进入下一轮请求的上下文,既拖慢主任务,又容易把对话搅乱。
社区插件 dsh-btw(维护者 douglarek)提供 slash 命令 /btw:在主任务继续跑、队列与 Esc 不受影响的前提下,用当前会话同一路由(provider / model)向模型发起一次「旁问」。回答默认不进入模型对话;会话日志里以 command 生命周期记录,重载、fork、回放仍可见。
DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。下文功能与安装方式均以 GitHub 仓库 README 为准。
这是什么¶
dsh-btw 归类为「模型推理」类插件。一句话:/btw <question> 让会话自己的模型回答旁问,不排队、不打断正在执行的 turn,且默认不把答案写进后续请求的上下文。
命令交互参考 Grok Build 的 /btw(绕过 prompt 队列、金色高亮的 /btw 行、答案留在主 turn 之外)。一处刻意差异:Grok 默认用 live session;本插件默认 standalone(context: none,不带任何会话),若需 Grok 行为可设 context: session。
核心功能¶
与正常 prompt 的差异¶
| Prompt | /btw |
|
|---|---|---|
| 是否等待当前 turn | 是 | 否 |
| 是否进入模型下一次请求 | 是 | 否 |
| 是否看到会话对话 | 是 | 仅当 context: session |
| 是否使用工具 | 是 | 否 |
| 在会话日志中的形态 | 消息 | 仅 command 生命周期 |
使用体验(README 已说明)¶
- 输入后立刻出现一行问题与
Answering…,随后展示答案;composer 在命令被接纳后即清空,而非等模型答完。 - 答案由当前会话的 provider 与 model 生成;默认问题独立(
context: none),context: session时会附带 bounded 对话 transcript。 - 答案按 Markdown 渲染(标题、列表、引用、表格、代码块、粗体、链接等)。
- 模型先 reasoning 再答时,行内上方有可折叠 Thinking 块,旁问继承会话当前的 thinking level。
- 摘要行可折叠/展开(问题单行省略、chevron 切换);
Esc、草稿与队列均不受影响。
旁问结果不是 model message,不会出现在下一次请求里;以 command/run、command/done 写入 session log,在 transcript 中只出现一次。
架构要点¶
- Host(
index.js、lib/):通过ctx.commands.register()注册btw;handler 立即返回,实际请求在lib/answer-runner.js中用ctx.llm.stream()完成(固定旁问策略、无 tools)。llm与commands为硬注入,profile 无这两项时插件不激活。 - Client(
client.js):注册conversation.chat.commandview的btw视图,自管 Markdown 解析与--dsw-alias-*主题 token。
安装与启用¶
在 DSH profile 中执行(README 原文,两种形式均可):
plugin_manager install_bundle target=github:douglarek/dsh-btw
plugin_manager install_bundle target=/absolute/path/to/dsh-btw
bundle 会插入名为 dsh-btw 的 Host 行,并通过 dsh.client 声明浏览器端;启用该行后,composer 命令菜单可用 /btw,对话区注册对应渲染器。
插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与 MIT 许可证(package.json 中版本为 0.2.0,需 Node >=20)。
配置¶
默认值与 cordis.patch.yml 一致,可在 patch 中覆盖:
| Key | Default | 含义 |
|---|---|---|
enabled |
true |
是否挂载命令 |
context |
none |
none 为独立问题;session 在问题前附带 bounded transcript |
description |
旁问:不打断当前任务地提问 · Ask a side question without interrupting | composer / 列表下的说明文案 |
maxContextChars |
12000 |
附带 transcript 的码点预算 |
maxToolResultChars |
1200 |
transcript 内单条 tool 结果上限 |
includeToolResults |
true |
transcript 是否含 tool 输出 |
timeoutMs |
120000 |
单次旁问超时(0 会被拒绝) |
temperature |
0.2 |
旁问采样温度 |
maxTokens |
unset | 可选输出上限 |
reasoningEffort |
unset | 可选 thinking level;unset 时继承会话路由 |
provider, model |
unset | 可选固定路由;须同时提供;unset 时继承会话最新路由或 profile 默认模型 |
从未发过请求的会话若要用旁问,须在配置中同时指定 provider 与 model,否则无路由可继承。
典型用法¶
在 composer 中消息必须以 /btw 开头(Harness 命令平面只在字节零解析命令,行中嵌入的 /btw 会当作普通 prompt):
/btw what does WBC stand for?
/btw which file owns the retry loop?
可先保持 context: none 问通用知识;需要结合当前任务上下文时再改为 context: session,并按需调 maxContextChars 与 includeToolResults 控制成本。
适用场景与限制¶
适合:长 turn 执行中快速查术语、定位文件或逻辑,又不想打断 agent 或污染主对话链路的 DSH 用户。
需注意(README Limitations):
- 答案一次性返回,行内不能流式 token(command plane 只 settle handler 一次)。
- 同一 run 可能有两条
command/done(executor 与插件各一条);Chat 会合并到同一行。 - 含 reasoning 时 lifecycle 用
<<<btw:reasoning>>>/<<<btw:answer>>>标记内联存储;未适配的通用 command 卡可能把标记当正文显示。 - 旁问不支持 tools、图片与 plan-mode;仅文本。
- 第三方 Host 命令无法在
/列表使用官方六种 glyph,仅显示名称与本插件description。
结尾¶
dsh-btw 把「旁问」做成 DSH 内一条不抢队列的 slash 命令:主任务继续、答案默认不进下一轮上下文,需要时再打开 context: session 对齐 Grok 式会话旁问。