
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-composer-keys
Advanced tools
为 DeepSeek Harness Web 的聊天输入框自定义发送、换行与打断键位,并提供可隔离切换的键位方案(内置 2 套 + 自定义 ≤3 套);适配 DSH 0.1.7-rc.1/rc.2(兼容 ≤0.1.6),默认保持 DSH 原生行为,忙碌时的排队/转向语义仍由原生「繁忙时 Enter 键行为」设置决定。Customizable send/newline/interrupt key bindings with isolated scheme presets for the DeepSeek H
把「发送 / 换行 / 打断」分配给你顺手的键 / 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 个自定义方案(「+ 添加自定义预设」快照当前键位,芯片尾部 × 单独删除);composer-keys 命名空间——与主题、语言等原生偏好同一条通道,重启保留、跨设备跟随用户文档。写入为原子单次提交并带确认门,回显与本地不一致时不会把乐观状态弹回旧值。这是本插件最重要的设计边界:两层机制正交,互不冲突。
| 层 | 归属 | 管什么 |
|---|---|---|
| 手势 → 动作 | 本插件 | 哪个键触发「发送」、哪个键触发「换行」 |
| 动作 → 忙碌语义 | DSH 原生 | 智能体忙碌时提交是「排队」还是「转向」(即原生的 busy-Enter 设置) |
具体衔接规则:
一句话总结:插件决定"哪个键发送",原生设置决定"忙碌时发送意味着什么"。
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
DSH 原生 / 微信风格 / 你的自定义方案一键切换;「+ 添加自定义预设」把当前完整键位存为新方案(最多 3 个),芯片尾部 × 删除该方案。方案切换与编辑互相隔离,详见特性一节。window.__ModuleLoader__.load({id, factory})),无构建步骤。纯手势/方案引擎在文件顶部并暴露测试钩子,Node 测试直接评估真实源码。Config(send/newline/interrupt/presets/builtinSchemes)。0.1.7 的设置命名空间由条目 id + Config 的 volatile 字段派生;≤0.1.6 走遗留的 settings.register。设置服务从不列入顶层 inject(否则整插件会卡 pending),一律用可选嵌套注入。__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 的顺序兜底解析,全部失败时会把尝试过的路径直接打进终端;按打印的清单补齐依赖即可。
[data-input-scroll]),拦截可能失效——失效模式是"插件静默不生效",不会破坏原生功能。Lexical 换行适配依赖 __lexicalEditor、_commands 与命令的 type 标签;插件不会绕过编辑器直接改 DOM。--dsw-alias-*),深浅色随主题自动切换,仅保留浅色兜底。dsh web 才能加载新的插件代码(浏览器侧需硬刷新)。npm test
测试用 Node 内置测试运行器直接评估 client.js 的真实源码,无需构建、无第三方依赖。覆盖:手势归一化、绑定解析(含 mod 别名)、动作解析、零干预等价判定、互斥迁移、脏数据清洗(绑定/自定义方案/内置方案覆盖)、方案匹配与回写、当前会话解析回退链、显示格式化(当前共 24 例)。
语法检查:
node --check client.js
MIT
FAQs
为 DeepSeek Harness Web 的聊天输入框自定义发送、换行与打断键位,并提供可隔离切换的键位方案(内置 2 套 + 自定义 ≤3 套);适配 DSH 0.1.7-rc.1/rc.2(兼容 ≤0.1.6),默认保持 DSH 原生行为,忙碌时的排队/转向语义仍由原生「繁忙时 Enter 键行为」设置决定。Customizable send/newline/interrupt key bindings with isolated scheme presets for the DeepSeek H
We found that dsh-composer-keys demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.