AtomCode v5.0.9 新子系统深度分析 — 本地调度任务(schedule)
基于
strings枚举元数据 + systemd unit 模板串的还原分析 2026-09-09 前置报告:05-version-diff-v4.25.5-to-v5.0.9.md
1. 命令面
atomcode schedule add|list|remove|enable|disable|run|sync| 子命令 | 说明 |
|---|---|
add | 新增任务(TITLE/CWD/调度/权限/通知级别) |
list | 列出全部任务 |
remove <id> | 按 id 删除 |
enable <id> | 启用 |
disable <id> | 禁用(不再触发) |
run <id> | 立即执行(二进制标记 implemented in Task 4 —— 开发中) |
sync | 同步 OS 调度器注册表 |
Manage local scheduled tasks (add/list/remove/enable/disable)
Sync OS scheduler registrations with the stored task list.
Installs enabled tasks that are not yet registered and unregisters disabled
tasks that are still registered. Safe to run repeatedly.2. Schedule 枚举(5 变体,类型元数据确认)
rust
enum Schedule {
Daily(1 field), // HH:MM
Cron(1 field), // cron 表达式
Weekly(2 fields), // N@HH:MM (N=1..7, 1=Mon)
Interval(1 field), // Nm(每 N 分钟)
Hourly, // 无字段
}2.1 CLI 参数格式(完整还原)
--every Nm Schedule: run every N minutes (e.g. "30m")
--hourly Schedule: run once per hour
--daily HH:MM Schedule: run daily at HH:MM (e.g. "09:00")
--weekly N@HH:MM Schedule: run weekly, format N@HH:MM (N=1..7, 1=Mon)
--cron EXPR Schedule: cron expression (e.g. "0 9 * * 1-5")
--title TITLE Prompt text to send to the agent when the task fires
--cwd DIR Working directory for the agent session (defaults to current dir)
--permission-mode plan | accept_edits | auto
--notify LEVEL Notify level: off | important | all2.2 序列化形式(配置内)
internally tagged enum Schedule
schedules / weekly / weekday / hourly / every_minutes ← 序列化键名3. ScheduleTask 结构体(11 字段)
struct ScheduleTask with 11 elements
title / cwd / schedule / permission_mode / notify
last_run_at / last_status ← 运行历史
enabled / ... (完整 11 字段)→ 任务带运行历史追踪(last_run_at / last_status),支持状态回查。
4. OS 调度器集成(systemd timers)
4.1 unit 模板(二进制内完整还原)
Timer unit:
[Unit]
Description=Atomcode scheduler timer:
[Timer]
Persistent=true ← 错过的任务补跑
[Install]
WantedBy=timers.targetService unit:
[Unit]
Description=Atomcode scheduled task:
[Service]
Type=oneshot
ExecStart="<atomcode路径>" schedule run <id>安装位置:
config/systemd/user ← 用户级 systemd 目录4.2 关键约束
cron schedules are not supported on systemd timers; use a simple frequency→ Cron 表达式在 systemd timer 上不支持:sync 时降级为简单频率(interval/hourly),或由 daemon 进程内部触发。
4.3 sync 幂等性
Installs enabled tasks that are not yet registered and unregisters disabled
tasks that are still registered. Safe to run repeatedly.→ 同步是双向、幂等的:启用→安装 unit;禁用→卸载 unit。
5. 执行模型
schedule run <id> → 生成 agent 会话
├── 会话工作目录 = --cwd(默认当前目录)
├── 触发 prompt = --title
├── 权限模式 = plan | accept_edits | auto
└── 通知级别 = off | important | all(结果通知)- headless 执行:无 TUI,纯后台 agent 会话
- 通知级别三档:off / important / all
6. 逆向方法论备注
- systemd unit 模板串以完整原始文本存在于二进制(
[Unit] Description=... [Timer] ...),直接还原 OS 集成实现 internally tagged enum Schedule+struct ScheduleTask with 11 elements给出数据模型- 序列化键名(
schedules/weekly/weekday/hourly/every_minutes)暴露内部存储结构 cron schedules are not supported on systemd timers是平台差异约束的直接证据implemented in Task 4说明run子命令在 v5.0.9 中仍处于开发中状态
本报告由持续分析循环生成 — v5.0.9 本地调度任务(schedule)深度分析