← 所有文章

我拒绝写的内容

读懂一位作者信念最快的方式,是看他能写却选择不写的清单。发文数量告诉您什么被发表了,而拒绝清单则揭示其立场。一个有明确拒绝清单的博客读起来像一个人;没有拒绝清单的博客读起来像一个信息流。

Apple生态系统集群有自己的声音。这种声音主要不是由已发表的文章构建的,而是由那些未发表的、以及那些表面上切题但仍被砍掉的反复出现的写作形式所构建的。您在该集群中读到的文章,都是这些取舍的下游产物。这篇文章的余下部分就是要点明这些取舍。

值得区分的拒绝有两种。类别性拒绝针对集群领域之外的主题。模式性拒绝则是无论主题如何都会让草稿出局的声音和结构选择。前者是品味,后者是技艺。两者共同塑造了您所阅读的内容。

TL;DR

  • 类别性拒绝:任何不属于Apple技术栈与agent交集的内容。通用Web开发、云LLM教程、招聘技术,以及任何会稀释集群身份的内容。
  • 模式性拒绝:回收式自我设定框架(诸如”我从120个hooks中学到的”)、把私有遥测数据当作证据、编辑性脚手架(规划标签、PRD编号)、缺乏架构思考的教程、缺乏依据的热门观点。
  • 有趣的拒绝:位于集群名义领域之内,但因不能复利强化立场而仍被砍掉的主题(visionOS生产力应用、服务端Swift、仅AppKit的Mac UI)。
  • 拒绝不等于缺席。拒绝是留下来的内容的形状。

类别性拒绝

该集群涵盖Apple开发与AI agent的交集。这一交集之外的一切都不在范围内,不是因为它们无趣,而是因为它们不能产生复利。

通用Web开发。Blakecrosley.com本身基于FastAPI和HTMX运行。围绕这套技术栈,有几十篇可以写的文章:HTMX的swap模式、FastAPI的依赖注入、异步SQLAlchemy的陷阱。但其中没有一篇属于这个集群。集群的读者是正在思考agent的iOS开发者;Web开发文章会稀释信号,即便它们能吸引自己的受众。这些文章有自己的归属之处;但不是这个集群。

云LLM API教程。Anthropic的API、OpenAI的API、Python的SDK、Claude Sonnet和Opus之间的延迟差异。给那些刚开始学习从后端服务调用云LLM的人写的教程式内容。集群的立场是:agentic Apple才是稀缺的东西;云LLM教程是互联网其他地方已经覆盖得很彻底的大宗商品。写一篇这样的文章,等于是在朗读文档,对集群的权威毫无加成。

ResumeGeni和941招聘技术。不同的公司、不同的品牌、不同的网站。两者之间相互渗透只会削弱双方。招聘技术栈有自己值得书写的技术决策(ATS解析器、嵌入流水线、候选人匹配算法);它们应当出现在另一个身份下的另一个博客上,而不是这里。

任何会稀释集群身份的内容。一篇真正出色的Postgres连接池文章,或者关于JavaScript框架更替的Hacker News式吐槽,或者一篇关于Rust异步运行时的深度文章,都是站得住脚的写作,但都在集群的领域之外。入选的标准不是”这篇文章好不好”,而是”它能否复利强化已有的内容”。

类别性拒绝由集群的身份决定。一旦身份明确,拒绝清单也就随之而来。

模式性拒绝

模式性拒绝跨越主题边界。一篇草稿可能在主题上完全契合集群,但仍因写法而被淘汰。

回收式自我设定框架。“我在6个月里从120个hooks和49个命令中学到了什么。”“500次会话之后,有三件事留了下来。”“我的95-hook配置。”这种回收式自我设定模式把作者的写作环境当作专业能力的证据来反复使用。集群的应用是一个有限集合;如果作者依赖这些数据,同样的hook数量、skill数量、命令数量、会话次数就会在文章接连出现。读起来像清嗓子,而不像论证。集群最终确立的规则:数量上偏重框架解释类和前沿随笔类;实操代码类文章应当指向真实的公开项目,而不是作者的工具分类法。

把私有遥测数据当作证据。“该hook在34天内触发了52次。”“幻象验证从12%的会话降到不足2%。”私有数据从外部无法验证;读起来像炫耀;无法对照任何公开物件加以核实。正确的证据形式是公开来源(Apple Developer文档、Anthropic规范、已发布的开源代码、论文)加上推理。私有指标适合放在commit message和事后复盘里,不适合放在已发表的文章中。

编辑性脚手架。用粗体标签按作者内部分类法给文章贴标签。正文中的PRD编号。”按cave plan阶梯所述。”读者不需要知道这篇文章在作者规划文档里属于哪一类。文章的体裁从第一句话就显而易见。规划是工作流工具,不是面向读者的文本。成品就是成品;工作流应当留在工作流之中。

缺乏架构思考的教程。一篇文章如果只是说”这是安装XcodeBuildMCP的方法”,而没有指出当agent获得结构化工具访问后架构上发生了什么变化,那它就只是教程。教程有价值,但不是该集群的贡献。集群的贡献在于与集群其他部分能够复利的架构模式。一篇没有达到这个层次的教程,要么会被改写到达到为止,要么就被砍掉。

缺乏依据的热门观点。“Codex比Claude Code更好。”“MCP被过度炒作。”“App Intents是死路一条。”热门观点这种体裁能带来流量,但经不起推敲。一个真实的观点会基于作者亲眼所见且能为之辩护的具体行为;一个不真实的观点会在第二位水平不错的当代开发者读到时崩塌。集群中那些立场鲜明的文章(Trust、Tool RL、App Intents vs MCP)是立场,不是观点;立场要拿出依据。

任何需要复述常识的内容。“先安装Xcode。”“运行npm install。”“Apple文档在developer.apple.com。”凑数。需要被告知如何安装Xcode的读者,不是该集群的读者。集群默认读者本身就是会读这种内容的人;迁就不在那个层次的读者,是另一个网站上另一类文章要做的事。

有趣的拒绝

类别性拒绝很简单。模式性拒绝有规则可循。有趣的拒绝是那些位于集群名义领域之内,但因为不能复利强化立场而仍被砍掉的主题。

visionOS生产力应用。一篇长文谈”用visionOS当第二屏”或”在Vision Pro上发布日记类应用”。属于Apple技术栈,主题切合。被砍掉是因为集群在visionOS上的立场是RealityKit + 空间心智模型才是架构上的支点;”把visionOS当作扁平的生产力界面”属于另一个框架的领域,无法延伸集群。一篇关于ornament、沉浸式空间或手势追踪的文章会形成复利;一篇关于”让您的iPad应用在visionOS上运行”的文章则不会。

服务端Swift。Vapor、Hummingbird、运行在Linux容器里的服务端Swift。真实存在、不断成长、技术上有趣。但在集群之外。集群的服务端立场是”iCloud Drive加上一个JSON文件加上一个MCP服务端”,这是一个有意保持精简的服务端承诺,因为更大的承诺(Swift后端服务)是一场不同的架构对话,与agentic Apple的前沿没有交集。当Swift后端成为iOS与agent架构的承重组件那一天,这类文章就会赢得自己的位置。今天还不行。

仅AppKit的Mac UI。Mac应用至今仍带有大量AppKit工作,集群的多平台发布文章处理的是Mac上的SwiftUI,而AppKit特有的主题(NSToolbar定制、NSResponder链怪癖、AppKit到SwiftUI的桥接陷阱)就在集群声音的边缘之外。它们能更好地强化另一个集群的立场(具体的Mac开发),而不是这个集群的立场。

已有内容之外的对比型文章。App Intents vs MCP赢得自己的位置,是因为这种对比揭示了一条架构规则。一篇对比Cursor、Zed、JetBrains用于iOS开发的文章会带来流量,但除了”不同IDE工作方式不同”以外揭示不出任何东西。要新增一篇对比文章,门槛是:这种对比本身能否产生达到前沿随笔级别的洞察,还是仅仅是一次跑分?

任何需要我伪装权威的内容。一篇关于Core ML量化、达到能让Core ML团队成员认可的技术深度的文章。一篇关于visionOS Metal着色器、达到能让图形工程师认可的深度的文章。集群的权威在于agentic Apple架构的交集;伸到这个交集之外,会写出”足够正确,不至于错”但”过于浅显,无法复利”的文章。诚实的做法是引用更深的声音(一位Core ML研究者的博客、一位图形工程师的总结),而不是去模仿一个。

拒绝即产品

拒绝清单不是对自身局限的告白。拒绝清单是一种定位行为。Apple在1984年的Mac广告之所以著名,正是因为它不是为IBM做的广告。Apple在Steve Jobs于1998年画出2x2网格时的产品线(消费/专业 × 桌面/便携,整个Mac产品线只有四个格子)之所以著名,是因为被砍掉的部分,而非保留下来的部分。选择拒绝某个类别,作为产品信号比选择进入某个类别更强烈。

写作中,拒绝起着同样的作用。集群的声音(直接、有立场、基于证据、附带残酷诚实结尾)之所以存在,正是因为回收式自我设定框架被砍掉了、私有遥测被砍掉了、编辑性脚手架被砍掉了、云LLM教程被砍掉了。每一次砍掉,都是定义出正空间的负空间。

这一模式与仓库不应为自己的可信度投票一文呼应:trust对话框的价值,正在于它在用户授权之前拒绝去解读。一个会读取workspace字节的trust gate,根本算不上gate。一个对每篇切题文章都说yes的博客集群,根本算不上集群。在边界处的拒绝,才使成品具有意义。

由此推论:一位没有拒绝清单的作者也无可厚非,但他生产的是信息流,不是立场。两者都是真实的产物。但只有其中一种会随着时间累积权威。

这对Apple技术栈前沿的写作者意味着什么

三条要点。

  1. 先列出类别性拒绝。集群领域之外的内容是什么?把清单写下来。集群从这个答案中获得身份;答案因明确表达而获得耐久性。

  2. 再列出模式性拒绝。无论主题如何都不被允许的声音和结构形式是什么?回收式自我设定框架、私有遥测、编辑性脚手架、缺乏依据的热门观点。每一种在文章库中存活下来的模式都会稀释声音。

  3. 留意那些有趣的拒绝。位于领域之内但仍被砍掉的主题。那才是承重的品味决策。其他写作者会发表它们;您不会。您不发表的原因,正是集群的立场所在。

完整的Apple生态系统集群:面向Apple Intelligence界面的有类型App Intents;面向agent界面的MCP服务器;两者之间的路由问题;用于应用内端侧LLM功能的Foundation Models;运行时LLM与工具LLM的区分;三种界面的综合;单一可信源模式;用于Xcode集成的Two MCP Servers;面向Apple开发的hooks;Live Activities;watchOS运行时契约;SwiftUI内部机制;RealityKit的空间心智模型;SwiftData模式纪律;Liquid Glass模式;多平台发布。中心枢纽位于Apple生态系统系列。如需更广泛的iOS与AI agent上下文,请参阅iOS Agent开发指南

FAQ

“拒绝即产品”是什么意思?

拒绝即产品的意思是:把某些内容排除在成品之外的选择,是定位决策,而不是缺失内容。一个拒绝某些主题或某些结构性模式的博客集群,会形成比那种发表所有切题内容的博客更具辨识度的声音。这种模式同样体现在实物产品中:Steve Jobs在1998年的Apple产品网格之所以著名,是因为它砍掉了什么,而非留下了什么。同样的逻辑适用于写作。

这些拒绝是永久性的吗?

有些是,有些不是。类别性拒绝(云LLM教程、招聘技术)与集群身份绑定,不太可能改变。模式性拒绝(回收式自我设定框架、编辑性脚手架)是真有约束力的声音规则,从此往后都适用。有趣的拒绝(服务端Swift、仅AppKit)会在底层架构发生变化时被重新评估:当Swift后端成为agentic Apple工作流的承重组件那一天,服务端Swift就会赢得一个位置。这份清单不是教条;它是当下的品味。

为什么要发表一份拒绝清单?

发表这份清单服务于三类受众。读者比从样本文章中拼凑更快地了解集群的领域。未来的自己获得一个对照检查点:集群是否漂移到了它声称要拒绝的领域?其他写作者看到品味驱动的写作在互联网这个角落里是什么样子,从而降低他们做同样事情的启动门槛。代价很小(一篇文章);收益持久。

拒绝主题不会缩小受众吗?

是的,有意为之。集群的设计目标是与特定读者(一位思考agent的iOS开发者)产生复利,而不是最大化原始受众。集群领域之外的文章可能会吸引不同的读者,但这些读者下一篇也不会回来,因为他们是为另一个主题而来。复利的做法是连续二十次为同一位读者写作,而不是分别为二十位不同读者各写一次。

您如何处理处于边界的主题?

应用有趣的拒绝那一节里的标准:这个主题能否复利强化集群的立场,还是仅仅与之并列?边界主题如果能产生复利就写。边界主题如果不能产生复利就砍,即便它会带来流量。这个决策无关数量,而是关乎集群在时间维度上的连贯性。复利,才是站得住脚的标准。

参考资料

集群的声音规则(不用回收式自我设定框架、不用编辑性脚手架、不把私有遥测当作证据)在文章库本身中清晰可见。读任何一篇集群文章,然后再读另一篇,那些反复没有出现的形式就是规则在起作用。已发表的集群本身就是权威来源。

相关文章

What SwiftUI Is Made Of

SwiftUI is a result-builder DSL on top of a value-typed View tree. Once the substrate is visible, AnyView, Group, and Vi…

17 分钟阅读

SwiftData's Real Cost Is Schema Discipline

SwiftData's API is two macros. The cost is what happens after you ship. Optional fields are the cheap migration; non-opt…

15 分钟阅读

The Cleanup Layer Is the Real AI Agent Market

Charlie Labs pivoted from building agents to cleaning up after them. The AI agent market is moving from generation to pr…

15 分钟阅读