前言¶
DeepSeek Harness(DSH)把「发送消息」与「换行」登记为固定输入操作,只在设置页展示并占用键位,真正的按键逻辑写死在编辑器的 Enter 命令中。这意味着社区插件无法直接覆盖这两个动作,只能通过改写事件修饰键来实现不同偏好。
插件介绍¶
DSH chat-enter-newline(npm 包名:dsh-chat-enter-newline)是 DSH 的一个插件,由维护者 tianshao88 发布。它的核心是:在主输入框内按偏好改写 Enter / Shift+Enter / Ctrl(Cmd)+Enter 的修饰键,让引擎读到另一种手势。事件保持可信、不阻断传播,「发送」和「换行」的语义仍由引擎决定。
核心功能¶
- 每个手势可独立选择「发送消息」或「换行」。
- 默认值与引擎一致,未改动时干预次数为 0。
- 只在
[data-composer-input="true"]的主输入框内生效;队列编辑框、提问卡片等不受影响。 - 输入法组合(
isComposing、keyCode 229)与Alt组合一律放行;/、@菜单展开时 Enter 归菜单。 - 不提供「打断键」、键位方案预设或自定义组合键。
行为对照¶
| 手势 | 默认(与引擎一致) | 可改为 |
|---|---|---|
Enter |
发送消息 | 换行 |
Shift+Enter |
换行 | 发送消息 |
Ctrl/Cmd+Enter |
发送消息 | 换行 |
安装与启用¶
从 Git 仓库或本地目录安装(profile 要与实际运行的一致):
dsh plugin --profile <profile> add github:tianshao88/dsh-chat-enter-newline
dsh plugin --profile <profile> add file:<本目录绝对路径>
卸载:
dsh plugin --profile <profile> remove dsh-chat-enter-newline
安装后无需重启引擎,刷新页面即可看到设置行;若没出现,再重启引擎。改完源码要重跑一次安装——file: 是复制而不是软链。
偏好与配置¶
偏好命名空间:chat-enter-newline(等于 cordis.patch.yml 里的 Loader 条目 id)。持久化文件:$DSH_HOME/profiles/<profile>/cordis.patch.yml。字段:
enter:send或newlineshiftEnter:send或newlinectrlEnter:send或newline
持久化不用重启:设置行里的选择立即写入该文件并立即生效。也可以直接手改该文件,只写要覆盖的手势,未写的字段走 schema 默认。示例:
- id: chat-enter-newline
name: dsh-chat-enter-newline
config:
enter: newline # 只写要覆盖的手势;未写的字段走 schema 默认
ctrlEnter: send
两个半边¶
| 半边 | 文件 | 职责 |
|---|---|---|
| 宿主 | index.js |
声明一个 volatile Config 并调用 settings.configure({ auto: false }),表明界面自带 |
| 浏览器 | client.js |
绑定 ctx.configForms.get(条目 id)、改写 Enter 手势、把设置行注册进 settings.general.item(order 21) |
浏览器半边只 require('react'),刻意不引用任何引擎客户端包——官方 practices.md 禁止这么做,且它们的导出会随版本变化。
依赖与兼容性¶
运行时依赖只有引擎同款的 @deepseek-ai/schemastery,用于声明 Config schema。
peerDependencies 声明:@deepseek-ai/dsh: ^0.2.0-rc.2(该范围覆盖 0.2.x 的 rc,0.2.1-rc.2 已通过安装校验)。引擎只检查 peerDependencies 中的 @deepseek-ai/dsh*。
已知限制¶
- 设置 → 快捷键 的速查表仍显示
Enter/Shift+Enter且只读:那是引擎的固定输入操作目录,插件无法改写,因此两处显示会不一致。 - 偏好按设备与平台独立,和引擎自己的键位覆盖一样不跨设备同步。
- 本插件不改变「忙碌时 Enter 是排队还是插话」的行为,那是 设置 → 通用 里引擎自己的
composer-enter行。 - 依赖引擎的几个 DOM 语义属性与槽位名。引擎大版本改动时失效模式是「静默不生效」,不会破坏原生功能。
开发与验证¶
逻辑单测:
node test.mjs
引擎契约自检(需要本机装有 DSH,默认读 D:\Tools\DeepSeek\resources\app.asar,可用 --archive= 或 $DSH_ASAR 覆盖):
node tools/asar.mjs check
tools/asar.mjs 只读检查打包后的 app.asar,逐条核对上文列出的契约。
适用场景与注意¶
适合希望自定义输入框 Enter 手势的用户。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(MIT)。
总结¶
DSH chat-enter-newline 通过改写修饰键实现 Enter 手势的自定义,默认与引擎一致,改动最小。如需更完整的键位方案或自定义组合键,可参考其他社区插件。
- 目录页:https://www.skillhub.cn/plugins/tianshao88/dsh-chat-enter-newline
- GitHub:https://github.com/tianshao88/dsh-chat-enter-newline