前言¶
DSH 的擴展方式強調把 Web GUI 的能力拆成插件來補充。dsh-line-select 解決的問題也比較具體:在 DSH Web 裏讓 agent 修改某個文件的某段代碼時,如果只給文件路徑,agent 可能會讀取整個文件;如果要指定“第 10 到 50 行”,又需要手工把行號或原文補進輸入框。
dsh-line-select 的做法是在輸入框上方提供行選區面板,把可視化的行範圍轉成 @path:start-end 引用,並在發送前由 Host 端展開、注入所選行原文。下面介紹它的功能、安裝方式和典型用法。
這是什麼¶
dsh-line-select 是 DeepSeek Harness Web 的行選區插件。它用於瀏覽工作區文件、帶行號預覽代碼、可視化選中行範圍,並把 @path:start-end 引用寫入輸入框,讓 agent 精準修改指定行。
倉庫地址:
- GitHub:https://github.com/fengmax1997/dsh-line-select
已覈實資料中給出的版本與許可信息:
- 版本:
package.json聲明0.1.1 - 許可:MIT
核心功能¶
文件樹瀏覽¶
安裝後,輸入框上方新增「⛶ 行選區」按鈕。點擊後在面板內瀏覽當前工作區目錄,隱藏文件跳過,目錄優先展示。
帶行號預覽¶
點擊文件後打開只讀代碼視圖。視圖爲純文本加行號,並支持深色/淺色主題自適應。
行範圍選擇¶
在代碼視圖中點擊行號作爲起點,再點擊另一個行號作爲終點。兩個方向都可以,插件會取 min–max 作爲行範圍,並在視圖中高亮選區。
寫入輸入框¶
確認行範圍後,可以把類似 @src/app.ts:10-50 的引用追加到當前草稿。發送前,Host 端會掃描消息中的這類引用,讀取行範圍並注入 <workspace-selection> 結構,使 agent 無需自己讀文件就能看到第 10–50 行原文。
注入結構類似:
<workspace-selection path="src/app.ts" start-line="10" end-line="50">
<line n="10">...</line>
<line n="11">...</line>
</workspace-selection>
整文件引用¶
面板底部有「選中文件」按鈕,點擊後把 @src/app.ts 寫入草稿。這種方式用於讓 agent 通過 read 工具讀取整個文件,而不是把大文件內容直接灌進上下文。
手寫引用¶
也可以不打開面板,直接在輸入框輸入:
@src/app.ts:10-50:指定行範圍@src/app.ts:10:單行@src/app.ts:整文件
工作原理¶
- Host 端:
lib/index.js提供lineSelectTypert Remote 服務,負責列目錄和帶行號讀文件;在agent/pre-step階段掃描@path:start-end,讀取行範圍並注入<workspace-selection>。 - Client 端:
lib/client.js通過conversation.input.dock提供面板 UI 與選區交互,並使用inputActions.setDraft寫入當前草稿。
安裝與啓用¶
安裝命令如下。命令中的 <本目錄或 tarball 路徑> 是佔位符,需要替換爲本地插件目錄或 tarball 的實際路徑:
dsh plugin --profile web add <本目錄或 tarball 路徑>
安裝後重啓 dsh web。
卸載命令:
dsh plugin --profile web remove dsh-line-select
依賴方面,package.json 聲明零第三方運行時依賴;@deepseek-ai/dsh-typert-protocol 與 @deepseek-ai/dsh-llm 作爲可選 peer 依賴,由 DSH profile 提供。
典型用法¶
1、啓動 dsh web,在輸入框上方找到「⛶ 行選區」按鈕。
2、打開面板,瀏覽工作區目錄,找到目標文件,例如 src/app.ts。
3、點擊文件打開只讀代碼視圖。
4、點擊第 10 行行號作爲起點,再點擊第 50 行行號作爲終點,確認選區高亮。
5、把 @src/app.ts:10-50 寫入當前草稿,補充修改要求後發送。
6、如果只想讓 agent 讀取整個文件,點擊底部「選中文件」按鈕,寫入 @src/app.ts 後發送。
適用場景與注意¶
適合在 DSH Web GUI 中需要精確指定某幾行代碼、避免 agent 讀取整文件或重複複製行號的場景。例如讓 agent 只修改一個函數體、一段配置項、一個報錯函數附近的代碼。
使用前注意以下幾點:
- 路徑限制:所有路徑經
confine()強制限制在會話cwd內,拒絕絕對路徑、盤符與..穿越。 - 只讀行爲:插件不寫盤,不執行任何文件內容。
- 內容上限:單文件不超過 1MB,超過後只讀頭部;預覽不超過 800 行;單次注入不超過 400 行。
- 權限邊界:插件在 DSH 進程內運行,並依賴當前會話的工作區範圍。安裝前建議檢查源碼、MIT 許可證以及本機 DSH 環境。
- 安裝路徑:安裝命令中的路徑佔位符必須替換爲實際本地目錄或 tarball 路徑;已覈實資料未給出從 GitHub 地址直接安裝的命令。
結尾¶
dsh-line-select 把“看哪幾行、選哪幾行、把哪幾行給 agent”這幾步放進了 DSH Web 的輸入框流程裏。對需要局部修改代碼的插件工作流來說,它提供的是一個更明確的行範圍引用方式,而不是把整個文件直接交給 agent。
已覈實資料中提供了 GitHub 倉庫地址:
- GitHub:https://github.com/fengmax1997/dsh-line-select
- 社區目錄頁地址在已覈實資料中未提供。