dsh-btw-command:运行中旁注提问或注入补充信息

前言

在 DeepSeek Harness(DSH)里跑长任务时,主 Agent 往往已经占住驱动:你想问一句「这一步为什么慢」,或者突然记起「某个文件刚改过、别再动」,若用 steer 发成普通用户消息,模型容易把它当成新任务,打断手头工作或重复已完成的步骤。

liufeicc/dsh-btw-command 提供 /btw 斜杠命令,面向正在运行的会话:旁注式提问得到独立回答,或把补充事实投进下一步上下文,而不唤醒正在跑的 driver。下面按功能、用法、配置和界面说明如何理解和使用它。

这是什么

  • 名称:dsh-btw-command(npm 包名 @local/dsh-btw-command,版本 1.0.0)
  • 维护者:liufeicc
  • 分类:客户端(Web 端注入 @deepseek-ai/dsh-client-ui-conversation,immediately: true)
  • 许可证:MIT
  • 来源:GitHub、SkillHub 目录页

官方简介:/btw slash command for DSH: ask a side question or inject information into a running agent session。

SkillHub 是社区插件目录站点,与 DeepSeek / 幻方无官方从属关系;DSH 侧插件通常从社区或源码按各自说明安装,并非内置应用商店条目。

核心功能

两种行为,自动判定

用户不必加 ? 前缀;旁注助手根据语义二选一:

用户说的话 判定 实际发生什么
提问题(进度 / 原因 / 某个数值) question 起一次独立的模型请求,回答作为命令结果返回
补充事实 / 决定 / 约束 / 偏好 info 整理成一条记忆条目,经 agent.inject() 投到 next-step

提问:独立请求,不进主 Agent 上下文

steer 会把用户输入当新指令,主 Agent 可能丢活或重做。旁注要求「只回答、不改变」,因此提问路径为:

  1. session.deriveMessages() 取当前会话真正送给模型的历史;
  2. 保留原 system prompt,末尾追加「旁注助手,只回答、不动手」;
  3. ctx.llm.stream() 发请求,模型路由用 session.requestHeader().config(与主线同模型);
  4. 回答作为命令结果返回。command/run / command/done 为 log-only,不进模型上下文。

补充信息:inject 且不打断 driver

agent.inject() 把内容排到下一步 pre-step 收件箱,不唤醒正在跑的 driver;下一段模型请求可读。注入消息带 [补充信息 · 用户插话] 前缀及「不要当成新任务」说明,避免 user 角色被误解为新指令。

判错时的安全策略

  • 解析不出 JSON ⇒ 一律退化为「回答原文」(当提问),不注入记忆;
  • info 但 memory 为空 ⇒ 同样退化;
  • 设计刻意不对称:避免脏数据写入记忆。

安装与启用

README 与 GitHub 仓库页未给出可逐字复制的一行 shell 安装命令。安装步骤请以 SkillHub 目录页 上「发送给 DeepSeek Harness 安装」段落为准(页面表述为安装插件 liufeicc/dsh-btw-command)。

安装前建议:

  1. 在 GitHub 阅读源码与 cordis.patch.yml,确认行为符合预期;
  2. 确认许可证为 MIT(见 package.json);
  3. 记住插件在当前 DSH 进程权限下运行,与主 Agent 共用环境与配置。

安装后,客户端配置项默认可用;总开关 enabled 默认为 true。

典型用法

在输入框直接输入,或在工具行气泡入口发送相同内容:

/btw 为什么这一步这么慢
/btw 记住 MEMORY.md 已经改过,别再改

第一句趋向 question,得到旁注回答;第二句趋向 info,在下一步被主 Agent 读到约束。

配置

插件 config 字段均可省略:

键 默认 说明
enabled true 总开关
historyMessages 40 喂给旁注助手的历史条数上限
maxHistoryChars 120000 历史字符上限
maxAnswerChars 4000 回答最大字符数
timeoutMs 120000 单次旁注请求超时(毫秒)

界面与交互

两个入口共用同一份命令数据:

入口 行为
输入框工具行气泡按钮(+ 右侧) 浮层提问,回车发送
输入框 /btw … 同一命令节点,浮层自动弹出并显示答案

Agent 运行、对话行折进「运行过程」时,浮层仍可读最新 btw 命令节点(useChat 读 snapshot.nodes.values(),含折叠节点)。时间线里另有 conversation.chat.commandview 的 btw 卡片;空闲时更易浏览,运行中可展开「运行过程」查看。

浮层按当前窗格与 composer 实时矩形定位(贴在 composer 上方 8px,宽度不超出窗格,过高时内部滚动),经 portal 挂到 document.body,随 resize / scroll 更新。

为让输入框立刻清空,handler 先返回占位并完成 commands.execute 结算,后台完成后用同一 commandId 追加 command/done,客户端原地刷新答案,不新增事件类型。

已知边界

  • 旁注只看模型可见历史;长时间构建等「进程状态」未必在历史里,只能从工具结果推断(未来可读会话日志或 job 表,README 标为 P2)。
  • 历史从最近一条 user 消息切开,以满足 tool 调用与结果的协议对齐。
  • 旁注回答为一次性返回,非流式(P2)。

维护者本地测试命令(README):

node --test test/*.test.mjs

README 写明 25 条用例,覆盖「提问不注入」「补充才注入」「解析失败绝不注入」及浮层几何等场景。

适用场景与注意

适合:长 Agent 任务中偶尔追问进度或原因,或临时追加约束/偏好而不 steer 主线。

注意:

  • 旁注准确性受历史裁剪与模型判定影响;敏感操作仍以明确 steer 或人工复核为准;
  • 插件修改 Web 客户端与会话注入路径,升级 DSH 或插件后应回归测试 /btw 两种分支;
  • 星标等社区指标以目录页为准(当前 GitHub 显示 0 stars),不代表功能完备度。

结尾

dsh-btw-command 把「旁注」拆成两条技术路径:提问走独立 LLM 请求且不动主上下文,补充信息走 inject 且不唤醒 driver。对需要在运行中插一句话的 DSH 用户,它是客户端侧的可选插件。

  • 目录页:https://www.skillhub.cn/plugins/liufeicc/dsh-btw-command
  • 源码与详细设计:https://github.com/liufeicc/dsh-btw-command
羽毛球分组比赛记分
小程序二维码

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

Xiaoye