前言¶
在 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 可能丟活或重做。旁註要求「只回答、不改變」,因此提問路徑爲:
session.deriveMessages()取當前會話真正送給模型的歷史;- 保留原 system prompt,末尾追加「旁註助手,只回答、不動手」;
ctx.llm.stream()發請求,模型路由用session.requestHeader().config(與主線同模型);- 回答作爲命令結果返回。
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)。
安裝前建議:
- 在 GitHub 閱讀源碼與
cordis.patch.yml,確認行爲符合預期; - 確認許可證爲 MIT(見
package.json); - 記住插件在當前 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