大部分自动化方案都以同样的方式消亡。有人搞了个聪明的玩意儿,在聊天窗口里跑了一次,合上笔记本去吃晚饭,然后整个东西就消失了。脚本从来不是薄弱环节,笔记本才是。它必须保持开启、插电、唤醒,工作才能继续——而笔记本的设计初衷恰恰与之相反。
Mac mini 就没有这个问题。基础版的价格大约 599 美元,功耗比一盏台灯还低,运行时几乎无声,而且它的唯一使命就是:保持开机。正是这个特性,让它成为人们悄悄将 Claude 工作流托付给的那台机器。
本文将介绍三种这样的工作流——一个会自动分类的收件箱、一个会在夜间审核的拉取请求、以及一个会给你简报而非会议标题的日历——所有这些都运行在某个角落里的 mini 上,默默完成那些不需要有人记得去启动的工作。

为什么不用 Claude 聊天界面来做这些?
你当然可以把邮件粘贴到 Claude 里,让它起草回复。你也可以把代码差异贴进去,请求审核。这篇文章里没有任何一项功能是聊天窗口做不到的。
改变的是“谁按下执行键”。
在聊天界面里,你就是触发器,每次都是。你打开标签页,粘贴内容,阅读回复,再复制到别处。一旦你停止操作,流程就停止了。它是一把只有你手握着才能动的工具。
而在 mini 上,触发器是一个定时任务、一个 webhook、或者一个文件夹里出现的新文件。Claude 完成工作,根据你预先写好的规则检查自己的输出,然后要么发布结果,要么重试——整个过程不需要任何人打开笔记本。这就是“我使用的模型”和“一个自主运行的系统”之间的全部区别。
桌面上到底放了什么
三层结构,没有一样是稀奇的:
机器。 一台 Mac mini,运行着 launchd 任务(macOS 上比 cron 更守规矩的替代品),这些任务会按计划或在文件变化时触发 Python 脚本。任何一台小型、始终在线的 PC 都能完成同样的工作——mini 只是恰好安静、运行成本低、而且小到可以藏在显示器后面。
存储。 普通的文件夹和 Markdown 文件,以及工作流直接触及的任何东西——通过 IMAP 连接的收件箱、本地克隆的 GitHub 仓库、同步到 .ics 订阅源的日历。没有任何东西依赖别人的应用。如果 mini 明天消失了,它产生的所有文件仍然可以在任何电脑上正常打开。
推理引擎。 Claude,通过 API 调用。Sonnet 处理任何需要真正判断力的任务——决定一个拉取请求是否可以安全合并、起草一条听起来像你本人的回复。Haiku 处理那些廉价、高吞吐量的任务——分类、打标签、是/否检查。这样拆分工作,是每月账单能控制在咖啡订阅费以下的主要原因。
现在来看实际的工作流。
常规任务一:你检查时收件箱已经没有噪音
大多数收件箱里并没有多少艰难的决定。里面塞满了你根本不需要干预的东西——一封新闻简报、一个日历确认、一个供应商问了你五十遍的问题。难点不在于回复它们,而在于每个问题在你还未决定是否处理之前,就已经偷走了你二十秒的注意力。
1运行时间: 工作日每 15 分钟一次2监视对象: 主收件箱中的新邮件34步骤:5 1. 拉取同一线程中的最近 10 封邮件作为上下文6 2. Claude 对新邮件进行分类:7 - 例行(确认、新闻简报、自动回复)8 - 需要回复(真正的问题、请求)9 - 需要人工决策(金钱、冲突、任何模棱两可的情况)10 3. 例行 -> 自动归档,记录到每日摘要中11 需要回复 -> Claude 以我的语气起草回复,保存到草稿箱,12 未经我打开确认绝不发送13 需要人工 -> 原封不动,标记,不尝试起草1415检查: 分类必须包含一行理由。如果 Claude 无法给出引用实际邮件内容16 的理由,则该邮件默认归入“需要人工”类别。17停止条件: 批次中的每封邮件都已完成分类,或任何一封邮件重试 3 次后18 仍未成功,则直接标记给我处理。
这里的关键规则是回退机制。任何 Claude 无法自信分类的内容,它不会去猜测——而是像往常一样直接交到你手里。这个工作流并非试图取代那 10% 困难决策的判断力,而是避免在 90% 的简单事情上浪费你的注意力。
常规任务二:拉取请求在你醒来前就完成了初审
代码审查有一个奇怪的失败模式:最重要的审查——针对晚上 11 点提交的 PR——往往会在半睡半醒中被匆忙完成,或者更糟,被一句“我明天再看”然后不了了之地合并。
1运行时间: 每次有新的拉取请求时,通过 GitHub webhook 触发23步骤:4 1. 拉取代码差异和关联的问题(如果有的话)5 2. Claude 根据固定评分标准进行审查:6 - 是否与关联问题的实际范围一致?7 - 是否涉及 auth、支付或迁移的变更?(标记,不判断)8 - 变更行是否有测试覆盖?(有还是缺失)9 - 命名和结构是否与文件其余部分保持一致?10 3. 评论直接发布在 PR 上,每个评分项 1-5 分,11 并明确指出最弱的两个点1213检查: 只有引用具体行号的评论才会被发布。没有行号引用的审查14 会被丢弃并重试——模糊的反馈不值得发布。15停止条件: 评论已发布,或重试 2 次后,PR 保持原样,并附上一条16 说明:自动审查无法完成。
这里没有任何自动合并的操作。它是一双永不疲倦的第二双眼睛,在你真正的第一双眼睛工作之前,就已经审查了你的 PR。使用固定评分标准进行评分,是它保持有用的关键——一个被要求“自由式审查这段代码”的模型,要么会赞美一切,要么会随机挑刺。而一个根据四个固定问题打分的模型,每次都会产生同类型的反馈,这正是让它值得在早上 8 点阅读的原因。

常规任务三:会议附带了简报,而不仅仅是标题
日历邀请告诉你时间和地点。但它几乎从不告诉你走进会议室之前真正需要记住什么——和那个人最近的邮件往来、上次会议未解决的问题、某个会被人问到的数字。
1运行时间: 每次有 2 名及以上参与者的日历事件前 45 分钟23步骤:4 1. 拉取最近的邮件往来,以及任何与参与者姓名或事件标题5 关联的共享文档6 2. Claude 撰写一页简报:7 - 上次达成了什么共识(如果有的话)8 - 一个值得提出的待解决问题9 - 最近一次交流中提到的任何数字或日期10 3. 在事件开始前 30 分钟以推送通知形式发送1112检查: 简报必须引用实际的先前消息或文档。如果没有找到13 先前的上下文 -> 通知中显示“未找到历史记录”,14 而不是编造摘要。15停止条件: 已发送,或者如果参与者是新人,则完全跳过。
最后这条检查值得仔细琢磨。Claude 很容易在找不到真实上下文时,凭空编造一份听起来合理的简报——而一份看似合理的假简报比没有简报更糟糕,因为你可能会相信它。强制要求诚实地报告“未找到任何内容”,才使得那些真正生成的简报值得一读。

上述所有方案依赖的两条规则
剥去具体细节,每个常规任务都依赖于相同的两条护栏。
一条可检查的规则,而不是一个模糊的感觉。 “给这封邮件分类”是一个模糊的感觉。“给这封邮件分类,并且如果你不能引用证明该标签的句子,就默认归入安全类别”才是一条规则。区别在于,Claude 是在根据某个具体标准给自己的成果打分,还是仅仅生成一些听起来像那么回事的东西。
一个真正的停止条件。 上述每个常规任务都有重试次数的硬性限制,以及在无法干净完成任务时的明确定义的回退方案。没有这个,一封格式错误的邮件或一个带有损坏差异的 PR,就会在重试循环中整晚愉快地消耗 API 调用,账单会在 bug 报告之前出现。
把这两点搞对了,具体任务是什么几乎就不重要了——收件箱、代码、日历,或者其他任何东西都可以。
在构建之前,先用手动方式感受一下
这一切都不需要你一开始就接触终端。你可以在普通的 Claude 对话中运行同样的模式,看看它是否真的对你有用,然后再进行自动化:
1你将分轮次完成此任务,在宣布完成之前检查自己的输出。23任务:4[你想要处理的事情]56轮次规则:7- 执行工作。8- 对照以下条件进行检查:[具体的、可检查的条件]9- 如果未通过检查,说明问题所在,并只重新做那一部分。10- 如果通过,则说“完成”并停止。11- 永远不要问我澄清性问题——做出最合理的假设,12 用一句话说明,然后继续。1314开始。
这就是整个机制的缩略版。没有 mini,没有 webhook,没有定时任务——只有 Claude 根据规则检查自己的输出,而不是在第一个看起来合理的草稿处就停止。如果你在同类任务上手动运行这个模式三到四次,并且每次都回来继续使用,那就说明它值得放到一台不需要你记得去运行的机器上。
防止它在凌晨 2 点崩溃的顺序
那些可靠运行这些方案的人,没有一个是先写 cron 任务的。真正经得起考验的顺序是:
- 在聊天界面中手动运行,直到输出始终正确。
- 将那个确切的提示词变成脚本——逻辑上不做任何改动。
- 在其他任何东西之前,先添加检查和重试限制。
- 只有到那时,才将其连接到定时任务或 webhook。
直接跳到第四步,你将以最痛苦的方式了解“没有停止条件”的代价,通常是在早上面对一堆重复的 PR 评论,或者收件箱里躺着上百封相同的草稿。
这到底给你带来了什么
这一切并不会让 Claude 变得更聪明。它带来的是“你使用的工具”和“无论你是否关注都在运行的系统”之间的区别。mini 并不是有趣的部分——它只是给工作流提供一个永远不需要重新打开的机器的最便宜、最安静的方式。
从本文中的手动版本开始。如果你发现自己手动运行它超过两三次,那就值得把它放到一台在你上床睡觉后仍然保持开机的盒子上。
感谢阅读本文
作者: @0xclayn
保存此文





