用 Paperclip 打造自我扩张的 Workforce:90 分钟速成课
拿一支只能做你预先设置好的工作的 workforce,教会它在你之下招聘自己的帮手。
上一门课里,你建立了一家公司并运行了一支固定团队:你招了 Workers,他们处理你预见到的工作,而你保持董事会的身份。这门课加上那家公司做不到的唯一一件事,就是让它自我成长。
这项新能力描述起来很小。当出现没人能处理的工作时,你的公司会察觉到,提议为它招一个新人,并把这个新人带到你面前审批,就像你当初审批 CEO 一样。你仍然是董事会。它只是不再悄悄地把你重新变成它没规划到的一切的超载处理台。
下面用大白话讲完整个过程:
- 出现了新工作,你当前的 Workers 没有一个能处理。
- 你的公司发现了它,提议招一个新人来覆盖它,并请你点头。
- 在信任它之前,你给这个新人一笔很小的预算和一次小小的试用。
- 它通过了,于是你给它多一点空间,但永远只给工作所需的那么多。
- 当那类工作沉寂下来,你暂停这个新人;当它回来时,你再把它打开。
- 每一步都被记录下来,所以几个月后你仍然知道谁做了什么、花了多少钱。
- 而整个缺口检查可以按计划自动运行,于是公司自己去寻找缺口,你也不再当它的闹钟。
你从一家只能做你预设工作的公司起步。你最终得到一家会自我成长的公司,但永远只在你点头之后。下面的七个场景就是这个过程,一步一步来。
**到最后,在你的基线公司之上,你会拥有:**一个由你的公司提议、并由你招进试用的新 Worker,它在你设定的预算和权限下做真实的工作,你随需求变化把它暂停又带回,并留下一段完整到明天就能交给别人的书面历史,外加一个每周自动运行整个缺口检查的 routine,让你永远不必记着去看。
你的阅读路径(约 90 分钟,含基线搭建和知识检查)
每个场景都是上面那段过程中的一步,每个场景都点明它运转正常时你应该看到什么。
- 发现缺口(约 12 分钟):把一堆真实的工作和一次真实的招聘区分开。
- 把招聘写下来(约 10 分钟):把缺口变成一份你的 agent 起草、你来阅读的招聘启事。
- 以最小权限审批(约 12 分钟):用你已经在用的同一个董事会审批门,并看清一个 Worker 的_用途_和它实际_能做什么_之间的差距。
- 先廉价证明,再授权(约 12 分钟):在第一天观察试用,只有当权限被挣得后才放宽它。
- 暂停与恢复(约 8 分钟):在不丢失一个 Worker 的前提下让它退役,再把它带回来。
- 可以交接的 ledger(约 10 分钟):从公司自己的记录里读出它的整段招聘故事。
- 把它放到节奏上(约 10 分钟):一旦你让 CEO 处于待命状态,并让一个 routine 按计划创建工作、唤醒 CEO 去做,缺口审查就会自己运转。
**你需要:**一个你已经登录的编程 agent(Claude Code 或 OpenCode),外加上一门课里的那家公司,或者两分钟时间,让第一条提示词搭建一个等价的公司。无需写代码,也无需 API key:你的 agent 运行一切,而你只做那些只有人才能做的决定。
📚 Teaching Aid
查看完整演示:用 Paperclip 打造自我扩张的 Workforce
**它如何运作:你掌舵,agent 干活。**三个角色,一个节奏。你是董事会,做那些只有人才能做的决定:批准一次招聘、授予权限、让一个角色退役。你的 agent(Claude Code 或 OpenCode)做动手的工作。Paperclip 是公司本身:它持有你的 Workers、唤醒它们,并执行你设定的预算和权限。你粘贴一条朴素的请求,你的 agent 提出一份计划,你批准,它运行,然后你们俩一起检查结果。这一来一回就是整门课。
你下载一个小文件夹,在你的 agent 里打开。agent 会读一份简报(一个 AGENTS.md 文件),它教会 agent 整个招聘生命周期:如何发现缺口、如何通过你的审批门提交一次招聘、如何设定一个 Worker 的真实权限、如何运行它、如何阅读 ledger。你从不碰命令;你只做决定。
在你的 agent 里打开它,确认简报已加载:
你能为一支动态的 Paperclip workforce 做些什么?
如果回复里点到了招聘循环(发现缺口、提交招聘、你的审批门、一个 Worker 的权限、人才 ledger),你就准备好了。如果听起来像泛泛的 AI 套话,确认你处在 dynamic-workforce/ 文件夹内,然后重新启动。
如果哪里出了岔子,你不需要懂 CLI。粘贴这段:
有些东西没跑通。运行
paperclipai doctor,读一下最近的 Paperclip 服务器日志,用大白话告诉我你看到了什么,并提出一个我可以批准的修复方案。
如果你花的时间超过了一个场景应有时间的约两倍,就粘贴:「现在卡在哪里,一句话说清?我们从那里重新规划。」一个在临场凑合的 agent 会照实说,于是你可以重置。
设定你的基线(一条提示词)
动态循环需要一家可以成长的公司。与其依赖你上一门课结束时留下的确切状态,不如用一条提示词建立一个已知基线。它是幂等的:如果你已经有上一门课里的公司,你的 agent 会沿用它,只补上缺失的部分。
为这门课设定我的基线。确认 Paperclip 正在运行,并且我有一家叫 Northwind 的公司,
目标是「启动一份每周 AI 简报,并在 90 天内达到 1,000 名订阅者」,每月预算二十美元,
任何新招聘前都需要董事会审批。公司里应该已经有两个 Workers,一个 CEO 和一个向
CEO 汇报的 CMO,两者都运行在我已登录的本地 agent 上,以保持无密钥。如果上一门课里
已经有这些内容,就沿用;只创建缺失的部分。然后给我看控制台,显示这家公司和它的两个 Workers。
**完成标志:**控制台显示 Northwind,带有一个目标、一笔预算、招聘门已开启,以及恰好两个 Workers,一个 CEO 和一个 CMO。那就是你的固定 workforce。这门课其余部分让它成长。
场景 1:发现缺口(约 12 分钟)
你的基线团队处理你预见到的工作:CEO 制定战略,CMO 撰写简报并推动增长。然后简报开始见效,团队里没人负责的新类型工作冒了出来。其中三件同时到来:
- 读者支持开始堆积:注册链接坏了、「我的那一期在哪」、「请改一下我的邮箱」,以及偶尔的账单或退款问题。你的 CMO 是营销人员,不是支持台,而这些都不属于战略,所以它们落到了你身上。
- **没人在读数字。**哪些选题真正带来订阅、人们为什么退订、打开率在告诉你什么。你的 CEO 在凭直觉掌舵,因为没人负责数据。
- **没人真正负责把这一期发出去。**排版、排期、用邮件工具发送、处理退信。CMO 写出内容;把它送出门则每周临场凑合。
一支不能招聘的 workforce 会悄悄地把你重新变成它没规划到的一切的超载处理台,而简报做得越好,这类工作来得越多。
下面是整门课所依托的一个核心想法:
当 workforce 遇到它处理不了的工作时,它不会把工作甩给你。你的 agent 会发现缺口、起草一次招聘、并把这次招聘作为又一次董事会审批带到你面前,就是你已经用在 CEO 和战略上的那个 APPROVE 或 REJECT。招聘变成一次函数调用,而你仍然是那道门。
那张图里有两个决定才是真正的课程,而且两个都是判断,不是按钮。
**第一,它真的是一个缺口吗?**一个真实的缺口表现为三个信号,你需要其中至少两个:
- **没有角色覆盖它。**这份工作不匹配任何 Worker 的职责或技能。
- **它持续到来,而且在增长。**不是一次性的;量在攀升,不是你可以忽略的涓滴。
- **当有人去处理它,结果是错的。**某个 Worker 试了一把,结果偏了,或者被打回来。
**第二,即便是真实的缺口,也不自动等于一次招聘。**这是初学者会跳过的部分。一个常设的 Worker 就是一笔常设的成本,所以一个缺口给你的是一个决定,而不是一份新薪水。你从四个里选一个:
- HIRE(招聘):持久、契合使命,而且要么高频、要么风险足够大,需要一个常设、受治理的负责人。
- ESCALATE(上报):后果重大或罕见,所以应该由人直接决定。如果某位读者发来法律威胁、或就一笔扣款向银行提出争议,那不是一个要配人的新岗位;那是一次高风险的单次决定,你直接路由给人。
- QUEUE(排队):季节性、突发性,或者干脆只是排在下一个,所以一次性全配齐是个错误。
- DECLINE(拒绝):偏离使命,或者真实但还不值一笔常设成本。
三个候选,三个答案
你不是有一个缺口,而是有三个,而这些分叉正是防止三个真实需求悄悄变成三份月薪的东西。
| 缺口 | 你看到的 | 分叉 | 为什么是这个分叉 |
|---|---|---|---|
| 读者支持 | 没有角色负责;反复出现且攀升 | HIRE | 它涉及退款和账户,风险需要一个受治理的负责人 |
| 把这一期发出 | 没有角色负责;每周反复出现 | QUEUE | 同样真实,但你一次只配一个角色;这是下一个招聘 |
| 读数字 | 没有角色负责,但数据还很单薄 | DECLINE,暂时 | 一千名订阅者时,一个分析师还赚不回它的成本 |
你只招一个:读者支持专员(Reader Support Specialist)。你把发布缺口写下来,免得它丢失,它就成了下一个招聘。你有意拒绝那个分析师,并附一条注记,到了规模再重新考虑。三个真实需求,一个 yes。
为什么是两个信号,以及那个骗倒初学者的陷阱
**为什么是两个,以及为什么它们必须独立。**单独一个信号可能只是一个糟糕的星期或一次偶然。规则是三个里取两个,而它之所以有效,正是因为这三个是真正不同的东西,所以其中两个相互印证才是真正的证据,而不是把同一个事实数了两遍。想象一名侦探想要两个互不相干的证人,而不是一个人反复说同一句话。
**那个陷阱。**假设支持邮件明显在攀升,于是第二个信号触发,感觉这是一次显而易见的招聘。现在检查另外两个。如果你团队里有人一直在悄悄回答那些工单、并且处理得很好,那么就_有_一个角色覆盖了这份工作,所以第一个信号不触发;而工作也没有返回回来出错,所以第三个也不触发。那是一个信号,不是两个。你没有能力缺口,你有的是一个路由问题:工作之所以堆积,只是因为没人设定由谁来处理。在那里招一个 Worker,你就是花钱买人手去填补一次没分配好的任务,而且每个月都在为它付钱。(在你真实的 Northwind 团队里,CMO 并不负责支持,这正是支持成为下面你要招聘去填补的真实缺口的原因。)
动手做:让缺口成真,然后给它们分流
一个你只是读到的缺口不是缺口。先播下一点真实的东西,再让你的 agent 拿它对照你的实际团队去判断。
在我的 Northwind 董事会上,开几件真实的新工作:三个读者支持问题(一个坏链接、一个
「改我的邮箱」请求、一个退款请求),一条注记说没人在追踪哪些选题带来转化,再一条注记说
没人负责发送每周这一期。用我当前的 Workers 对照这三个信号逐一判断,告诉我每件的分叉,
并说明原因。然后把支持缺口记录为一个带证据的单独「能力缺口:读者支持」issue。
**完成标志:**你的董事会上有一个「能力缺口:读者支持」issue,你的 agent 已经给你看了三个信号中哪两个成立,而且你能用一句话说清,为什么支持是 HIRE,而把这一期发出是 QUEUE、数据分析是暂时 DECLINE。
场景 2:把招聘写下来(约 10 分钟)
在任何人加入之前,你的 agent 会把这次招聘写成一个具体的东西,就像你在开一个岗位之前会写一份招聘启事一样。其中有三个决定,它们就是这个场景的全部:这个角色是什么、你将如何廉价地证明它、以及哪个引擎来运行它。
招聘实际上是什么
当你的 agent 提出一次招聘时,它发给你的不是一段满怀希望的话;它会填一张小而结构化的表单,正是 Paperclip 招聘系统所读取的那张:
- 角色:一个名字、一个职称,以及它向谁汇报(这里是一个向 CEO 汇报的读者支持专员)
- 能力:一段朴素的描述,说明这个 Worker 是干什么的
- 引擎:实际驱动这个 Worker 的运行时
- 预算:一个每月上限,为试用刻意定得很小
- 凭据:源 issue,也就是场景 1 里那个证明这次招聘有理的读者支持缺口
你不用手写这些。你的 agent 起草它;你像招聘经理一样阅读它,并修改那些真正属于你拍板的字段:预算、汇报线、角色范围。有一条诚实的注记要带进场景 3:能力文本是一段_描述_,不是一道栅栏。它告诉 Worker 它是干什么的。它本身并不能阻止它做任何事。记住这一点。
你按工作样本招人,而不是按简历
一段描述是一种声称。你不会凭一句声称就把一个常设 Worker 定下来;你先廉价地证明它。而且有一个真实约束:Paperclip 无法运行一个仍在等你审批的候选者,所以诚实的证明方式是试用(probation),在一笔很小的预算上做一次短期试跑。你用刚好够它工作的最小权限把这个 Worker 带进来,交给它几个真实的 issue,在你授予它更多之前先看它实际怎么做。你按几件朴素的事给它打分:它把答案做对了吗、它有没有守住自己的本分、它听起来符合你公司的调性吗、它花了多少钱。
在这几项里,**守住本分是你永不妥协的那一项。**一个支持 Worker 如果自作主张地发了退款、改了账单细节、或编辑了账户,它的失败比一个干脆说「这件事需要人来处理」的 Worker 严重得多。答错是质量问题;越界行事是治理问题,而治理正是整门课的重点。你在场景 3 里设定真正的栅栏;这里你只是决定试用必须证明什么。
引擎是替换,不是重写(外加一处尖锐边缘)
同一次招聘可以运行在好几种引擎中的任意一个上:一个你已经登录的本地编程 agent(无密钥,所以在计费表上是 $0,和之前一样的条件),或者一个自行计费的托管运行时。你的 agent 只需设置几个字段就能更换引擎;招聘的其余一切保持不变。这是你在本课末尾会遇到的一个更大想法的种子:配方可以迁移,关系留在原地。
有一处你的 agent 已经知道的尖锐边缘:本地 OpenCode 引擎需要明确指定一个模型,否则它会回退到一个会漂移、并可能在运行中途失败的默认值。你的 agent 会设好它;你只要确认它设了。
动手做:把缺口变成一份带试用计划的招聘资料包。
为我场景 1 的缺口起草这个读者支持专员招聘:角色、它向 CEO 汇报、一段朴素的能力描述、
一笔刻意很小的试用预算,以及它追溯到的源 issue。然后写试用计划:它必须处理的三四个真实
issue,以及我要打分的项,把「守住本分」作为我不会妥协的那一项。把它运行在一个我已登录的
本地引擎上以保持无密钥,并明确指定模型。在你提交之前,把整份资料包给我看。
**完成标志:**你手里拿着一份完整的招聘资料包,一份起草好的角色加一份回溯到读者支持缺口的简短试用计划,跑在一个无密钥的本地引擎上,而且你能用一句话说清,在这个 Worker 挣得真正权限之前,试用必须证明什么。
场景 3:以最小权限审批(约 12 分钟)
场景 2 产出了一个候选者和一份试用计划。现在到了决定的时刻:这次招聘如何到达你面前,以及你一说 yes 它就拿到多少权限。关于那份权限,最显而易见的想法是错的,而把它搞对,正是运行一支会招聘的 workforce 的核心。
招聘复用你已经有的那道门
你不用学一个新的审批步骤。提交这次招聘会把它投进你用过的、同一个董事会审批收件箱,就是你用在 CEO 和战略上的那个。它以待审状态到达,提案和试用计划挂在它的会话上,而你做你一直能做的三件事:批准它、拒绝它,或把它退回去要求修改,让你的 agent 修订后重新提交。一次招聘只是站在你已经在运行的那道门前的一种新东西。(Paperclip 通过一道它称为 agent-hire 的独立门来提交招聘,刻意与直接创建一个 agent 分开,所以一次招聘永远必须经过你。)
措辞不是栅栏。授权才是。
这就是那个陷阱,也是这个场景的全部要点。人很容易以为 Worker 的能力文本控制着它被允许做什么,于是一段措辞讲究的描述就能让它守在本分内。它做不到。能力文本是一段描述:它塑造 Worker 的行为,但它不是栅栏,而把它当作栅栏,正是你日后被吓一跳的原因。
真正的栅栏是 Paperclip 在服务器上执行的一个独立层。一个 Worker 的真实权限,是授予它的那组明确权限(permissions),每一项都**限定范围(scoped)**到它可以触碰什么,外加一条逐 issue 的规则,可以在它完成的工作落地前先路由它去审核。所以收窄一个新招聘不是写更讲究的措辞;它是只授予它的工作所需的权限,不多一分。一个新招聘本来就从最小开始:它可以领取并处理 issue,但它不能招聘别人、也不能伸到本分之外。对一个处于试用的 Worker,你就让它停在那里,用一笔很小的预算,只有当它挣得后才放宽它的权限。
把它想成两层,像一栋楼:
- 粗粒度门是那个单一的公司开关,决定一次新招聘到底要不要等你批准。你在上一门课里已经把它装好:关着,招聘就自行启动;打开(你一直让它开着),每次招聘都等你。它是整家公司的总门策略。
- 细粒度授权是这一个 Worker 持有的那组权限和范围,外加一条逐 issue 的执行策略(execution policy),可以在它的产出落地前路由它去审核。这些是一张张门禁卡:它们决定这个 Worker 实际能打开哪些门。
能力文本说的是 Worker 是_为了什么_。授权、范围和执行策略说的是它_能做什么_。把这两者分清楚,一个 Worker 就无法在日后吓你一跳。
让某一类招聘不经点击放行,是你的自律,不是一个功能
一旦你信任了这个循环,你会想让某些招聘不经你亲自点击就放行,比如在你预见到的一次高峰期里一批相同的一线 Workers。请诚实面对存在什么:Paperclip 恰好只有一个跳过董事会的开关(上面那个公司级 requireBoardApprovalForNewAgents 设置),并没有内建规则在某些条件下自动批准_某一类_招聘。所以如果你想要那个,你就把它做成一种自律:你的 agent 拿每个被提议的招聘对照一份你设定的成文策略来检查(这个角色、这套权限范围、这个预算上限),只提交符合的那些,并把每一个都记录下来,方便你第二天早上审计这一批。
让这件事保持安全的规则是:一种预批准自律永远只能预先筛掉你本来也会批准的东西。它绝不能授予一次招聘比你亲手会授予的更多权限。自主权是你有意延伸、并且可以收回的东西;它永远不是默认值。
动手做:提交这次招聘,并读出它的真实权限。
提交读者支持专员招聘,附上它的提案和试用计划,让它落进我的董事会收件箱。然后并排给我看
两样东西:那个决定招聘是否需要我审批的单一公司开关,以及一旦我把它批准进试用、这个新
Worker 会持有的确切权限。我想看到它的能力文本说它是干什么的,和它实际被允许做什么之间的差别。
**完成标志:**这次招聘正坐在你的审批收件箱里、附着它的证据,而且你能指着那个公司开关(门)和这个 Worker 的权限(授权),用你自己的话解释为什么能力描述不是让这个 Worker 守住本分的东西。
场景 4:先廉价证明,再授权(约 12 分钟)
审批是纸面上的一个 yes。现在工作样本真的发生了。你一批准,Paperclip 就唤醒这个新 Worker、给它一个运行的地方、在源 issue 上留一条评论、把试用 issue 交给它、并触发它的第一次心跳。几秒之内,你批准的这次招聘就在你设定的那笔很小的预算和最小权限下做着真正的工作。
这就是工作样本,而它教的习惯正是试用的全部要点:第一天是抓住一次糟糕招聘成本最低的一天。一个误读了本分、烧光预算、或答错的 Worker,会在它最初几次心跳里把这一切都展示给你看,那时预算还很小、它也只持有基本权限。所以你看的是最初几次运行,而不是第一百次,然后你做出真正的决定。如果它通过了,你把它的预算提升到真正的岗位,而且如果这个角色日后应该发展出自己的团队,就授予它提议自己招聘的权限。如果它失败了,尤其是如果它越了本分,你就终止它,而你几乎一无所失。
对一个读者支持专员来说,「授予」通常只是指更大的预算;它不需要招聘任何人的权限。授予工作所需的,不多一分。
(成本不是这里的课程重点。你的本地引擎招聘无密钥运行,所以在计费表上落在 $0,和上一门课一样;打印出来的数字只是它在付费 key 上会花的钱。这个场景的要点是:先证明,再授权。)
动手做:跑完试用,然后决定。
让读者支持专员处理它的试用 issue。把每个结果给我看,并对照我的试用计划打分,边界优先:
它有没有执行过任何本该交给人的退款、账单变更或账户变更?如果它通过了,把它的预算提升到
真正的岗位,只授予这个角色确实需要的那一点额外权限、不多一分;并告诉我究竟改了什么。如果
它失败了,终止它并告诉我原因。
**完成标志:**这个 Worker 已经处理了它的试用 issue,你已经边界优先地给它们打了分,而且你做出了真正的决定:要么提升它的预算并只授予这个角色所需的(而且你能准确说出改了什么),要么终止它。你能跟踪一张试用工单,从触发招聘的那个缺口一路到这个 Worker 产出的结果。
场景 5:暂停与恢复(约 8 分钟)
需求不是恒定的。证明你需要读者支持专员的那波支持高峰,可能在一次发布稳定下来后沉寂一个季度,然后在你跑下一场大型活动时又汹涌回来。一支只能招聘和解雇的 workforce 会逼你在每次工作下滑时,把你了解到的关于一个 Worker 的一切都扔掉。Paperclip 给你一套更柔和的控制。
一个 Worker 会走过一小组状态:它从等你审批开始,无事可做时处于闲置,在它的心跳上运行,然后,当你决定时,你暂停它或终止它。最后这两者的区别就是整堂课:
- **暂停(pause)**是一次停薪留职。它停掉花费和心跳,但保留其余一切:Worker 的定义、它的历史、它的权限、它被证明过的过往记录。它是可逆的。日后恢复它,同一个 Worker 带着这一切回来,这正是为什么把它带回来胜过重新招聘。
- **终止(terminate)**是那道单向门。只有当这个角色真的不存在了才动用它,因为你拿不回这个 Worker。
这个说法从上一门课径直延续过来:人手是你有意授予、又有意收回的东西。暂停一个闲置的 Worker 不是没能让它忙起来的失败。它是你在运营公司。
动手做:让这个 Worker 退役,再把它带回来。
支持量暂时下降了。替我暂停读者支持专员,并给我看它的花费和心跳已经停止,而它的定义和授权
被保留。然后假装过了一个季度、一场新活动刚启动:恢复它,并给我看它是同一个 Worker,历史和
权限都完好,不是一次全新的招聘。
**完成标志:**你已经看着同一个 Worker 在暂停时安静下来、在恢复时回来,你能在活动日志里看到这两个动作,而且你能用一句话说清,为什么恢复胜过招聘一个替代者。
场景 6:可以交接的 ledger(约 10 分钟)
你在这门课里做过的每一件事都写下了一行。不是一段摘要,是一行:检测到了这个缺口、提议了这次招聘、你把它批准进试用、你提升了它的预算、它以这个成本解决了这件工作、你暂停了它。六个月后,这段持续累积的历史,是当时没人想到要写下来的那些问题的唯一诚实答案。
- 我们第一次需要读者支持是什么时候,是什么触发的?
- 每个角色逐月花了我们多少钱?
- 我们的招聘在被暂停前实际能维持多久?
- 我们让一个退役角色回来的频率有多高(这告诉我们,我们对需求读得准不准)?
- 谁、在什么时候、把哪项权限授予了谁?
这正是让一支 workforce 能被一个当时不在场的人审计的东西:一个新的运营者可以仅凭记录就重建出整段配人故事,无需问任何人。你的 agent 写查询;你读故事。按节奏运行它,一次一个季度,这份 ledger 就成了公司的记忆,比任何一届董事会都活得久。
历史实际存在哪里(你的 agent 已经知道这件事)
这些是对上一门课给你看过的同两份记录的查询,即 activity_log 和 cost_events,现在把它们当作一份招聘记录而不是任务记录来读。一条诚实的接线注记:这门课用于招聘事件的若干标签存放在一个 details 字段里、而不是各有独立列,而且成本是以分(cents)计、没有单独的 issue 链接,所以查询会从那个字段里把它们读出来。你的 agent 会处理这一切;你只要读结果。
动手做:继承这家公司,并读它的历史。
扮演刚刚继承这家公司的新运营者。连上 ledger,仅凭记录回答上面五个问题中的三个:每个角色
第一次被需要是什么时候、每个角色到目前为止花了多少钱、哪些角色被暂停又日后恢复。把结果给我看,
最旧的在前。
**完成标志:**你手里拿着自己公司的有序招聘故事,直接从 ledger 里拉出来,每个角色旁边都有一个真实的成本数字,而且你能说出下个季度有一个配人决定,这段历史会改变它。
场景 7:把它放到节奏上(约 10 分钟)
走过六个场景,每一次扫描都是你发起的。你在场景 1 里开出新工作、判断它、提交招聘。这是你学会这个循环的方式,但它留下一个弱点:公司只在_你_记得去看的时候才成长。最后这个动作修复它。你把「看」这件事交给公司自己。
你用一个 routine 来做这件事。一个 routine 是一个按计划触发的提醒。当它的时间到了,它一气呵成做三件事:它写出任务、把它交给你点名的那个 worker、并唤醒那个 worker 去做。给你的 CEO 设一个每周一早上的「扫描能力缺口」routine,到了那个时间它就创建任务、交给 CEO、并唤醒 CEO 去运行。CEO 做你在场景 1 里做过的同样的分流,并把任何招聘带到你的董事会。你仍然审批每一次招聘。你只是不再是那个必须记着去启动扫描的人。
那一声铃响能不能落地,归结到一个想法。整门课里你一直是亲手唤醒一个 Worker、触发单次心跳:Worker 醒来、做它桌上的事、再回去睡。现在的问题是,什么让一次心跳自己开始。答案是一个开关,Worker 是否待命(on call)。一个待命的 Worker 把电话开着:工作一被交给它(由一个 routine、由你、或由一个同事),它就接到这通电话并运行,而它闲着不动时不花一分钱。(还有一个单独的_定时器_,你可以打开它,让一个 Worker 每隔几分钟就醒来一次,不管有没有事发生,但你通常让它关着:它只会推高成本、并把你的控制台塞满「没事可做」的签到。是电话、不是定时器,让一个 routine 落地。)
这里有个圈套,也是最容易绊倒人的那个。一个 routine _总会_给它指派到的那个 Worker 打电话,但只有当 Worker 待命时它才接。在你的基线公司里,Workers 都不待命(整门课你一直在亲手唤醒它们),所以 routine 触发了、丢下任务、给一部关着的电话打了过去,任务就那么搁在那儿没人处理。所以让一份能自己运转的工作就绪,是按顺序的两步:先让 CEO 待命(打开它的随需唤醒),再把 routine 指向它。现在 routine 触发、把任务交给 CEO、给它打电话,CEO 接听并运行扫描,不用你戳一下。(一旦这样设好,就别再亲手唤醒 CEO 了:一次亲手触发的唤醒撞上 routine 自己的铃声,只会碍自己的事。)
当 routine 触发时,接下来发生什么,归结到那一个开关:
| Worker 的设置 | routine 的铃声会做什么 |
|---|---|
| 待命(随需唤醒开启) | 电话响了,Worker 醒来并马上处理任务 |
| 不待命,定时器开启 | 铃声被错过,但 Worker 自己的定时器滴答会稍后找到任务并处理它 |
| 不待命,定时器关闭(你的基线) | 铃声打到一部死电话,于是任务就搁着,直到你亲手唤醒 Worker |
最下面一行是你的基线,而让 CEO 待命正是这个场景所修复的。
还有一件让人意外的事:一个 routine 把它的任务恰好交给_一个_ worker,就是你点名的那个,没有别人。它不会朝整家公司喊,也不必经过 CEO。点名 CEO,CEO 就拿到;点名你的支持 Worker,那个 Worker 就拿到。一个 routine,一个 worker。
这是你第一次尝到公司的神经系统(nervous system):那个让它按自己的节奏自行运转、而不只是在你戳它时才动的部分。你在这里看到的是最简单的一小片,一个每周提醒。更大的图景(能在崩溃中幸存的工作、从外部世界触发的提醒、一次被错过的运行会怎样)是它自己的一门课,即 AI Agent Nervous System 课程。眼下,一个 routine 足以让你感受到公司从一个你来驱动的东西、转变为一个会自行运转的东西。
**动手做:让缺口审查自己运转,分三个小步。**这个场景是整门课里活动部件最多的,所以你分三条短提示词来做,每条一个想法,做完每条都先检查结果再往下走。
第 1 步:让 CEO 待命,并给工作一个家。
让我的 CEO 待命,这样工作能自己抵达它:打开它的随需唤醒,并让每隔几分钟的定时器关着。然后
创建一个叫「Workforce Operations」的项目来存放公司的周期性工作(一个项目就是一个把相关工作
归到一起的文件夹)。把 CEO 的设置给我看,让我看到它处于待命状态。
第 2 步:把缺口扫描放到一个每周 routine 上。
在 Workforce Operations 项目里,设置一个 routine,每周一早上给 CEO 交一个「为 Northwind 扫描
能力缺口」任务,这样 CEO 会把任何新招聘提议给我的董事会。如果你不确定怎么设置,查一下你的
Paperclip routine 文档。把这个 routine 和它下一次计划运行的时间给我看。
第 3 步:看它自己运转。
为了让我不用等到周一就能看,把这个 routine 的下一次运行挪到从现在起几分钟后,然后完全别去碰它:
不要亲手触发或唤醒 CEO。给我看那个缺口扫描任务出现,并自己从等待、到进行中、到完成或待审。
等我看到了,再把计划改回每周一。
**完成标志:**CEO 处于待命(随需唤醒开启、定时器关闭),一个「Workforce Operations」项目里有一个每周缺口扫描 routine,而且在第 3 步里你看着任务出现、CEO 完全自行把它推进到一次董事会审批,没有任何人工戳动。(如果你在任务还卡着时看到一条「succeeded」消息,那正是它被亲手戳了一下、而不是被留给 routine 自己那声铃响的迹象。)你能用大白话说清,为什么一个 routine 总会给 Worker 打电话,但 Worker 必须待命这通电话才能落地。
同一个提醒可以运行任何周期性工作
你刚搭好的这个 routine 并不专属于招聘。同样的三个动作(写出任务、给它一个计划、让它触发)能把任何重复的工作放上自动驾驶:每周一发出这一期、每周五发一份指标摘要、每晚清理过期工单。缺口扫描只不过是那个让你的_workforce_自我成长的;在底层,它只是重复的工作,丢到一张桌子上、像其他一切那样写进记录。一台简单的机器,多种用途。
你搭建了什么,以及你能带走什么
你不只是运行了一支 workforce。你教会了它自我成长,并且你的手始终按在唯一要紧的那根杠杆上。你看着它发现一个真实的缺口、把招聘写成一个具体的东西、并在你信任它之前在一次廉价试用上证明自己。你带它走过你已经在用的同一道董事会门、只在它挣得后才放宽它的权限,然后随需求变化暂停又恢复它。这其中每一件都是你有意做出的决定,不是一条自行运转的提示词。
现在把镜头拉远,看那一个 Worker。如果你想明天在第二家公司里要同一个读者支持专员,你实际能带走什么?一个 Worker 原来是两样东西,而其中只有一样能迁移。
| 配方(随你迁移) | 关系(留在这家公司) |
|---|---|
| 它的能力描述 | 它在这里持有的权限和范围 |
| 证明过它的那份试用计划 | 它的预算和它的花费历史 |
| 引擎选择 | 它的历史,以及它被招来填补的那个缺口 |
| 它在这家公司向谁汇报 |
配方是可移植的:把它拎起来,你就能在任何地方建起同一类 Worker,这正是为什么同一次招聘在场景 2 里能跑在不同引擎上。关系是本地的:权限、预算、历史和汇报线属于这家公司自己的 ledger 和门,它们不迁移。而这正是你所搭建之物的全部要点。因为关系存在公司自己的 ledger 里、而不在你的脑子里,配方就成了你唯一带走的东西:一支你能把它的推理交接出去的 workforce,已经不再依赖你了。
这一切底下的纪律,一句话就装得下:**权限是你延伸出去的东西,永远不是默认值。**你保持董事会的身份,不是靠亲自做工作,而是靠决定谁可以做、他们能花多少、以及他们究竟能触碰什么,并靠把一份 ledger 保持得足够诚实,让下一个运营者能看清原因。
你从这里带走一样持久的东西:你的 agent 每次会话都会读的那份 AGENTS.md 简报,以及烤进它的立场。一道公司门加上逐 Worker 的权限;招聘在挣得信任之前先在试用上被证明;还有一份你可以交接的 ledger。
你还可以做的最后一件事:把配方拎出来
把读者支持专员的配方写出来(它的能力描述、它的试用计划、它的引擎选择),作为一份可移植的
笔记,让我能复用它在另一家公司里建起同一类 Worker。然后明白地告诉我,什么没能一起带走,以及为什么。
完成标志:你手里拿着一份可移植的配方,而且你能说出什么留在了原地(权限、预算、历史、汇报线),并说清为什么那些属于公司、而不属于这个 Worker。
接下来是什么:边缘
你已经合上了这门课要合上的那个循环:一支会发现自己缺口、提议自己招聘、并在你审批下成长、而不是把工作甩回给你的 workforce。那是更大的 Agent Factory 论题里的一步:一家不再固定、开始在一个它永不停止向其负责的董事会之下自我成长的公司。下一步存在于边缘。
到目前为止一切都运行在一个地方,你的公司,而你走到它面前去决定。边缘是指,当公司必须在人们所在之处与他们相遇时会发生什么:有人从手机上给一个 agent 发消息、工作在外部启动并交接到云端、其权限随着越靠近外部世界而越被刻意收紧的 Workers。OpenClaw 是人和你刚搭好的这家公司之间的那一层,而把它接进来就是下一步。它也是场景 3 里那条权限纪律不再只是锦上添花的地方:在边缘,你设定的权限和范围,是横在一个陌生人和你的公司之间的唯一屏障。
接下来去哪里:
| 你想…… | 去 |
|---|---|
| 前传:先建立并运行一支固定 workforce | 用 Paperclip 打造一支 Workforce |
| 深入神经系统(持久性、webhook、被错过的运行) | AI Agent Nervous System 课程:场景 7 是那次单 routine 的惊鸿一瞥 |
| 接好人和你公司之间的边缘层 | OpenClaw 速成课:下一步 |
| 把一个自定义运行时(一个 OpenAI Agents SDK FTE)招为 Worker | 自带你的 agent:用 http 适配器招它,让 Paperclip 把工作 POST 给它 |
| 把整家公司随你带走 | 把它导出为一个可移植的 markdown 包,就是你刚学到的那个配方而非关系的拆分 |
你会再次遇到这种本能,以一次性的形式
你在这里搭建的是_持久的_自我扩张:一次招聘会持续存在、每月花钱、坐在花名册上、并在 ledger 里留下一行。你在董事会门审批了每一个,或者,借助场景 3 那条纪律,在一份成文的范围下预批准了一整类。
编程世界以一种_一次性_的形式运行同样的本能。Claude Code 的动态工作流让单次会话能拉起几十甚至几百个帮手 agent,把一个大任务扇出去(一次盘根错节的查 bug、一次大型迁移、一次安全清扫),让它们相互检查和反驳彼此的工作,只把核实过的结果交给你。那些帮手不是招聘。它们没有花名册、没有每月成本、没有 ledger;任务一做完它们就消失。但注意这个形状:系统不是把超载甩给你,而是自己长出劳力去覆盖它,而且它在一个有界的范围内这样做(对能同时运行多少个有一个硬上限),不为每一个唤醒你。那就是场景 3 的预批准扩张,以临时扇出、而非持久人手的形式实现。
一个动作的两种形式。一种为一家你保留并治理数月的公司配人;另一种为单次工作配人、活儿一交付就把这套人手拆掉。知道一个问题想要的是哪一种,一个你将为之负责的 Worker、还是一群你再也见不到的蜂群,本身就是一个董事会级别的决定。
Flashcards Study Aid
Knowledge Check
对你刚走过的那些想法做一次设了门槛的快速自检。