dsh-quote-shot:按消息 id 引用整條 DSH 對話,按需讀全文

前言

在 DeepSeek Harness(DSH)裏繼續討論某一輪助手輸出時,常見做法是選中文字,讓客戶端塞進 > 引用塊,或把全文粘進輸入框。模型往往只能看到一段來源不明的摘錄,context 裏還要付整段 token。若你想讓模型明確知道「這是第幾條歷史消息」,並在需要時再拉取完整正文,官方選中引用和全文粘貼都不夠用。dsh-quote-shot 走另一條路:輸入框只攜帶一行消息 id 標記,模型通過 quote_read 按需讀取全文。

這是什麼

dsh-quote-shot 由維護者 Twelve212 發佈,在 DSH 社區目錄中歸類爲「記憶」。一句話定位:按 id 引用整條消息——composer 裏只多一行引用標記(約 25 字符量級),不把幾百字寫進 prompt;模型需要時再調 quote_read 取全文。

與官方 dsh-message-quotes 可並存:引一句用官方 blockquote;引整條並回到該條消息的原始上下文,用本插件。

官方 dsh-message-quotes dsh-quote-shot
觸發 須先選中文字 助手消息下方一鍵引用整條
內容 全文寫進輸入框 只傳 id 標記行
模型是否知道出處 僅見一段文本 知道對應歷史消息
context 成本 全文 token 標記行字符量

核心功能

引用交互

  1. 在助手消息下方點引號圖標。
  2. 輸入框出現 chip(顯示「引用 · 被引用內容開頭」);底層序列化仍爲 [引用消息 <id>——請先調用 quote_read 讀取全文,再回答] 一類標記。
  3. 寫上問題併發送。引用的是整條消息,不支持只引選中片段。
  4. 點 chip 右側 × 可取消;點引用時未往會話寫入內容,屬真正撤回。

發送後,標記在氣泡裏渲染爲卡片:可「展開」查看正文(最高約 220px 可滾動,通過 POST /quote-shot/message 拉取,不預取);點卡片主體可跳回原消息(依賴 data-chat-anchor-key 錨點,滾出虛擬化列表時提示「原消息不在當前視圖」)。卡片隻影響人眼閱讀;模型側仍須 quote_read 才能讀正文,不省 token。

quote_read 工具

Host 側註冊工具,供模型按 message id 取全文:

quote_read(messageId) → { found, messageId, text }

session-reader.js 從會話日誌(多幀 zstd)建索引並按 id 累加流式分片文本;sessionId 兼容 session-<uuid> 與裸 <uuid> 兩種目錄命名。README 給出的實測(約 4.7 MB、5683 條事件的會話):首次讀約 197 ms,緩存命中二次讀約 0 ms。

實現要點(使用者可略讀)

  • Host:index.js(工具、路由、日誌);session-reader.js(日誌解析)。
  • 客戶端:client.js(按鈕、chip、卡片、DOM 提取、發送完成檢測)。
  • 日誌:~/.dsh/logs/quote-shot.log;前端失敗分支會上報並在按鈕旁反饋。

插件以當前 DSH 進程權限運行;安裝前建議自行查看源碼與 MIT 許可證。

安裝與啓用

要求:DSH >= 0.2.1-rc.1,Node >= 20。install.mjs 通過 DSH_HOME(默認 ~/.dsh)和 DSH_PROFILE(默認 desktop)定位 profile。

git clone https://github.com/Twelve212/dsh-quote-shot.git
cd dsh-quote-shot
node install.mjs          # 鏈接進 profile 並寫入 dsh.profile.bundles

裝完後重啓 DSH。回滾:

node install.mjs --uninstall

開發預檢可運行 node verify.mjs;改 client.js 刷新頁面即可,改 Host 側文件需重啓 DSH。

典型用法

下面步驟與 README 一致,可復現:

  1. 安裝並重啓 DSH。
  2. 在需要追問的助手回覆下方點引號。
  3. 在 chip 旁輸入例如:「你這裏說的 X,和我現在問的 Y 是否矛盾?」併發送。
  4. 模型應先調用 quote_read 讀取被引用 id 的全文,再回答。

用戶不必把長段回覆手打或粘貼進框;id 引用避免轉述失真。

適用場景與注意

適合:長回覆上沿某條消息繼續推理;需要模型意識到自己在讀「哪一輪輸出」;希望 composer 階段少佔 context,正文按需加載。

注意:

  • 與官方選中引用功能註冊點不同,可同時安裝。
  • DSH 0.2.2 起消息列表虛擬化後,從 DOM 讀正文須避免 innerText ?? textContent 誤判(未渲染節點 innerText 爲空字符串);插件側已按長度回退 textContent。
  • 引用後一個字不打直接發送時,客戶端可能檢測不到「發送完成」(輸入框一直爲空)。
  • 社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;星標與版本以倉庫爲準(當前 package 版本爲 0.2.1)。

結尾

dsh-quote-shot 把「引用」從搬運文字改成可定位的歷史消息 id + 按需 quote_read,在 token 與語義出處之間做折中。目錄頁與源碼:

  • https://www.skillhub.cn/plugins/Twelve212/dsh-quote-shot
  • https://github.com/Twelve212/dsh-quote-shot
羽毛球分组比赛记分
小程序二维码

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

小夜