dsh-inline-comment:在 DSH Web 會話裏選中即批註

前言

在 DSH Web 裏和模型來回改需求時,經常有”指某句話有問題”的時刻。現有的做法通常是複製一段引文粘進輸入框,手動加 > 前綴,再敲幾句說明。引文一旦改錯行、少了前綴,模型讀不到上下文;等會話變長,想回指某條早期消息也只能靠整段複製。

下面介紹的插件就是把這件事流程化:選中文本、寫一句批註,它會作爲一枚 chip 附着在輸入框裏,隨下一條消息一起發出,模型收到的是規範化的引文塊,用戶界面上看到的仍是緊湊的膠囊。

這是什麼

dsh-inline-comment 是一個 DSH Web 客戶端插件,由 proto-commons 維護,用於在會話裏按選區創建批註。它只存在於客戶端,沒有 Host 側的 service、tool 或 prompt,不改變 session 格式。

它解決的問題是:把”引用某句話 + 說明爲什麼改”從手工粘貼變成一次選區動作,並保證發出去的文本結構穩定、界面上不散落大段引文。

安裝與啓用

只面向已有 DSH profile(帶 Web client)的環境。安裝命令來自 README:

plugin_manager install_bundle
  target: /path/to/dsh-inline-comment

target 指向本地 checkout 的絕對路徑,例如 ~/protocom/dsh-inline-comment。安裝後需要重載 Web 窗口;只有在客戶端 bundle revision 沒有刷新時才需要完整重啓 DSH。

使用流程

  1. 在會話任意文本上拖選(消息、回覆、工具輸出都可以),鬆開後在選區旁出現 Annotate 膠囊。
  2. 點擊膠囊,在卡片裏寫批註,按 Enter(或 ⌘/Ctrl+Enter)提交。引文被固定在卡片中,消息發送後 chip 保留;Shift+Enter 換行,Esc 取消。
  3. chip 追加在輸入框末尾,光標跟在其後;Backspace 會整枚刪除。懸停或點擊 chip 可以回看引文與批註。
  4. 發送後,模型收到的文本是:
> the selected sentence (up to 320 characters)
>
> Annotation: why it needs to change

配置項

設置 默認值 位置
提交快捷鍵 Enter 提交,Shift+Enter 換行 Settings → General → Comment shortcut
備選方案 ⌘/Ctrl+Enter 提交,Enter 換行 同一行
引文上限 320 字符 MAX_QUOTE in client.js
批註上限 4000 字符 MAX_COMMENT in client.js

快捷鍵偏好存在瀏覽器 localStorage["dsh.inline-comment.submit-mode"](enter 或 mod),切換後立即生效。

實現方式

插件在客戶端的幾個擴展點上掛載:

界面元素 擴展點
浮動膠囊、編輯卡片、預覽卡片 shell.overlay
Composer 橋接(inputActions、useInput) conversation.input.overlay
真實的引用 chip session 級 slash/input-insert-reference + inputTriggers source
已發送消息上的 chip uiConversation.userText rule + conversation.user.text.node
快捷鍵行 settings.general.item

批註追加到草稿末尾的流程是:先算出草稿末尾的 detect offset(引用 chip 記一個字符,命令 chip 按 claim.token),再走 @file 選擇器同款的引用 chip 路徑插入。chip 的 ref 裏以 base64url JSON 存引文和批註,因此草稿能被保存、預覽並在重載後恢復。發送時插件的序列化器把 chip 展開成引文塊,渲染時由 user-text rule 重新識別爲膠囊。

項目結構上,client.js 承擔 UI、chip 來源、已發送消息規則和設置行;index.js 是 Host 側空操作;cordis.patch.yml 是 bundle 插入行。因爲 profile 以鏈接方式安裝該目錄,改 client.js 沒有構建步驟,編輯後用 node --check client.js 檢查語法,再重載 Web 窗口即可;若修改不生效,重啓 DSH 以重建客戶端 bundle。README 裏的預覽圖是設計稿(設計 mock),不是實際會話截圖,實際渲染跟隨宿主主題。

適用場景與注意

適合在 DSH Web 長會話中需要頻繁指出具體句子問題、希望批註跟着消息走而不污染氣泡的開發者。插件是純客戶端實現,不依賴額外運行時,界面文案隨客戶端 locale 在 zh / en 之間切換,零配置。

需要留意幾點:插件基於隨 0.2.1-rc.5 附帶的 DSH 桌面客戶端構建,僅在客戶端生效;chip 複用 composer 的 reference-chip 外殼(appearance: file),並用 scoped CSS 規則隱藏文件圖標,若宿主改了該 DOM,chip 會退回文件圖標,功能仍可用。已發送消息的識別是文本級別的:任何手寫的 > quote + > 批註:… 塊都會被渲染成 chip,這是有意爲之,和 @file 提及的識別方式一致。另一個限制是:如果草稿裏還帶着批註 chip 就卸載插件,那份草稿會發不出去,需要先刪掉 chip。引文在進入 chip 前截斷到 320 字符,批註截斷到 4000 字符。

插件運行時使用當前 DSH 進程的權限,安裝前建議先檢查 client.js、index.js、cordis.patch.yml 等源碼與 MIT 許可證。它是社區目錄中的第三方插件,與 DeepSeek / 幻方無官方從屬關係。

小結

dsh-inline-comment 把會話裏的引用批註壓縮成一次選區動作,chip 在輸入框、已發送消息和懸停預覽三處保持一致,模型側拿到的仍是可讀的引文塊。目錄頁在 https://www.skillhub.cn/plugins/proto-commons/dsh-inline-comment ,源碼在 https://github.com/proto-commons/dsh-inline-comment 。

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

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

小夜