首页/文章/Claude Code 总忘跑检查?把门禁写进 settings.json,放到新加坡 Mac mini 上常开

Claude Code 总忘跑检查?把门禁写进 settings.json,放到新加坡 Mac mini 上常开

· Zumac.Ai

问题:会话开了,该跑的检查却总忘

Claude Code 很擅长改代码,但不擅长替你记住「提交前还差哪几步」。多人协作或长任务里,常见漏项是:

  • 改完 TypeScript 没跑类型检查
  • 动了依赖却忘了锁文件校验
  • 改了脚本却没跑最小冒烟测试
  • 无人值守跑到一半,机器上其实已经红了,你还在本机等「看起来成功」

有人会在仓库的 .claude/settings.json(或项目约定的 hooks / 命令配置)里挂固定检查命令,让会话在关键节点自动执行那些「常忘的校验」。这比口头叮嘱可靠:规则写进仓库,人换了、会话断了,检查还在。

把这套配置放在新加坡常开的 Mac mini 上,收益更明显——本机关盖、UU 远程连接断开,远端会话仍按同一套检查门禁往下走。账号与订阅由你自行准备;本文只谈稳定合规的使用环境与可重复的工程步骤。

请使用你自己的 Claude 账号与官方工具,并遵守 Anthropic 的使用条款与适用政策。Zumac.Ai 与这些服务无官方合作关系。

目标:把「常忘的校验」写成可版本化的门禁

目标不是多装一套花哨插件,而是三件事同时成立:

  1. 检查命令进仓库:和代码一起被 review,而不是只活在某个人本机记忆里。
  2. 触发点明确:例如会话开始、一批文件改完、准备提交 / 推送前——按你团队真实流程选,不要一口气挂二十个会拖死会话的重任务。
  3. 机器常开且环境固定:Node、Xcode 命令行工具、测试依赖装在同一台新加坡 Mac mini 上,避免「本机能过、远端不过」的漂移。

步骤一:先盘点「你们真正漏过的检查」

打开最近两周的事故或返工记录,只挑重复出现的漏项,例如:

| 漏项类型 | 示例命令(按项目改) | |----------|----------------------| | 类型 / 静态检查 | npx tsc --noEmit | | 单测冒烟 | npm test -- --runInBand --testPathPattern=smoke | | 锁文件与安装一致性 | npm ci --dry-run 或团队约定的校验脚本 | | 格式 / lint | npm run lint | | iOS 侧最小编译 | xcodebuild -scheme YourApp -destination 'platform=macOS' build(仅在确有 macOS 目标时) |

原则:

  • 单次自动检查总时长控制在可接受范围(很多团队先压到一两分钟内);太重的全量 CI 仍留给流水线。
  • 命令必须非交互:不能弹 GUI 等人点。
  • 失败要有清晰退出码,方便 hook / 包装脚本判断。

把清单写成仓库里的 scripts/claude-gates.sh(名称自定),比把五条裸命令直接塞进配置更好维护。

步骤二:在 Mac mini 上固定运行环境

在新加坡 Mac mini(整机独享)上做一次「可复现」安装,并写进你自己的开机 / 登录备忘:

  1. 用固定用户登录图形会话或 SSH;工作目录固定到项目路径,例如 $HOME/work/your-app。
  2. 安装项目需要的运行时(Node、Python、Ruby 等)与包管理器;版本与 CI 对齐,可用 .nvmrc / .tool-versions 一类文件钉死。
  3. 确认命令行能跑通 scripts/claude-gates.sh,且失败时退出码非 0:
cd "$HOME/work/your-app"
chmod +x scripts/claude-gates.sh
./scripts/claude-gates.sh
echo "exit=$?"
  1. 需要 Xcode 相关检查时,先在这台机器上接受许可并装好对应 Command Line Tools;不要假设本机笔记本的 Xcode 状态会自动同步过来。
  2. 用 tmux 或可接回会话启动 Claude Code,避免 UU 远程连接断开就丢掉终端上下文。

环境只配在 Mac mini 上,本机负责编辑与确认。这样「自动检查」跑的是同一套二进制与同一份 node_modules 策略,结果才有参考价值。

步骤三:把门禁挂进 .claude/settings.json(或等价 hooks)

具体字段名随 Claude Code 版本可能调整,以你本机 claude 文档与 settings schema 为准。思路是统一的:在约定生命周期调用你的门禁脚本。

示例(示意结构,键名请按当前版本校正):

{
  "permissions": {
    "deny": [
      "Write(.env)",
      "Write(.env.*)",
      "Bash(rm -rf /)"
    ]
  },
  "hooks": {
    "afterEdit": [
      {
        "matcher": ".*\\.(ts|tsx|js|jsx)$",
        "command": "./scripts/claude-gates.sh --quick"
      }
    ],
    "beforeCommit": [
      {
        "command": "./scripts/claude-gates.sh --full"
      }
    ]
  }
}

落地时注意:

  1. 路径相对仓库根:会话的工作目录要固定到仓库根,否则相对路径会找错脚本。
  2. 分档:--quick 只跑类型与 lint;--full 再加测试。编辑过程中每次全量测试会拖垮节奏。
  3. 与权限策略一起提交:门禁脚本能跑,不代表允许 agent 改 .env 或清掉门禁本身。对 settings、密钥文件的写入单独 deny(可与「禁止自改 settings」一类策略配合,但不替代门禁)。
  4. 失败即停:包装脚本应在任一子检查失败时 exit 1,并打印是哪一步挂了。不要「全红仍继续大胆提交」。

若你团队不用 hooks 字段,也可以在 CLAUDE.md 里写「完成一批改动后必须运行 ./scripts/claude-gates.sh」——但硬触发仍比纯文档更稳。文档负责解释为什么,配置负责保证会发生。

步骤四:在无人值守长任务里验收

在 Mac mini 上开一次受控演练:

  1. 故意引入一个类型错误或让 lint 失败。
  2. 让 Claude Code 按常規流程改文件,观察 hook / 门禁是否拦住后续「声称已完成」的步骤。
  3. 修好错误后再跑,确认退出码归零。
  4. 断开本机 UU 远程连接 10 分钟,SSH 回去看会话与门禁日志是否仍按预期。
  5. 把演练结果记进仓库 docs/claude-gates.md:触发点、命令、已知慢项、谁有权改脚本。

验收标准很简单:人可以离开桌面,机器仍按同一套检查说话。

步骤五:和本机「随手点一下」比,差在哪里

| 做法 | 结果 | |------|------| | 只靠聊天里提醒「记得跑一下测试」 | 换会话就忘,无人值守更不可靠 | | 只在本机装检查,远端不装 | 本机绿、Mac mini 红,排查成本翻倍 | | 仓库门禁 + 新加坡 Mac mini 固定环境 | 检查与运行时绑定,可过夜、可接回、可 review |

适合放到整机环境的信号包括:检查依赖本机装不全、希望笔记本合盖后任务继续、需要同一时区与稳定网络跑安装与编译、以及多人共用同一套门禁脚本而不想每人改一遍本机。

Zumac.Ai 在新加坡提供 Mac mini 整机独享,接入新加坡家庭宽带。新客户整机租用 ¥999/月 起;季付、半年付、年付有折扣。交付后可用 UU 远程连接;SSH 按你的安全策略自行开启。Claude 账号仍由你自行准备。咨询可 Telegram @singatao。

小结

把「常忘的校验」写进仓库门禁,再让 Claude Code 在关键节点自动执行,比反复口头提醒管用。关键是:命令非交互、分档快速/完整、与权限策略一同提交,并在新加坡常开 Mac mini 上固定运行时。先做一次「故意造红再转绿」的演练,再交给长任务。方案与交付见 zumac.ai。

Zumac.Ai 新加坡 Mac mini M6,整机独享,¥999/月起,联系 Telegram @singatao。
查看方案与费用 · 帮助中心

返回首页 · 更多文章

Telegram 客服