前言¶
在 DSH(DeepSeek Harness)的 composer 里,要把当前编辑器光标所在的文件和行号传给模型,通常需要手动复制路径和行号,再拼成 @/path/to/file#L123。这多了一步操作,而且容易拼错。dsh-editor-context 插件让这个动作变成一次点击或一次选择,直接把光标位置变成一条芯片。
是什么¶
dsh-editor-context 是 DSH 的一个插件,用于把 Cursor / VS Code 编辑器当前光标所在的位置(文件路径 + 行号范围)发送到 DSH 的 composer 里。插件本身没有依赖,通过 WebSocket 连接编辑器扩展,接收扩展推送的当前选区信息,再以芯片的形式插入到用户的草稿中。
核心功能¶
1. 在 DSH composer 中插入光标位置¶
在 DSH 的 composer 中输入 @,会显示一个选择器,其中有一个 editor position 组。选择这一项后,当前光标所在的文件和行号会变成一条芯片插入到你的句子中。
芯片显示为短路径(如 limit.go:146-154),但模型实际接收的是完整的绝对路径和行号范围。例如:
@/data/project/qihuan/hallsrv/internal/logic/logic_purchase/limit.go#L146-L154
插入后,你可以像编辑普通文本一样修改、删除这条引用,它仍然是芯片,不会被自动注入打断。
2. 从编辑器直接推送¶
在 Cursor / VS Code 的编辑器标题栏上有一个 Add to Bot 按钮。点击它,会把当前光标所在的文件和行号直接推送到 DSH 的 composer 中,变成一条芯片。
这一步不需要在 DSH 里输入 @,适合连续点击多个位置后,再发一个统一的问题。
3. WebSocket 连接与状态查看¶
编辑器扩展运行 WebSocket 服务器,插件作为客户端连接。一个编辑器窗口对应一个 WebSocket 连接,扩展会在 ~/.editor-context/endpoints/<pid>.json 中声明窗口的状态和端口。
插件通过读取这个目录来维护与每个编辑器窗口的连接。在 DSH composer 中输入 /editors,会打开一个选择器,列出所有已连接的编辑器窗口,包括应用名称、项目文件夹、连接状态和进程 ID。选中一个窗口,会把该窗口当前的光标位置插入到草稿中。
插件也提供一个 HTTP 接口 GET /editor-context/editors,返回所有连接窗口的状态信息。
安装与启用¶
插件需要 DSH 运行在 web profile 模式下(dsh web),同时编辑器端需要安装 Editor Context 扩展,版本 0.5.0 或更高。
在 DSH 目录下执行:
dsh plugin --profile web add github:pandarayc/dsh-editor-context
安装后需要重启 dsh-web 进程,插件会在启动时加载。
配置¶
插件在 dsh.config.yaml 中的配置如下(注释项为可选):
- id: editor-context
name: dsh-editor-context
config:
# wsUrl: "ws://127.0.0.1:7788/editor-context" # 连接地址的 fallback
# wsToken: "" # 扩展设置 token 时需要提供相同的值
# wsName: dsh # 插件的身份标识,也是发送目标
# wsLabel: DSH # 编辑器侧接收方选择器中的名称
# includeText: true # 是否同时请求选中的文本内容
# autoSelection: false # 是否接收每次选区变化的通知
# stateDir: "~/.editor-context" # 编辑器扩展写入窗口状态的位置
# logFile: "" # 日志文件路径,默认为 <stateDir>/plugin.log
# maxAgeSeconds: 3600 # 位置缓存的最大存活时间
# http: false # 是否禁用浏览器路由
# httpPath: /editor-context/position
wsUrl 是 fallback 地址,当扩展版本低于 0.5.0 时才会使用。如果扩展设置了 wsToken,插件必须提供相同的值,否则连接会被拒绝。
插件在 DSH 的 web 服务器上挂载了一个只读路由 GET /editor-context/position,返回当前选区的地址和行号范围,但不返回文件内容。被扩展的 excludeGlobs 排除的路径会返回 404。
典型用法¶
从 DSH composer 插入当前位置¶
- 在 Cursor / VS Code 中打开一个文件,把光标放在要讨论的代码行上。
- 切换到 DSH 的 composer,输入
@。 - 在选择器中选择 editor position。
- 芯片
limit.go:146-154出现在你的句子中。 - 继续输入其他内容,发送给模型。
从编辑器直接推送¶
- 在编辑器标题栏上点击 Add to Bot。
- 切换到 DSH composer,芯片会出现在输入框中。
- 可以继续编辑这条引用,或直接发送。
查看连接的编辑器窗口¶
- 在 DSH composer 中输入
/editors。 - 选择一个已连接的窗口。
- 该窗口当前的光标位置会被插入到草稿中。
适用场景与注意¶
适合需要频繁引用当前编辑器上下文给 DSH 的开发者。插件以当前 DSH 进程的权限运行,安装前建议检查源码和许可证。
插件依赖编辑器扩展的 WebSocket 服务器,如果扩展未安装或未激活,@ 下不会显示 editor position 行。可以通过 cat ~/.editor-context/windows/*.json 检查扩展状态,或通过 /editors 命令查看连接情况。
总结¶
dsh-editor-context 通过 WebSocket 将编辑器的光标位置直接注入到 DSH 的 composer 中,省去了手动复制和拼凑路径的步骤。插件设计简单,无额外依赖,适合需要频繁引用当前编辑器上下文的开发者。
- 目录页:https://www.skillhub.cn/plugins/pandarayc/dsh-editor-context
- GitHub:https://github.com/pandarayc/dsh-editor-context