文档

在 ORG-2 中运行、审阅并共享智能体工作所需的一切。

全部文档

排程与无人值守运行

用例程按 cron 或一次性计划运行 ORG-2 智能体,控制补跑与并发策略,并回顾你不在时都跑了些什么。

大多数时候,智能体会话是你自己启动的。但有些工作你希望它不用你在场就跑起来——每晚一次的依赖审计、周一早上的 sprint 规划、一次趁你睡觉时做的重构。在 ORG-2 里,这就是例程(Routine):一个保存下来的触发器,加上一份运行模板。负责评估例程的调度器跑在 Rust 后端,所以哪怕一个窗口都没开,例程照样会触发。

创建例程

例程在设置的例程分类下管理。列表会展示每条例程的名称触发器Target状态,展开某一行还能看到它的配置和历史。添加 Routine 打开向导。

字段作用
名称必填,例如 Weekly sprint planning
触发器一次性Cron
运行时间仅一次性可用——要触发的时间点。
频率 / 时间 / 星期几 / 每月几号仅 Cron 可用——一个引导式的构建器,Cron 表达式是它的兜底出口。
负责此例程的 Agent必填。选一个智能体或智能体团队。
Prompt例程触发时,智能体应该做什么。
WorkspaceNo workspaceLocal workspaceWorktree——外加一个 Workspace path,用 Worktree 时还要填 Branch
Model可选的模型覆盖。

还有三个字段——输出已有运行时错过的运行(停机后)——在下文说明。

一次性运行与周期运行

一次性例程只有一个运行时间时间戳。一旦触发,后端会自动把这条例程停用——它不可能触发第二次。

Cron 例程用的是标准的 5 字段 cron 表达式(minute hour day month weekday)。预设覆盖了大部分场景:每天工作日 (周一至周五)每周(配一个星期几)和每月(配一个每月几号),每种都再搭一个时间。其他情况就展开自定义 cron 表达式直接手写——应用里给的提示是「例如 0 9 1 = 每周一 9:00」。

注意: 例程的 cron 表达式按 UTC 求值。没有按例程设置时区的选项,所以时间要自己做好偏移。

展开后的行里会显示下次运行,每完成一轮评估都会重新计算一次。

一次触发会产出什么

输出方式结果
直接运行会话用这条例程的 Prompt、Workspace 和 Model 启动一个会话。
创建工作项在选定的项目(或独立(不属于项目))下创建一个工作项。自动开始执行决定是否立刻启动它的智能体;新建例程默认开启。
重新运行已有工作项重新运行某个指定的工作项,需要给出项目目标工作项的短 ID(例如 ABC-0042)。

凡是会在无人值守情况下写代码的例程,都把 Workspace 设成 Worktree,而不是 Local workspace。用 Worktree 跑的运行会拿到自己的检出和 Branch,这样一条通宵运行的例程不会把你的工作副本改到一半就丢在那儿,第二天早上你只要像看普通分支 diff 一样审阅结果就行。

机器休眠或应用关闭时

调度器是一个后台任务,每 30 秒醒来一次,评估所有已启用的例程。由此带来两个后果:

  • 进程必须活着。 ORG-2 不会在操作系统层面安装 cron 任务、launch agent 或开机自启项。关掉窗口没关系——在 macOS 上以及 release 构建里,窗口只是被隐藏,进程仍在运行,例程照常触发。而退出应用会让它们停下,直到你重新打开。
  • 休眠会让时钟停摆。 处于休眠的机器并没有在跑轮询循环。

每条例程都记着一个水位标记,表示它上一次被评估的时间。下一轮评估时,调度器会检查这个水位标记到当前时刻之间的所有触发时间点,所以停机期间错过的运行是能被发现的——至于要拿它们怎么办,由你决定:

错过的运行(停机后)行为
跳过错过的运行只触发最近一次错过的时间点,更早的全部丢弃。
补跑一次用一次补跑覆盖整个错过的时间窗。新建例程的默认值。
全部补跑(有上限)触发最近若干次错过的时间点,数量有上限。

每次由调度器发起的触发都带一个幂等键,由例程 ID 和计划时间推导而来;因此即使在记录触发和更新水位标记之间发生崩溃,重启后也不会重复触发。

如果想让机器为已经在跑的工作保持唤醒,请在常规设置里打开会话运行时阻止系统休眠。它默认关闭,只在 macOS 和 Windows 上有实现,并会在所有会话结束后释放。它不会为了启动一次排程运行而唤醒已经休眠的机器。

运行重叠时

如果一条例程触发时,它自己上一次的运行还没结束,已有运行时决定接下来怎么办:并入当前运行跳过本次触发排队等待当前运行,或者始终并行运行

注意: ORG-2 不会根据 CPU 负载、剩余内存或你是否坐在键盘前来节流排程工作。并发由上面那条按例程配置的策略控制,而不是某个全局的资源调控器。设置里的性能监控会报告 CPU、内存、磁盘和网络的使用情况,但它只是一块观测面板——并不会拦住任何执行。

无人值守运行的护栏

凌晨 3 点在跑的智能体没办法向你提问,所以要提前想好给它多大的活动空间。

  • 权限。 对 Claude Code CLI 智能体来说,默认权限模式默认计划接受编辑跳过权限四种。跳过权限只留给工作区是隔离 Worktree 的例程。
  • 沙箱。 启用 Sandbox 会把 Bash 命令与文件系统和网络隔离;开启之后,自动批准 Bash 可以让命令免确认直接执行。排除的命令允许的域名,以及文件系统的允许/拒绝列表能把影响范围进一步收窄。
  • 通知。 启用系统通知启用 Dock 徽标默认都是关闭的——如果你打算靠通知来得知夜里那次运行的结果,先把它们打开。任务完成Agent 审批错误和警告这几个类别默认开启;Session 状态Git 操作默认关闭。测试通知用来确认操作系统确实授予了权限。
  • 在线状态。 侧边栏的在线状态控件——在线隐身离开——会往智能体的提示词里注入一段可编辑的指令。应用自带的离开文案会告诉智能体不要卡在等你上,先把能做的做完,并留下一份摘要和待你回来处理的问题。这是给模型的引导,不是强制约束。

回顾你不在时跑了什么

展开某条例程的行可以看到运行历史——最近 20 次触发,每条都带时间戳、状态,以及它产出的会话或工作项 ID。状态有 pendingstartedsucceededfailedskipped(被并发策略压制)、coalesced(并入了某次进行中的运行)和 queued。历史是按例程分开的;没有跨例程的合并信息流。

完全没能启动起来的运行会出现在 Inbox 里,表现为来自 SchedulerOrchestrator 的高优先级消息——比如某个工作项没有配置代码账户,或者某个编排阶段正在等人做决定。

在工作项那一侧,Output 标签页就是无人值守运行留下证据的地方:它开的 Pull Request、它所用的分支、带逐文件 diff 统计的 Changed Files、启用了审查时的审查反馈,以及以美元和 Token 计的费用摘要。由例程创建的工作项还会带一个来自 Routine:{name} 标记,重新运行则会追加一条历史记录,写明是哪条例程、在什么时间触发的。

注意: 没有每日摘要,没有合并的「你不在时发生了什么」报告,也没有一张展示过去或即将到来的运行的日历——ORG-2 的日历组件按日期铺开的是工作项,而不是例程的触发记录。要回顾夜里的工作,就得先看 Inbox,再逐条查看你关心的那些例程的运行历史。

下一步

  • 项目与工作项 —— 排程产生的工作落在哪里,以及它的生命周期
  • 会话 —— 例程触发时实际启动的是什么
  • 智能体 —— 选择负责某条例程的智能体
  • 安全 —— 深入了解权限模式与沙箱

有问题?欢迎到 ORG-2 Discord 提问。 Discord