dsh-client-composer-enter:调整 DeepSeek Harness 输入框回车行为

前言

DeepSeek Harness(dsh)默认的输入框行为是「裸 Enter 发送、Shift+Enter 换行」。在写多行提示词时,这个顺序是反的:一不留神就发出去了,想换行还得先按 Shift。这会打断工作流,尤其是需要分多段输入长提示词的场景。

dsh 的 composer keymap 在 CRITICAL 优先级处理 Enter:裸 Enter 提交、Shift+Enter 落到纯文本编辑器的换行、Alt+Enter 被吞掉、CtrlKey/MetaKey 走加速提交。要在不修改 dsh 源码的前提下改变这个行为,需要在 window 捕获阶段拦截按键,重放官方已经实现的手势。

下面介绍 zevire/dsh-client-composer-enter,一个针对 dsh 输入框的第三方非官方插件,它把 Enter/Shift+Enter/Alt+Enter 的行为对调,同时原样保留官方的 Cmd/Ctrl+Enter 互补手势。

插件定位

dsh-client-composer-enter 是 DeepSeek Harness 的客户端插件,由维护者 zevire 开发。它不修改 dsh 任何源码,通过 profile bundle 的方式介入,在输入框按键层面改变默认行为。

插件在 dsh 0.1.7-rc.2 / 0.2.0-rc.2 / 0.2.1-rc.2(桌面版与 Web profile)上验证通过。它是一个零依赖、无打包器、不联网的本地插件,MIT 许可证。

核心功能

插件调整了输入框的 Enter 相关按键行为,具体如下:

按键 结果
Enter 插入换行
Shift + Enter 发送(重放官方 enter 手势)
Alt + Enter 发送(同上,第二个发送键)
Cmd/Ctrl + Enter 不改动 —— 官方互补 Queue/Steer 手势
Shift + Alt + Enter、AltGr+Enter 等 不改动
IME 组合中(isComposing / keyCode 229) 交还输入法
/、@ 菜单或命令弹层打开 交还官方选择器
已认领命令 / 提交中(data-phase ≠ plain) 交还官方提交路径

Cmd/Ctrl+Enter 在官方快捷键表里是 fixed.complementary(「使用互补的 Queue/Steer 方式」):默认「繁忙时排队」设置下,它在智能体运行时等于插话发送,空闲时等同普通发送。插件不动它,确保与官方行为一致。

安装与启用

本包是标准的 dsh profile bundle(package.json 声明 dsh.bundle.patch,cordis.patch.yml 插入一行 Loader 条目)。

桌面版:
1. 打开 dsh 设置
2. 进入「设置 → 插件 → 安装」
3. 粘贴本目录的绝对路径(如 D:\Code\dsh-client-composer-enter)
4. 装完后是停用状态,需在面板里启用
5. 桌面 profile 由 Electron 独占,CLI 会拒绝 dsh plugin --profile desktop …

其它 profile(CLI):

dsh plugin --profile web add /absolute/path/to/dsh-client-composer-enter

pnpm 会把包链接进 profile 的 node_modules,dsh 会把它追加进 dsh.profile.bundles。实测启用后即时生效,若未生效重启一次应用。

卸载:
- 面板里移除
- 或 dsh plugin --profile web remove dsh-client-composer-enter

配置

每次按键都会读 localStorage,改完无需刷新:

键 取值 作用
dsh.composerEnter off 回到官方按键表:Enter 发送、Shift+Enter 换行、Alt+Enter 无行为
dsh.composerEnterSendKeys both(默认)/ shift / alt 哪个组合键发送

兼容面

插件依赖 dsh 以下 DOM 选择器与语义,任一项改名或移除,插件只会退回官方按键表(不会破坏 composer):

选择器 / 语义 归属
[data-composer-input][contenteditable="true"]、data-phase="plain" ui-conversation
[data-trigger-menu] ui-input-trigger
[data-composer-card] [role="listbox"] ui-commands 弹层
keymap 的四种修饰键语义、按住键守卫(event.repeat) ui-conversation composer keymap

已知限制

  • 设置 → 快捷键里显示的仍是官方映射(fixed.send / fixed.newline / fixed.complementary 由官方只读注册)。实际生效以本插件为准。
  • Shift+Enter/Alt+Enter 走官方 enter 手势,繁忙时的投递方式遵循官方设置(默认排队),插件从不插话。
  • 官方没有提供可用的按键 seam(固定输入观察回调在 window 冒泡阶段,晚于编辑器的 target 阶段),所以是 DOM 层改道。
  • 只改文本输入区的 Enter;按钮、队列/插话控件、工作区选择器均不变。

适用场景

适合需要频繁输入多行提示词的 dsh 用户,尤其是使用 Web profile 或 CLI 的开发者。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

结尾

dsh-client-composer-enter 通过在 window 捕获阶段拦截按键并重放官方手势,在不修改 dsh 源码的前提下调整了输入框的 Enter 行为。如果你习惯「Enter 换行、Shift+Enter 发送」,这个插件可以直接使用。

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

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

小夜