OpenClaw 的 Standing Orders(常设指令)机制,解决的是一个很多自动化助手都会遇到的痛点——每次任务都要你重新下达指令,Agent 在两次请求之间就是完全闲置的。本文基于官方文档,详解如何用 Standing Orders 给 Agent 授予永久性的操作权限。
核心理念:从"逐次指令"到"永久授权"
官方文档用一个类比说得很清楚——这就是"每周五提醒助理发周报"和"直接告诉助理你负责周报这件事,每周五编好发出去,出问题再找我"之间的区别。前者你是每次都要开口的触发器,后者你只需要定义好边界,剩下的交给 Agent 自己判断。
没有 Standing Orders 会怎样
- 每个任务都需要你主动提示 Agent
- Agent 在请求之间处于闲置状态
- 常规性工作容易被遗忘或拖延
- 你成为整个流程的瓶颈
有了 Standing Orders 之后
- Agent 在定义好的边界内自主执行
- 常规工作按计划自动进行,不需要你开口
- 你只需要在例外情况和审批环节介入
- Agent 能把闲置时间转化为有效产出
如何定义一个 Standing Order
官方推荐把常设指令直接写进 AGENTS.md(该文件每次会话都会被自动注入),或者对于较大的配置,单独放在类似 standing-orders.md 的文件里,再从 AGENTS.md 引用。每个"程序"(program)需要明确四个要素:
1. Scope(范围) — Agent 被授权做什么
2. Triggers(触发条件)— 什么时候执行(按计划/按事件/按条件)
3. Approval gates(审批关卡)— 哪些动作需要人工签字才能执行
4. Escalation rules(升级规则)— 什么情况下要停下来求助
一个完整示例:周报程序
## Program: Weekly Status Report
**Authority:** Compile data, generate report, deliver to stakeholders
**Trigger:** Every Friday at 4 PM (enforced via cron job)
**Approval gate:** None for standard reports. Flag anomalies for human review.
**Escalation:** If data source is unavailable or metrics look unusual (>2σ from norm)
### Execution Steps
1. Pull metrics from configured sources
2. Compare to prior week and targets
3. Generate report in Reports/weekly/YYYY-MM-DD.md
4. Deliver summary via configured channel
5. Log completion to Agent/Logs/
### What NOT to Do
- Do not send reports to external parties
- Do not modify source data
- Do not skip delivery if metrics look bad — report accurately这个结构值得直接照抄——授权范围、触发条件、审批关卡、升级规则、具体执行步骤、明确的"不要做什么"清单,六个部分组合起来,让 Agent 既有自主行动的空间,又有清晰的边界不会失控。
Standing Orders 和 Cron Jobs 是分工关系
Standing Order 定义:Agent 被授权"做什么"
Cron Job 定义:这件事"什么时候"发生
组合方式:
Standing Order: "你负责每日收件箱分类"
↓
Cron Job(每天早上8点): "按常设指令执行收件箱分类"
↓
Agent: 读取常设指令 → 执行步骤 → 汇报结果
关键技巧是——Cron Job 的提示词应该引用常设指令,而不是把内容重复写一遍:
openclaw cron add \
--name daily-inbox-triage \
--cron "0 8 * * 1-5" \
--tz America/New_York \
--timeout-seconds 300 \
--announce \
--channel bluebubbles \
--to "+1XXXXXXXXXX" \
--message "Execute daily inbox triage per standing orders. Check mail for new alerts. Parse, categorize, and persist each item. Report summary to owner. Escalate unknowns."这样一来,常设指令的具体细节只需要维护一份(在 AGENTS.md 或引用文件里),Cron Job 只负责触发,不需要每次改动细节时同步改两个地方。
实战建议
1. 从明确、低风险的场景开始(比如周报这类只读+生成的任务),
验证流程跑通后再扩展到有实际外部影响的场景
2. 审批关卡要写清楚"什么情况下必须停下来问",
而不是笼统地说"重要事项需要审批"
3. "不要做什么"清单和"要做什么"步骤同样重要,
前者是防止 Agent 在自主执行时越界的最后一道防线
4. Standing Order 内容变化后,记得同步检查引用它的
Cron Job 提示词是否还准确对应
总结
Standing Orders 本质上是把"人盯着 Agent 做事"的模式,升级成"人定义边界、Agent 在边界内自主运转"的模式——这是让 OpenClaw 从"被动响应的工具"进化成"主动履职的数字员工"的关键机制,也是构建更复杂的自动化工作流(比如后文会介绍的 Delegate 架构)的基础组件之一。
来源:Standing Orders — OpenClaw 官方文档