OpenWorker
一个用于自动化任务执行的实验性系统
- Active
- AI Infrastructure
- 2026
IntentBoundaryRuntimeTrace
为什么存在
LLM 已经能很好地「想」,但把「想」变成「做」仍然充满胶水代码:每个自动化任务都要重新处理调度、重试、权限和审计。OpenWorker 想验证一个假设——任务执行层可以像运行时一样被标准化,让 Agent 只需要声明意图,而不是编排细节。
解决什么问题
目标用户是想把重复性工作交给 Agent 的独立开发者。他们面对的共同问题是:
- 每个自动化脚本都是一次性的,失败恢复、日志、权限都要重写;
- 让 Agent 直接操作本地环境,边界不清,出了错难以追溯;
- 多个任务并行时,状态互相污染。
OpenWorker 提供一个受控的执行环境:任务以声明式文件描述,运行时负责调度、隔离和审计。
如何工作
一个任务就是一个目录:
tasks/
└── daily-digest/
├── task.yml # 声明:触发器、输入、权限边界
└── run.md # 给执行 Agent 的自然语言指令
运行时读取 task.yml,在隔离的工作区里启动执行会话,把每个动作记入可回放的日志:
# task.yml
trigger: "0 8 * * *"
permissions:
fs: read-only
network: [api.service.test]
on_failure: notify
这与我在关于 Agent 行动边界的思考里写的模型一致:不可逆或外溢的动作必须回到人的回路,permissions 字段就是把边界变成一等概念的尝试。
关键设计决策
- 声明式优先于编程式。任务描述用 YAML + 自然语言,而不是 SDK。代价是表达能力受限,收益是任务可以被人和 Agent 同时读懂、审查。
- 一切动作可回放。执行日志不是给人看的流水账,而是可以重新播放的状态转移序列——调试和审计共用同一份数据。
- 本地优先。没有中心服务器,任务目录就是全部状态,可以用任何文件同步工具分发。
当前局限
- 隔离目前只是目录级的,没有真正的沙箱,恶意任务挡不住;
- 调度器是单机的,多机器协调还没有方案;
- 权限模型只有三档粒度,表达不了「只读某几张表」这类细约束;
- 还没有 Web 界面,一切都在终端里。
这些局限决定了它现在只是一个实验性系统,而不是可以交给别人的产品。先把执行层的问题想透,界面是后面的事。