用 Pocket Code Workflows 在安卓上自动化任务:事件触发、手机端 cron 定时、重试和可视化编辑器——无需服务器,全程在设备本地运行。
每个开发者都会积攒同样的琐碎杂活:push 之后跑测试、部署完成后备份数据库、保存时自动格式化、构建失败时提醒自己。在笔记本上,你会用 CI runner、cron 任务和放在某台服务器上的几个 shell 脚本把这些拼在一起。而在手机上,通常的答案是"做不到"。Pocket Code 用 Workflows 改变了这一点——这是一个事件驱动的自动化引擎,让你完全在设备本地在安卓上自动化任务,无需租用服务器,也不用在云端维持任何常驻进程。
一个工作流很容易描述:一个触发器(IDE 内部的某个事件,或一个定时计划)加上一串针对共享上下文运行的步骤序列。这就足以构建真正的开发工作流——那种平时你得专门搭一条 CI 流水线才能做的事——就在你的编辑器、终端和数据库管理器旁边完成。你可以在 Workflows 工具页面 了解这个模块的全貌。
你永远不必从一张白纸开始。这个模块给了你三个入口:
| 方式 | 如何创建 | 示例 |
|---|---|---|
| 模板 | 在 8 个内置模板中点击 启用 | "CI/CD 流水线"、"Push 自动部署"、"部署后备份数据库" |
| AI 生成 | 输入一句提示词,得到一个可编辑的骨架 | "push 到 main 时,部署并通知"变成一个两步工作流 |
| 编辑器 | 点击 "+" 悬浮按钮进入完整表单 | 从零开始搭建,带绑定和重试策略 |
启用一个模板会把它克隆成一份带全新 ID 的可编辑副本,因此你可以随意调整而不动到原始模板。
工作流会监听流经 IDE 的事件。引擎订阅了应用内部的事件总线,并把每个事件映射到一种触发器类型。一共有十种触发器类型:
| 触发器 | 触发时机 | 典型过滤条件 |
|---|---|---|
| Git push | 一次完成的 push | 分支("main"、"develop") |
| Git commit | 一次新的 commit | 分支 |
| 文件保存 | 编辑器中保存文件 | 扩展名(".kt"、".ts") |
| 应用打开 | 应用回到前台 | — |
| 终端命令结束 | 一条终端命令执行完成 | 命令模式 |
| 数据库查询执行 | 一个查询结果返回 | 表名 |
| 部署完成 | 一次成功的部署 | 服务商("vercel"、"railway") |
| 部署失败 | 一次失败的部署 | 服务商 |
| 检测到错误 | 另一个工作流失败 | 工作流名称 / 错误模式 |
| 手动 | 不由事件触发——按计划或手动运行 | — |
只有触发器类型匹配的已启用工作流才会进入评估,而一个可选的过滤条件会用不区分大小写的子串匹配进一步收窄范围——所以一个过滤到 main 的 Git-push 工作流会忽略其他所有分支。
这正是"无服务器自动化"落到实处的地方。一个带手动触发器并附加了定时计划的工作流,就变成了一个定时任务。在底层,调度器封装了安卓的 WorkManager,并提供两种模式。
**间隔(Interval)**计划使用周期性工作请求。WorkManager 的下限是 15 分钟,所以更短的值会被向上钳制。预设有:
| 预设 | 间隔 |
|---|---|
| 每 15 分钟 | 15 分钟 |
| 每小时 | 60 分钟 |
| 每 6 小时 | 360 分钟 |
Cron 计划才是有意思的部分。Pocket Code 自带一个五字段 cron 解析器(分钟、小时、日、月、星期)——不依赖任何外部库——支持 * 通配符、单个值、N,M 列表、N-M 区间以及 */N 步长。内置了两个 cron 预设:
0 9 * * *0 9 * * 1由于 WorkManager 的周期性 API 无法表达真正的 cron,每次 cron 运行都被安排成一个一次性任务,并在完成时重新武装下一次触发,从而让 cron 无限期地持续下去。计划编辑器会根据你的表达式实时显示一个"下次触发"预览,并在解析失败的那一刻变红并提示"cron 表达式无效"——在你保存之前就给出即时反馈。这一版的解析器有意保持简单:不支持月份和星期的名称、?、L、#、秒和年。若想深入了解表达式语法,可以查看 Workflows 文档。
计划会被持久化保存,并在应用启动时重新排队,因此进程被杀掉也不会悄悄清空你的自动化。
编辑器是一个完整的表单:名称、描述、一个启用开关、一个带可选过滤条件的触发器下拉框,以及一列可重新排序、编辑或删除的步骤卡片。添加步骤会打开一个选择器,分为控制流(等待、If / Else)和动作——八种动作类型,每种都有一个易读的标签和一个动态配置表单:
| 动作 | 表单字段 |
|---|---|
| 运行命令 | 命令 |
| 通知 | 标题、消息 |
| AI 分析 | 提示词、语言(可选) |
| AI 生成 | 提示词、语言(可选) |
| Git 操作 | 操作(commit/push/pull)、分支、消息 |
| 部署 | 分支(可选) |
| 数据库备份 | 命令(可选) |
| 打开文件 | 文件路径、行号(可选) |
每个动作步骤还带有可折叠的可靠性和条件区块(下文详述)。在你按下顶栏的保存之前,什么都不会写入数据库——应用和取消都作用于本地编辑器状态,所以你可以自由试验。只有当工作流有了名称并且至少有一个步骤时,保存才会启用。
编辑器目前暴露了等待以及一层 If/Else。引擎本身还能执行循环(Loop)、并行(Parallel)和 Try/Catch 步骤,但为它们做可视化编辑器是一个已知的后续计划,而非当前发布的界面——所以请把它们视为引擎层面的构建块,暂时还不能从选择器里拖进来。
步骤并非孤立运行——它们共享一个上下文,任何取值字段都可以用 {{binding}} 引用先前的步骤。语法如下:
| 表达式 | 解析为 |
|---|---|
{{var.<name>}} | 一个上下文变量 |
{{step.<id>.status}} | 某个步骤的状态 |
{{step.<id>.output.<field>}} | 某个步骤输出中的一个字段 |
{{step.<id>.error}} | 某个步骤的错误信息 |
{{item.<alias>}} | 循环中的当前项 |
{{trigger.eventName}} | 启动这次运行的事件 |
一个无法解析的表达式会有意返回空字符串,因此对一个从未运行过的步骤(比如在被跳过的条件分支里)的绑定不会让整次运行崩掉。条件建立在同样的思路上:用等于、不等于、大于、小于、包含或为空来比较解析后的值,并用常见的 与/或/非 布尔逻辑把它们组合起来。
你无法信任的自动化不算自动化。每个动作步骤都支持一个重试策略和一个超时,展现在那个可折叠的可靠性区块里:
| 设置 | 默认值 |
|---|---|
| 最大尝试次数 | 1(不重试) |
| 退避策略 | 指数 |
| 初始延迟 | 500 毫秒 |
| 最大延迟 | 初始值 × 30 |
| 超时 | 无 |
退避有固定、线性和指数三种(指数翻倍:500、1000、2000、4000……),每种都受最大延迟的封顶限制。超时是真正的超时——一旦触发,该步骤就会被标记为已超时。你还可以给单个动作附加一个轻量条件:把它绑定到某个值,当该值为空、false、0 或 null 时,这一个步骤就会被跳过——这样你就能对单个步骤设门槛,而不必把它包进一个完整的条件里。
每次运行都会连同其步骤结果的完整快照一起持久化保存,这意味着历史能在崩溃后依然存在。运行时间线以最新在前的方式列出各次运行,带状态图标、时间戳、步骤数、时长,以及在出错时一行错误预览。点击某次运行会打开一个逐步下钻视图:每步的状态颜色(成功、失败、跳过、超时、运行中)、该步骤的时长、以 key=value 形式呈现的输出,以及任何错误字符串。
保留是自动的——仓库为每个工作流保留最新的 100 次运行,并丢弃超过 30 天的任何记录,这样历史既保持有用,又不会无限增长。
八个内置模板覆盖了常见场景,让你一键就能拥有可用的自动化——启用一个会把它克隆成一份可编辑副本,因此调整它绝不会动到原始模板:
main 时,部署并通知你prettier --write .)git add -A && git commit)main 时,跑测试并通知你该分支受保护如果你不想手动拼装步骤,AI 生成器能把一句提示词变成一个可编辑的工作流。它读取关键词来推断触发器("push"、"deploy failed"、"error"、"save"……)和一串动作("deploy"、"backup"、"test"、"format"、"notify"……),然后展示一个预览供你 保存并启用 或丢弃。像 "push 到 main 时,部署并通知" 这样的提示词会生成一个绑定到 main 上 Git push 的两步工作流。生成器还有一条由 LLM 支撑的路径,会使用你配置的 AI 服务商,并在出现任何问题时静默回退到启发式解析器——所以你总能得到一个预览,或一条清晰的"无法推断"提示。想了解可用的 AI 能力,可以看看我们的 定价页面。
工作流定义、运行历史和定时计划都存放在你手机上的一个本地数据库里。定义可以备份到云端以便恢复,但云端的任何内容都不会被读取来运行你的自动化——引擎在本地执行,就这样。运行历史和定时计划完全不同步:历史是设备本地的,而计划是 WorkManager 的状态,特定于每台设备。你的自动化属于你自己,它就在你所在的地方运行。
Pocket Code 即将登陆 Google Play,把一整套自动化引擎——触发器、手机端 cron 定时、重试和可视化编辑器——带进你编写和交付代码的同一个应用里。加入预注册,成为最早在自己设备上试用它的人之一。