自由分配发送、换行与打断的组合键
29.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/zlqd123/dsh-composer-keys.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 40 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 自定义发送与换行键位
- 任意组合键自由分配
- 双预设一键切换
为 DeepSeek Harness Web 聊天输入框自定义「发送」与「换行」键位:任意组合键自由分配、双预设一键切换、用户设置文档持久化、深浅色主题自适应。AI 生成的社区插件(AI-generated)。
README
由 DeepSeek 最新模型翻译生成dsh-composer-keys
把「发送 / 换行 / 打断」分配给你顺手的键 / Send, newline & interrupt — bound to the keys you like
v0.1.3 · 适配 DSH 0.1.7-rc.1 / rc.2(同时通过双路径兼容 ≤0.1.6 的旧设置面)
⚠️ 维护状态 · Maintenance notice:DSH 已有快捷键编辑界面(Settings → 快捷键)。若官方后续推出可自定义「发送 / 换行 / 打断」的同类功能,本项目将停止维护(归档,不再适配新版本 DSH)。
dsh-composer-keys 是 DeepSeek Harness Web 前端的输入框按键自定义插件:把 Enter、Ctrl/Cmd+Enter、Shift+Enter 或任意自定义组合键自由分配给「发送」「换行」「打断」三个动作,并提供可隔离切换的键位方案(预设)。
默认保持 DSH 原生行为——装上插件后一切照旧,只有你主动改绑(或点预设)才会变化。
展开完整文档(README 剩余 1 节)
dsh-composer-keys
把「发送 / 换行 / 打断」分配给你顺手的键 / Send, newline & interrupt — bound to the keys you like
v0.1.3 · 适配 DSH 0.1.7-rc.1 / rc.2(同时通过双路径兼容 ≤0.1.6 的旧设置面)
⚠️ 维护状态 · Maintenance notice:DSH 已有快捷键编辑界面(Settings → 快捷键)。若官方后续推出可自定义「发送 / 换行 / 打断」的同类功能,本项目将停止维护(归档,不再适配新版本 DSH)。
dsh-composer-keys 是 DeepSeek Harness Web 前端的输入框按键自定义插件:把 Enter、Ctrl/Cmd+Enter、Shift+Enter 或任意自定义组合键自由分配给「发送」「换行」「打断」三个动作,并提供可隔离切换的键位方案(预设)。
默认保持 DSH 原生行为——装上插件后一切照旧,只有你主动改绑(或点预设)才会变化。
版本兼容
| DSH 版本 | 状态 | 设置持久化通道 |
| 0.1.7-rc.2 | ✅ 适配 | configForms + 条目 volatile Config 派生命名空间 |
| 0.1.7-rc.1 | ✅ 适配(本版本主目标) | configForms + 条目 volatile Config 派生命名空间 |
| ≤ 0.1.6 | ✅ 兼容(遗留路径) | settingsScope.bind / settings.register |
两个世代的差异全部在插件内部做特性检测,升级无需改配置。
特性
- 三通道自由分配:「发送」「换行」「打断」各自绑定任意一组组合键;同一按键不能同时属于多个动作(录制时自动迁移,优先级:发送 > 换行 > 打断)。
- 方案隔离的快速预设:
- 内置 DSH 原生、微信风格,外加最多 3 个自定义方案(「+ 添加自定义预设」快照当前键位,芯片尾部 × 单独删除);
- 每个方案是完整的三通道(发送+换行+打断),点预设 = 整体切换为该方案自己的键位,方案之间互不串值;
- 在某方案下录制/删除按键会自动回写该方案,切走再切回永远完整恢复;不匹配任何方案的键位视为自由态,只改当前不落方案。
- 任务打断:「打断」中断当前打开会话正在运行的任务,等同于输入框的停止按钮——走同一条原生取消管线(含子代理地址路由)。任务运行时在页面任意位置生效;对话框/菜单/本插件面板打开时让路;空闲时按下不吞键、零副作用,并在控制台打印跳过原因。默认无绑定。
- Shift+Enter 永远安全:默认换行键恒放行给原生处理器(任何绑定状态下都不可能被插件吞掉);自定义换行键才由插件接管(Lexical 命令身份对象 dispatch,草稿/选区/撤销历史保持同步)。
- 两处入口:Settings → General 的「输入框按键」一行;聊天输入框工具行右侧的小键盘按钮。两者打开同一个配置面板。
- 持久化:键位与方案存入 DSH 用户设置文档的 composer-keys 命名空间——与主题、语言等原生偏好同一条通道,重启保留、跨设备跟随用户文档。写入为原子单次提交并带确认门,回显与本地不一致时不会把乐观状态弹回旧值。
- 即时生效:改绑后无需刷新页面。
与原生「繁忙时 Enter 键行为」设置的关系
这是本插件最重要的设计边界:两层机制正交,互不冲突。
| 层 | 归属 | 管什么 |
| 手势 → 动作 | 本插件 | 哪个键触发「发送」、哪个键触发「换行」 |
| 动作 → 忙碌语义 | DSH 原生 | 智能体忙碌时提交是「排队」还是「转向」(即原生的 busy-Enter 设置) |
具体衔接规则:
1. 命中「发送」的手势会被重放为一个合成的普通 Enter 键事件,由 DSH 原生的提交管线完成发送——斜杠菜单仲裁、空草稿防抖、忙碌时的排队/转向判断全部保持原生逻辑;
2. 只要键位偏离出厂默认,所有发送键(含 Ctrl/Cmd+Enter)统一遵循原生设置的「本值」行为——忙碌时按主设置排队或转向,不再保留 Ctrl/Cmd+Enter 的"另一行为"反向特性;
3. 仅当键位保持出厂默认时,插件完全不介入,一切手势保持纯原生;
4. 插件面板中的说明文字也写明了这一关系。
一句话总结:插件决定"哪个键发送",原生设置决定"忙碌时发送意味着什么"。
安全与边界
- 零干预默认:键位等于出厂默认时,所有原生手势直接放行,插件对页面没有任何行为影响;一旦改绑(含预设),已绑定的发送手势统一接管并按普通 Enter 重放;Shift+Enter 换行恒放行;打断手势仅在任务运行时触发。
- 输入法安全:中文/日文等 IME 组合输入期间的按键(选字)永远不会被拦截。
- 范围最小:发送/换行只作用于主聊天输入框(依赖其稳定的 DOM 锚点,含内层元素上溯识别);打断虽是页面级监听,但对话框/菜单/本插件面板打开时完全让路,空闲时也不吞任何键。
- 无循环风险:插件自己重放的合成事件通过 isTrusted=false 识别并放行。
- 优雅降级:configForms/settingsScope(持久化)、uiSession(打断的实时状态)等服务不可用时,对应能力自动降级(会话内记忆 / 基线回退),键盘引擎照常工作。
安装
从本地 checkout 安装(安装方式为符号链接,改源码重启即生效):
dsh plugin --profile web add ./dsh-composer-keys
重启 dsh web 后生效;若浏览器仍表现异常,请硬刷新(Ctrl+Shift+R,模块 URL 有缓存)。卸载:
dsh plugin --profile web remove dsh-composer-keys
使用
1. 打开 Settings → General 找到「输入框按键」行(或点击输入框右下角的小键盘图标),点「配置…」;
2. 在「发送」「换行」「打断」区块点「+ 录制按键」,然后按下想要的组合键(Esc 取消;录制打断键时按 Esc 即绑定 Esc,取消改为再点一次按钮);
3. 点击已录制键位标签上的 × 可移除;
4. 底部预设区:DSH 原生 / 微信风格 / 你的自定义方案一键切换;「+ 添加自定义预设」把当前完整键位存为新方案(最多 3 个),芯片尾部 × 删除该方案。方案切换与编辑互相隔离,详见特性一节。
工作原理
- 浏览器半件:手写 lazy-CJS bundle(window.__ModuleLoader__.load({id, factory})),无构建步骤。纯手势/方案引擎在文件顶部并暴露测试钩子,Node 测试直接评估真实源码。
- 宿主半件:导出带 volatile 标记的 Config(send/newline/interrupt/presets/builtinSchemes)。0.1.7 的设置命名空间由条目 id + Config 的 volatile 字段派生;≤0.1.6 走遗留的 settings.register。设置服务从不列入顶层 inject(否则整插件会卡 pending),一律用可选嵌套注入。
- 「发送」 = 重放合成普通 Enter(见上文两层语义)。
- 「换行」 = 默认 Shift+Enter 恒放行原生;自定义换行键在 DSH ≥0.1.5 的 Lexical 编辑器中沿 DOM 上溯取 __lexicalEditor,从命令注册表取出 INSERT_LINE_BREAK_COMMAND 对象本身并 dispatch(命令按对象身份匹配,不能用名字字符串),失败时依次回退到合成 Shift+Enter、execCommand、textarea value-setter。
- 「打断」 = 解析当前会话(复刻官方 uiSession.publishMain 顺序:跟踪的 current + 主视图保留 → 主视图行 → 兼容回退,见 resolveCurrentSessionId),忙碌判定读 uiSession.sessionStatus 合并视图(Host 基线 + 状态事件),再调用与停止按钮完全相同的取消入口 scope(id).get('conversation').cancel()——子代理地址路由、错误展示与原生一致。
- 持久化 = mutate 原子单写 + 每条流的确认门(回显匹配才放行,矛盾回显忽略,被拒写入告警后如实采纳)。
故障排查
控制台(F12)按时间线自诊断,每一步都有日志:
加载时 [composer-keys] page-wide interrupt engine installed; ... boot: [...]
通道变化 [composer-keys] interrupt channel → escape (录制 / 从文档采纳)
按下后 [composer-keys] interrupt fired (成功)
[composer-keys] interrupt skipped: <原因> (yield / not-running / no-current-session (open: N) / ...)
写入 [composer-keys] Host rejected the ... write (被 Host 拒绝,随后回退是如实行为)
地面真相文件(服务端实际值):~/.dsh/profiles/web/cordis.patch.yml 中的 - id: composer-keys 条目;注册状态看同目录 package.json(dependency + dsh.profile.bundles)。若 dsh plugin 命令卡住,检查 package.json.lock 是否为已死进程的残留锁。
启动时报 composer-keys (dsh-composer-keys): failed to import:宿主半件没能在装载时拿到 @deepseek-ai/schemastery(0.1.7-rc.2 起 Loader 只回显这一句,不带原因)。符号链接安装(link:)最容易触发——Node 会先把链接 realpath 回源码目录再解析裸依赖。index.js 已按 DSH_PROFILE_DIR → DSH_HOME/profiles/<profile> → dsh 入口进程 → cwd 的顺序兜底解析,全部失败时会把尝试过的路径直接打进终端;按打印的清单补齐依赖即可。
已知限制
- DSH 大版本升级若改变输入框 DOM 结构(目前锚点是 [data-input-scroll]),拦截可能失效——失效模式是"插件静默不生效",不会破坏原生功能。Lexical 换行适配依赖 __lexicalEditor、_commands 与命令的 type 标签;插件不会绕过编辑器直接改 DOM。
- 面板样式全部引用 DSH 官方语义 token(--dsw-alias-*),深浅色随主题自动切换,仅保留浅色兜底。
- 需要重启 dsh web 才能加载新的插件代码(浏览器侧需硬刷新)。
开发
npm test
测试用 Node 内置测试运行器直接评估 client.js 的真实源码,无需构建、无第三方依赖。覆盖:手势归一化、绑定解析(含 mod 别名)、动作解析、零干预等价判定、互斥迁移、脏数据清洗(绑定/自定义方案/内置方案覆盖)、方案匹配与回写、当前会话解析回退链、显示格式化(当前共 24 例)。
语法检查:
node --check client.js
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
zlqd123/dsh-composer-keys
自由分配发送、换行与打断的组合键
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目