前言¶
在 DeepSeek Harness(DSH)里写长提示词时,默认行为是:在聊天输入框按 Enter 会直接发送。写到一半想换行分段,消息却已经发出去了。社区插件 dsh-enter-newline 只改这一处交互:Enter 插入换行,发送交给界面上的发送按钮;Shift+Enter 与中文输入法组合输入期间的 Enter 行为按 README 说明保持不变。
这是什么¶
dsh-enter-newline 是 DSH 的客户端插件,维护者为 KunKun24(package.json 中作者署名为「困困」)。分类上属于在 Web 端注入客户端逻辑的插件:通过 Cordis patch 与 @deepseek-ai/dsh-client-ui-slots 注入,平台为 web。许可证为 MIT;当前 package.json 版本为 1.1.0,运行环境要求 Node >= 22.13.0。
核心功能¶
下面是对 README 与 package.json 中已写明能力的归纳。
-
Enter 换行、不发送
在 Harness 的 composer 输入框内,单独按 Enter 只插入一行换行,不会触发发送。 -
发送方式不变
需要发出消息时,仍使用发送按钮(README 未改动 DSH 其它发送快捷键的表述,此处不延伸)。 -
Shift+Enter保持原样
插件通过把真实键盘事件的shiftKey改写为true,让 Lexical 走Shift+Enter的换行路径;dsh 提交逻辑里对event.shiftKey === true会直接return false,从而不发送。 -
中文输入法
组合输入过程中按 Enter,README 写明不会被拦截。 -
侧边栏开关
侧边栏提供「换行设置」,可开关行为;设置保存在本机localStorage,键名为dsh-enter-newline。 -
作用范围
仅作用于 composer 内、带[data-lexical-editor]的输入框;会话改名、设置页等其它输入框不受影响。
实现要点(为何不用 execCommand)¶
DSH 的输入框基于 Lexical 富文本编辑器,内容由 Lexical 数据模型管理。README 记录了早期踩坑:用 document.execCommand('insertLineBreak') 直接改 DOM 会绕过模型,Lexical 在 reconcile 时会把 DOM 重置回模型,连带把刚粘贴进去的内容冲掉。
当前做法是不碰 DOM,只在键盘事件上把 shiftKey 设为 true,交给 Lexical 处理换行。Lexical 侧按 Shift+Enter 走 INSERT_LINE_BREAK_COMMAND;dsh 提交处理器在 event.shiftKey === true 时不提交。两条路径同时满足时,实现「换行且不发送」。
安装与启用¶
DeepSeek Harness 生态采用「一切皆插件」思路;插件可在 DSH 内置市场或社区目录发现。社区目录页:dsh-enter-newline(SkillHub)。源码与说明:GitHub - KunKun24/dsh-enter-newline。
安装前请自行查看仓库源码与 MIT 许可证;插件在当前 dsh 进程权限下运行,与使用任何第三方 DSH 插件的通用注意一致。
方式一:插件市场(README 推荐)¶
在 dsh 的「插件市场」里搜索包名 dsh-enter-newline 直接安装。README 未给出额外的 CLI 市场安装单行命令,此处不臆造。
方式二:Release 压缩包¶
README 示例使用 profile web 与本地 tgz 路径:
dsh plugin --profile web add ./dsh-enter-newline-1.0.0.tgz
说明:示例文件名中的版本号为 README 安装示例原文;若你从 Release 下载,请以实际压缩包文件名为准。
方式三:手动装到 profile¶
# 1. 复制到 profile 的 vendor 目录
cp -r dsh-enter-newline ~/.dsh/profiles/web/vendor/dsh-enter-newline
# 2. 在 profile 的 package.json 里加一条依赖(file: 指向 vendor)
# "dependencies": { "dsh-enter-newline": "file:./vendor/dsh-enter-newline" }
# 3. 装依赖并重启
cd ~/.dsh/profiles/web && pnpm install && dsh web
典型用法¶
- 按上述任一方式安装并启动
dsh web(或你使用的 profile)。 - 打开 Harness 聊天 composer,在输入框里输入多行内容:需要换行时按 Enter。
- 确认消息未自动发送后,点击发送按钮发出。
- 若不需要该行为,在侧边栏「换行设置」关闭;设置写入
localStorage: dsh-enter-newline。
需要保留「Enter 即发送」习惯时,关闭侧边栏开关即可,无需卸载。
卸载¶
README 给出的步骤:
从 profile 的 package.json 的 dependencies 和 dsh.profile.bundles 里删掉 dsh-enter-newline,再执行 pnpm install 并重启 dsh。插件本身不写业务数据。
适用场景与注意¶
适合谁: 经常在 Harness composer 里写长 prompt、需要 Enter 分段、又不希望误触发送的 Web 端用户。
注意:
- 仅 Web 客户端(
dsh.client.platform为web);README 未声明其它平台。 - 行为绑定 Lexical composer 输入框;其它页面的输入框不受影响。
- 社区目录与 DeepSeek / 幻方无 README 所述的官方从属关系,安装来源请自行核对。
结尾¶
dsh-enter-newline 用最小侵入的方式对齐「写提示词时 Enter 换行」的常见编辑器习惯,实现上依赖 Lexical 与 dsh 对 Shift+Enter 的既有约定,避免直接改 DOM。进一步了解或提 Issue,请访问 SkillHub 目录页 与 GitHub 仓库。