Built-ins

task Plugin

task 定义、task actions,以及归属于 plugin 实例的 cron trigger runtime

task Plugin

task 是任务运行时 plugin。

它主要持有:

  • task 相关 actions
  • task system text
  • 每个 plugin 实例一套 cron trigger engine

主要形状

  • lifecycle
  • actions
  • system

它主要解决什么问题

当你需要这些能力时,应该关注 task

  • task 定义和变更
  • cron 触发的 task 执行
  • task 变更后的 scheduler reload

用户怎么使用

CLI 通过统一 Plugin Action 命令调用 task:

city plugin action task list <agent_id> --input '{}' --token <token>
city plugin action task run <agent_id> --input '{"title":"daily-summary","reason":"manual check"}' --token <token>

如果一件事应该长期存在、可编辑、可手动重跑,使用 task Plugin,而不是建立另一个顶层 CLI 特例。

SDK 装配

TaskPlugin 只需要可选时区配置。agent task 直接使用任务绑定 Session 的有效模型(Session 优先、Agent 兜底)。cron 默认采用当前运行机器的本机时区:

import { TaskPlugin } from "@downcity/plugins/task";

const plugin = new TaskPlugin({
  timezone: "Asia/Shanghai",
});

timezone 主要影响 cron 表达式。time:<ISO8601-with-timezone> 这种一次性任务以 ISO 字符串自身的时区 offset 为准。

SDK action 用法

await agent.plugins.run_action({
  plugin: "task",
  action: "run",
  payload: {
    title: "daily-summary",
    reason: "manual check",
  },
});

action 名称是 listcreaterundeleteupdatestatusenabledisable

关键语义

  • 长期 cron runtime 归属于 plugin 实例
  • cron 时区来自 constructor timezone,默认本机时区
  • agent task 通过 PluginContext 的 Session runtime port 读取有效模型实例
  • create / update / delete / status 变更后会触发 scheduler reload
  • task 运行中锁归属于 plugin 实例,reload 时也会保持同一 task 串行执行
  • plugin 也支持 reload / reschedule 这类 lifecycle command

公开性说明

TaskPlugin@downcity/plugins 包根导出。它可以在 SDK 中直接装配;CLI 使用统一的 city plugin action 调用它。

相关文档