dsh-terminal-context: Converting DSH Terminal Selections to File References

在 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 解决了终端输出与对话输入割裂的问题。通过将长文本转化为轻量级的本地文件引用,它帮助开发者保持聊天上下文的纯净,同时保留了获取完整日志的能力。

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

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

Xiaoye