kuyueliuhun-ctrl/dsh-command-queue ↗★ 0
dsh-command-queue
在Agent忙碌时将斜杠命令排队延迟执行 适合经常在Agent运行中发送控制命令并希望其自动排队执行的用户。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kuyueliuhun-ctrl/dsh-command-queue说明文档
阅读完整 README ↗使用
浏览器队列面板
挂在原生消息队列同一个槽位 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