自动化

在事件发生时自动执行动作 —— 按计划运行命令、响应标签变更,或自动触发提示词

功能简介

自动化让你能够响应工作区事件来运行动作。当某件事发生时 —— 添加了一个标签、会话状态发生变化、某个工具被运行,或某个 cron 计划触发 —— 自动化会自动执行 shell 命令或向智能体对话中 注入提示词。

配置位于工作区级别的 automations.json 中:

path
~/.torlyai/workspaces/{workspaceId}/automations.json

三大类别

自动化按触发时机进行组织:

定时(Scheduled)

按 cron 计划触发。用于周期性任务,例如每日简报、备份触发或定时的智能体运行。

事件型(Event-based)

响应应用事件,如标签变更、状态更新、权限模式变更以及标记切换。

🤖 智能体型(Agentic)

挂接到智能体生命周期 —— 工具使用前/后、会话开始/结束、提示词提交等。

工作原理

1事件触发

工作区中发生某件事

2匹配器检查

评估正则或 cron 模式

3动作运行

执行 shell 命令或提示词

事件类型

应用事件(App Events)

同时支持 commandprompt 动作:

事件说明
LabelAdd当某个标签被添加到会话时触发。
LabelRemove当某个标签从会话中被移除时触发。
LabelConfigChange当标签配置被修改时触发。
PermissionModeChange当权限模式发生变化时触发。
FlagChange当会话被标记或取消标记时触发。
SessionStatusChange当会话在不同状态之间移动时触发。
SchedulerTick每分钟触发一次。使用 cron 表达式进行匹配。

智能体事件(Agent Events)

仅支持 command 动作:

事件说明
PreToolUse在工具执行之前。用于校验或把关工具调用。
PostToolUse在工具成功之后。用于日志记录或触发副作用。
PostToolUseFailure在工具失败之后。用于错误处理或重试逻辑。
UserPromptSubmit当用户提交提示词时。
SessionStart当会话启动时。
SessionEnd当会话结束时。
Stop当智能体停止处理时。
SubagentStart当子智能体被派生时。
SubagentStop当子智能体完成时。

动作类型

每个自动化可以执行以下两种动作类型之一:

命令动作(Command Actions)

在事件触发时执行一条 shell 命令。事件数据可通过环境变量访问。

{
  "type": "command",
  "command": "echo \"$TORLYAI_LABEL\" >> ~/log.txt",
  "timeout": 60000
}

提示动作(Prompt Actions)

使用指定的提示词创建一个新的智能体会话。仅适用于应用事件。 支持以 @mention 引用数据源和技能。

{
  "type": "prompt",
  "prompt": "Review today's progress",
  "llmConnection": "my-connection",
  "model": "claude-sonnet-4-6"
}

配置

自动化在 automations.json 中使用版本 2 schema 进行定义。 每个条目将一个事件名映射到一组带有动作的匹配器:

automations.json
{
  "version": 2,
  "automations": {
    "EventName": [
      {
        "matcher": "regex-pattern",
        "actions": [
          { "type": "command", "command": "echo 'Hello'" }
        ]
      }
    ]
  }
}

匹配器选项

选项默认值说明
matcher(all)用于过滤事件的正则模式
cron用于 SchedulerTick 事件的 cron 表达式
timezonesystemcron 所用的 IANA 时区(例如 Europe/London)
permissionMode"safe"安全模式:「safe」或「allow-all」
labels[]应用到由 prompt 创建的会话上的标签
enabledtrue用于启用/禁用的布尔开关
actions要执行的动作数组(必填)

Cron 计划

SchedulerTick 事件使用标准的 cron 表达式:

格式:分 · 时 · 日 · 月 · 星期
*/15 * * * *每 15 分钟
0 9 * * *每天上午 9:00
0 9 * * 1-5工作日上午 9:00
30 14 1 * *每月 1 日下午 2:30
0 */6 * * *每 6 小时

环境变量

事件数据以环境变量的形式传递给命令动作,前缀为 TORLYAI_

通用

TORLYAI_EVENT事件名
TORLYAI_EVENT_DATA完整 payload(JSON 格式)
TORLYAI_SESSION_ID当前会话 ID
TORLYAI_SESSION_NAME当前会话名称
TORLYAI_WORKSPACE_ID工作区 ID

标签事件

TORLYAI_LABEL标签 ID(LabelAdd / LabelRemove)

状态与权限

TORLYAI_OLD_MODE / NEW_MODE权限模式变更
TORLYAI_IS_FLAGGED标记状态(「true」或「false」)
TORLYAI_OLD_STATE / NEW_STATE状态转换

调度器

TORLYAI_LOCAL_TIME当前时间(HH:MM)
TORLYAI_LOCAL_DATE当前日期(YYYY-MM-DD)

工具事件

TORLYAI_TOOL_NAME正在使用的工具
TORLYAI_TOOL_INPUT工具参数(JSON 格式)
TORLYAI_TOOL_RESPONSE工具输出(仅 PostToolUse)
TORLYAI_ERROR错误消息(PostToolUseFailure)

示例

每日工作日简报

每个工作日上午 9 点触发一次商业计划书审查:

automations.json
{
  "version": 2,
  "automations": {
    "SchedulerTick": [
      {
        "cron": "0 9 * * 1-5",
        "timezone": "Europe/London",
        "labels": ["Scheduled", "briefing"],
        "actions": [
          {
            "type": "prompt",
            "prompt": "Review today's business plan progress"
          }
        ]
      }
    ]
  }
}

紧急标签通知

当应用紧急标签时显示一条 macOS 通知:

automations.json
{
  "version": 2,
  "automations": {
    "LabelAdd": [
      {
        "matcher": "^urgent$",
        "permissionMode": "allow-all",
        "actions": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Urgent session flagged\" with title \"TorlyAI\"'"
          }
        ]
      }
    ]
  }
}

审计轨迹

将每一次工具执行记录到审计文件中:

automations.json
{
  "version": 2,
  "automations": {
    "PostToolUse": [
      {
        "permissionMode": "allow-all",
        "actions": [
          {
            "type": "command",
            "command": "echo \"[$TORLYAI_LOCAL_TIME] $TORLYAI_TOOL_NAME\" >> ~/audit.log"
          }
        ]
      }
    ]
  }
}

使用场景

  • 自动评估 —— 每当某个商业计划书章节状态变为「complete」时触发一次 4F 评估
  • 质量门 —— 使用 PreToolUse 自动化,在智能体修改商业计划书内容前要求审批
  • 通知 —— 当任务移动到 Review 时运行一条 shell 命令发送 Slack 消息
  • 定时审查 —— 使用 SchedulerTick 对你的商业计划书每日运行一致性检查
  • 审计轨迹 —— 使用 PostToolUse 自动化将所有工具执行记录到文件中

在界面中管理

自动化侧边栏提供了一个可视化界面,让你无需直接编辑 JSON 即可管理自动化:

启用 / 禁用单独切换各个自动化的开关
测试手动触发某个自动化以验证其是否正常工作
复制克隆一个自动化作为起点
删除移除不再需要的自动化
历史查看每个自动化的执行历史
筛选按以下分类浏览:Scheduled、Event-based 或 Agentic

速率限制与安全

速率限制

  • SchedulerTick:60 次/分钟
  • 所有其他事件:10 次/分钟
  • 超出的事件会被静默丢弃

安全

  • 通过转义防止 shell 注入
  • ReDoS 防护(500 字符上限)
  • 权限模式白名单强制执行
  • 命令超时,并以 SIGKILL 作为兜底

正在从 Hooks 迁移? 自动化以相同的 version: 2 schema 取代了旧版的 Hooks 系统。如果你已有一个 hooks.json, 将其重命名为 automations.json 即可 —— 无需更改任何内容。 旧版文档请参阅 Hooks(旧版)

相关内容