The Evolving Workflow — 让项目边生长、边保持自洽的工作哲学
把「如何工作」本身,当作项目里和代码、文档同等的一等公民来维护。工作流不是围在工作外面的脚手架,而是项目内部一个被写下来、被版本化、被持续修订的对象——它和产物一起演化,也一起接受检验。
一个真正可演进的工作流,要同时扛住两股互相拉扯的力:它要能无限生长,去接住你今天根本想不到的需求;又要始终保持自洽,不因为不断生长而烂成一堆互相矛盾的碎片。大多数项目只能二选一——要么前期把架构定死,换来僵化;要么想到哪写到哪,换来崩坏。下面十一条,是一组让你「边长边不烂」的装置。它们不分领域:写代码、做调研、攒知识库、写报告,违反哪一条,腐烂的方式都一样。
graph LR
A["实践 / 执行"] --> B["出现摩擦
或验证出更好的做法"]
B --> C["固化为规则
写进治理文档"]
C --> D["传播 / fan-out
同步到所有相关处"]
D --> A
style A fill:#D4E4D6,stroke:#6B8F71
style B fill:#F2DDD0,stroke:#C47D5A
style C fill:#F2DDD0,stroke:#C47D5A
style D fill:#D8DEE4,stroke:#5A6875
不要在动手前猜架构——你还不知道未来的需求,猜出来的结构只会提前绑住自己;让结构从实践里长出来。但这有个代价:一个刚被实践验证的好做法,如果不当场写成规则、放到它该在的位置,它就只活在这一次对话里,下次从零再来。所以演化必须带棘轮:每积累一分经验就锁死一分,不许回退。「能演化」的反面不是僵化,而是「每次都重新发明」。
一条只说「要做 X」的规则,只是半条规则。完整的规则还要说清楚:当 X 改变时,这个改变如何抵达所有依赖 X 的地方——同步给谁、谁来补齐、是立即还是先标记待办。缺了后半条,系统必然漂移:一处更新了,其余的悄悄过期,而且没有任何机制会报警。让每条规则都携带自己的传播条款,才是「自我演化」四个字真正的发动机。
每一句「这个需求怎么这么难满足」、每一次纠正、每一声「你到底是怎么知道该去那儿找的」,表面是一个具体问题,底层几乎都指向结构上的一处缺失。最有价值的反应不是把这个请求满足掉就完,而是去补它暴露出的那个洞。系统进步最快的地方,恰恰是它最让你别扭的地方。只解决症状,根因会换个马甲再回来。
报告、网站、成品文档都不是项目本身——它们是底层知识在某个读者视角下的一次投影。真正的功夫要花在建那套有出处、有结构、可复用的知识上,再从它渲染出面向不同对象的产物。三层要始终分开:什么是真的 / 我们怎么知道的 / 怎么讲给某个特定的人听。把心血直接灌进一个一次性产物,等于放弃复用,下次从头再来。
一个不带出处的断言,比没有断言更危险:它长得像知识,却会无声地污染它下游的每一个判断。所以每一条事实都要带着「从哪来、有多确定」同行。把一个猜测洗成肯定句,是这里的头号罪。而发现漏洞最可靠的手段,是用相互独立的来源交叉验证——当一个来源怎么都对不上时,问题往往不在数据,而在你以为已知的那部分。
先把现实给你的一切原样接住,再谈筛选、归一、解释。因为你此刻并不知道,明天的问题会用到今天被你随手丢掉的哪个细节。解释永远叠在原始之上,绝不覆盖它。过早的整洁是一种不可逆的信息损失——乱可以以后再理,丢掉的字段却找不回来。
检验任何产物只有一个标准:一个完全没有上下文的人——陌生人、新来的 agent、半年后的你自己——能不能冷启动接手并继续?这一条逼出一整套习惯:不留孤儿知识(任何东西都能从某个入口被找到)、命名本身就编码重要性与角色、索引永远只是索引而不堆内容、沉淀进共享的项目里而不是某个工具的私有记忆。只有作者自己找得到的知识,不算项目知识。
一样东西放在哪里,本身就在声明它是什么、管多大范围。把只属于局部的事实,放进全局的位置,是一种会长期误导所有人的归类错误。边界还有第二重作用:把错误关在原地。清晰的边界让一处的失误不会蔓延成全局的混乱——无论这个「处」是一个代码模块,还是一篇文档的职责范围。
对任何问题,第一个该问的是:从零设计会怎么做?最直接的路径是什么?复杂度是会自我繁殖的——投机性的灵活、过早的抽象、没有理由的中间层,默认都会往上堆。你必须主动往下砍,并让投入与阶段匹配:还没验证一次性的做法,就不要先造流水线。看到一段没有理由的绕路,那本身就是一个信号。
难以撤回的选择——命名、架构、范围——值得在动手前先想清楚、先商量;廉价而且已经说清楚的执行,值得直接做、不要中途打断。把这两者混在一起,两头都亏:为琐事反复请示,浪费彼此时间;或者在没人确认的情况下,把不可逆的设计悄悄定死。动手前,先判断自己在哪种模式里。
把每一条指令翻译成一个能被检验的成功标准,然后产出 → 对照意图验证 → 修正,循环到达标为止。「看起来做完了」不是做完。任何要放大的动作——批量生成、全量迁移、正式发布——之前,先在一个小而可信的样本上证明链路成立。一个验证过的小样本,胜过一个没验证的大批量。
这十一条更实用的用法,是把它们倒过来当「气味」清单。当你闻到下面任何一种味道,基本能定位到是哪一条原则被违反了——腐烂从来不是突然的,它先发出信号。
经验没被锁进系统,只活在记忆里。违反 §1 棘轮
规则没带传播条款,系统在漂移。违反 §2
只满足了请求,没补它暴露的洞。违反 §3
把功夫花在了投影上,而非本体。违反 §4
猜测被洗成了断言,开始污染下游。违反 §5
不可逆地损失了明天才需要的细节。违反 §6
知识无法被冷启动接手,bus factor = 1。违反 §7
放错位置,归类错误在误导所有人。违反 §8
复杂度在自我繁殖,没有人主动往下砍。违反 §9
「想」和「做」两种模式被搞混了。违反 §10
没有闭环验证,错误等着在放量时爆发。违反 §11
这套哲学不是凭空写的,而是从两个长期项目的真实工作轨迹里反推出来的——每一条都对应着一次具体的纠正、踩坑或追问。它将沉淀为 NeoWiki 的 wiki/notes/evolving-workflow.md。
本页是该笔记的可视化呈现。