ProjectActive

OpenWorker

一个用于自动化任务执行的实验性系统

Status
Active
Type
AI Infrastructure
Built
2026
01Intent02Boundary03Runtime04Trace

为什么存在

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 字段就是把边界变成一等概念的尝试。

关键设计决策

  1. 声明式优先于编程式。任务描述用 YAML + 自然语言,而不是 SDK。代价是表达能力受限,收益是任务可以被人和 Agent 同时读懂、审查。
  2. 一切动作可回放。执行日志不是给人看的流水账,而是可以重新播放的状态转移序列——调试和审计共用同一份数据。
  3. 本地优先。没有中心服务器,任务目录就是全部状态,可以用任何文件同步工具分发。

当前局限

  • 隔离目前只是目录级的,没有真正的沙箱,恶意任务挡不住;
  • 调度器是单机的,多机器协调还没有方案;
  • 权限模型只有三档粒度,表达不了「只读某几张表」这类细约束;
  • 还没有 Web 界面,一切都在终端里。

这些局限决定了它现在只是一个实验性系统,而不是可以交给别人的产品。先把执行层的问题想透,界面是后面的事。