技能标识:longtask_system
|
核心原则:保持自动化运行。任一环节断链(Agent 离线、CLI 失败等)都会打断自动化流程并标记任务失败。为此引入 Agent Inbox 作为 fallback 机制,支持原子级进度记录和崩溃后重启续做。
解决长任务执行中的睡着、跳步、上下文丢失问题。
daemon.sh ──▶ taskstate.json ──▶ Agent 执行 ──▶ completestep.sh ──▶ 下一任务
▲ │
└────────────────── 状态更新 ────────────────────────┘
longtask_system/
├── daemon.sh # 守护进程
├── notify_agent.sh # 通知 Agent(CLI/inbox 双模式)
├── consume_inbox.sh # Agent 读取并删除 inbox 任务
├── complete_step.sh # 标记任务完成
├── cockpit_renderer.py # 可视化驾驶舱生成器 (Cockpit Visualizer) ⭐ NEW
├── agents.json # Agent 配置
├── agent_inbox.json # 消息收件箱(CLI 失败时备用)
├── task_template.json # 任务模板
├── tasks/ # 任务文件目录
└── longtask_log/ # 日志目录
编辑 agents.json:
json
{
agents: [
{agentid: bibi, agentname: 笔笔},
{agentid: tutu, agentname: 图图}
]
}
bash
cp tasktemplate.json tasks/mytask.json
bash
注意:OpenClaw 等 Agent 框架在 session 结束时会清理子进程,必须使用 screen 或 setsid 确保 daemon 不被杀掉。
方式1:CLI 直接通知(正常流程)
方式2:Inbox 消费(崩溃恢复/CLI 失败)
bash
if [ -n $TASK_JSON ]; then
# 解析任务信息
TASKNAME=$(echo $TASKJSON | jq -r .task_name)
STEPID=$(echo $TASKJSON | jq -r .step_id)
# 执行任务...
# 标记完成
./completestep.sh $TASKNAME $STEP_ID success
fi
关键:consume_inbox.sh 是读取即删除,防止重复消费。
json
{
taskid: batchwriting_20260313,
description: 批量写作15篇文章,
status: running,
total_steps: 15,
agent_id: bibi,
session_name: main,
max_retry: 0,
steps: [
{
id: 1,
name: 文章1:伊朗警告美国科技公司,
status: pending,
params: {topic: ..., fingerprint: ...}
}
]
}
| 字段 | 说明 | 默认 |
|---|---|---|
| agentid | 执行 Agent | - |
| sessionname |
子任务: pending ──▶ doing ──▶ done
│
▼ (超时或失败)
failed ──▶ pending (重试,若 retry < max_retry)
│
▼ (重试用尽)
任务标记 failed,daemon 退出
超时:doing 状态默认 5分钟 超时(环境变量 TIMEOUT 可调)。
断点续传:重启任务时(status 改回 running):
Session ID 格式:agent:{agentid}:{sessionname}
示例:agent:bibi:main、agent:tutu:main
在任务中指定 agent_id 即可分配给不同 Agent。
bash
jq ... state.json > tmp.json && mv tmp.json state.json
CLI 投递失败时的处理流程:
防重保护:notify_agent.sh 写入 Inbox 前检查是否已存在相同任务,避免重复投递。
全局重试上限:global_retry 字段记录自动复苏次数,超过 3 次不再自动重置,需手动检查。
bash
tail -f longtask_log/daemon.log # 全局守护进程日志
tail -f longtasklog/task任务名.log # 单个任务的独立日志
tail -f longtask_log/trigger.log # 任务触发日志
cat agent_inbox.json | jq # 检查 inbox
cat tasks/任务名.json | jq # 检查任务状态
实时监控任务执行状态的可视化界面。
Cockpit 会在以下情况自动生成/更新:
bash
See preview in GitHub README
以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:
帮我安装 SkillHub 和 longtask-system-1776114804 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 longtask-system-1776114804 技能
skillhub install longtask-system-1776114804
文件大小: 24.01 KB | 发布时间: 2026-4-15 13:17