Skip to content

自动化

自动化是一项你设置一次、然后让 Codeg 自行运行的智能体任务——按计划运行,或按一下按钮运行。你像撰写一条普通消息那样撰写它(一段提示词、一个智能体、一个文件夹、一种模式),给它设定一个节奏,此后 Codeg 便会以无头方式触发它:每次运行都会启动智能体、完成工作,并落地为一次你可以打开阅读的普通对话。无需任何人守在键盘前。

它是聊天频道的“放手不管”对应物:聊天频道让你从手机上驱动 Codeg,而自动化则在完全无人驱动的情况下运行。对于那些你不愿手动启动的例行智能体工作,就用它——每晚一次的代码审查、每周一次的依赖升级、CI 排障、周期性的安全扫查。

自动化位于何处

自动化有自己的视图,从左侧边栏的自动化(那个 ⚡ 图标项,就在你的对话旁边)打开。这是一个双栏界面:左侧是你的自动化列表,右侧是所选自动化的详情。如果某次计划运行失败了,侧边栏项会带上一个小徽标以引起你的注意——当你打开该视图时它就会清除。

第一次进入时没有任何内容可显示,因此你会来到一个可供起步的模板库。

创建一个——从模板或从零开始

点击新建自动化,然后要么选择一个模板,要么从空白开始。Codeg 附带七个模板,每个都是一段可直接编辑的起始提示词:

模板作用
代码审查审查近期变更中的缺陷、回归和质量问题
依赖更新找出过时的依赖并应用安全的升级
测试覆盖为价值最高的缺口编写测试
安全审计扫查注入、认证漏洞、密钥处理等问题
CI 排障调查失败的检查并提出修复方案
TODO 清理收集 TODO/FIXME 注释并排定优先级
发布说明总结自上一个发布标签以来的变更

模板只是为编辑器填充初始内容——一段建议的提示词和节奏,之后由你调整。编辑器本身就是你在普通对话中使用的同一个 composer:一个富文本提示框,支持用 @ 提及文件、智能体、会话、提交和技能,还有 / 命令菜单、一个智能体选择器,以及模式与选项栏。凡是你会为一次性消息设置的东西,都可以在这里捕获为可复用的启动配置。给它起个名字,写好提示词,剩下的就是在何处在何时

将它指向一个文件夹——并隔离运行

目标下,选择自动化运行所在的工作区文件夹,并选择它如何隔离自己的工作:

  • 每次运行新建 worktree (默认)——每次运行都会新建一个全新的 git worktree,因此它绝不会触及你的工作树,重复运行之间也绝不会相互冲突。对于任何会写入文件的操作,这都是你想要的。
  • 在文件夹中运行——运行直接在该文件夹的树中进行,可选地在你选定的分支上进行。它会共享你未提交的更改,因此可能与正在进行的工作发生冲突——Codeg 会就地这样提示你。(仅存在于远程的分支需要使用 worktree 选项;共享模式无法跟踪它。)

为它排期——或保持手动

触发器下,选择按计划仅手动

对于计划,你不必手写 cron。这里有一键预设——每小时每天上午 9 点工作日上午 9 点——如果你需要,还有一个原始 cron 输入框,以及一个可视化的计划生成器(选择一个频率——每 N 分钟、每小时、每天、工作日、每周的某个工作日、每月的某一天——它就会写出表达式)。一行实时的下次运行会精确显示它下次将在何时触发,采用你设备自动检测的时区,且由调度器所用的同一个求值器计算得出——因此预览绝不会骗你。

如果你确实要手写 cron,它就是标准的五个字段:

text
┌─ minute (0–59)
│ ┌─ hour (0–23)
│ │ ┌─ day of month (1–31)
│ │ │ ┌─ month (1–12)
│ │ │ │ ┌─ day of week (0–6, Sun–Sat)
│ │ │ │ │
0 9 * * 1-5     # 09:00, Monday–Friday
0 * * * *       # every hour, on the hour
*/30 * * * *    # every 30 minutes

仅手动的自动化永远不会自行触发——它们会一直待命,直到你按下立即运行

一次运行究竟做了什么

无论是按计划触发还是你点击了立即运行,一次运行都是一个真实、实时的会话:

  • 它以无头方式启动智能体,并产生一次普通对话,该对话在它一开始的那一刻就出现在你的侧边栏中。打开它即可观看工作实时呈现,或亲自介入。
  • 它会重放你保存的模式,因此它自行推进的程度恰好就是你在编辑器中选择的那种模式。一次运行是一个真正的智能体会话:如果智能体停下来请求权限或提出问题,这会在所产生的对话中呈现出来。若要实现真正无人值守的节奏,请选择一种不会因等待批准而暂停的模式,或者让任务保持只读——那些分析类模板是特意写成更改文件的。
  • 每个自动化同一时间只运行一次。 如果下一次到期时上一次运行仍在进行,新的这次会被记录为已跳过,而不是叠加上去。

详情面板的运行历史是每次运行的时间线——其状态(运行中成功失败已取消已跳过)、开始时间和耗时、一行摘要或错误信息、一个用于跳入其产物的查看对话链接,以及在运行仍在进行时的一个取消按钮。

运行发生在 Codeg 运行期间

调度器位于 Codeg 内部——桌面应用或服务器。在 Codeg 关闭期间到期的计划,会在它下次打开且到期时触发一次,而不是为每个错过的时段各触发一次。而如果 Codeg 在运行中途退出,那次运行会在下次启动时被标记为失败(绝不会伪装成已完成)——该自动化只会在它的下一个计划时间再次触发。

管理它们

每一行——通过 菜单或右键单击——都提供立即运行启用/禁用编辑删除;详情面板上也有相同的操作。禁用会暂停一个自动化的计划而不删除它。当你有好几个时,可按文件夹或按启用状态筛选列表。

须知

  • 在服务器上运作方式相同。 该引擎在桌面应用和独立服务器中都能运行,因此无论 Codeg 在哪里运行,自动化都会触发。(如果桌面应用和服务器共享同一个数据目录,那么只有其中之一会驱动这些自动化——它们不会重复触发。)
  • 每次运行都是一个完整的智能体会话——有它自己的令牌开销,在你的历史中有它自己的条目。频繁的计划会把两者成倍放大。
  • worktree 运行会留下文件夹。 每个按次运行的 worktree 都是一个由 Codeg 跟踪的真实文件夹;用同样的 worktree 工具即可清理它们。较旧的运行历史会随时间自动修剪。

后续步骤

  • 聊天频道——让 Codeg 无需人工干预运行的另一种方式:从 Telegram、Lark 或 WeChat 驱动它。
  • Git 与 Worktree——按次运行的隔离是如何工作的,以及如何管理运行所创建的 worktree。
  • 使用智能体——自动化所重放的智能体和模式。
  • 技能——把一个可重复的工作流封装进一个 /command,并将其放入自动化的提示词中。

基于 Apache-2.0 许可证发布。