DSH Enter 换行与发送键互换

前言

在 DSH(DeepSeek Harness)Web 界面中,输入框的默认行为通常是 Enter 发送消息。对于习惯在聊天窗口中多行写作或编辑长文本的用户来说,这会打断思路。传统做法是使用 Shift+Enter 换行,但需要记住这个组合键,容易混淆。

下面介绍一个极简插件,将 Enter 键改为换行,Shift+Enter 改为发送,还原聊天软件的默认交互。

这是什么

dsh-enter-swap 是 DSH 的一个 Web 客户端插件,由维护者 xuqiuba888 开发。插件版本 0.1.4,许可证为 MIT。它的核心作用是在 Web 界面中交换 Enter 和 Shift+Enter 的行为:Enter 插入换行,Shift+Enter 发送消息。

插件采用零依赖设计,无需设置页,安装后立即生效。

核心功能

插件实现以下按键行为互换:

  • Enter:插入换行
  • Shift+Enter:发送消息
  • Ctrl/Cmd+Enter:保持原生加速投递(由引擎决定)
  • Alt+Enter:保持原生
  • 中文输入法组词过程不拦截
  • 斜杠命令 / 或 @提及 候选菜单打开时,Enter 正常选中菜单项

在输入框工具栏(模型选择器左侧)会显示胶囊提示:〔Shift+Enter 发送消息〕〔Enter 换行〕。

安装与启用

使用 DSH CLI 安装:

dsh plugin --profile web add github:xuqiuba888/dsh-enter-swap

其他 profile 同理,只需在命令中添加 --profile <名>。

安装完成后需要重启 DSH(Desktop/NEXT 应用)或刷新浏览器/界面(Ctrl+Shift+R)使插件生效。

卸载与更新

更新到最新版本:

dsh plugin --profile web update dsh-enter-swap

卸载插件:

dsh plugin --profile web remove dsh-enter-swap

卸载后刷新即可恢复原生行为。

实现要点

插件在 document 捕获阶段监听 keydown 事件,仅当目标位于输入框([data-composer-input="true"])内时处理按键互换。手势判定规则包括:

  • Alt/Ctrl/Cmd 一律放行
  • isComposing / keyCode 229(中文输入法组帧)放行
  • 检测到挂载在 <body> 直下且可见的 portal 菜单(role="menu" 或 role="listbox")时放行,Enter 正常选中菜单项

命中时执行 preventDefault 和 stopPropagation,再把互换后的手势以合成 KeyboardEvent 派发回引擎,由引擎决定发送或换行的语义。

Client bundle 为纯 JS,使用 __ModuleLoader__ 工厂格式,无需构建步骤。

兼容性

插件在 DSH 0.2.x 上开发并验证,具体为 0.2.1-rc.2 web 界面。不使用任何引擎版本特定的内部 API。

适用场景

适合习惯在聊天输入框中多行写作、编辑长文本或需要频繁换行的用户。对于需要快速切换发送和换行操作的场景,该插件可以减少记忆组合键的负担。

注意事项

  • 插件以当前 DSH 进程权限运行
  • 安装前建议检查源码与许可证(MIT)
  • 卸载后刷新即可恢复原生行为

小结

dsh-enter-swap 通过极简的按键互换,解决了 DSH Web 界面中 Enter 与 Shift+Enter 行为与常见聊天软件不一致的问题。零依赖、无设置页、安装即用,适合追求原生交互体验的用户。

  • 插件目录页:https://www.skillhub.cn/plugins/xuqiuba888/dsh-enter-swap
  • GitHub 仓库:https://github.com/xuqiuba888/dsh-enter-swap
羽毛球分组比赛记分
小程序二维码

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

小夜