定时任务
通过自然语言创建和管理定时任务,包括周期性任务(如每日代码检查)和一次性任务(如明日提交提醒),实现灵活的任务调度与控制。
定时任务命令
| 开发环境 | 命令 | 功能说明 |
|---|---|---|
| TUI | /schedule 自然语言提示词 | 在TUI开发环境中,您可以通过输入/schedule命令,或直接使用自然语言描述来创建定时任务。 |
| CLI | codearts run --command schedule "提示词" codearts run "提示词" | 在CLI开发环境中,您可以通过输入/schedule命令,或直接使用自然语言描述来创建定时任务。 |
通过命令创建的定时任务会立即执行,使用自然语言描述创建的定时任务则不会立即执行。
定时任务配置文件
在码道CLI中运行定时任务依赖以下文件,其中的数据均由系统自动生成。
| 文件类型 | 文件路径 | 说明 |
|---|---|---|
| 任务数据文件(配置文件) | ~/.codeartsdoer/cli-data/cron/scheduled_tasks.json | 存储所有定时任务的定义,包括间隔、提示词、状态等。数据文件包含的具体字段,如表3。 |
| 执行日志文件(执行记录) | ~/.codeartsdoer/cli-data/cron/cron_log/task_{TASK_ID}.json | 记录每个任务的每次执行结果,包括状态、耗时、结果摘要。 |
| 字段 | 取值范围 / 格式 | 说明 | 示例 |
|---|---|---|---|
| id | 8字符随机ID(系统自动生成) | 任务的唯一标识。 | 10e366d0 |
| cron | 5段Cron表达式:minute hour day month weekday 支持:*、*/N、N、N-M、N,M,O 字段范围:分钟(0–59)、小时(0–23)、日(1–31)、月(1–12)、星期(0-6,0为周日) | 执行时间计划(本地时间),用于定时触发任务。 | */5 * * * *(每5分钟)、0 9 * * *(每天9点) |
| prompt | 任意文本 | 任务触发时执行的AI提示词(指令内容)。 | 检查本地C盘剩余存储空间 |
| projectPath | 绝对路径 | 所属项目路径(系统自动绑定当前项目上下文)。 | D:\tmp\test_hc_cli |
| status |
| 任务当前状态(系统自动管理,初始值为active)。 | active |
| recurring |
| 是否启用循环执行机制。 | true |
| durable |
| 是否为持久化任务,默认为false。 | false |
| createdAt | Unix时间戳(毫秒) | 任务创建时间,由系统自动生成。 | 1783996637621 |
| humanSchedule | 中文描述 | 人类可读的调度描述,系统根据cron表达式自动生成。 | 每分钟、每天09:00、每5分钟 |
| sessionID | 字符串 | 会话标识符。定时任务会新建会话,并随任务刷新而更新。 | ses_0a16ceba1ffeXQHnpNW0jh20J8 |
| agentID | 内置Agent名称 | 执行任务所使用的Agent,由系统自动获取。 | build、code |
| modelID | 已配置的模型ID | 执行任务使用的模型,由系统自动获取。 | deepseek-v3.2 |
| providerID | 已配置的提供商ID | 执行任务使用的模型提供商,由系统自动获取。 | huaweicloud-maas |
| isCustom |
| 是否使用自定义Agent,由系统自动判断。 | false |
| sessionType | 内核会话(kernel)、其他会话类型 | 会话类型,由系统自动获取。 | kernel |
| category |
| 任务分类,由系统自动获取。 | code |
命令语法:
/schedule [时间间隔] <提示词>
| 参数 | 描述 |
|---|---|
| 时间间隔 | 可选参数,设置定时任务每隔多久执行一次。省略时默认每隔10分钟执行一次。 格式:数字 + 单位字母。单位字母包含s(秒)、m(分钟)、h(小时)和d(天)四种。 |
| 提示词 | 必选参数,您希望AI执行的指令。 |
首次提交定时任务指令后,AI将立即执行一次指定的提示词,并随后设置一个定时任务持续运行。后续的定时任务将在一个独立的会话(session)中生成,您可以通过“/sessions”命令查看所有会话的情况。例如,下发一个“/schedule 5m 检查部署状态”指令,AI会立即检查一次,然后每5分钟自动检查部署状态。
使用示例:
- 进入TUI开发环境。
- 打开目标项目的根目录。
- 鼠标右键单击空白处,选择“在终端中打开”。
- 在终端中输入“/codearts”并回车,即可进入TUI开发环境。
- 通过“/schedule”命令,创建定时任务。
- 在TUI对话框中,输入“/”,选择“/schedule”。
- 在“/schedule”命令后,输入如下指令,并按Enter键。
1m 按照后缀递增创建一个txt文件,并写入当前系统日期与时间
- AI会创建定时任务并立即执行一次定时任务,同时生成表5中两个文件。 图1 创建会话级定时任务
- 通过“/sessions”命令,查看定时任务新建的会话。 图2 查看定时任务新建的会话
除了通过“/schedule”命令创建定时任务,还支持通过自然语言描述来创建定时任务。通过自然语言创建的定时任务,不会立即执行。
- 进入TUI开发环境。
- 打开目标项目的根目录。
- 鼠标右键单击空白处,选择“在终端中打开”。
- 在终端中输入“/codearts”并回车,即可进入TUI开发环境。
- 在TUI对话框中,输入您希望AI执行的操作,并按Enter键。
- 通过自然语言创建循环任务示例
表6 通过自然语言创建循环任务 提示词
AI会做的事
每30分钟检查一下生产环境的错误日志
创建循环任务,每30分钟执行一次
每天早上9点运行单元测试
创建循环任务,每天9:00执行一次
每小时扫描一次安全漏洞
创建循环任务,每1小时执行一次
- 通过自然语言创建单次任务示例
表7 通过自然语言创建单次任务 提示词
AI会做的事
明天上午9点提醒我review PR#42
创建单次任务,明天9:00执行一次后自动结束
3分钟后提醒我确认数据库迁移结果
创建单次任务,3分钟后执行一次
下周一10点提醒我提交周报
创建单次任务,下周一10:00执行一次
- 通过自然语言创建循环任务示例
在CLI中创建定时任务
在CLI开发环境中,您可以使用命令或自然语言两种方式来创建定时任务。需要注意的是,通过命令创建的定时任务会立即执行,而使用自然语言描述创建的定时任务则不会立即执行。
CLI对话是一次性的,因此CLI场景下创建的定时任务仅会写入到scheduled_tasks.json配置文件中,待启动TUI或者其他码道CLI进程时才会执行定时任务。请保持码道CLI持续运行,确保任务能够按时、稳定地执行。
命令语法:
codearts run --command schedule "提示词" | 参数 | 描述 |
|---|---|
| 提示词 | 必选参数,您希望AI执行的操作。 |
使用示例:
- 在CLI开发环境中,输入创建定时任务命令并回车。 例如,创建一个每两分钟提醒我进行CLI测试的定时任务,您可使用如下提示词。如果指令中没有明确时间,则创建默认每10分钟执行一次的定时任务(如codearts run --command schedule "列出所有定时任务")。
codearts run --command schedule "2m 提醒我进行CLI测试"
- AI会根据您输入的指令,创建定时任务并立即执行一次定时任务。 图3 创建并执行定时任务
- 在CLI开发环境中,输入创建定时任务命令并回车。
codearts run "提示词"例如,创建一个每分钟提醒我写CLI周报的定时任务,您可使用如下提示词。
codearts run "每分钟提醒我写CLI的周报"
- AI会根据您输入的指令,创建定时任务。 图4 创建定时任务
管理定时任务
不支持通过命令管理定时任务,仅执行通过自然语言描述来管理已创建的定时任务。
| 输入自然语言提示词 | 执行结果 |
|---|---|
| 展示全部定时任务列表。 |
| 仅展示处于暂停状态的任务。 |
| 展示该任务的详情,包括执行历史和下次运行时间 |
| 任务停止执行,暂停不会丢失任何配置,恢复后任务继续按原间隔执行。 |
| 将暂停的任务重新激活,按原计划继续运行。 |
| 永久移除该任务,不可恢复。 |
| 马上触发一次执行,不影响原有的定时计划。例如,可以立即执行处于暂停状态的定时任务。 |