前言¶
DSH(DeepSeek Harness)采用插件化架构,生态中存在多种工作流插件。开发者常需要处理定时任务或后台任务,而不希望这些操作阻塞当前的前台会话。autoqueue 是一款由 alin-ever 维护的工作流类插件,旨在将 Markdown 任务交给队列,由 DSH 后台自动派发、反阻塞、重试、结算并归档。
该插件的核心设计是调度器与任务的分离:调度器负责定时触发(如 cron),到点时自动创建即时任务;即时任务则执行一次性的具体工作,拥有完整的状态机生命周期。两者互不干扰,确保正常任务不打扰用户,队列任务不改变普通前台会话的运行状态。
核心功能¶
根据已核实的事实,该插件包含以下核心能力:
- 调度与执行分离:调度器不进入状态机,不执行;即时任务拥有完整的状态流转。
- 定时触发:支持通过 cron 表达式或
schedule字段设定触发时间。 - 状态机管理:任务具备
pending、running、done、failed、stopped、interrupted六种状态。 - 会话隔离与权限控制:每次执行使用独立的专属会话 ID 和运行目录,不干扰普通 Host 会话。
- 无人值守执行:执行模式严格限制,默认最大并发为 1。
- React 看板界面:提供任务、调度、归档三个独立标签页的监控界面。
- 文件收件箱机制:支持直接将 Markdown 文件丢入队列目录以创建任务。
- 自动注入工具:插件加载后自动向普通 Host 会话注册 19 个
autoqueue_*Host 工具。 - HTTP API 与 OpenAPI:提供完整的 RESTful API 和 OpenAPI 3.1 文档接入。
安装与配置¶
安装¶
通过官方提供的安装命令添加插件:
dsh plugin --profile web add -w @alintever/dsh-plugin-autoqueue@latest
兼容性¶
- 基线版本:插件经过审计和自测的精确基线是
@deepseek-ai/dsh 0.1.5-rc.1。 - 清单范围:插件清单接受
>=0.1.1-rc.2 <0.1.6。升级 DSH 后建议重新运行单元测试和 Playwright。 - 依赖:
@deepseek-ai/dsh-sandbox-policy、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-user-approval跟随 DSH 引擎版本范围。
配置¶
对于远程部署或反向代理场景,必须配置鉴权参数:
config:
allowedHosts:
- queue.example.com
apiToken: "replace-with-a-long-random-secret"
也可以通过环境变量提供 token:DSH_AUTOQUEUE_TOKEN 或 AUTOQUEUE_API_TOKEN。一旦设置 token,本地访问 localhost 也必须携带鉴权头。
使用方法¶
1. 通过 API 创建任务¶
使用 POST /api/queue/task 创建即时任务:
curl -X POST http://127.0.0.1:3080/api/queue/task \
-H 'Content-Type: application/json' \
-d '{
"requestId": "my-001",
"key": "daily-report",
"content": "# 生成日报\n\n收集今天的工作数据,输出 report.md",
"priority": 5,
"autoArchive": true,
"enableNotifications": false
}'
2. 通过 API 创建调度器¶
在请求体中包含 cron 或 schedule 字段即可创建调度器:
curl -X POST http://127.0.0.1:3080/api/queue/task \
-H 'Content-Type: application/json' \
-d '{
"requestId": "my-002",
"key": "weekly-insight",
"content": "# 生成周报\n\n汇总本周代码提交与 issue 进展",
"cron": "0 9 * * 1",
"priority": 5
}'
调度器到点时会自动创建即时任务,即时任务继承调度器的配置。
3. 通过文件收件箱¶
队列目录默认为 ~/.dsh/queue/tasks/。文件名作为 key,正文作为任务内容。文件头支持声明调度方式:
echo "# 生成日报" > ~/.dsh/queue/tasks/daily-report.md
Markdown 文件头示例:
<!-- cron: 0 8 * * 1-5 -->
<!-- deadline: 0 21 * * * -->
# 每日工作报告
4. 使用看板¶
安装后,在 DSH Web 侧边栏点击「任务工作台」。看板提供任务/调度/归档三个标签页,支持查看状态、编辑(非运行中)、停止、重跑、归档等操作。
安全与隔离¶
autoqueue 严格限制执行模式,确保不干扰主进程:
- 会话隔离:每次 attempt 使用独立的运行目录和专属会话 ID(
autoqueue-session-<uuid>),Runner 拒绝读写非本命名空间的会话。 - 执行模式:使用
autoqueue-unattended-v2preset,禁用提问、jobs、subagent/fork/control/list、workflow、Ralph。bash/pwsh强制enableRunInBackground:false。 - 权限固化:会话创建后,
approvalPolicy被固化为never并持久化验证。 - Host 工具隔离:插件向普通 Host 会话注入 19 个
autoqueue_*工具,但这些工具在autoqueue-session-*自有任务 Agent 中被隐藏,执行层 Guard 也会拒绝绕过可见性的工具调用。
适用场景¶
该插件适合需要自动化处理后台任务的场景,例如:
- 定时生成日报、周报。
- 需要持久化、可重试的批量数据处理。
- 不希望打断当前用户交互的自动化流程。
结语¶
autoqueue 为 DSH 提供了一套完整的无人值守任务队列方案。它通过调度器与任务的分离设计,配合严格的会话隔离机制,实现了在后台静默执行任务的能力。通过文件收件箱、HTTP API 和 React 看板,开发者可以灵活地管理任务流。