drscrewdriver/dsh-input-traffic

插件 ⭐ 2 MIT web-ui

打断并输入和下一轮插入不再二选一 支持红色打断插入 黄色下一自然轮插入和绿色待整个逻辑执行完成后输入 并支持邻近高峰期冻结会话在非工作高价时间再继续会话 traffic policy of woring session stream cut in slide in inputs

安装

## 三档语义

| 档位 | 颜色 | 语义 | 底层机制(dsh 现有 RPC 组合) |
|---|---|---|---|
| **later**(默认) | 绿 | 排队:上一轮输入的动作都结束后再处理;对已插话(黄色)的消息点绿 = **撤销插入,收回排队** | Enter 默认 queue → `agent.followup()`(next-turn);收回 = `updateQueue(remove)` + `send(text)` |
| **next** | 黄 | 下一自然轮插入:当前正在执行的动作结束后插入 | `updateQueue(id, { kind: 'steer' })` → `agent.steer()`(next-step 步骤边界) |
| **now** | 红 | 打断并输入:停止当前轮次,消息立即被处理 | `cancel()` → `updateQueue(remove)`(避免 inbox 重复插入拒绝)→ `send(text)`(重新提交,唤醒 driver 立即处理) |

> 红色为什么是 cancel + remove + resend:harness 的 inbox 禁止重复插入同一条消息,打断后直接 steer 会被拒绝导致消息滞留(详见「常见问题」)。

## 会话冻结 / 恢复(高峰期暂停)

输入框右侧(发送按钮旁)的「冻结会话 / 恢复会话」按钮,用于即将进入 DeepSeek 高峰收费时段时暂停 API 消耗:

- **冻结**:当前轮次**不打断**、自然完成后暂停;未发送队列被冻结保存(从等待区移除);等待区显示「已冻结」横幅;
- **恢复**:冻结的排队消息重新入队,agent 按 FIFO 继续处理;
- 引擎实现:冻结 = 逐条 `updateQueue(remove)` 分离队列(纯文本副本存于插件 store),当前轮次完成后 driver 因无 pending 自然停止;恢复 = 逐条 `send(text)` 重新提交并唤醒 driver;
- 注意:含非文本内容(图片)的排队消息无法重发,冻结时会随队列释放(不会恢复)。

## 队列管理

等待区每条消息(未冻结时)提供:

| 操作 | 说明 |
|---|---|
| 上移 / 下移 | 调整 FIFO 顺序(整个队列按新顺序重建;含图片消息时禁用) |
| 打回输入框编辑 | 消息内容回填 composer 输入框并从队列移除,编辑后重新发送 |
| 编辑 / 删除 | 多行文本区直接修改排队内容 / 取消该消息 |
| 红 / 黄 / 绿规划 | 见「三档语义」 |
| 取消并清空 | 停止当前执行并清空全部排队消息 |

编辑排队消息(行内编辑)时:

- **自动扩展**:编辑区随内容实时增高,长消息完整展开,上限约 8 行,超出后内部滚动;
- **快捷键**:`Enter` 保存,`Shift+Enter` 换行,`Esc` 取消(中文输入法组合期间不会误保存);
- **失败兜底**:保存时若消息已被 agent 认领(如「已经开始发送」),编辑内容自动退回主输入框并提示,**不会丢失**;仅当主输入框为空时回填,已有草稿不被覆盖。

## 安装

drscrewdriver/dsh-input-traffic 加入你的 DSH 配置(web profile)即可启用。

README

展开完整 README 收起

README 内容为空。