让 Claude Code 帮你"看家":Hooks 与 /loop 入门

上周我把一个重构任务扔给 Claude,出门开了两小时会。回来发现它把 .env.production 改了。

那一刻我才意识到,单纯会用 Claude Code 还不够,你还得学会怎么管住它。折腾了一番之后找到了两个工具,今天分享给大家。


说白了就两件事

Hooks——Claude 做某件事的前后,偷偷插入你的脚本。可以叫停它、可以改它的行为、也可以在它收工时给你发个通知。

/loop——让 Claude 每隔一段时间自己去检查某件事。比如每半小时看一眼 CI 有没有挂,不用你守着。

记不住的话就记这一句:要管住它用 Hooks,要定时跑用 /loop。


Hooks:给 Claude 立规矩

有些文件不能碰

先解决我自己遇到的那个问题——怎么让 Claude 别动生产配置。

Claude Code 有个叫 PreToolUse 的时机,会在它写文件之前触发。我在这里加一个检查脚本,看到敏感文件名就直接叫停:

#!/bin/bash
# 保存为 ~/.claude/hooks/protect.sh

FILE=$(jq -r '.tool_input.file_path // empty')

if echo "$FILE" | grep -q "production"; then
  echo "这个文件不能动,请手动修改:$FILE" >&2
  exit 2
fi

exit 0

然后在 ~/.claude/settings.json 里登记一下:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{
        "type": "command",
        "command": "~/.claude/hooks/protect.sh"
      }]
    }]
  }
}

写完记得 chmod +x ~/.claude/hooks/protect.sh,这一步很容易漏,漏了脚本静默失败,连错误提示都不会有。

有一个地方要注意:脚本里那个 exit 2 才是真正的"叫停"信号。很多人会误用 exit 1,结果 Claude 该干嘛还干嘛,只是多记了条日志。写进 stderr 的内容会作为原因反馈给 Claude,告诉它"为啥不行"。

干完活叫我一声

另一个配置我现在天天用——Claude 完成任务等我的时候,自动发系统通知。这样我可以离开去做别的事,不用守着屏幕。

用的是 Notification 事件:

{
  "hooks": {
    "Notification": [{
      "hooks": [{
        "type": "command",
        "command": "osascript -e 'display notification "Claude 在等你" with title "Claude Code"'",
        "async": true
      }]
    }]
  }
}

macOS 直接用这个。Linux 把那行命令换成 notify-send "Claude Code" "在等你" 就行。

async: true 的意思是通知在后台发,不卡 Claude 的响应,加上比较好。


/loop:让它自己盯着

配置好 Hooks 之后,我还有一个需求:CI 跑完了我想知道,但我不想一直手动问。

在 Claude Code 里直接输:

/loop 30m check if the CI pipeline passed, summarize any failures

然后它就每 30 分钟自动去看一次。不用做别的配置,就这一行命令。

改间隔也很直白,30m2h 就是每两小时,1d 就是每天。


用 /loop 之前要知道的坑

踩过才会懂,提前告诉你。

关了终端就没了。 这是最坑的一点。/loop 跑在当前会话里,不是系统后台进程。我第一次用的时候设好了定时任务,去泡了杯茶,回来发现终端关了,任务全没了。现在统一用 tmux 开 Claude:

tmux new-session -d -s claude 'claude'

这样 SSH 断了、终端关了都没关系,任务还在跑。

最多活三天。 任务到期自动删,没提醒,就消失了。需要长期跑的,还是老老实实用系统 cron。

时间不准。 你设 30 分钟,实际可能 27 分钟或 33 分钟才触发——官方故意加了随机抖动,防止一堆任务同时触发把 API 打爆。要精确调度的场景不适合用 /loop。


想继续深入?

这两个是最容易上手的配置,能解决日常八成的需求。

如果以后遇到"怎么让 Claude 在停下来之前先验证任务做没做完"这种场景,可以去看 Stop Hook——但那块涉及防死循环的细节,稍微有点绕,留到下一篇单独讲。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐