← 返回信息流
AI 资讯Hacker News·3 小时前

备用Mac设置Claude Code控制,分步指南

原标题:Setting up your spare Mac for Claude Code to control, a step-by-step guide

速览

这是一篇面向开发者的教程,详细说明如何将备用Mac设置成Claude Code的控制端。通过该指南,用户可以利用闲置硬件远程运行Anthropic的AI代码工具,提升资源利用率。步骤涵盖环境配置、权限设置和连接验证,适合希望扩展AI开发工作流的用户。

AI 深度解读

背景

在日常开发与研究中,我们经常需要将复杂任务委托给 AI 代理(如 Claude Code)来执行,但在个人主力机上直接运行这类代理存在风险——尤其是当启用 --dangerously-skip-permissions 标志时,代理拥有对系统几乎全部的控制权限。为了隔离风险,同时充分利用 Claude Code 的完整能力(包括计算机使用功能,即模拟鼠标点击、拖拽等操作),作者探索了将闲置 Mac 打造成一个专用、始终在线的“代理机”的方案。这种方法不仅能让用户通过手机端的 Claude App 或主力机上的 SSH 随时与 Claude Code 对话,还能避免因代理误操作或访问敏感数据而对主力机造成损害。

核心内容

完整的设置流程分为以下步骤:

1. 准备闲置 Mac(目标机)

  • 擦除现有数据:如果目标机上存有不想让代理访问的旧数据,先彻底擦除。支持 Apple Silicon 或 T2 芯片的 Mac:进入“系统设置 → 通用 → 传输或重置 → 抹掉所有内容和设置”。较旧的 Intel Mac:重启进入恢复模式(启动时按住 Cmd+R),用磁盘工具抹掉内置硬盘,然后重新安装 macOS。
  • 更新系统(可选):「系统设置 → 通用 → 软件更新」安装最新版 macOS。
  • 创建新本地用户账户:在“系统设置 → 用户与群组”中新建账户。不要登录 Apple ID,跳过设置过程中的 Apple ID 登录步骤。该账户必须拥有管理员权限(否则 sudo 会拒绝运行)。
  • 赋予管理员权限:在“用户与群组”中勾选“允许用户管理这台电脑”。若需通过命令行修复,可用 sudo dseditgroup -o edit -a <用户名> -t user admin

2. 启用远程登录(SSH)

在目标机上运行:

sudo systemsetup -setremotelogin on

如果提示“需要‘全磁盘访问权限’才能打开或关闭远程登录”,需先为终端应用授予权限:

  • 系统设置 → 隐私与安全性 → 全磁盘访问权限 → 点击“+”,在文件选择器中进入“应用程序 → 实用工具 → 终端”,添加并重启终端,重新执行命令。

3. 设置免密码 sudo

为了让代理和 SSH 命令执行管理任务时无需每次输入密码,在目标机上执行一次(需要输入一次当前用户登录密码):

echo "<用户名> ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/<用户名>-nopasswd >/dev/null
sudo chmod 440 /etc/sudoers.d/<用户名>-nopasswd
sudo visudo -cf /etc/sudoers.d/<用户名>-nopasswd   # 必须输出 "parsed OK"
  • 第一行写入规则文件,允许该用户无需密码执行 sudo
  • 第二行设置文件为只读(否则 sudo 会忽略)。
  • 第三行验证语法:sudoers 文件任何拼写错误都可能导致完全无法使用 sudo,必须确保输出 parsed OK。 验证:sudo -n true 静默成功即表示免密码 sudo 生效。

4. 确定目标机地址

  • 推荐使用主机名:在目标机上运行 scutil --get LocalHostName,得到主机名(如 MacBook-Pro),加上 .local 后缀即为地址(如 MacBook-Pro.local)。也可在“系统设置 → 通用 → 共享”中查看“本地主机名”。
  • 确保主机名唯一:如果局域网中有重名,地址可能指向错误机器。可重命名:sudo scutil --set LocalHostName newmacbook(将 newmacbook 换成你想要的名称,之后地址变为 newmacbook.local)。
  • IP 地址(不推荐):运行 ipconfig getifaddr en0 获取(如 192.168.1.80),但重启或一段时间后可能变化。

5. 从主力机(源机)连接目标机

  • 生成 SSH 密钥(如果还没有):ssh-keygen -t ed25519
  • 安装公钥到目标机ssh-copy-id <用户名>@<目标主机名>.local(需要输入一次目标机用户密码)
  • 测试免密登录ssh <用户名>@<目标主机名>.local whoami 应直接输出目标机用户名,无需密码。

6. 防止目标机进入睡眠

默认 macOS 在闲置约 10 分钟后会睡眠,导致断网。在目标机上执行(或通过 SSH 执行):

sudo pmset -c sleep 0         # 插电时永不睡眠
sudo pmset -c disablesleep 1  # 合盖时也不睡眠
sudo pmset -c displaysleep 0  # 保持显示器常亮

验证:pmset -g | grep -iE 'sleep' 应显示 sleep 0SleepDisabled 1displaysleep 0。 如果目标机有时用电池供电,可将 -c 替换为 -a(适用于所有电源),但会消耗电池电量。

  • 防止屏幕锁定:屏保启动后屏幕会锁定,需禁止屏保:
defaults -currentHost write com.apple.screensaver idleTime 0

7. 设置剪贴板共享(可选)

macOS 自带 pbcopy(写入剪贴板)和 pbpaste(读取剪贴板),通过 SSH 管道可在两台机器间传输剪贴板内容(加密、点对点,无需 Apple ID 或第三方服务)。作者提供了一个封装脚本 clip.sh,额外支持图片传输(原生 pbcopy/pbpaste 仅支持文本)。在主力机上安装:

curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/main/clip.sh -o ~/.local/bin/clip
chmod +x ~/.local/bin/clip
export IC_BOX="<用户名>@<目标主机名>.local"   # 添加到 ~/.zshrc 中

用法:

  • clip send:将当前机器的剪贴板内容(文本或图片)发送到目标
查看原文 →ykdojo.github.io