名称: cron 描述: 创建和管理存储在本地 SQLite 数据库(~/.codex/sqlite/codex-dev.db)中的 Codex 应用自动化。当需要添加、列出、更新、启用/禁用、删除或立即运行自动化时使用;编辑自动化名称、提示、RRULE 计划或 cwd 范围;或在故障排除应用自动化行为时检查自动化记录。
Cron
概述
使用此技能通过编辑本地 SQLite 数据库和同步的文件系统自动化配置来管理 Codex 自动化。通过捆绑的 scripts/cron.py 操作,并保持更改最小化和明确。
快速开始
- 列出自动化:
uv run python scripts/cron.py list - 创建自动化:
uv run python scripts/cron.py create --name "每周发布说明" --prompt-file /路径/到/prompt.md --rrule "RRULE:FREQ=WEEKLY;BYDAY=FR;BYHOUR=9;BYMINUTE=0" - 更新自动化:
uv run python scripts/cron.py update --id <id> --rrule "RRULE:FREQ=DAILY;BYHOUR=9;BYMINUTE=0" - 启用或禁用:
uv run python scripts/cron.py enable --id <id>或uv run python scripts/cron.py disable --id <id> - 立即运行:
uv run python scripts/cron.py run-now --id <id> - 删除:
uv run python scripts/cron.py delete --id <id> - 一次运行到期的自动化(无头):
scripts/automation_runner.py --once - 安装并启动用户 LaunchAgent 调度器:
scripts/install_launch_agent.sh - 停止并移除调度器:
scripts/uninstall_launch_agent.sh
工作流程
- 选择工作目录(
cwds)。如果未指定,默认使用当前仓库。 - 编写自动化提示。使用
--prompt-file处理多行提示。 - 提供 RFC5545 RRULE 字符串(见下方计划指导)。
- 使用
scripts/cron.py创建或更新自动化。 - 如果您希望无需桌面应用进行无干预执行,请使用
scripts/install_launch_agent.sh安装 LaunchAgent。
无头运行器
scripts/automation_runner.py通过调用codex exec执行到期的自动化并更新:automations.last_run_atautomations.next_run_at- 每次执行的
automation_runs行
- 运行器使用
python-dateutil通过uv执行,不需要持久化虚拟环境。 --codex-bin接受绝对路径或可执行文件名;默认解析$CODEX_BIN或PATH中的codex。scripts/launchd_wrapper.sh使用lockf防止重叠运行。scripts/install_launch_agent.sh是幂等的,默认安装~/Library/LaunchAgents/com.openai.codex.automation-runner.plist,间隔 60 秒。- 可选覆盖:
--label <反向DNS标签>(或环境变量CRON_LAUNCHD_LABEL)--interval-seconds <n>(或环境变量CRON_LAUNCHD_INTERVAL_SECONDS)--path <PATH>(或环境变量CRON_LAUNCHD_PATH)
- 可选覆盖:
scripts/uninstall_launch_agent.sh是幂等的,接受可选--label。- 日志:
~/Library/Logs/codex-automation-runner/out.log和~/Library/Logs/codex-automation-runner/err.log。 - 服务状态:
launchctl print gui/$(id -u)/com.openai.codex.automation-runner
当模糊时澄清
仅在请求模糊或用户明确要求指导时提问。否则不要阻止。
需要确认或推断的基本元素:
- 自动化名称。
- 提示内容(单行或文件路径)。
- 计划作为 RFC5545 RRULE 字符串(包含
RRULE:前缀)。 - 工作目录(
cwds),如果未指定,默认使用当前仓库。 - 如果明确请求状态;否则默认为
ACTIVE。
当模糊时,询问缺失的细节。示例:
- 如果用户说“每天”或“每周”但没有时间,询问时间和相关星期几。
- 如果用户说“为此仓库运行”但没有指定路径,确认仓库根目录为唯一
cwd。 - 如果用户要求“像应用一样设置”但没有计划,询问 RRULE 或提供具体示例以确认。
计划(RRULE)
- 仅接受 RFC5545 RRULE 字符串。不支持 Cron 表达式。
- 应用存储带
RRULE:前缀的字符串;包括前缀以匹配现有记录。两种形式都接受。 - 为稳定计划,建议使用显式
BYHOUR/BYMINUTE。
示例规则:
- 每天 09:00:
RRULE:FREQ=DAILY;BYHOUR=9;BYMINUTE=0 - 每周五 09:00:
RRULE:FREQ=WEEKLY;BYDAY=FR;BYHOUR=9;BYMINUTE=0 - 每 24 小时:
RRULE:FREQ=HOURLY;INTERVAL=24;BYMINUTE=0
任务示例
每日站会摘要
名称: 总结昨天的 Git 活动
提示: 为站会总结昨天的 Git 活动。包括重要提交、涉及的文件以及任何风险或跟进事项。
计划: RRULE:FREQ=DAILY;BYHOUR=9;BYMINUTE=0
每周发布说明
名称: 草拟每周发布说明
提示: 根据合并的 PR 草拟每周发布说明。包括可用链接并按区域分组。
计划: RRULE:FREQ=WEEKLY;BYDAY=FR;BYHOUR=9;BYMINUTE=0
CI 故障分类
名称: 总结 CI 故障
提示: 总结最近 CI 窗口的 CI 故障和 flaky 测试,按根本原因分组,并建议最小化修复。
计划: RRULE:FREQ=DAILY;BYHOUR=8;BYMINUTE=30
数据模型参考
参见 references/db.md 获取数据库模式和字段说明。