Claude Code 无人值守安全工作流教程
在新加坡远程 Mac 上设置权限边界 定时任务和进度接力
信息核实日期:2026-10-21
把 Claude Code 放到常开的远程 Mac 上,只解决了设备持续在线的问题。真正适合**运行的工作流,还需要限制它能执行的操作、拦截高风险命令、记录每轮进度,并让定时任务留下可检查的日志。本文依据 Zu**c.Ai 官方教程和 Anthropic 官方公开资料,整理一套偏保守的无人值守配置思路。
无人值守首先要解决什么
常见失败并不是模型能力不足,而是任务半夜停在权限确认、口头限制随上下文压缩消失、进度只留在对话里,或用户在外面无法判断任务究竟完成、报错还是等待接管。
稳定方案应把行为边界写进配置,把硬限制写进 Hook,把进度和结果写进文件。这样即使会话重启或上下文变化,关键规则仍然存在。
- 只允许测试、静态检查、查看差异等可回退动作
- 推送、强制覆盖、删除和读取密钥默认禁止
- 每轮任务更新进度文件并生成独立日志
- 发布、合并和生产操作始终保留人工确认

准备一套可控的运行环境
建议先在有人观察的情况下完整跑通一次,再考虑夜间定时运行。项目应位于 Git 仓库中,并保持工作区干净;SSH 用于查看日志和接回 tmux,图形远程工具用于处理系统弹窗或桌面配置。
Zu**c.Ai 官网介绍的方案位于新加坡,提供一人一台物理 Mac mini 的整机独享环境,并接入新加坡家庭宽带。当前***息显示,新客户整机租用 999 元每月起,交付后可使用 UU 远程,SSH 按用户自己的安全策略开启。
- 开启 FileVault 防火墙和自动锁屏
- 为自动化准备独立项目目录和日志目录
- 密钥保存在系统钥匙串或个人密钥管理工具中
- Claude 账号和订阅由本人准备并遵守 Anthropic 条款
步骤一 设置最小权限边界
Claude Code 的配置可以分为用户级 项目级和本机专用级。无人值守场景更适合把这台机器特有的限制放入本机专用配置,并避免提交到仓库。具体路径和规则语法可能随版本变化,应以当前官方文档和工具内的权限页面为准。
下面是偏保守的示意配置。允许列表只包含测试 检查和查看差异;禁止列表覆盖推送 删除和读取密钥。不要直接照搬到生产项目,先逐条验证匹配范围。
{
"permissions": {
"allow": [
"*ash(npm run test:*)",
"*ash(npm run lint:*)",
"*ash(git status)",
"*ash(git diff:*)"
],
"deny": [
"*ash(git push:*)",
"*ash(rm -rf:*)",
"Read(./.env*)",
"Read(./secrets/**)"
]
}
}
步骤二 用 Hook 增加硬拦截
仅靠对话中的提醒并不可靠。可以使用执行前 Hook 检查即将运行的命令,对推送 强制覆盖 读取钥匙串等操作返回拒绝。Hook 的输入字段 返回格式和退出行为要以当前 Claude Code 官方文档为准。
正确的测试方法不是把权限全部打开,而是故意触发一个应当被拒绝的无害测试,确认日志显示被拦截。任何无法确定风险的操作,都应停止并等待人工处理。
- 先记录当前配置并创建可回退副本
- 编写只匹配少量明确危险模式的拦截脚本
- 在配置中登记执行前 Hook
- 手动触发测试并确认拒绝原因清晰可见
- 每次升级 Claude Code 后重新验证 Hook
步骤三 把长期规则写入项目文件
项目根目录中的 CLAUDE.md 适合保存长期工作约定,例如测试命令 禁止修改的目录 提交规范和进度记录要求。它能减少重复说明,但不能代替权限规则或 Hook。
同时建立 PROGRESS.md,固定记录目标 已完成 下一步 阻塞项和最近一次测试结果。新会话开始时先读取这个文件,额度耗尽或上下文压缩后也能继续。
| 文件 | 用途 | 建议内容 |
|---|---|---|
| CLAUDE.md | 工作约定 | 测试方式 代码规范 禁止修改区域 |
| PROGRESS.md | 进度接力 | 已完成 下一步 阻塞项 测试结果 |
| 按日期日志 | 运行留档 | 命令输出 错误信息 完成时间 |
步骤四 定时运行并保留结果
Anthropic 官方快速入门资料列出 claude -p 作为执行一次查询后退出的非交互方式。它适合由 **cOS 的 launchd 定时调用,但第一次必须手动运行并确认登录状态 路径 权限和日志输出都正确。
示例脚本只要求继续一项安全且可回退的任务,并把 **ON 输出写入按日期命名的日志。无人值守任务遇到未授权操作时应停止或跳过,而不是扩大权限。
#!/**n/*ash
cd ~/work/myapp || e**t 1
claude -p "读取 PROGRESS.md,完成下一项安全且可回退的任务;运行测试并更新进度文件" \
--output-for**t json > ~/jo*s/logs/nightly-$(**te %F).json 2>&1- Mac 保持登录状态并关闭会中断任务的自动睡眠
- 脚本使用绝对路径或经过验证的固定 PATH
- 日志目录预先创建并限制访问权限
- 定时任务只处理开发和测试 不处理上线或生产变更
步骤五 进度接力和远程接管
每天早上先查看日志和 PROGRESS.md,再决定是否继续 合并或推送。需要随时接管的交互式任务仍放在 tmux 中运行,外出时通过手机 SSH 接回。通知可以发送到用户自己的邮件或机器人,但不要把代码 密钥或完整日志发送到不受控的第三方。
- 完成时写明改动范围和测试结果
- 失败时保留退出码和最后一段错误日志
- 卡住时写明等待人工确认的具体操作
- 新会话开始前先检查 Git 状态和进度文件

上线前检查清单
- 确认允许和禁止规则已经生效,并能在当前版本中查看。
- 触发一次应被拒绝的测试操作,确认权限规则或 Hook 能够拦截。
- 手动运行定时脚本,确认日志完整且只产生本地可回退改动。
- 断开远程连接后重新接入,确认日志和进度文件仍能读取。
- 检查项目没有明文密钥,FileVault 防火墙和锁屏仍开启。
- 确认推送 合并 发布和生产访问全部需要人工确认。
适合常驻远程 Mac 的原因
无人值守任务需要稳定机器 固定时区 持续网络和可远程接管的终端。把 Claude Code 仓库 日志和定时任务放在同一台常开的物理 Mac 上,可以减少环境变化带来的登录和路径问题,也让排查集中在一台机器。
Zu**c.Ai 的价值在于提供整机独享的新加坡 Mac 环境,而不是代替用户管理 Claude 账号或承担发布决策。用户仍需自己控制凭据 **差异并决定何时推送上线。Zu**c.Ai 与 Anthropic 不存在官方合作关系。
结语
安全的无人值守不是无限授权,而是让自动化只做可回退的工作,并把高风险决定留给人。














