Skip to content
dsh.fish
Bundle

dsh-esc-enter

opencode-style UX: press Esc to cancel the running turn (Enter-while-busy is already a DSH built-in setting).

Source
Liangebra
License
MIT
Updated
Updated 10 days ago

Readme

# 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

```sh
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

Install

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

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source