ESC
↑↓ 选择↵ 打开esc 关闭⌘K 唤起
← Home NO.148
第 148 期 · AGENT 工程 · 收录于 2026 年 8 月 15 日

Gadgets安全的个人应用

KV
Kenton Varda · AI Engineer
视频 18:53 原文约 1.6 万字 预计阅读 15 分钟 来源视频 ↗ 中英对照全文
TL;DR · 三句话
  1. **核心论点:个人化的 AI codegen 会打破传统云基础设施。**今天的软件是"开发者在象牙塔里做好、往下发给所有人跑同一份钦定版本",用户的功能请求被产品经理"一股脑丢进 Jira,从此再没人见过它们";要让每个人当场把 app 改成自己要的样子,这套底座必须换掉。 → 详细
  2. 他的答案叫 Gadgets——不是"把 app 部署成网页",而是一套像 Google Docs 的办公套件:里面装的不是文档而是 gadget,每个 gadget 是一个带代码的应用实例,可以 vibe code 出来、可以导出成 blueprint 分享;分享与权限由平台统一实现,"让 gadget 自己根本没机会把这块做错"。 → 详细
  3. 标题里的 "actually safe" 来自把 AI 写的代码彻底关起来:前端跑在 null origin iframe 沙箱 + 内容安全策略里,唯一出口是向父窗口 postMessage;后端是沙箱化 worker 里的 durable object,两头都不能跟外界通信——所以哪怕真有 XSS 也泄不出东西,"基本上,这段代码里你不可能写出一个有杀伤力的安全漏洞"。 → 详细
01

真正的敌人:用户的功能请求死在 Jira 里

  • 讲者开场就把今天的软件生产链画成一张图:一个坐在象牙塔里的开发者做出 app,往下发给用户;很多人满意,但总有人说"这个 app 得再加几个功能才够我用"。用户去求开发者——"伟大的开发者啊,求你把我这个需求做了吧,没有它你这 app 简直没法用"——然后开发者的代言人、产品经理收下这些需求,"一股脑丢进 Jira,从此再没人见过它们"。这是全场第一个笑点,也是整场演讲的出发点。 → 详细
  • 偶尔需求会被捞出来:产品经理看到某条说"哎,这个我也想要",于是它进了路线图,开发者动手做。但结果同样不好——开发者实现了一堆"每个只有一小撮用户在用"的功能,每个都往代码里塞一堆 if 判断,代码库越来越乱,而且这些功能做起来"都特别无聊"。 → 详细
  • 这是个双输结构:用户拿不到功能,开发者做着不想做的功能还把代码搞脏。讲者的矛头不指向流程或优先级排得不好,而指向更底下那个前提——一份代码要同时服务所有人→ 详细
02

plugin 系统的经典死循环:为了以后能快,先停三年

  • 开发者的标准解法是"重写":搞一套带 plugin(插件,即把非核心功能做成可插拔的小模块)系统的新架构,这样每个功能都能干净地挂上去,内核保持清爽。听上去无懈可击。 → 详细
  • 于是新需求一律被挡回:"这些功能现在还做不了,得等 plugin 系统。有了 plugin 系统之后做起来会容易得多,现在硬做只会拖慢进度,反正后面还得重做一遍。"这套说辞在任何产品团队都成立——这正是它危险的地方。 → 详细
  • 结局:"几年过去了,新架构还没就绪,功能一个都没实现",用户开始问"他们到底在干嘛?这开发者是不是把自己的产品放弃了?"——所有人都很沮丧。本来是逃生舱的重构,先把船凿沉了。 → 详细
03

AI 给的另一条路:功能由用户当场生成,而不是排队等

  • 替代方案很简单:开发者只做出 app 的第一版交给用户;用户需要新功能时,"可以直接让自己的 AI agent 单独为自己写这个功能、加进 app 里"。 → 详细
  • 三方同时受益:"每个人都能拿到自己需要的功能,谁也不用被别人的功能拖累,开发者还能把核心 app 保持得干净漂亮。"换句话说,长尾需求不再挤进同一份代码,而是各自留在各自的实例里——这就把"排优先级"这件事从根上绕过去了。 → 详细
04

为什么今天做不到(一):Apple/Google 的门,和 Web 这个后门

  • 过去 15 年 Apple 和 Google 把自家系统封得死死的,"封到现在几乎只剩五家公司还能做移动 app"。他调侃"在美国,买把枪都比让自己的手机装个未签名的软件容易",还编了段 Google 客服式对白:"你看着情绪不太对,先回家冷静冷静,要是 24 小时之后你还想装那个未签名的软件,再回来找我们聊。" → 详细
  • 绕过去的办法是 Web:人人都能做自己想做的东西,"而且事实证明并没出什么事——并不是 Apple 和 Google 天天吓唬我们的那种安全大灾难"。这是他后面整套安全论证的前提:开放不必然等于危险→ 详细
05

为什么今天做不到(二):云架构朝错的方向跑了 25 年

  • "过去 25 年的云架构,我们一直在朝错的方向狂奔。"你分发一个 Web app,是把它跑在自己的服务器上,用户发请求过来,"那唯一一份、被『钦定』的版本,为每一个用户运行"。 → 详细
  • 这个设计对开发者极方便——能确保所有人都在最新版、都在同一个版本上;代价是"用户没法定制自己的 app"。在这套架构里,可控与可定制天然对立→ 详细
  • 去年 vibe coding(用自然语言让 AI 直接生成能跑的应用)火起来,冒出一大堆平台,绝大多数瞄准 Web app,"因为这是最好做的";但"它们瞄准的都是现有的这套基础设施,而这条路其实根本不对"。这就是开场那句核心论点的落点。 → 详细
06

讲者是谁:Cloudflare Workers 的作者

  • Kenton Varda,2017 年加入 Cloudflare 时启动了 Workers 项目,"到今天我还是主力工程师"。Workers 现在是一个 serverless(无服务器,即开发者只写代码、不管机器和扩容)应用托管平台,"有数百万开发者,每天处理数万亿次请求"。今天讲的是他在 Workers 之上做的一个副项目。 → 详细
07

Gadgets 是什么:不是部署网页,是一套"办公套件"

Gadgets 现场演示:创建一个 gadget ▲ 图注:现场演示:在 Gadgets 里新建一个小应用的界面。(本片除开场那张幻灯片外全是屏幕演示,360p 截帧只能看清版式、看不清小字,细节请看原片。)

  • 关键类比:别把它想成"把 app 部署成一个网页"的 vibe coding 环境,要想成 Google Docs——你打开,里面有几百上千个文档,打开一个、编辑、分享给别人。"这里是同一回事,只不过里面装的不是文档,而是 gadget。每个 gadget 都是一个带代码的应用,代码可以各不相同。" → 详细
  • 他自己在用的三个真实 gadget:一个协同白板 app("这是一次 prompt 出来的");一个筛西班牙语邮件的小工具("我会收到很多西班牙语邮件,说来话长,我不懂西班牙语");一个帮他整理 GitHub 上待他 review 的 pull request 的工具。全是从零 vibe code 出来的私人小工具,不是给别人用的产品。 → 详细
  • blueprint 机制:有人做了个 gadget 觉得有用,就给它做一份 blueprint——"其实就是把代码导出来、不带数据"——分享出去,别人从这份 blueprint 实例化出自己的 gadget。代码可传播、数据不跟着走,这条线划出了"分享一个应用"和"分享一份文档"的区别。 → 详细
  • 平台里已有的办公类 app:文档编辑器、看板、幻灯片工具。幻灯片工具是 Cloudflare 的产品经理同事 Philip 做的,讲者说他记得对方"一个下午就 vibe 出来了",顺口调侃了一句"当然,现在的产品经理个个也都是高产工程师"。 → 详细
08

一个实例=一份文档:把分享和权限从 app 手里收走

  • 反直觉的切法:实例化幻灯片 app 得到的不是"一个幻灯片工具",而是一份 deck;"如果我要多份 deck,就实例化多个 gadget,一份一个"。 → 详细
  • 为什么要这么切?因为所有 gadget 都可分享、可协作,而"分享模型是由平台实现的,不是由 app 自己实现的"——点开就是一个很像 Google Docs 的分享框,可以生成分享链接发给别人。 → 详细
  • 收益写在他这句话里:"正因为每个 gadget 就只是你想分享的那一样东西,平台才能统一实现分享模型和访问控制,让 gadget 自己根本没机会把这块做错。"权限是 AI 生成的代码最容易写错、也最致命的一块;这里的解法不是要求 AI 写得更小心,而是让它压根碰不到这块。 → 详细
09

现场最硬的一幕:Claude 为了做 slides,给幻灯片 app 加了三个功能

Claude 现场给幻灯片应用加功能 ▲ 图注:现场演示中的幻灯片应用——正是这一段里 Claude 因为缺删除线、缺文字居中、缺能吃原始 SVG 的框,直接给应用本身加上了这三个功能

  • 做法:他给 Claude 一个 Google doc 链接,里面写了这场演讲想要哪些 slides,然后加了关键一句——"如果为了做出某几页 slides,你需要给这个幻灯片 app 本身加新功能,那就尽管加"。"它真加了。"这个平台上"每一个 app 都自动接上了 agent",所以 agent 既能改内容,也能改承载内容的那个应用。 → 详细
  • Claude"把 app 的代码全读了一遍,又读了我的文档",然后逐条认领:第 3 页需要删除线格式,"这个还没实现,我们可以加上";还有几页要求文字居中——"我猜 Philip 的设计品味太好了,看不上居中;但我这种更接地气的品味就是要居中。没关系,Claude 可以加。" → 详细
  • 第 5、6 页最有意思:他要一张"画得很糙的云的示意图",而这个 app 只支持方框加箭头那种图,"不支持像这样随便画的东西"。Claude 的处理不是画不出来就算了,而是给 app 加了一个能粘贴一段 SVG 的框(SVG=用文本描述矢量图形的格式),贴进去就变成幻灯片的一部分——然后它自己把 SVG 生成了出来。 → 详细
  • 这个细节值得停一下。讲者自己点破:"这个功能对人类来说没什么用,但对 Claude 特别好用。"也就是说,当扩展应用的人变成 agent,功能该长什么样会跟着变——一个人类嫌麻烦的"贴原始代码的框",对 agent 反而是最顺手的接口。产品的可扩展点,第一次有了非人类的使用者。 → 详细
10

"安全"到底安全在哪:四层隔离,让漏洞无处可去

  • 先接住那个必然的质疑:SVG 里可以塞 JavaScript,让 AI 生成的代码把任意 SVG 贴进页面,第一反应就是"这不 XSS 了吗?"(XSS=跨站脚本攻击,攻击者把恶意脚本塞进页面,借你的登录身份偷数据或替你操作)。他的回答是:"其实无所谓,因为这个环境的搭法就决定了它无所谓。" → 详细
  • **第一层:前端关进 null origin 的 iframe sandbox。**iframe 是页面里嵌的一个独立小页面;"null origin"意思是这个小页面不属于任何域名,浏览器的同源规则会把它当彻底的外人——它拿不到主站的 cookie,也读不了主站的数据。 → 详细
  • **第二层:配上 content security policy(CSP,内容安全策略)。**这是一份"这个页面允许往哪儿发请求、允许加载哪些脚本"的白名单,被收紧到"基本上它跟外面任何东西都通不了信,拿不到任何 cookie 之类的"。关键在于:即使恶意脚本真跑起来了,它也没有出口把偷到的东西发出去。 → 详细
  • **第三层:唯一的对外通道是 postMessage。**postMessage 是浏览器里子页面向父页面递消息的一个窄口子。他们在这条通道上建了一个 Cap'n Web RPC 会话(RPC=远程过程调用,让一边像调本地函数一样调另一边的函数),把调用一路转发到服务端。一条被明确定义、只能走特定调用的窄通道,比"什么都能往外发"安全一个量级。 → 详细
  • **第四层:服务端同样被关起来。**gadget 的服务端代码写成 Cloudflare Workers 上的一个 durable object(持久对象,可以理解成一个自带存储、独占一份状态的小服务实例——它既是这块逻辑,也是这份数据的唯一入口),跑在服务端的 dynamic worker sandbox(动态 worker 沙箱,即临时起一个受限的代码执行环境)里,"同样被禁止跟外部世界通信"。 → 详细
  • 合起来的效果:"客户端是 vibe code 出来的,服务端也是 vibe code 出来的……它们只能互相通信,然后把 UI 呈现给用户。所以就算你有 XSS 漏洞,最后也无所谓,因为它们什么都泄不出去——这条路被堵死了。"他给出的最强表述是:"**基本上,这段代码里你不可能写出一个有杀伤力的安全漏洞。**这就让你可以放心大胆地去折腾。" → 详细
  • 要看懂的是这个逻辑转向:他不是想办法让 AI 写出更安全的代码,而是把"这段代码可能造成的最大破坏"预先压到接近零——数据出不去、外部服务连不上、别人的东西碰不到。**安全性来自环境的形状,不来自代码的质量。**这才是标题里 "actually safe" 的含义。 → 详细
  • 唯一留白:怎么让这些 app 以安全的方式跟外部服务通信,他们"做了一整套机制",但这场没时间讲——"光这个我就能再讲两场"。 → 详细
11

技术栈:没有容器、没有数据库、能整套跑在笔记本上

  • 除 LLM 之外,"你们看到的这一切,全都建在 Cloudflare Workers 上"——没有用任何容器(container,把应用连运行环境一起打包的虚拟化单元),只有 dynamic workers;也没有用任何数据库,只用 durable objects。他顺带纠正一个误解:"很多人不知道,其实你是可以在 Workers 上构建复杂应用的。" → 详细
  • 整场演示跑在他的笔记本上(所以现场断网也不影响),底层是 Cloudflare 开源的 Workers 运行时 workerd,可以自己部署。他兴奋的点很具体:平台里已有 Home Assistant 连接器和 Spotify 连接器,"我想把这套东西跑在我家地下室,用它来做家庭自动化"。 → 详细
12

说好的开源,被 CTO 当场拦下了

  • 几个月前投稿时这还是业余项目,计划是讲完直接把代码"甩"到 GitHub 上让大家下载来玩。最近几周 Cloudflare 内部对它非常兴奋,项目升格;上周四 CTO Dane 把他叫进房间:"Kenton,我觉得你不该就这么甩出去。我觉得这东西不是『随手一甩』的料。我觉得我们得更谨慎、更有章法、更有意识地去规划怎么发布它。所以,先压几周再说。" → 详细
  • 他在演讲摘要里承诺过开源,只能当场道歉:"今天不行了。不过很快就会开源的。"(背景补注,非演讲内容:本场录制于 Cloudflare OS 发布前约一个月。) → 详细
13

现场翻车与花絮

演示中的「What are we working on?」界面 ▲ 图注:演示里的入口界面「What are we working on?」——一个实例就是一份文档,分享与权限由平台管,不再由每个应用各写一套。

  • 开场演示输入"做一个傻乎乎的计数器 app,傻到极致",直接报错——"网络不通"。他一句"这不是我演讲里最重要的部分"带过,结尾又惋惜了一次:"我真希望那个傻乎乎的计数器能用起来,因为 GPT 做的计数器还挺逗的。" → 详细
  • 他 slides 里"breaks"这个词时不时在抖,是 Claude 自己加的强调效果,"蠢得我实在舍不得删"——"标红我懂,下划线我懂,但抖……我觉得这不是人类会干的事。我认为这是 AI 原创。"(台下笑,他补一句:"这就是 ASI 啊,各位。") → 详细
  • 他原本为这场演讲写的那版 slides,"昨天我觉得这些 slides 太烂了,全扔了重写",还特意澄清"烂完全是我的锅,不怪 Philip,也不怪软件"——结果那版废稿反倒成了现场演示"agent 怎么改 app"的样本。 → 详细

(本期无)——AI Engineer 大会单人演讲,没有闪电问答环节;结尾那段"说好的开源被 CTO 拦下"的收尾已并入主题十二。

(本期无)——演讲全程未给出个人联系方式或项目链接;Gadgets 的代码当日开源,只承诺"很快"。演讲中被点名可查的东西只有两个:Cloudflare Workers 的开源运行时 workerd,以及 Workers 平台本身。

🎯 于你何益 为你定制 · 非通用结论

这期是少见的直接点到你名字的一期:讲者开场那张图里,"收下用户需求、一股脑丢进 Jira、从此再没人见过"的那个人,就是 ERP 产品经理。所以这段值得写厚。


一、Holdwell ERP 的活:你拒掉的长尾需求,可能不是优先级问题

① 长尾需求的真正解法,不是排得更准,是让它离开你的队列

  • 怎么做的:Kenton 把矛头从"产品经理不够勤快"挪开,指向更底下那个前提——一份代码要同时服务所有人。在这个前提下,一个只有一小撮用户要的功能,进队列会脏代码、不进队列会得罪人,两头都不对。他的破法是把这类需求整个移出中央队列:核心 app 保持干净,用户自己的 agent 在自己的实例里加功能,"谁也不用被别人的功能拖累"。
  • 你可以怎么做:拿 ERP 积压的需求清单做一次新的分类,别按优先级分,按"这条到底该不该由我们来实现"分——分三堆:(a) 真·核心,必须进版本;(b) 其实是"某个客户/某个岗位的私人偏好"(报表列怎么排、导出模板长什么样、提醒规则怎么设、列表视图默认过滤什么);(c) 一次性、看完就扔的。第 (b) 堆是这期给你的靶子:这些东西每条单独排队都排不上,合起来却是最大的抱怨来源,而它们几乎都不需要动核心逻辑。这一堆的正确问法从"排第几"换成"能不能让提需求的人自己搞定"。这件事不需要立项,你一个下午就能做完,而且它会直接改变你下次评审时的发言。

② 把约束放进环境,而不是放进规范和评审

  • 怎么做的:这是全场最可迁移的一条。分享和权限"由平台实现,不是由 app 自己实现",Kenton 给的理由是——这样"让 gadget 自己根本没机会把这块做错"。安全那一段同理:他不是要求 AI 写出更安全的代码,而是把代码能造成的最大破坏预先压到接近零(数据出不去、外部连不上、别人的碰不到)。安全性来自环境的形状,不来自代码的质量。
  • 你可以怎么做:你那套 PRD 工厂最疼的地方是碰撞协议的纪律靠自觉——规矩写了(独立初稿互不可见、评审意见按归属回炉),但没有结构挡住绕过去的人。Kenton 的答案很直接:靠"要求大家遵守"永远漏,靠"结构上做不到违规"才不漏。落到你手上就是一次替换练习:挑一条你最怕被糊弄的规矩(比如独立初稿阶段互看、评审意见没回炉就出全量快照),把它从"协议里的一行字"改成"结构上根本做不到违规"——比如初稿阶段两个 agent 压根读不到对方的产出目录、快照生成缺少回炉记录就直接不出活。一次只改一条,改完看下个月还有没有人绕。

③ 别再用"等新架构就绪"挡需求

  • 怎么做的:他讲的 plugin 死循环是一个完整的失败故事:为了以后能快,宣布重写;重写期间所有需求都被"等 plugin 系统"挡回;"几年过去了,新架构还没就绪,功能一个都没实现",用户开始怀疑产品被放弃了。这套说辞的可怕之处在于它每一句都是对的——现在硬做确实会返工。
  • 你可以怎么做:你的多角色 PRD 工厂刚换上碰撞协议、产出的可验证性还没建起来,这正是最容易说出"等流程跑顺再说"的时候。给自己设一条硬线:**任何以"等重构/等流程跑顺"为理由的挡回,最多只用两次;第三次就必须给出一个不依赖新架构的丑陋版本。**丑陋版本的价值不是解决问题,是证明这条路还活着——Kenton 故事里的开发者输就输在几年里一件事都没交出去。

二、app_incubator:这期给了你一个反向解法

① "把该做什么前移到 agent"的反面:把决定权推到运行时

  • 怎么做的:你现在的方向是把"该做什么"尽量往前挪,让 agent 在开工前就想清楚。Kenton 走的是完全相反的路:**开发者只做第一版,剩下的决定留到运行时,由用完发现缺什么的那个人当场补。**他的原话是"开发者做出 app 的第一版,交给用户;用户需要新功能时,可以直接让自己的 AI agent 单独为自己写这个功能、加进 app 里"。他甚至现场演示了这件事——为了做这场演讲的 slides,他允许 Claude 直接改幻灯片工具本身。
  • 你可以怎么做:你的造 App 链路目前是"设计稿即工程强制契约"的前置重路线,好处是产出可控,坏处是前面越想越全、越走越慢,而且你永远猜不准第一批用户到底缺什么。这期提供的是另一个开关:让产出的 app 自带一个"让用户的 agent 改我"的口子。哪怕最小实现只是——生成的 app 里带一个对话框,用户说"这个列表我想按金额排序",agent 就改这份实例的代码。你不需要现在就换路线,但值得在下一个试验里做一次 A/B:同一个需求,一次走"前置想全",一次走"薄核心 + 运行时扩展",比一比哪边更快拿到一个用户真的在用的东西。

② AI 生成的代码怎么才敢让它跑:抄这套四层隔离

  • 怎么做的:他的隔离配方是现成可抄的四件套——前端跑在不属于任何域名的 iframe 沙箱里(拿不到主站 cookie 和数据)+ 内容安全策略白名单收紧到"发不出去任何东西"+ 唯一出口是向父窗口递消息的那一条窄通道(上面跑定义好的远程调用)+ 服务端也关在沙箱里、同样不能连外网。结论是"这段代码里你不可能写出一个有杀伤力的安全漏洞"。
  • 你可以怎么做:你的造 App 链路里,最让人不敢放手的一环就是"agent 写的代码我没逐行看过,敢不敢真跑"。这套配方给的是一个不依赖代码审查的安全底:只要生成物被关在这样一个盒子里,它写错了也只能自己坏掉。具体动作:给 app_incubator 的预览/试跑环节套一层这样的沙箱,先把最便宜的两层做上(不属于任何域名的 iframe + 内容安全策略白名单),亲手验一次"故意让 agent 写一段偷 cookie 的代码,看它是不是真的发不出去"。验过之后你对"让 agent 直接跑代码"的心理阈值会整个下移,这比多加三道评审有用。

③ 一个实例=一样东西:这是你"首屏体验"的现成答案

  • 怎么做的:Gadgets 里实例化幻灯片 app 得到的不是一个工具,而是一份 deck;要多份就实例化多个。整个平台被组织成"像 Google Docs 一样,里面几百上千个东西,打开一个、编辑、分享"。
  • 你可以怎么做:你的痛点是"激活/首屏体验"——用户打开看到什么。Kenton 的答案是:首屏不该是一个空的创作台,而该是一屋子已经能用的东西(他自己的白板、西语邮件筛选器、GitHub 待评审整理器,都是列在那儿的现成实例)。再加上他的 blueprint(导出代码、不带数据,别人拿去实例化成自己的)——这就是一条完整的冷启动路径:**先有一柜子样例,用户从"复制一个改改"开始,而不是从空白 prompt 框开始。**下一版首屏值得试这个方向。

三、一人公司 build-in-public:这期是一条现成的选题

  • 怎么做的:这场演讲有一个极好的钩子——"你的功能请求被产品经理丢进 Jira 就再没人见过",台下笑,因为所有人都经历过;而讲者本人是 Cloudflare Workers 的作者,2017 年起做到今天数百万开发者、每天数万亿次请求,这个身份让这句吐槽站得住。他还留了个大方的空白:项目当天没有开源(CTO 上周四叫停),也就是说"这套东西到底行不行"目前没有第二个人验证过。
  • 你可以怎么做:这条同时满足你两个卡点。选题角度:你就是那个被吐槽的产品经理本人,这是别人抢不走的视角——"Cloudflare 的大佬说我们产品经理是需求坟场,我认了,然后我拿自己的 ERP 需求池数了一遍"。验证体角度:更值钱的是第二篇——他说 AI 写的代码只要关进这样一个盒子就"不可能写出有杀伤力的漏洞",你可以拿造 App 链路真的搭一次这个盒子,然后故意让 agent 写恶意代码去撞它,把结果(成本、翻车、哪层拦住了)写出来。这一篇天然过得了你的"删掉我的判断和实测还成立吗"这道闸——因为全篇是实测,而且目前全网没人能验(代码还没开源),你会是最早的实操样本之一。可抄物很清楚:那四层隔离的清单,读者照着就能搭。

四、Personal Thinking:他的 gadget 就是你的 skill

  • 怎么做的:Kenton 展示的私人 gadget 全是"只服务他一个人"的小工具——筛西班牙语邮件、整理待评审的 pull request、一次 prompt 出来的协同白板。没有一个是打算做成产品的,它们的价值全在"正好贴合我一个人的工作流"。
  • 你可以怎么做:这跟你这本第二大脑里那一批技能是同一种东西(视频转文字、播客流水线、书籍上传……都是只服务你一个人的工具)。他多给的一步是 blueprint——导出代码、不带数据,让别人从中实例化自己的。你的技能目录已经有这个形态但没这么想过:**哪几个技能是可以"脱掉我的私人数据、只留骨架"分享出去的?**这既是给一人公司号的弹药(可抄物),也是逼你把技能里写死的个人配置抽出来的好理由。

更深三角度

该反着用:Kenton 敢说"这段代码里不可能有有杀伤力的漏洞",是因为运行时是他自己写的——他有整个 Cloudflare Workers 做底座,能重新定义"代码能碰到什么"。你没有这个层级的控制权,而且 ERP 碰的是订单、库存、资金这类真会出事的数据。所以正确的借鉴是反过来缩小适用面:不要试着搭一个通用沙箱平台(那是你精力的黑洞),而是把"让用户当场扩展"只开在最没有杀伤力的那一层——展示层、报表视图、导出模板、个人化的提醒规则,全部只读、只影响提出人自己那一份视图,永远不碰写入路径。他靠环境的形状拿到安全,你靠范围的窄拿到安全,同一个原理,两种成本。

和你现在做法冲突:你在 app_incubator 上的赌注是"把该做什么前移到 agent"——让链路在动手前就想得更全。这期整场演讲在说反话:**想得更全是错的方向,因为你永远猜不到用户要什么;正确的做法是让核心尽量小、把决定权交给用完之后才知道自己缺什么的那个人。**两边都有道理(他做的是通用办公套件,你做的是有明确交付物的造 App 链路),但张力是真实的:**如果"前移决策"这条路走得吃力,别只怀疑 agent 不够聪明,也该怀疑"决策能不能前移"这个前提本身。**这个结论我不替你下,但下次评估链路卡点时,值得把这个问题摆上桌。

对你的镜子:你每天在做的需求取舍,一直被当成"判断力的成果"——排得准不准、拒得对不对。这期给出另一个读法:**你那些必须拒掉的长尾需求,很大一部分不是你判断的产物,是"一份代码服务所有人"这个前提逼你做的取舍。**你的优先级排得再好,也只是在给这个约束打补丁。真正的杠杆不在你的排序能力上,而在你有没有权限去动那个约束——哪怕只动一小块。


所以呢

可迁移思维模型

  • 【耐用】把约束放进环境,而不是放进规范。"让它根本没机会做错"比"要求它别做错"强一个数量级。这条对你的关卡执行、对 AI 生成代码的安全、对权限设计,全部适用,而且不会因为技术换代而失效。
  • 【耐用】**长尾需求是架构问题,不是优先级问题。**每次面对"这个只有少数人要"的需求,先问"能不能让提的人自己搞定",再问"排第几"。
  • 【耐用】**"为了以后能快,先停下来重构"是一条会吞掉几年的路。**用"两次为限"这样的硬规则拦住自己。
  • 【会过期】那套具体的四层隔离组合(不属于任何域名的 iframe + 内容安全策略 + 窄通道 + 沙箱化后端)。它依赖今天的浏览器和平台能力,而且这套东西当天并没有开源,你现在只有一段演讲的口头描述,没有可读的实现。当参考配方用,别当结论抄。

判断更新:过去你会把"用户功能请求太多、排不过来"当成产品管理问题。这期之后可以加一个反问:**这些需求里有多少,是因为我们的软件只能有一份、所以只能由我来裁决?**同时,"AI 生成的代码不敢直接跑"这个顾虑,也应该从"需要更严的审查"改成"需要更小的爆炸半径"——后者便宜得多,也可靠得多。

这周一个赌注:拿 ERP 积压需求清单里最近的 30 条,花一个下午分成上面那三堆,数一数第 (b) 堆(私人偏好类)占多少。如果超过三分之一,你就拿到了一个可以正式提的议题:**这一类需求不该走路线图,该走"用户自己配"。**这件事零成本、不需要授权、结论无论正负都有用——而且它顺手就是一人公司号的第一篇稿子。

接着读