dsh-esc-enter
文件与数据 活跃维护

dsh-esc-enter

Liangebra/dsh-esc-enter

支持Esc键终止WebUI运行中请求,同时内置适配忙时Enter按键的逻辑规则,操作逻辑贴合OpenCode风格,无需额外配置即可直接使用。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
12 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Liangebra/dsh-esc-enter
git clone https://github.com/Liangebra/dsh-esc-enter.git
git clone git@github.com:Liangebra/dsh-esc-enter.git
README.md main

dsh-esc-enter

opencode 式 UX:Esc 取消当前任务 + composer 追加/停止按钮 — DeepSeek Harness Web UI 插件。

Press Esc while the agent is running to cancel the current turn — the same action as the Stop button (Session.cancel()), keeping queued work for later turns.

Esc 取消当前回合(与"停止"按钮同机制,队列里未跑的工作保留到下一回合)。运行时在输入框旁的 dock 槽渲染 追加 / 停止 两个按钮。

特性 / Features

  • Esc = 退出当前任务:agent 运行中按 Esc 立即取消当前回合
  • 追加按钮:agent 运行中把当前输入框草稿提交为队列指令(inputActions.submit(),busy-append 路径)——不打断当前回合,草稿为空时禁用
  • 停止按钮:agent 运行中取消当前回合(session.cancel(),同宿主停止/Esc 机制)
  • 两按钮仅运行中显示(与 Esc 守卫一致),空闲时隐藏保持 composer 干净
  • Enter 行为不重复实现:busy 时 Enter 是"追加指令"(queue)还是"打断"(steer),由 DSH 内置的「Enter behavior while busy」设置负责
  • 空闲时不拦截 Esc:命令菜单 / 弹层照常关闭
  • 挂载于 conversation.composer.dock 槽,无宿主逻辑,纯客户端

安装 / Install

dsh plugin --profile web add github:Liangebra/dsh-esc-enter

重启 dsh web 并硬刷新浏览器(Ctrl/Cmd+Shift+R)。

工作原理 / How it works

Client bundle 监听 conversation.composer.dock 槽位:

  • 当 ConversationSnapshot.running === true 时,渲染「追加 / 停止」两个按钮,并注册 document 级 capture 阶段的 keydown 监听,命中 Esc 即调用 sessions.binding(sessionId).session.cancel()(与停止按钮同一路径)。
  • 「追加」按钮调槽位标准 prop inputActions.submit()(提交当前草稿,busy 时按 DSH 的 queue 语义追加到待发队列);草稿为空时禁用。
  • 「停止」按钮调用 sessions.binding(sessionId).session.cancel();空闲时两按钮与 Esc 监听一并撤销。

协议 / License

MIT