常设指令赋予你的代理针对已定义程序的永久操作权限。你无需为每项任务都单独提示代理,而是通过定义具有清晰范围、触发条件和升级规则的程序,让代理在这些边界内自主执行:“周报由你负责。每周五汇总并发送,只有在发现异常时才上报。”
为什么需要常设指令
没有常设指令: 你需要为每项任务都去提示代理,日常工作会被遗忘或延迟,而你会成为瓶颈。
有常设指令: 代理会在定义好的边界内自主执行,日常工作按计划进行,而你只在例外情况和审批时介入。
它们如何工作
常设指令定义在你的 代理工作区 文件中。推荐直接将它们写入 AGENTS.md(它会在每次会话中自动注入),这样代理始终能在上下文中获取它们。对于更大的配置,你也可以把它们放到诸如 standing-orders.md 之类的专用文件中,并在 AGENTS.md 中引用它。
对于严格的、临时的 CI 或脚本入口点,请使用 openclaw agent exec。它会跳过工作区引导文件,因此每次一次性运行都是自包含的,而不是受常设指令约束。
每个程序指定:
- 范围 - 代理被授权做什么
- 触发条件 - 何时执行(按计划、事件或条件)
- 审批门槛 - 在采取行动前需要哪些人工签字确认
- 升级规则 - 何时停止并寻求帮助
代理会在每次会话中通过工作区引导文件加载这些指令(有关自动注入文件的完整列表,请参阅代理工作区),并结合自动化执行基于时间的强制实施。
将常设指令放在 AGENTS.md 中,以确保每次会话都会加载它们。工作区引导会自动注入 AGENTS.md、SOUL.md、IDENTITY.md、USER.md、BOOTSTRAP.md 和 MEMORY.md——但不会注入子目录中的任意文件。
常设指令的结构
常设指令与自动化
常设指令定义代理获授权执行的操作。自动化定义执行时间。二者协同工作:
自动化任务提示应引用常设指令,而不是重复其中的内容(openclaw automations;openclaw cron 仍是别名):
示例 1:内容和社交媒体(每周周期)
示例 2:财务运营(事件触发)
示例 3:监控与告警(持续运行)
执行-验证-报告模式
当与严格的执行纪律结合时,常设指令效果最佳。常设指令中的每个任务都应遵循这个循环:
- 执行 - 做实际工作(不要只是确认指令)
- 验证 - 确认结果正确(文件存在、消息已送达、数据已解析)
- 报告 - 告诉所有者做了什么以及验证了什么
这种模式可以防止代理最常见的失败方式:只确认任务,却没有真正完成。
多程序架构
对于管理多个关注点的代理,应将常设指令组织为边界清晰的独立程序:
每个程序都应该有:
- 自己的触发频率(每周、每月、事件驱动、持续运行)
- 自己的审批门槛(有些程序比其他程序需要更多监督)
- 清晰的边界(代理应知道一个程序在哪里结束、另一个从哪里开始)
最佳实践
应当这样做
- 从有限的权限开始,随着信任建立逐步扩大权限
- 为高风险操作定义明确的审批关卡
- 包含“不要做什么”部分——边界与权限同样重要
- 与自动化结合,以可靠地执行基于时间的任务
- 每周检查代理日志,确认常规指令是否得到遵循
- 随着需求变化更新常规指令——它们是不断演变的文档
应避免这样做
- 在第一天就授予广泛权限(“做你认为最好的事”)
- 跳过升级规则——每个程序都需要包含“何时停止并询问”的条款
- 假设代理会记住口头指令——将所有内容写入文件
- 在单个程序中混合多个关注点——不同领域使用不同的程序
- 忘记通过自动化来强制执行——没有触发器的常规指令最终只会变成建议
相关内容
- 自动化:一览所有自动化机制。
- 自动化任务:用于执行常规指令的计划安排。
- 钩子:由事件驱动的代理生命周期脚本。
- Webhooks:入站 HTTP 事件触发器。
- 代理工作区:常规指令所在的位置,其中包括自动注入的引导文件完整列表(
AGENTS.md、SOUL.md 等)。