返回博客
claude-codehow-toschedulingautomationunattended

如何让 Claude Code 在夜里按计划运行,并设好边界

用 Crewly 的 Schedules 页面设置夜间 Claude Code 任务:cron、发给哪个 agent、写什么指令、运行次数上限。再加上权限设置,它决定任务凌晨两点能跑完,还是停在那里等你。

C
Crewly Team
阅读约 6 分钟
分享

目录

夜间报告、周一早上的检查,是大多数人最先想让 agent 自己完成的事。两件事决定它行不行:计划本身,以及 agent 遇到没人醒着回答的问题时会怎样。本文把两件事都讲到。

开始之前

  • 已安装并运行 Crewly,要用的 agent 已启动。还没装的话:

试用 Crewly:请先安装 Node.js 22 或更新版本(nodejs.org 的安装包,或 Homebrew / 系统包管理器),再运行:

bash
curl -fsSL https://crewlyai.com/install.sh | bash

然后打开一个新的终端,运行:

bash
crewly start

想用 npm?如果你的 Node 来自 Homebrew 或 nodejs.org 安装包,npm install -g crewly 也可以。

  • 夜里不会休眠的机器。任务触发时,Crewly 和 agent 必须在运行。

第 1 步:创建计划

计划在仪表盘左侧栏 TOOLS 下面。

Crewly 仪表盘的 Schedules 页面,从左侧栏 TOOLS 进入,右上角是 New schedule 按钮,列表为空Crewly 仪表盘的 Schedules 页面,从左侧栏 TOOLS 进入,右上角是 New schedule 按钮,列表为空

  1. 打开仪表盘,点 Schedules。
  2. 点右上角的 New schedule。
  3. Type: 保持 On a schedule。另一个选项是 On an event。
  4. Name: 起个以后认得出的名字,例如“Nightly report”。
  5. Cron expression: 五段,分钟 小时 日 月 星期,使用本地时区。0 2 * * * 表示每天 02:00。表单默认填 0 9 * * 1-5,即工作日 09:00。
  6. Send to: 要做这件事的 agent 的会话名。这是自由文本框,没有选择器,请从 Teams 页面复制。
  7. Message: 任务触发时 agent 收到的完整指令。请当作 agent 今天从没见过这个项目来写:做什么、在哪里做、产出什么。
  8. Max runs(可选): 一晚的任务填 1。留空表示一直重复,直到你停止。
  9. 点 Create。任务会出现在所属团队下的 Schedules 标签里,显示类似“Every day 02:00 ET · next in 9 h”。

填好的 New schedule 表单:类型 On a schedule,名称 Nightly report,cron 为 0 2 * * *,agent 会话名、消息,Max runs 为 1填好的 New schedule 表单:类型 On a schedule,名称 Nightly report,cron 为 0 2 * * *,agent 会话名、消息,Max runs 为 1

点 Create 之后的 Schedules 列表:Nightly report 任务出现在所属团队下,显示 Every day 02:00 ET 和下次运行时间点 Create 之后的 Schedules 列表:Nightly report 任务出现在所属团队下,显示 Every day 02:00 ET 和下次运行时间

要停止,用该行的暂停图标,或菜单里的 Cancel schedule。已结束的任务会移到 History 标签。你也可以在聊天里请团队负责人帮你建。

我们验证过的:按这个方式建了一个 Max runs 为 1 的任务,它在预定的那一分钟触发,记为一次运行,并以成功结果结束。我们没有声称的:agent 完成了任务。计划的工作是触发并把消息发给 agent,工作做得好不好,要靠你早上的检查。

你会注意到的毛刺:计划只支持 cron(没有一次性的日期和时间),agent 字段是原始会话名,设了运行上限的任务会立刻显示“Expiring soon — renew”,这是无害的。Schedules 页面的其他功能,见 Crewly in September。

第 2 步:你不在时,agent 能做什么

这一步最容易被跳过。按 Claude Code 权限文档,Manual 模式(设置里叫 default)下 shell 命令和文件编辑需要批准,而工作目录内的读取不需要。凌晨两点没人批准,所以需要你没允许的命令的任务可能就停在那里等。

有三种处理方式,从最安全到最宽松:

  • 只允许任务需要的。 在设置文件里或通过 /permissions 为具体命令加 allow 规则,例如 Bash(git diff *)。规则的检查顺序是先 deny,再 ask,最后 allow,所以你可以允许一类命令,同时仍然禁止其中危险的。
  • 使用 dontAsk 模式。 它会自动拒绝所有本来要弹出确认的调用。读取和你预先批准的工具照常运行。任务不会卡在确认上,只是做不了你没允许的事。在设置里改 defaultMode 可以改变会话启动时的模式。
  • 除非 agent 跑在容器或虚拟机里,否则避免 bypassPermissions。 它会跳过权限确认,文档说只应在 Claude Code 无法造成破坏的隔离环境里使用。

也用 deny 规则写下夜里绝不能发生的事,例如用 Read(./.env) 保护密钥。deny 规则里只写工具名,会把这个工具从 agent 那里整个移除。

如果你不通过 Crewly、直接单独运行 Claude Code,同样的思路适用于非交互运行:claude -p "..." --allowedTools "Read,Edit" 会预先批准你列出的工具,--permission-prompts none(Claude Code 2.1.259 或更高版本)会拒绝本来要弹出确认的操作,而不是等待。

第 3 步:写一条能独立完成的消息

好的夜间消息有四部分:

  1. 一句话说明任务。“运行测试套件并总结失败项。”
  2. 边界。“不要推送,不要修改 reports/ 以外的文件。”
  3. 结果放哪里。 一个文件路径、一张工单或一条 Slack 消息。
  4. 卡住时怎么办。“如果需要一个无法运行的命令,就停下来,写明是哪一个。”这样静默的停滞会变成早餐时能读到的一行字。

第 4 步:早上检查

打开 Schedules,再看 History,确认任务触发了。然后打开消息里要求 agent 产出的结果。如果没有,先看机器是不是休眠了,以及 agent 是不是在等某个权限确认。

第一晚先把 Max runs 设为 1。跑通以后再清空这个字段。

来源

Crewly 的步骤和标签:2026 年 10 月 9 日在仪表盘(版本 1.20.279)中核对。Claude Code 的事实:Configure permissions 和 Run Claude Code programmatically,2026 年 10 月 9 日读取。

准备好编排你的 AI 团队了吗?

开始使用 Crewly,把多个 Claude Code、Codex 或 Antigravity agent 组成一支协同工作的团队来运行。

curl -fsSL https://crewlyai.com/install.sh | bash阅读文档 →

然后打开一个新的终端,运行:

crewly start

相关文章