自动化
在事件发生时自动执行动作 —— 按计划运行命令、响应标签变更,或自动触发提示词
功能简介
自动化让你能够响应工作区事件来运行动作。当某件事发生时 —— 添加了一个标签、会话状态发生变化、某个工具被运行,或某个 cron 计划触发 —— 自动化会自动执行 shell 命令或向智能体对话中 注入提示词。
配置位于工作区级别的 automations.json 中:
~/.torlyai/workspaces/{workspaceId}/automations.json三大类别
自动化按触发时机进行组织:
按 cron 计划触发。用于周期性任务,例如每日简报、备份触发或定时的智能体运行。
响应应用事件,如标签变更、状态更新、权限模式变更以及标记切换。
挂接到智能体生命周期 —— 工具使用前/后、会话开始/结束、提示词提交等。
工作原理
工作区中发生某件事
评估正则或 cron 模式
执行 shell 命令或提示词
事件类型
应用事件(App Events)
同时支持 command 和 prompt 动作:
| 事件 | 说明 |
|---|---|
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 进行定义。 每个条目将一个事件名映射到一组带有动作的匹配器:
{
"version": 2,
"automations": {
"EventName": [
{
"matcher": "regex-pattern",
"actions": [
{ "type": "command", "command": "echo 'Hello'" }
]
}
]
}
}匹配器选项
| 选项 | 默认值 | 说明 |
|---|---|---|
matcher | (all) | 用于过滤事件的正则模式 |
cron | — | 用于 SchedulerTick 事件的 cron 表达式 |
timezone | system | cron 所用的 IANA 时区(例如 Europe/London) |
permissionMode | "safe" | 安全模式:「safe」或「allow-all」 |
labels | [] | 应用到由 prompt 创建的会话上的标签 |
enabled | true | 用于启用/禁用的布尔开关 |
actions | — | 要执行的动作数组(必填) |
Cron 计划
SchedulerTick 事件使用标准的 cron 表达式:
*/15 * * * *每 15 分钟0 9 * * *每天上午 9:000 9 * * 1-5工作日上午 9:0030 14 1 * *每月 1 日下午 2:300 */6 * * *每 6 小时环境变量
事件数据以环境变量的形式传递给命令动作,前缀为 TORLYAI_:
通用
TORLYAI_EVENT事件名TORLYAI_EVENT_DATA完整 payload(JSON 格式)TORLYAI_SESSION_ID当前会话 IDTORLYAI_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 点触发一次商业计划书审查:
{
"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 通知:
{
"version": 2,
"automations": {
"LabelAdd": [
{
"matcher": "^urgent$",
"permissionMode": "allow-all",
"actions": [
{
"type": "command",
"command": "osascript -e 'display notification \"Urgent session flagged\" with title \"TorlyAI\"'"
}
]
}
]
}
}审计轨迹
将每一次工具执行记录到审计文件中:
{
"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 即可管理自动化:
速率限制与安全
速率限制
SchedulerTick:60 次/分钟- 所有其他事件:10 次/分钟
- 超出的事件会被静默丢弃
安全
- 通过转义防止 shell 注入
- ReDoS 防护(500 字符上限)
- 权限模式白名单强制执行
- 命令超时,并以 SIGKILL 作为兜底
正在从 Hooks 迁移? 自动化以相同的 version: 2 schema 取代了旧版的 Hooks 系统。如果你已有一个 hooks.json, 将其重命名为 automations.json 即可 —— 无需更改任何内容。 旧版文档请参阅 Hooks(旧版)。