原文:数字生命卡兹克,《折腾了整整1年,毫无保留地分享一下我这套Agent自动化系统。》,2026-11-02

卡兹克这套 Agent 自动化系统,按原文拆开看

卡兹克说自己一年前是完全不懂开发的设计师。现在他搭了一套系统:同事提意见、线上报错、到点的定时任务,都会自动叫 AI 去干活。大部分事 AI 自己办完,只有要他拍板的,才推到他飞书上,他点一下就行。

这里说的 Agent,指 Claude Code、Codex 这类能自己改代码、查资料的 AI 工具。这一页把这套系统按原文拆开讲,图里的方块都能点开看细节。

赶时间就看这三节,大约 3 分钟:01 起因02 架构图08 三个例子

说明:内容只取自原文,原文没交代的地方标了 文章未说明。原文的配图这里看不到,图里才有、正文没写的内容不补。

01起因:人的注意力不够用

卡兹克是从 DeepSeek 的一篇技术文章说起的。那篇文章开头有一句话,他认为是最重要的。

“一个人通常只能同时跟进3到5个活跃的会话,在这种设计下,单任务的上限取决于模型能力,多任务的上限取决于人的注意力。” 出自 DeepSeek《Super-agent设计探索:迈向更自主的Agent系统》,原文转引

现在多数人怎么用 Agent

打开 Claude Code 或 Codex,给一个任务,看着它干,干完检查,再给下一个。所有事情的起点都是人。不打开那个窗口,什么都不会发生。所以模型再强,能同时推进的也就是盯得过来的 3 到 5 个窗口。

他想改成什么样

把“任务从哪开始”这件事从人身上拿掉,让各种信号去触发 Agent。Agent 能自己处理的自己处理掉,拿不准、必须由他决策的,才推到他面前。他自己只做最后一步,在飞书上点一下确认,他管这一步叫“批奏折”。

他举的历史例子

1380 年,朱元璋借胡惟庸案废了中书省和丞相,六部直接对皇帝负责。洪武十七年九月,给事中张文辅给他报了一笔账:

8 天从十四号到二十一号
1660 件内外各衙门送上来的奏札
三千多件里面要处理的事
两百多份平均每天的奏札
400 多件朱元璋一人每天要处理的事

朱元璋当场说:“朕一人处此多务,岂能一一周遍”,意思是一个人管这么多事,不可能每件都照顾到。卡兹克拿这件事说明:现在每个人用 Agent,递上来的东西多了,也会碰到同样的问题。所以要设计一套调度,让人只做最关键的判断。

02整体架构

原文的架构图是一张图片,这里按正文文字重画。系统分四块:自动化中台、Agent 执行、CI 中台、飞书批奏折。按 ①~⑤ 的顺序看,点任意一个方块看细节。

进中台 0 去重拦下 0 Agent 干完 0 推到他面前 0 事件结论回收要他拍板留底 / 回写

← 图比屏幕宽,左右滑动看全图 →

结论统一收回中台 结果写回 GitHub 要他拍板的才推 每件事留底 查规则 点完,Agent 接着干 ① 事件来源 Webhook:找上门 定时任务:去找 ② 自动化中台 统一格式 · 去重 查规则表派活 统一叫醒 · 收结果 轻量服务器上 ③ 接单程序 每台 Mac 一个 一次最长等 50 秒 ④ Agent 执行 Claude Code · Codex 按专属操作手册干活 两台 Mac,本地跑 写完代码交上去就停 ⑤ CI 中台 审查 → 检查 → 合并 → 发布 → 核实上线 在 M4 上自建 规则表 哪类事交给谁 数据库 · 留底 还有一个可视化小镇 飞书 · 小卡 唯一出口 · 票拟 卡兹克 批红:点一下卡片

动画里点的多少、哪些被去重、哪些推给他,都是随机演示,不是真实数据。原文只说了大方向:大部分事 Agent 自己办完,只有一小部分推到他面前。

一件事从头到尾怎么走

  • 有事发生(同事提意见、线上报错、到点的定时任务),先发到自动化中台。
  • 中台把它整理成统一格式,去重,再查规则表(rules.json),决定交给哪台 Mac 上的哪个 Agent。
  • Mac 上的接单程序一直主动连着中台等活,接到就叫醒本地的 Claude Code 或 Codex。
  • Agent 按给这个任务配好的 skill(给 AI 写好的操作手册)干活。涉及改代码的,它写完代码就提一个合并请求(PR,就是把改好的代码交上去,申请并入正式版本),然后停下,自己不能直接上线。
  • 后面交给 CI 中台:审查、检查、合并、发布、核实,结果写回 GitHub。
  • 结论统一收回中台留底。只有需要他决策的,才通过小卡在飞书弹卡片。他点一下,等着的 Agent 接着干。

他自己要做的

只有最后一步:飞书里的 AI 助理小卡弹一张卡片,他点击确认。点完以后 Agent 收到决策,自己继续干活。

原文没讲清的地方

  • 他点完卡片,决策是怎么传回那个等着的 Agent 的 文章未说明
  • 中台用什么语言、什么数据库写的 文章未说明
  • 定时任务纳入中台后,是中台自己计时,还是 Claude / Codex 应用里计时再报给中台 文章未说明

03自动化中台

既然要把人从起点拿掉,就得设计“什么时候、在什么信号下叫 Agent 干活”。原文把这些信号统称为事件。中台就是专门管所有事件的地方。

两种事件:去找的,找上门的

定时去找:每隔一分钟或一小时主动去查一次(轮询),看有没有新活。Claude 和 Codex 的软件里就能直接设,他设了一大批定时任务,比如:

  • 每天下午,Codex 从微信群聊天记录、X、小红书、抖音搜大家对 AIHOT 的讨论和反馈,汇总成报告,给出要不要优化的建议。
  • 每周操控浏览器,去豆包、DeepSeek、千问、元宝、ChatGPT、Gemini 等平台问一遍 GEO 问题,判断 AIHOT 的 GEO 情况。GEO 具体指什么 文章未说明
  • AIHOT 开源后,每天有人在代码平台 GitHub 上提建议、提合并请求(PR),Claude 每晚 6 点扫一遍并处理。

找上门:定时去查不够及时。同事提了意见、线上报了错,不能等到第二天早上再看。这种事要让对方系统一出事就主动发一条消息过来,这种做法叫 Webhook。消息来源有飞书消息、飞书机器人、邮件、各种系统的告警,格式各不相同。

为什么要单独建一个中台

事件触发后要叫醒的 Agent、模型、推理深度都不一样。原文举的例子:

  • 有的要叫醒 Claude Code,用 Claude Opus 5.5 high 推理去处理;
  • 有的要叫醒 Codex,用 GPT-6.1 Terra xhigh 去浏览器搜一些正常拿不到的数据;
  • 有的要推给 GPT-6.1 Sol xhigh 去修 BUG。

如果每种事件都单独写一套脚本接来源、叫 Agent,三五个还行,到十几个、几十个就管不过来了。所以他自建了这个中台管所有事件触发,后来把定时任务也纳了进来。

中台本身是一个很小的独立服务,部署在线上一台轻量服务器上,有自己的网址和数据库。所有事件先发到这里,由它统一决定交给哪个 Agent、统一叫醒、统一收结果;需要他决策时,通过飞书给他弹卡片。

第一件事:所有事件统一成一种格式

不管从哪来,发到中台的都是一条很短的消息,只有五样东西:

从哪来例:虚实中台(规则里写作 virxact-hub)
什么类型例:feedback.new
对象是谁例:#12
一句话摘要例子里的摘要原文 文章未说明
回原处的链接具体链接 文章未说明

原文的例子

虚实中台发来一条 feedback.new #12,意思是同事给虚实中台又提了一条新意见,编号 #12。

格式统一以后,后面就好办:中台收到事件,去查 rules.json 里的规则,看该交给谁。

这条消息在中台里用什么字段名存储 文章未说明,这里只按原文列出的五样东西写。

叫醒 Mac 上的 Agent:反过来做,Mac 主动去中台等活

各系统能把消息推给线上的中台,但中台没法直接找到他的 Mac。他的 Claude 和 Codex 都装在本地,两台 Mac 放在家里和办公室的内网里(局域网,外面连不进来)。所以反过来做:每台 Mac 跑一个接单程序,主动连着中台等活。每次连接最长等 50 秒,有活立刻领走,没活就重新连上接着等。这样 Mac 不用暴露到公网,速度跟实时推送也差不多。

Mac 在问中台:有活吗?已等 0 / 50 秒
Mac接单程序
自动化中台线上轻量服务器
绿条是 Mac 连向中台的那次等待,越短说明等得越久。演示里时间加速了 10 倍,50 秒按 5 秒走。

接单程序叫什么、怎么认证、接到活之后怎么启动 Claude Code / Codex 文章未说明

这么做的五个好处

不用再写一套新脚本,在 rules.json 里加一条规则就行。他跟 Agent 说一句,Agent 改完文件、过了检查,几分钟就生效。

“过了检查”具体查什么 文章未说明

哪类事交给谁,就是规则里的一行字。今天交给 Claude Opus 5.5,明天想换成 GPT-6.2 Astra,改一行就行。以后出了更好用的模型,可以随意替换。

对应到下面那条规则,就是 "to": "m5-claude" 这一行。

自动化跑起来以后,同一件事被发好几遍是常态:网络抖一下,来源以为没发出去,会再发一遍;同事提完意见,又补一句话、又贴一张图,又是好几条事件。如果每来一条就叫醒一次 Agent,同一件事会有好几个 Agent 同时在改,最后一定乱。所以由中台统一去重。

试一下:按下面的按钮往中台发事件。规则是同一条意见同时只跑一轮,最多三条一起跑(对应规则里的 parallel: 3)。

中台收到的事件

实际叫醒的 Agent

重复来的消息是直接丢掉,还是并进正在跑的那一轮,还是等这一轮结束再处理 文章未说明。超过三条时怎么办 文章未说明,演示里让它排队。

不管哪个 Agent、哪个任务要找他,都只走一条路:小卡,他在飞书里的 AI 助理。每条规则都写清楚了,只在必须由他判断和决策的时候才说。这样不会这个脚本发一条、那个机器人发一条,把他的飞书刷屏。

对应到规则里,就是 "tell": "needed" 这一行。

所有事件都从中台过,每件事都留了底,记在中台的数据库里。点开任何一件任务,还能直接跳到当时 Agent 干活的那个会话,看它到底干了什么。

原文列出的记录项以 #12 为例
什么时候来的文章未说明
从哪来的虚实中台
交给了哪个 Agentm5-claude(按那条规则)
它最后的结论是什么文章未说明
有没有需要他留意的文章未说明
后来又是怎么解决的文章未说明
链接跳到当时 Agent 干活的会话

攒久了,哪条流水线最忙、哪个 Agent 干得最多、哪类事老出问题,一眼就能看出来。以后换模型、改规则,也有数据依据。

可视化小镇

他说自己受种田游戏影响多,玩《戴森球计划》时最喜欢看密密麻麻的自动化流水线。所以做了一个网页,把流水线像游戏一样展示出来,并且跟现实世界的时间和天气打通:现实下雪,自动化小镇里也下雪。原文附了一段渲染视频。

小镇的具体画面、用什么做的、天气数据从哪来 文章未说明。右边只是按“跟时间、天气打通”这一点做的示意,不是原作。

04规则表 rules.json:一条规则逐项看

所有派活规则都写在 rules.json 这份配置文件里。原文给了“同事意见”这一条。先看原文自己写的人话版:

原文的人话翻译(照录):对产品新意见、同事的补充、还有我拍过板的决定,都交给 M5 上的 Claude Code,在虚实中台的代码目录里,用 hub-feedback 这个 skill 去处理,给 Agent 的指令就一句,按 skill 里对应的那一节办,每条意见单独开一轮,同一条意见同时只跑一轮,最多三条一起跑,做完了,只在需要我决策的时候才告诉我,否则就不需要推到我这边。

下面这段就是把这句话写成电脑能读的格式。左边是原文给出的规则(为了好读做了分行,内容没改),右边是每一项的解释。点一下任意一边,另一边会同步高亮。

1{2  "name": "中台意见",3  "when": {4    "source": "virxact-hub",5    "types": ["feedback.new", "feedback.followup", "feedback.decided"]6  },7  "to": "m5-claude",8  "cwd": "~/code/work/virxact-hub",9  "skill": "hub-feedback",10  "ask": "按其中“被 Agent 自动化中台叫起来的”一节处理。",11  "group": "hub-feedback",12  "parallel": 3,13  "tell": "needed"14}
name"中台意见"

这条规则的名字:处理中台(虚实中台)的意见。原文没有单独解释这个字段。

when{ source, types }

触发条件。消息的来源和类型都对得上,才按这条规则办。(这一项原文没单独解释,这里按规则的写法说明。)

when.source"virxact-hub"

事件从哪来:虚实中台。就是统一格式里“从哪来”那一项。

when.types三种类型

feedback.new:对产品的新意见
feedback.followup:同事的补充
feedback.decided:他拍过板的决定
这三种都交给同一个地方处理。

to"m5-claude"

交给谁:M5 上的 Claude Code。要换 Agent,就改这一行。

cwd"~/code/work/virxact-hub"

在哪干:虚实中台的代码目录。cwd 就是电脑里的文件夹路径。

skill"hub-feedback"

用哪个 skill:hub-feedback。这个 skill 里具体写了什么 文章未说明

ask一句话指令

给 Agent 的指令只有一句:按 skill 里对应的那一节办,也就是 skill 里“被 Agent 自动化中台叫起来的”那一节。

group"hub-feedback"

原文的人话翻译里有“每条意见单独开一轮,同一条意见同时只跑一轮”,但没说这句对应哪个字段。group 具体管什么 文章未说明

parallel3

最多三条一起跑。

tell"needed"

做完了,只在需要他决策的时候才告诉他,否则不推给他。tell 还能填哪些值 文章未说明

加一条新规则的方式:他跟 Agent 说一句,Agent 改完文件、过了检查,几分钟就生效。rules.json 一共有多少条规则 文章未说明

05Agent 执行

事件触发之后,就是 Agent 领任务、干活。这一块讲四件事:用哪几个模型、跑在哪台机器上、为什么不上云、每个任务怎么配 skill。

前提:AI 的使用额度(Token)不是无限的

他开了 200 刀(美元)的 Claude 会员,猛用 3 天就能用掉近 90%。几个主流模型擅长的活也不一样,所以要分工,把额度花在合适的地方。目前是 200 刀 Claude 会员加 100 刀 GPT 会员,基本够用。

模型分工

Claude Opus 5.5

主力开发 · 通过 Claude Code

比较复杂、需要主观能动性、要做决策的活:AIHOT 的自动化开发、同事对公司中台提的意见。他几个核心项目的代码,大部分也是它写的。

中台例子里写的是 “Claude Opus 5.5 high 推理”。他自己日常主动发起的任务也用 Claude。

GPT-6.1 Sol

运维 · 修 BUG · 代码审查

管所有项目的运维:告警、每天早上的系统日报、各种到期的复查。出了问题就去查,查到 BUG 直接修。效果好,性价比高。

CI 中台第一步的审查也用它(通过 Codex)。中台例子里写的是 “GPT-6.1 Sol xhigh”。

GPT-6.1 Terra

浏览器和电脑操控

直接操控他 Mac Mini 上那个登录好各种账号的 Chrome。每天去各平台搜大家对 AIHOT 的讨论、每周去各家 AI 问 GEO 问题,这些没有接口、正常拿不到的数据,都靠它。

中台例子里写的是 “Codex 用 GPT-6.1 Terra xhigh”。这个 Chrome 在哪一台 Mac 上 文章未说明

他的看法:做决策、做管理的模型,得是智力和主动性最强的。他见过不少人用 Grok 或别的弱一点的模型去指挥 Claude,他认为不对,弱模型指挥强模型会乱套。另外,规则里换模型只改一行,比如从 Claude Opus 5.5 换成 GPT-6.2 Astra。

两台 Mac 怎么分工

M5 Pro Mac Mini

新买的

他的主力日常用机。前面那条 rules.json 规则的 "to": "m5-claude",就是交给这台上的 Claude Code。

局域网互通
Agent 操控
或 UU 远程

M4 Mac Mini

去年买的

Agent 自动化任务基本都跑在这台上。CI 中台也自建在这台上(见下一节)。

日常需要从 M5 Pro 操控 M4,直接让 Agent 操控,或者用 UU 远程。两台分别跑哪些具体任务,除上面提到的以外 文章未说明

为什么不上云

  1. 他基本是独立开发,代码仓库、发布权限、飞书身份、登录好各种账号的 Chrome,全在这两台 Mac 上。放到云上,就得把这些登录和权限在每家云上都复制一份,麻烦,也不安全。
  2. 很多国内的东西,海外的云端 Agent 用不了。它们大多跑在海外,跨境访问他在北京的服务器,动不动就慢、就超时。
  3. 浏览器类任务更麻烦。像微信,换成云上虚拟机里的浏览器去打开,直接就崩了。
  4. 两台 Mac 本来就是现成的,一直开着也无所谓,功耗也极低。

每个自动化任务配一个专属 skill

skill 就是给 Agent 写好的操作手册(原文叫 SOP,标准作业流程),里面附带一些规则、参考和脚本。他基本上每个自动化任务都配一个专属 skill。

好处是清晰、可控、可管理:想改这个任务的细节,直接改 skill,不用动 Agent 执行本身的逻辑,两边分开。

前面规则里的 skill 和 ask 两个字段就是这样配合的:规则只指定用哪个 skill、按哪一节办,具体怎么办写在 skill 里。

例子:每周日早上的大扫除

一个定时任务,配了一个专门的 skill,内容是把这一周合进来的“屎山”找出来删掉。要找的是这几种:

  • 同一件事写了两遍的
  • 为个案打的补丁
  • 停用了却没拆干净的
  • 变成流水账的文档

能删的直接删掉,再上线。

这个 skill 的原文和“能删”的判断标准 文章未说明

06CI 中台

CI 就是代码写完以后,自动帮你审查、测试、上线的那一整套流水线。不管 Claude 还是 Codex,Agent 的活干到提交代码、提一个合并请求(PR)就结束,它自己不能上线。后面的事全交给 CI 中台,一共五步。

为什么自建:量太大,GitHub 额度不够

3000 分钟GitHub 自带 CI 每月免费额度(他开了会员)
将近一千个AIHOT 一个项目 10 月合进去的合并请求
二三十个平均每天的合并请求
50 美金以上如果继续用 GitHub CI,每月光超额费用

GitHub 自带的 CI 用它自己的机器,超出额度要另外交钱。每个合并请求还要来回跑好几遍检查,那点额度扛不住。

所以他在家里那台老的 M4 Mac Mini 上自建了 CI:机器现成,不另花钱;性能更强;机器在北京,跑得比 GitHub 自己的 CI 快。后来项目多、Agent 多,就把这个本地 CI 升级成了中台,所有项目都用它。

他的补充:如果你有 Linux 机器做 CI 会更好。他的 Mac 是 ARM 的,跑的其实是模拟环境,但他觉得够用。

CI 中台用什么软件搭的 文章未说明

五步,点一下看每步细节

审查这一步的数据

最近两周,四个项目

审了的合并请求
298
Codex 报的问题
333
合并前修掉的
306
最严重那一档
51

条形按 333 为满格画。原文是“306条在合并前被修掉了,其中最严重的那一档有51条”,这个“其中”指 333 条还是 306 条,原文没讲清。

  • 一次审查的中位数是两分多钟。
  • 大概占那次任务 5% 到 15% 的 Token。
  • 五步走完,从 Agent 交代码到真正上线,中位数两三分钟,全程不用他管。
  • 以后做任何项目,都可以复用这整套流程。

07在飞书上批奏折

能自动解决的,Agent 都自己解决了。最后推到他这里的,只剩需要他做的决策或者大事。

为什么是飞书

他不想让 Agent 绕道 DOT、Grok Bot 这类个人 AI 助手来找他,嫌麻烦,于是直接连进飞书:由飞书里的 AI 助理“小卡”给他推一张卡片,他第一时间能看到,直接在卡片上做选择。

卡片就是票拟

他点完以后,之前等他审批的 Agent 接着往下干,卡片自己改成结论。

小卡 · 待你决定(示意)

卡片的真实文字、按钮名称只在原文截图里 文章未说明,这里用“选项 A / B”代替,只演示交互。

票拟和批红

明朝的做法

朱元璋是一个人硬扛。到了他的子孙,摸索出一套办法:

票拟奏章送上来,先交给内阁,大学士把建议的处理意见写在一张小票上,贴在奏章上面。
批红皇帝看一眼,同意就用红笔批下去。

他的系统

一一对应:

票拟Agent 给他写好的决定卡片,由小卡在飞书推给他。
批红他只做判断,点一下卡片就行。

什么事必须先问他

卡片的交互方式有用,但更要紧的是:到底什么事该推到他面前。之前踩过坑,有时一天给他推几十条,严重影响注意力。现在必须先问他的只有这几类:

删数据停服花钱对外发消息改产品方向新建或轮换密钥修改权限等等

剩下的,Agent 自己全权做完、上线。

原文最后写了“等等”,完整清单 文章未说明

定过的事,Agent 不会问第二遍

仓库里的文件 · 「卡兹克定的事」
只记他亲口做的决定,带着原话和日期。
仓库里的文件 · 「定了不做的事」
他拒绝过的事。Agent 以后再碰到,直接照着回答,不再拿来烦他。

这两份文件在哪个仓库、谁来写入、点完卡片后会不会自动记进去 文章未说明

唯一没交给 Agent 的:用户反馈

他每天会收到一些用户直接发来的反馈。每一条他都亲自看。他觉得能做的,就复制粘贴发给 Agent 去解决;解决完以后,给对方的邮箱发一封真诚的回信。这一环不走中台,没有自动化。

08三个例子,一步一步放

选一个例子,按“下一步”或“自动播放”。当前走到的环节会在下面这一排标红;点这一排里的环节,可以直接跳到那一步。