Built-ins
task Plugin
task 定义、task actions,以及归属于 plugin 实例的 cron trigger runtime
task Plugin
task 是任务运行时 plugin。
它主要持有:
- task 相关 actions
- task system text
- 每个 plugin 实例一套 cron trigger engine
主要形状
lifecycleactionssystem
它主要解决什么问题
当你需要这些能力时,应该关注 task:
- task 定义和变更
- cron 触发的 task 执行
- task 变更后的 scheduler reload
用户怎么使用
当你需要一条可复用的任务定义时,使用 downcity task:
downcity task list
downcity task create --title "daily-summary" --description "Send a daily summary" --when "0 9 * * *" --session-id <sessionId>
downcity task run daily-summary --reason "manual check"
downcity task update daily-summary --status paused
downcity task enable daily-summary
downcity task disable daily-summary
downcity task delete daily-summary如果只是一次性的延迟动作,用 downcity chat send --delay/--time,或者给其他 plugin action 加 --delay/--time。如果这件事应该长期存在、可编辑、可手动重跑,再使用 downcity task。
SDK 装配
TaskPlugin 在任务管理和 script task 场景可以无参使用;agent task 还需要宿主提供运行时模型解析函数。cron 默认采用当前运行机器的本机时区:
import { TaskPlugin } from "@downcity/plugins";
const plugin = new TaskPlugin({
timezone: "Asia/Shanghai",
resolve_session_model: async (session_id) =>
await host_model_runtime.resolve(session_id),
});timezone 主要影响 cron 表达式。time:<ISO8601-with-timezone> 这种一次性任务以 ISO 字符串自身的时区 offset 为准。
SDK action 用法
await agent.plugins.runAction({
plugin: "task",
action: "run",
payload: {
title: "daily-summary",
reason: "manual check",
},
});action 名称是 list、create、run、delete、update、status、enable、disable。
关键语义
- 长期 cron runtime 归属于 plugin 实例
- cron 时区来自 constructor
timezone,默认本机时区 resolve_session_model只返回运行时模型实例,TaskPlugin 不从 AgentContext 读取模型 ID- create / update / delete / status 变更后会触发 scheduler reload
- task 运行中锁归属于 plugin 实例,reload 时也会保持同一 task 串行执行
- plugin 也支持 reload / reschedule 这类 lifecycle command
公开性说明
TaskPlugin 从 @downcity/plugins 包根导出。它可以在 SDK 中直接装配,但更常见的使用路径仍然是 agent runtime 与 downcity task。