前言¶
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
- 社区目录页地址在已核实资料中未提供。