前言¶
在 DSH 的开发与运维场景中,与 Hermes 的交互常涉及异步任务分发。如果直接调用,容易出现状态同步滞后或并发冲突。dsh-task-queue 提供了一个队列中枢,通过文件状态管理(queue.json)来协调 DSH 与 Hermes 之间的任务分发、执行与反馈。
是什么¶
这是一个 DSH↔Hermes 协作的缓存梯队任务队列,由 nicecx 维护。它以 queue.json 为单一真相源,利用租约/认领模型管理任务生命周期,并提供了防饿死机制与互斥锁,确保任务调度的有序性。
核心能力¶
- 单一真相源:
queue.json是任务状态的唯一可信来源,所有操作基于此文件。 - 三级优先级队列:任务分为
reset(重启)、approve(审批)、review(评审)三个层级,优先级顺序为 reset > approve > review。 - 租约/认领模型:消费端(Hermes 侧)通过认领任务来执行,避免重复处理。
- 防饿死与原子锁:支持优先级 aging 算法,防止低优先级任务被阻塞;配合原子 busy-mutex 确保高并发下的安全。
- 消费端:由 Hermes 侧的 cron 定时任务(监控门控)负责出队执行。
典型用法¶
本插件与应用层插件协议联动,典型流程如下:
dsh-auto-approver(审批)──┐
dsh-design-review(评审)──┼──入队──▶ dsh-task-queue ──▶ 消费端 ──▶ Hermes
dsh-reset-handoff(重启)──┘
- 审批流程:
dsh-auto-approver将请求放入approvetier。审批通道采用快道同步直调,并共用 busy 锁。 - 评审流程:
dsh-design-review将请求放入reviewtier。消费端出队后写入单槽request.json,Hermes 审核后按 sessionId 路由。 - 重启流程:
dsh-reset-handoff将请求放入resettier(最高优先级)。任务经过门禁后,调用reset_agent.py。
共享机制¶
插件提供了一套共享机制以确保环境一致性:
* 互斥锁:共享 .hermes-busy 文件,用于序列化 Hermes 的调用,防止并发冲突。
* 单一编号源:作为 requestId 的单一编号源,在 docs/ 扫描等场景中保证编号唯一。
安装与启用¶
该插件遵循 MIT 许可证。由于未提供具体的安装命令,建议直接查看源码仓库进行集成。
注意事项¶
- 运行权限:插件以当前 DSH 进程的权限运行,部署前请检查源码逻辑与许可证。
- 容错策略:插件采用 fail-closed 策略,异常情况下会阻止任务继续流转。
- 文档参考:详细的协作契约请参考「二·五 架构总览」(
~/.dsh/DSH-HERMES-CONTRACT.md)。