在 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/目录下。 - 降级模式:当结构化注入失败时,支持纯文本降级模式。
典型用法¶
操作流程与常规打字习惯自然集成:
- 选择文本:在 DSH 侧边栏终端中,使用鼠标或键盘高亮所需的日志或代码片段。
- 切换焦点:点击聊天输入框,将焦点移至编辑器。
- 插入引用:
- 点击编辑器上方出现的 “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 解决了终端输出与对话输入割裂的问题。通过将长文本转化为轻量级的本地文件引用,它帮助开发者保持聊天上下文的纯净,同时保留了获取完整日志的能力。
- GitHub 仓库:ZHOU-ZHIZHEN/dsh-terminal-context
- 插件目录:SkillHub 插件页