dsh-terminal-context:將 DSH 終端選擇轉換爲文件引用

在 DeepSeek Harness (DSH) 中使用內置側邊欄終端時,長日誌或錯誤堆棧往往佔據大量篇幅。手動從終端複製文本粘貼到聊天框不僅效率低下,還會在對話歷史中擠佔大量上下文空間,干擾對核心問題的聚焦。

dsh-terminal-context 是一個插件,它將終端中的選中文本自動轉換爲聊天輸入框中的 @file 引用,通過本地捕獲文件的方式,保持對話流的整潔。

插件信息

  • 名稱:dsh-terminal-context
  • 定位:客戶端插件
  • 維護者:ZHOU-ZHIZHEN
  • 許可證:MIT

安裝與啓用

DSH 目前沒有集中的插件市場,所有插件通過內置插件管理器安裝。

如果你使用的是 DSH Web 或通過命令行管理配置文件,請在終端執行以下命令:

dsh plugin --profile web add github:ZHOU-ZHIZHEN/dsh-terminal-context

對於使用桌面端 Electron 應用程序的用戶,請通過圖形界面操作:
1. 打開 DeepSeek Harness Desktop。
2. 點擊左側邊欄的 Plugins 圖標。
3. 點擊右上角的 Add Plugin。
4. 在輸入框中輸入:github:ZHOU-ZHIZHEN/dsh-terminal-context。
5. 點擊安裝並重啓應用。

注意:桌面配置文件(profile “desktop”)僅由 Electron 應用程序管理,無法通過 CLI 命令直接操作。

核心功能

該插件主要實現以下能力:

  • 引用轉換:將終端中的高亮文本保存爲本地文件,並在聊天輸入框中生成對應的 @file 引用組件。
  • 插入方式:
    • 按鈕插入:在編輯器輸入框上方會出現 “Add to context” 按鈕,點擊即可插入。
    • 快捷鍵插入:按下 Ctrl+L (Mac: Cmd+L)。
  • 自動清理:保存文件時,自動修剪行尾空格和首尾空白行,去除終端渲染產生的不可見字符。
  • 文件存儲:選中文本會以時間戳命名,保存到 <workspace>/.dsh/term-captures/ 目錄下。
  • 降級模式:當結構化注入失敗時,支持純文本降級模式。

典型用法

操作流程與常規打字習慣自然集成:

  1. 選擇文本:在 DSH 側邊欄終端中,使用鼠標或鍵盤高亮所需的日誌或代碼片段。
  2. 切換焦點:點擊聊天輸入框,將焦點移至編輯器。
  3. 插入引用:
    • 點擊編輯器上方出現的 “Add to context” 按鈕。
    • 或者在終端選中狀態保持時,直接按下 Ctrl+L (Mac: Cmd+L)。

工作機制

插件通過以下技術手段實現功能:

  • 插槽橋接與注入:註冊無頭 UI 組件到 conversation.input.dock 插槽,並通過依賴注入 @deepseek-ai/dsh-client-ui-conversation 獲取輸入上下文。
  • HTTP 接口:提供 /capture(捕獲內容)、/sweep(清理過時文件)、/diag(診斷日誌)接口。
  • 選擇提取:當瀏覽器原生選擇(window.getSelection())因鼠標釋放而摺疊時,插件會檢查 xterm 的 .xterm-selection 層,通過幾何重建提取完整行內容,避免因字符列精度導致的截斷。

注意事項

  • 快捷鍵行爲:當終端中沒有有效選擇時,Ctrl+L 不會佔用快捷鍵,允許終端使用原生快捷鍵(如 clear)。只有在有選擇且有效時,快捷鍵纔會觸發插入。
  • 按鈕狀態:一旦選中文本消失(灰色高亮不再存在),編輯器上方的按鈕會自動隱藏,防止發送過時內容。
  • 命令 ID:插入操作的命令 ID 爲 dsh-terminal-context.add,可在設置中重新綁定快捷鍵。
  • 環境依賴:插件依賴 Node.js >= 20。

總結

dsh-terminal-context 解決了終端輸出與對話輸入割裂的問題。通過將長文本轉化爲輕量級的本地文件引用,它幫助開發者保持聊天上下文的純淨,同時保留了獲取完整日誌的能力。

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

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

小夜