kuyueliuhun-ctrl/dsh-command-queue ↗★ 0

dsh-command-queue

在Agent忙碌时将斜杠命令排队延迟执行 适合经常在Agent运行中发送控制命令并希望其自动排队执行的用户。

包名
dsh-command-queue
兼容性
待验证
Cordis 依赖范围
>=4.0.0-rc <5
版本
0.2.0
许可证
MIT
最近更新
2026年9月17日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kuyueliuhun-ctrl/dsh-command-queue

使用

浏览器队列面板

挂在原生消息队列同一个槽位 conversation.input.dock 上 (原生 id:"queue" / order:20,本插件 id:"command-queue" / order:30), 所以两条队列上下并排。队列为空时面板完全不渲染(返回 null),零视觉占用。

面板每 1.5s 轮询一次 host 快照;行右侧的按钮可以把一条还没执行的在队命令移除 (被移除的命令不会执行)。

/cmdqueue 命令(纯文本路径)

不想开浏览器面板时,用这个只读命令查看同一份队列:

/cmdqueue
→ 2 command(s) queued for this agent, waiting for it to become idle: /compact, /export
→ No queued commands for this agent.

行为契约:什么时候不排队

以下情况一律保持原行为(立即执行),保证零回归:

  • 不是合法命令语法 —— 第 0 字节不是 /、名称含大写或非法字符(如 /Compact)、只有 /;
  • 命令名在注册表里解析不到 —— 客户端本来就会按「未命中」处理,没必要拖到空闲之后;
  • 命令名在立即执行白名单里 —— 默认 stop / cancel / abort / interrupt / halt, 忙碌时敲 /stop 本该立刻中断,排队会失去意义甚至危险;
  • agent 当前就是 idle;
  • 排队逻辑自身抛错 —— 兜底回落成原行为,绝不吞掉用户命令。

只有「合法 + 已注册 + 未豁免 + agent 正忙」才入队。

配置

无 schema,容错读取,全部可选。写在 profile 的 cordis.patch.yml 里对应条目下:

- id: command-queue
  name: 'dsh-command-queue'
  config:
    verbose: true                    # 打开排队/执行日志(默认 false)
    pollIntervalMs: 250              # host 侧等空闲的轮询兜底间隔,50–5000(默认 250)
    exposeState: true                # 注册给浏览器面板的已鉴权路由(默认 true;false = 纯 host)
    immediateCommands:               # 整体替换默认白名单
      - stop
      - cancel
      - abort
    alwaysImmediateCommands:         # 在(默认或自定义的)白名单上追加
      - my-control-command