DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

AIFireForAll /

dsh-enter-lock

Verified

DeepSeek Harness plugin that locks the web chat composer Enter-send. Toggle with a lock button or Ctrl+Alt+L to prevent accidental sends while typing or editing long prompts; unlock to send. IME-safe and per-session.

★ 2 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@2cde0ee2

dsh-enter-lock

中文 | English

A DeepSeek Harness plugin that adds an Enter-send lock to the web chat composer.

DeepSeek Harness Web 插件:给聊天输入框增加一个 Enter 发送锁。

  • 点击输入框旁的锁形按钮,即可锁定/解锁。
  • 锁定后仍然可以正常编辑输入框中的内容,但按 Enter 不会发送消息。
  • 再次点击按钮即可解锁,恢复 Enter 发送。

功能起因

DeepSeek Harness Web 的输入框默认在按下 Enter 时立即发送消息。以下场景很容易误触:

  • 使用中文输入法时,按 Enter 只是为了确认候选词,但消息被直接发送;
  • 编辑长提示词、代码或结构化文本时,想继续编辑,却误按 Enter;
  • 输入框中的内容还没有编辑完,就意外进入了发送流程。

该插件补上了“发送前先解锁”这一层保护。

聚焦的功能

  • 锁形按钮:注册在官方 conversation.input.right 槽位,显示在输入框右下角、发送按钮附近;锁定状态为醒目的红色填充。
  • 按会话隔离:每个会话独立保存锁状态,切换会话互不影响。
  • 不替换官方输入框:只拦截键盘提交路径,保留官方输入状态机、命令菜单、队列、附件等能力。
  • 中文输入法友好:IME 组合期间的 Enter 永远放行。

状态样式说明

状态 锁图标样式 含义
解锁(普通状态) 灰色描边图标 当前 Enter 可正常发送消息
锁定(关锁状态) 红色填充 + 白色锁图标 当前 Enter 无法发送消息

鼠标悬浮到锁图标上时,tooltip 会显示当前状态的提示:

  • 解锁:已解锁,当前 Enter 可正常发送消息
  • 锁定:已锁定,当前 Enter 无法发送消息

可以防止什么行为

锁定状态下,以下键盘发送行为都会被阻止:

  • 普通 Enter 发送;
  • Ctrl+Enter / Cmd+Enter 发送;
  • 其他会触发官方提交路径的 Enter 组合;
  • 尚未编辑完成的输入内容被意外提交。

同时保留这些正常行为:

  • Shift+Enter 仍然插入换行;
  • 输入法候选词确认的 Enter 不受影响;
  • 输入框内容的编辑、复制、粘贴、附件操作不受影响;
  • 鼠标点击官方发送按钮仍然可以发送——锁只防键盘误触。

快捷键(后续待开发)

键盘快捷键目前列为后续待开发工作。当前版本请使用输入框旁的锁按钮进行锁定和解锁;待快捷键在 Chrome / Edge 等环境完成兼容性验证后,再在后续版本中正式开放。

环境要求

  • DeepSeek Harness 0.1.0-rc.6 或更新版本;
  • web profile;
  • 基于 Chromium 的现代浏览器(Chrome / Edge 均可)。

安装

方式一:从本仓库 GitHub 安装

dsh plugin --profile web add github:AIFireForAll/dsh-enter-lock

也可以显式使用 Git URL:

dsh plugin --profile web add https://github.com/AIFireForAll/dsh-enter-lock.git

建议锁定到某个 commit 以保证可重复安装:

dsh plugin --profile web add 'github:AIFireForAll/dsh-enter-lock#<commit-sha>'

方式二:从本地目录安装

git clone https://github.com/AIFireForAll/dsh-enter-lock.git
dsh plugin --profile web add ./dsh-enter-lock

验证安装

dsh --profile web --dump-config | grep dsh-enter-lock

应能看到类似输出:

# == dsh-enter-lock
- id: dsh-enter-lock
  name: dsh-enter-lock

安装完成后重启 dsh web 并刷新页面。

使用方法

  1. 启动 DeepSeek Harness Web:

    dsh web
    
  2. 在聊天输入框右下角、模型选择器和发送按钮附近找到锁形按钮。

  3. 锁定 / 解锁方式:

    • 点击输入框右下角的锁形按钮。
  4. 锁定状态下:

    • 普通 Enter:不发送。
    • Ctrl+Enter / Cmd+Enter:不发送。
    • Shift+Enter:仍然插入换行。
    • 输入法组合期间的 Enter:正常用于候选词确认,不受影响。
    • 点击官方发送按钮:仍可发送,锁只防键盘误触。
  5. 锁状态按会话独立保存,刷新页面或重启后自动清除。

配置

插件默认零配置,不需要填写 API Key、设置项或 settings.yaml。锁状态仅保存在浏览器内存中。

功能与限制

  • 锁定状态只保存在浏览器内存中,不写 settings.yaml,不发起网络请求。
  • 插件使用官方 conversation.input.right 槽位,不替换官方 composer。
  • 不干扰其他输入框、按钮、浏览器快捷键或全局快捷键。

疑难排查

输入框旁边看不到锁按钮

  1. 确认插件已挂载:

    dsh --profile web --dump-config | grep dsh-enter-lock
    
  2. 重启 dsh web 并强制刷新页面(Ctrl+F5)。

  3. 确认当前使用的是 web profile。

快捷键无法使用

快捷键功能当前尚未开放,属于后续待开发工作。请使用输入框旁的锁按钮操作。锁状态按会话保存:切换到新会话后,新会话默认是解锁状态。

锁定后仍然“发送”了

  • Shift+Enter 是换行,不是发送。
  • 鼠标点击官方发送按钮是刻意操作,锁不会阻止。
  • 如果输入框中的内容意外发送,请检查锁按钮是否显示为红色填充的锁定状态,以及是否使用了其他 Enter 组合键。

卸载

dsh plugin --profile web remove dsh-enter-lock

开发与构建

安装本仓库不需要构建:lib/ 已提交预构建产物,且没有 prepare / postinstall 脚本。

如需修改源码后重新生成构建产物:

npm run build   # 生成 lib/index.js 与 lib/client.js
npm run check   # 结构检查

目录结构

dsh-enter-lock/
├── package.json          # dsh.bundle + dsh.client 插件声明
├── cordis.patch.yml      # profile bundle patch
├── src/
│   ├── index.js          # Host 半部(无依赖 no-op)
│   └── client.js         # Web 半部:按钮与 Enter 拦截
├── lib/                  # 构建产物
├── scripts/
│   ├── build.mjs
│   └── check.mjs
├── README.md
├── README.en.md
└── LICENSE

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 2cde0ee25952

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout