dsh-quote-annotation:把對話選段與註釋作爲結構化引用發給模型

前言

在 DeepSeek Harness(DSH)裏和模型長聊時,常見做法是複製某段歷史回覆、粘貼進輸入框,或手寫「請結合上面第 N 段」。引用會混進草稿,模型側也缺少可回溯的節點信息。DSH 生態按「一切皆插件」擴展能力;社區插件目錄在獨立站點維護,與 DeepSeek / 幻方無官方從屬關係。下面介紹維護者 stickyfinger7 的 dsh-quote-annotation:在 Chat 裏選中文字、可選加註釋,隨下一條消息以結構化 reference context 交給 Host,而不改寫編輯器、也不在界面裏露出原始 JSON。

這是什麼

dsh-quote-annotation 是面向 DSH Web 客戶端的 Host + 瀏覽器模塊插件(MIT,當前 package 版本 1.1.0)。它解決的是:從當前會話裏引用一段對話原文(可附可選說明),在下一次用戶發送時,由 Host 在 agent/pre-step 階段追加隱藏的 context 消息;Chat 側用 pill 與行內標記展示「發過什麼引用」,便於預覽和跳回來源。

分類上屬於模型推理相關:引用內容進入模型上下文的方式由 Host 結構化注入,而不是把大段粘貼文本留在 composer 裏。

核心功能

以下能力均來自插件 README 說明。

  • 選中 → 添加到對話:劃選後出現小操作條,引用立即進入 pending 存儲。
  • 可選註釋:可隨時添加或編輯;Enter 確認,Shift+Enter 換行。
  • 可見記錄:composer 工具行顯示待發送條數(中文 UI 爲「N 條註釋」,英文爲「N quotes」);發送後用戶消息上方保留 pill,點擊可跳回來源。
  • 僅引用也可發送:composer 爲空時發送按鈕仍可用(Host 會去掉 invisible draft token,必要時回退爲「(引用)」類佔位)。
  • 助手回覆中的行內標記:回合結束後,在提及引用的段落旁出現「註釋 N」/「Note N」;懸停預覽,點擊跳回來源。
  • 重啓後已發送記錄可恢復:通過 Session log 與 GET /dsh-quote-annotation/sent 回填,Host 重啓後 pill 與標記可重建;未發送的 pending 在 Host 內存中,重啓會清空。
  • 不污染編輯器:不使用 Lexical chips、不在 prompt 裏留隱藏字符或零寬字符。
  • 零依賴、無構建步驟:純 ESM Host 插件 + 單個瀏覽器模塊。
  • 界面文案隨 DSH 語言:內置中英文;其他語言回退英文;在 Settings 切換語言後 pill、卡片、標記與 composer 可 live 更新。

工作流程概要:

selection ──► client ──► POST /dsh-quote-annotation/add
                              │
                              ▼
                       pending store (Host)
                              │
                    agent/pre-step (next user message)
                              │
                              ▼
        user message + hidden context message
        source.kind = "conversation-quote"

Host 在直接用戶消息之後追加隱藏的 user/message;source.references 攜帶引用正文、可選註釋及來源元數據(nodeKey、anchorKey、turn、kind 等)。Chat 不渲染普通 context 節點,因此不會出現 ## Quoted conversation references 這類原始塊。

環境與要求

  • DSH 0.2.x,帶 Web 客戶端模塊(DSH Desktop 或 dsh web),並包含 @deepseek-ai/dsh-client-locale 以支持語言切換。
  • 可修改的 profile(如 web、desktop 等)。
  • Host 側 Node.js >=22.19.0。
  • README 記載在 DSH 0.2.1-rc.3(Web)上做過測試。

安裝與啓用

插件以當前 DSH 進程的權限運行;安裝前應自行查看 GitHub 源碼與 MIT 許可證,確認符合你的環境與安全策略。

從 GitHub 安裝到 web profile:

dsh plugin --profile web add github:stickyfinger7/dsh-quote-annotation

固定某一 release:

dsh plugin --profile web add github:stickyfinger7/dsh-quote-annotation#v1.1.0

DSH Desktop 使用獨立 profile:

dsh plugin --profile desktop add github:stickyfinger7/dsh-quote-annotation

安裝後需 重啓對應 profile 一次(Host 路由與 agent/pre-step 在 Host 啓動時加載),並刷新已打開的頁面。

若暫不想卸載,可在 profile 的 cordis.patch.yml 裏對 quote-annotation 條目設置 disabled: true。

配置項

默認值在插件的 cordis.patch.yml,可在 profile patch 的 quote-annotation 下覆蓋:

選項 默認值 含義
maxQuotes 8 每個 session 保留的 pending 引用上限
quoteMaxChars 8000 單段引用最大字符數
annotationMaxChars 4000 單條註釋最大字符數
pendingTtlMs 86400000 pending 引用存活時間(毫秒)

典型用法

README 中的驗證步驟可直接復現:

  1. 在 Chat 中選中文本 → 點擊 添加到對話(英文 UI 爲 Add to chat)。
  2. 可選填寫註釋;按 Enter 確認。
  3. composer 工具行應顯示「N 條註釋」,且發送按鈕可用。
  4. 不在輸入框裏再打字,直接發送。
  5. 用戶消息上方出現「N 條註釋」pill;點擊跳回來源。
  6. 助手回覆完成後,正文中出現「註釋 N」;懸停可預覽引用。
  7. 確認 Chat 不會渲染 ## Quoted conversation references 標題塊。

適用場景與注意

適合:需要在同一會話裏反覆指向 earlier turns 的原文、並給模型附帶簡短說明,同時希望輸入框保持乾淨、引用帶來源錨點的開發者或日常 DSH 用戶。

侷限與兼容(README 原文要點):

  • Pending 引用僅存 Host 內存;已發送記錄依賴 Session log 回填。
  • Sent pill 與行內標記依賴 Chat DOM 選擇器;DSH Chat DOM 變更時可能需要插件更新選擇器。
  • 行內標記按段落啓發式放置;若助手 paraphrase 而非複述引用,標記可能落在回覆末尾。
  • 無原生 Lexical chip,這是「不修改編輯器」的設計取捨。
  • UI 文案僅中英文完整覆蓋;Host 側文案可能因標籤頁語言狀態短暫不一致。

插件有意不依賴 conversation.draftContexts、原生 Lexical chips 或 reference pipeline,便於在現有 DSH 0.2.x Web 棧上獨立運行。

結尾

dsh-quote-annotation 把「選段 + 可選註釋」變成下一條消息背後的結構化會話引用,並在 UI 上用 pill 與行內標記保留可讀、可跳轉的記錄。目錄與說明見社區插件頁 stickyfinger7/dsh-quote-annotation,源碼與完整文檔見 GitHub 倉庫。

羽毛球分组比赛记分
小程序二维码

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

小夜