最近执行
{{recentRuns.length}} 条
| 任务 | 触发 | 状态 | 耗时 | 时间 |
|---|---|---|---|---|
{{taskRunTitle(r)}} |
{{r.triggerType}} | {{r.status}} | {{r.duration!=null?r.duration+'ms':'—'}} | {{fmtTime(r.createdAt)}} |
| 暂无记录 | ||||
系统状态
PostgreSQL
{{health.db?'连接正常':'连接失败'}}
Redis
{{health.redis?'连接正常':'连接失败'}}
Kimi OpenClaw
{{kimiHealth===true?'✓ 在线':kimiHealth===false?'✗ 离线':'点击检测'}}
已加载 Skills
{{skillList.length}} 个
快速操作
Skills
{{skillList.length}} 已加载
{{s.icon}} {{s.name}}
任务定义
{{taskList.total}} 条
| 名称 | Handler | 超时 | 重试 | 标签 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
{{t.name}} ID {{shortId(t.id)}} |
{{t.handler}} | {{t.timeout/1000}}s | {{t.maxRetries}}x | {{tag}} | {{fmtTime(t.createdAt)}} |
|
| 暂无任务 | ||||||
第 {{taskPage}} / {{taskList.totalPages}} 页,共 {{taskList.total}} 条
执行记录
{{runList.total}} 条
| 任务 | {{t('col.trigger')}} | {{t('col.status')}} | {{t('col.retry')}} | {{t('col.progress')}} | {{t('col.duration')}} | {{t('col.createdAt')}} | {{t('col.action')}} |
|---|---|---|---|---|---|---|---|
{{taskRunTitle(r)}} Run {{shortId(r.id)}} |
{{r.triggerType}} | {{r.status}} | {{r.attempt}} |
{{r.progress}}%
|
{{r.duration!=null?r.duration+'ms':'—'}} | {{fmtTime(r.createdAt)}} | |
| {{t('empty.runs')}} | |||||||
第 {{runPage}} / {{runList.totalPages}} 页,共 {{runList.total}} 条
定时调度{{scheduleList.total}}
| 名称 | 任务 | Cron 表达式 | 时区 | 最后运行 | 状态 | 操作 |
|---|---|---|---|---|---|---|
{{s.name}} {{s.id.slice(0,12)}}… |
{{taskNameById(s.taskId)}} {{shortId(s.taskId)}} |
{{s.cron}} |
{{s.timezone}} | {{s.lastRunAt?fmtTime(s.lastRunAt):'—'}} | {{s.enabled?'启用':'停用'}} |
|
| 暂无调度 | ||||||
触发器{{triggerList.total}}
| 名称 | 类型 | 目标 | Webhook 路径 | 状态 | 操作 |
|---|---|---|---|---|---|
{{t.name}} {{t.id.slice(0,12)}}… |
{{t.type}} | {{triggerTargetName(t)}} {{shortId(t.taskId||t.workflowId)}} |
{{t.webhookPath||'—'}} | {{t.enabled?'启用':'停用'}} |
|
| 暂无触发器 | |||||
工作流{{workflowList.total}}
| 名称 | 状态 | 步骤数 | 触发器 | 版本 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
{{w.name}} ID {{shortId(w.id)}} |
{{w.status}} | {{w.steps?w.steps.length:'—'}} | {{w.triggers?w.triggers.length:'—'}} | v{{w.version}} | {{fmtTime(w.createdAt)}} |
|
| 暂无工作流 | ||||||
工作流执行记录{{wfRunList.total}}
| 工作流 | 触发 | 当前步骤 | 状态 | 开始时间 | 结束时间 | 操作 |
|---|---|---|---|---|---|---|
{{workflowRunTitle(r)}} Run {{shortId(r.id)}} |
{{r.triggerType}} | {{currentStepLabel(r)}} | {{r.status}} | {{fmtTime(r.startedAt)}} | {{r.finishedAt?fmtTime(r.finishedAt):'—'}} | |
| 暂无记录 | ||||||
待确认通知
{{ackNotifList.length}} 待确认
{{n.title}}
{{n.body}}
{{n.lastError}}
{{n.status}}
{{fmtTime(n.lastAttemptAt)}}
站内通知{{counts.unread}} 未读
| 标题 | 内容 | 事件 | 时间 | 操作 | |
|---|---|---|---|---|---|
| {{n.level}} | {{n.title}} |
{{n.event}} | {{fmtTime(n.createdAt)}} | ||
| 暂无通知 | |||||
{{s.icon||'🔧'}}
{{s.label}}
{{s.name}}
v{{s.version}}
{{s.description}}
配置字段
{{key}}
:{{field.type}}
*
示例
{{ex.label}}
输出:
{{f}}
加载于 {{fmtTime(s.loadedAt)}}
通知渠道
| 名称 | 类型 | 状态 | 规则数 | 操作 |
|---|---|---|---|---|
| {{c.name}} | {{c.type}} | {{c.enabled?'启用':'停用'}} | {{c.rules?c.rules.length:0}} |
|
| 暂无渠道,添加钉钉/飞书/企业微信 Webhook | ||||
通知规则事件 → 渠道 的映射关系
| 事件 | 渠道 | 状态 | 操作 |
|---|---|---|---|
| {{r.event}} | {{channelList.find(c=>c.id===r.channelId)?.name||r.channelId.slice(0,8)+'…'}} | {{r.enabled?'启用':'停用'}} |
|
| 暂无规则 | |||
🤖 {{t('ai.title')}}
{{t('ai.baseUrlHint')}}
{{t('ai.keyHint')}}
{{aiTestResult.msg}}
{{t('ai.callbackTitle')}}
{{t('ai.callbackHint')}}
{{t('ai.callbackHint')}}
POST /api/v1/callback/:token/progress
POST /api/v1/callback/:token/complete
POST /api/v1/callback/:token/fail
🤖 Kimi OpenClaw 集成状态
Gateway 状态
{{kimiHealth===true?'在线':kimiHealth===false?'离线':'未检测'}}
http://192.168.1.114:18680
快速测试
Wake 通知:
Agent 执行:
POST /hooks/wakeAgent 执行:
POST /hooks/agent
在 设置 → 通知渠道 中添加 kimi 类型渠道,
然后在 通知规则 中绑定事件(如 task:failed),即可在任务失败时自动通知 Kimi。
以下是系统内置 Handler,创建任务时选择对应 Handler 并填写 Config JSON。
{{h.name}}{{h.label}}
{{h.desc}}
Config 示例:
{{h.example}}
{{h.note}}
➕ 自定义 Handler
在代码中实现
ITaskHandler 接口,并在 src/index.ts 中调用 registerHandler(new MyHandler()) 注册。// src/core/executor/handlers.ts 添加:
export class MyHandler implements ITaskHandler {
name = 'my-handler' // Handler 唯一标识
async execute(ctx: ExecutorContext): Promise<TaskExecutionResult> {
const { url } = ctx.config as { url: string }
// ... 你的逻辑
return { success: true, output: { result: '...' }, duration: 0 }
}
}
// src/index.ts 注册:
registerHandler(new MyHandler())
服务状态
PostgreSQL{{health.db?'连接正常':'连接失败'}}
Redis{{health.redis?'连接正常':'连接失败'}}
HTTP Server0.0.0.0:3000
时区Asia/Shanghai
队列并发5
API 文档
Base URL:
任务: POST /tasks GET /tasks POST /tasks/:id/run GET /task-runs
调度: POST /schedules PATCH /schedules/:id
触发器: POST /triggers POST /triggers/:id/fire POST /webhooks/*
工作流: POST /workflows POST /workflows/:id/trigger GET /workflow-runs
通知: GET /notifications POST /notifications/read-all
渠道: POST /notification-channels POST /notification-rules
http://{{location.hostname}}:3000/api/v1任务: POST /tasks GET /tasks POST /tasks/:id/run GET /task-runs
调度: POST /schedules PATCH /schedules/:id
触发器: POST /triggers POST /triggers/:id/fire POST /webhooks/*
工作流: POST /workflows POST /workflows/:id/trigger GET /workflow-runs
通知: GET /notifications POST /notifications/read-all
渠道: POST /notification-channels POST /notification-rules