前言¶
在 DeepSeek Harness(DSH)裏追問模型時,常見做法是把上一輪迴答裏的一段話複製進輸入框,或依賴宿主自帶的「引用文本」。複製會丟上下文位置;官方從 0.2.2-alpha.2 起內置的引用能力,送給模型的是 Markdown > 引用塊,模型只知道「用戶引了一段話」,不知道這段話出自第幾輪、字符區間是多少。
下面介紹社區插件 dsh-citation(維護者 yupaoa,GitHub 倉庫 yupaoa/dsh-citation)。它在與官方相近的交互入口上,把發送給模型的內容擴展爲帶 turn、range、anchor、session 的引用塊,便於模型按輪次與區間定位原文。
這是什麼¶
dsh-citation 是 DSH 的客戶端第三方插件:在已生成完畢的 AI 回覆裏劃選一段文字,通過右鍵 添加到對話,在輸入框插入不可編輯的引用膠囊;發送時膠囊展開爲模型可讀的引用塊,氣泡裏再摺疊回膠囊。插件未發佈到 npm,以單文件 client.js 形式隨倉庫提供;當前 package 版本爲 0.1.0,許可證 MIT。
環境要求(與 README 一致):
- DSH
>= 0.2.1-rc.3(依賴該版本的輸入框引用膠囊與氣泡userText規則) - Node.js
^22.19.0 || >=24.0.0(隨宿主)
與官方內置引用的區別¶
DSH 0.2.2-alpha.2(2026-10-28)起內置 @deepseek-ai/dsh-message-quotes:選區旁 引用文本 按鈕,發送後摺疊預覽。與本插件對比如下:
官方(0.2.2-alpha.2+) |
dsh-citation | |
|---|---|---|
| 送給模型的內容 | 普通 Markdown 引用塊(>) |
<citation turn step range anchor session> + <quote> |
| 出處(輪次、字符區間) | 無 | 有 |
| 輸入框形態 | QuoteNode,文字可編輯 | 原子膠囊,不可編輯 |
| 入口 | 選區旁浮動按鈕 | 右鍵 添加到對話 |
怎麼選:只要把一段話引進來,用官方即可;需要模型知道「第幾輪、哪幾個字符」時用本插件。
共存:插件會探測宿主的 insertQuote 能力;若宿主已自帶引用入口,不再注入右鍵菜單項,避免兩個「引用」打架。因此在 0.2.2 之後安裝本插件不會衝突,只是右鍵入口會安靜下來;0.2.1 及更早無該能力時,本插件行爲照常。
核心功能¶
引用流程¶
- 在任意一條已經生成完的 AI 回覆裏劃選文字;
- 右鍵 → 添加到對話(僅有一個合法選區時纔出現自定義項,其餘情況放行瀏覽器原生菜單);
- 輸入框出現類似
引用 · 第3輪 · 128字的膠囊,正文不被改動; - 鼠標懸停膠囊(輸入框或已發送氣泡)展開被引原文,可選中複製,移開收起;
- 正常輸入併發送;發送後氣泡裏前綴摺疊爲同一膠囊,正文照常顯示。
發送時展開給模型的塊形如(README 示例):
我引用了以下 1 條回覆內容:
<citation turn="3" step="0" range="128:412" anchor="a1b2c3d4" session="d4f1…">
<quote>被引用的那一段原文,逐字保留</quote>
</citation>
你的問題
邊界與限制¶
- 同一段重複引用會被提示;一條消息最多 5 段引用。
- 跨兩條回覆的選區、流式生成中的回覆、按鈕 / 代碼塊工具條 / 思考塊內選區、空白選區——不出 添加到對話。
- 原文超過約 20000 字纔會裁剪(頭 75% + 尾 25%,並在塊裏說明省略字數)。
- 支持
dsh-rewind回退:檢測到草稿中的引用塊會重建爲「膠囊 + 正文」。 - 不註冊模型工具或斜槓命令;不讀寫文件、不發起網絡請求(插件自述的權限邊界)。
安裝與啓用¶
要求 DSH >= 0.2.1-rc.3、Node ^22.19.0 || >=24.0.0。dsh plugin add 會把參數透傳給 pnpm add。推薦從 GitHub 安裝(client.js 已提交,無需構建):
dsh plugin add --profile desktop "github:yupaoa/dsh-citation"
若 shorthand 不被接受,可用:
dsh plugin add --profile desktop "git+https://github.com/yupaoa/dsh-citation.git"
本地開發或離線可用 link: 指向本機目錄。將 --profile desktop 換成你的 profile 名;dsh plugin list --profile desktop 可查看已裝插件。
裝完必須完全退出並重啓 DSH(安裝 / 卸載 / 升級後只刷新頁面不夠;引用源、右鍵菜單、氣泡規則在啓動階段註冊)。
卸載:
dsh plugin remove --profile desktop dsh-citation
適用場景與注意¶
適合:你在 DSH 桌面端做長對話調試或寫稿,需要模型明確知道「引文來自第 N 輪、字符區間 M–K」,而不是一段無出處的 Markdown 引用。
注意:
- 插件以宿主進程同等權限運行(DSH 第三方插件無獨立沙箱);安裝前建議閱讀倉庫源碼與 MIT 許可證,自行審計「權限與邊界」一節所述能力。
- 依賴宿主內部 DOM 契約(如
data-chat-turn、data-chat-anchor-key等),非公開 API;大版本升級後可能 quietly 不再出菜單,不會破壞原生右鍵。 - 若宿主編輯器不接受引用膠囊,會退化爲插入位置標記行,模型按位置定位、無原文冗餘。
- 刷新頁面後,草稿裏恢復的膠囊可能因映射丟失而無法懸停看全文(僅宿主原生提示)。
開發與驗證¶
倉庫提供 npm test(node --test test/*.test.js,README 稱 51 個用例,無依賴、無網絡)。貢獻前需保證測試全綠;Issue 與 PR 見 GitHub。
結尾¶
dsh-citation 在 DSH 對話 UI 裏用右鍵 添加到對話 把回覆片段變成不可編輯膠囊,發送時帶上 turn / range 等出處,補全官方純文本引用所缺的位置信息。插件目錄頁:skillhub.cn/plugins/yupaoa/dsh-citation;源碼與完整說明:github.com/yupaoa/dsh-citation。