AstrBot 异步任务通知插件 —— 让 Agent 在后台执行耗时命令,完成后自动推送结果。
- 将耗时 Shell 命令包装为异步任务,后台执行不阻塞对话
- 任务完成/失败/超时后自动推送结果到对应会话
- 支持 LLM 工具调用(Agent 自动创建)和 指令操作(管理员手动使用)两种方式
- 并发任务数控制、输出截断、可配置超时策略
在 AstrBot 插件管理页面搜索 async_task 安装,或手动将本目录放置到 data/plugins/ 下。
依赖:AstrBot >= 4.5.0
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
default_timeout |
int | 60 | 默认任务超时时间(秒) |
max_concurrent_tasks |
int | 5 | 最大同时执行任务数 |
output_max_length |
int | 500 | 推送消息中输出结果的最大字符数 |
auto_notify |
bool | true | 任务完成后是否自动推送通知 |
timeout_action |
string | "ask" | 超时行为:ask(通知并终止)/ wait(继续等待一轮)/ abort(静默终止) |
所有指令仅限管理员使用。
| 指令 | 别名 | 说明 |
|---|---|---|
/async <命令> |
/run <命令> |
创建异步任务并执行指定命令 |
/async_list |
/tasks |
查看所有任务状态 |
/async_del <ID> |
/task_del <ID> |
删除/取消指定任务 |
/async_result <ID> |
/task_result <ID> |
查看指定任务的执行结果 |
Agent 可通过以下工具自动管理任务:
| 工具名 | 说明 |
|---|---|
async_create_task |
创建异步任务,参数:command, description, timeout |
async_query_task |
查询单个任务状态,参数:task_id |
async_query_all_tasks |
查询所有任务列表 |
async_cancel_task |
取消并删除任务,参数:task_id |
指令方式:
/async python batch_process.py --input /data --output /result
Agent 自动调用: 当 Agent 判断命令耗时较长时,会自动创建异步任务,完成后主动推送结果:
✅ 异步任务完成
任务ID: #3
命令: python batch_process.py --input /data --output /result
耗时: 47s
输出:
> Processing 17 files...
> Done. Output saved to /result/
- 任务数据存储在内存中,插件重启后清空(持久化计划在后续版本)
ask超时模式当前行为等同于abort(用户交互功能待完善)- Shell 命令未做输入过滤,仅限管理员使用
MIT