命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
/loop 的别名,按设定间隔反复运行某个 prompt 或 slash 命令。
/proactive 是 /loop 命令的别名(alias)。官方文档在 /loop 词条末尾原文写明:
/loop [interval] [prompt]— Skill。 Run a prompt repeatedly while the session stays open. Omit the interval and Claude self-paces between iterations. Omit the prompt and Claude runs the built-in maintenance prompt or yourloop.md. Example:/loop 5m check if the deploy finished. Alias:/proactive
也就是说,官方文档本身没有为 /proactive 单独开设条目或写不同的行为说明——它触发的功能、参数格式、内部机制都与 /loop 完全一致,只是命令名不同。本篇下文以 /loop 的官方文档("Run prompts on a schedule")为准,示例中把命令替换写作 /proactive。
/loop(进而 /proactive)被归类为 Claude Code 的内置 Skill(bundled skill),依托 CLI 内部的定时调度器工作。
/proactive 支持"间隔"和"prompt"两个都可省略的参数,组合不同决定行为:
| 你提供的内容 | 示例 | 会发生什么 |
|---|---|---|
| 间隔 + prompt | /proactive 5m check the deploy | 按固定间隔重复运行 prompt |
| 只有 prompt | /proactive check the deploy | 每轮由 Claude 自行选择下一次运行的间隔 |
| 只有间隔,或什么都不给 | /proactive | 运行内置维护 prompt,或项目/用户自定义的 loop.md |
也可以把 skill 作为 prompt 传入,例如 /proactive 20m /review-pr 1234,每轮重新执行该 skill。
/proactive 5m check if the deployment finished and tell me what happened
Claude 会把间隔换算成 cron 表达式并确认执行频率与任务 ID。间隔可以是前置的裸 token(如 30m),也可以是尾随的从句(如 every 2 hours),支持单位 s/m/h/d。由于 cron 最小粒度是一分钟,秒会被向上取整;像 7m、90m 这种凑不出整齐 cron 步长的间隔,会被四舍五入到最接近的可行步长,Claude 会告知实际采用的值。
/proactive check whether CI passed and address any review comments
省略间隔时,Claude 每轮结束后会根据观察到的情况,在 1 分钟到 1 小时之间动态选一个等待时长(例如构建还没跑完就等短一点,PR 安静下来就等长一点),并在每轮结束时打印所选延迟和理由。
loop.md/proactive
裸调用时,若项目或用户目录下存在 loop.md,则使用其内容作为默认 prompt;否则运行内置维护 prompt,按顺序:继续会话中未完成的工作 → 处理当前分支 PR 的评论 / CI 失败 / 合并冲突 → 在没有其他待办时做清理性质的 bug 排查或简化。Claude 不会在此范围外主动发起新任务,push、删除等不可逆操作只有在会话上下文已经授权的延续动作里才会执行。
.claude/loop.md(项目级,优先)或 ~/.claude/loop.md(用户级)中写纯 Markdown 指令,替换内置维护 prompt。内容超过 25,000 字节会被截断,修改后下一轮迭代即生效。loop.md;命令行显式给了 prompt 时会忽略它。CLAUDE_CODE_DISABLE_CRON=1 可整体禁用调度器,届时 cron 相关工具和 /loop//proactive 都不可用,已排期的任务也会停止触发。| 约束 | 原因 / 说明 |
|---|---|
| 最小间隔 1 分钟 | cron 粒度限制,秒级输入会被取整 |
| 固定间隔任务 7 天后自动过期 | 防止被遗忘的循环无限期运行 |
| 单个会话最多 50 个已排期任务 | 官方文档明确的上限 |
| 任务只在会话空闲、Claude Code 进程存活时触发 | 关闭终端或退出会话即停止触发;后台化会话(backgrounding)可让任务在无终端时继续跑 |
| 新开会话会清空该会话作用域内的所有任务 | 用 --resume/--continue 恢复时,只找回未过期的循环任务和触发时间未到的一次性任务;后台 Bash 与 Monitor 任务不会被恢复 |
| 在 Amazon Bedrock、AWS 上的 Claude Platform、Google Cloud Agent Platform、Microsoft Foundry,或关闭 feature-flag fetching 时,动态间隔与内置维护 prompt 需要 Claude Code v2.1.248 及以上 | 低于该版本时,无间隔的 prompt 按固定 10 分钟跑,无 prompt 的裸 /loop(/proactive)只打印用法说明而不会真正运行 |
| 调度器每秒轮询到期任务,低优先级排队 | 触发点在两轮对话之间,不会打断 Claude 正在进行的响应;忙碌时任务会等到当前轮次结束才触发,错过的间隔不会补跑 |
官方文档给出了三种调度方式的对比,/loop(/proactive)是其中"会话内快速轮询"的选项:
| Cloud Routines | Desktop 定时任务 | /loop(/proactive) | |
|---|---|---|---|
| 运行位置 | 云端,默认由 Anthropic 托管 | 本机 | 本机 |
| 需要机器保持开机 | 否 | 是 | 是 |
| 需要会话保持打开 | 否 | 否 | 是 |
| 重启后是否保留 | 是 | 是 | --resume 且未过期时才恢复 |
| 能否访问本地文件 | 否(全新 clone) | 是 | 是 |
| 权限提示 | 无(自主运行) | 按任务可配置 | 继承当前会话 |
| 最小间隔 | 1 小时 | 1 分钟 | 1 分钟 |
官方建议:需要脱离本机稳定运行用 Cloud Routines,需要本地文件与工具用 Desktop 定时任务,会话内的快速轮询用 /loop(即 /proactive)。
以上均直接来自官方文档给出的用例:
loop.md 让循环持续维护某个发布分支:CI 变红就拉日志诊断修复,有新评论就逐条处理/permissions、/model、/clear 这类内置命令,标记了 disable-model-invocation: true 的 skill(包括内置的 /verify),被 skillOverrides 设置或 Skill 拒绝规则限制的 skill,以及 MCP prompts(如 /mcp__github__list_prs),到点触发时只会作为纯文本进入对话,不会被执行。Esc 只能停掉"动态自定速"的循环,清除的是下一次唤醒;如果任务是你直接让 Claude 用自然语言创建的固定间隔任务,Esc 不影响它,得显式要求取消(对应 CronDelete)。7m、90m 这类值会被换算成最接近的可行 cron 步长,实际生效频率可能与输入不完全一致。loop.md 只定义裸调用时的单一默认 prompt,不是多任务列表;命令行一旦显式带了 prompt,loop.md 会被忽略;文件超过 25,000 字节的部分会被截断。/proactive(无 prompt)不会真正进入动态循环,只会打印用法信息;无间隔的 prompt 也不会动态调间隔,而是固定按 10 分钟跑。Esc,清除待触发的唤醒即可,循环不会再次触发。CronDelete 工具按任务 ID 操作;不主动取消的话,任务会在创建后 7 天自动过期并做最后一次触发后自删除。CLAUDE_CODE_DISABLE_CRON=1,会禁用整个 cron 调度器,/loop 与 /proactive 均不可用,已排期任务全部停止触发。/proactive 是 /loop 的 Alias,并给出 /loop 的原始语法与说明/loop 的完整行为、限制、对比表、loop.md、停止方式等细节来源`/proactive` 成为 `/loop` 的别名