我是如何搭建第一个 Dark Factory workflow 的

上一篇文章中,我介绍了 OpenSecondBrain——AI 代理所依赖的记忆层。记忆只是故事的一半,另一半是流程本身:谁做什么、谁审阅谁、什么算”完成”,以及这一切如何由聊天中的一句话启动。

今天我上线了第一个能跑通的版本:new-project workflow。我把一个想法带进 Telegram,最后得到一个完整搭建好的项目,包含文档、设计、计划,以及一个真实可访问的公开页面。

从外部看是什么样的

我带来一个想法。比如:“给我的小工作室做一个单页落地页。”

然后我会回答几轮简短而有针对性的问题。先是头脑风暴本身:受众是谁、要突出什么、我偏好哪种技术栈、整体应该是什么感觉。接着,在每个阶段中再来几轮 4–5 个问题的短会话:当前文档作者缺什么,就问什么,免得他们凭空编造。

其他的事情都由工厂来做。在此期间我可以处理自己的事情。

卡片会动的看板

这一切中最直观的就是看板。当我对最终方案说”好”之后,编排器会一次性在看板上创建 13 张卡片,每个工作阶段一张。从那一刻起,一切都在我眼前发生。

卡片自己会动。先是第一张亮起来,标记为 running,我就知道某个 subagent 已经接手。几分钟后,这张卡片滑入 done,下一张随之亮起。每两个生产阶段之间一定有一张评审卡,而且必须由另一个 subagent 来接:写文档的人永远不审自己的工作。

有时评审不过。这时评审卡进入 blocked,旁边出现一张新的 fix-task 分给原作者,整条下游就乖乖等着。作者修改并关闭 fix-task 后,评审醒来重新读一次产物。可能通过。可能再次打回。最多两轮,然后升级到我这里。

最后我看着这块看板,几乎像在追一个快递包裹:现在在装配,现在在打包,现在在派送。只不过这不是一个快递员——而是好几个 subagent 同时在我的项目不同部分上干活。

最后会得到什么

流程结束时,我手上会有:

实现真正的功能则是另一个 workflow 的工作,那是下一个。这第一个的目标是把一个想法推进到”一切已描述、一切已商定、项目有自己的地址”的状态。之后就可以雇用工厂去做真正的开发了。

难点在哪里

我跑了好几轮调试。每一次都会冒出自己专属的可笑 bug:有个 subagent 想清理自己的工作目录,结果把自己的 shell 会话杀掉了;又或者它在某个阶段中间就开始实现功能,尽管实现根本不属于这个 workflow,而是下一个的事。每两轮之间我会去给 skill 打补丁再重启。到现在这个状态,整个周期可以从头到尾干净地跑完。

顺便一提,记忆也长大了

上一篇文章里我承诺,OpenSecondBrain 是故事的另一半。那以后这一半已经成长不少,对工厂本身来说也很重要。

主要的变化是 OpenSecondBrain 现在多了一层”观察记忆”。以前我手工写进去,像写日记。现在 subagent 们顺手就把我的偏好记下来(比如”提交信息使用祈使语气”或”不要使用没有上下文的内部缩写”),把笔记丢进一个收件箱,每天 Hermes 代理跑一次 dream——一次后台 pass,把反复出现的观察提升为规则。这些规则会在每个下一个会话的开头自动加载,我也就不必再把同一件事重复二十次。

此外还有:在整个 OpenSecondBrain 知识库上的全文检索;每次 dream pass 之前的备份和回滚;记录每一笔付费操作的独立层(付了什么、为什么付、绑在哪里);以及机器强制的保护,防止某个代理意外覆盖另一个代理的规则。这一切才让工厂成为可能:当某个 subagent 在写 DESIGN.md 时,它已经能看到我关于排印和界面的累积偏好。我只是某次在聊天里随口提到,OpenSecondBrain 把它们钉住了,现在它们会跟着每一个新项目一起出场,不用任何提醒。

接下来

new-project 只是 bootstrap。接下来会是 new-feature——一个 workflow,它接手一个已有的项目及其文档,把下一个功能推到生产。再之后是第三个,bugfix:分诊、复现、修复、验证、上线。三本 playbook 合起来,就是我面向一个人的 Dark Factory 版本:我带来一个想法或一份 bug 报告,最后产出一个能用的功能。

完整的工厂还在路上。但第一块已经组装好,并且跑得很稳。

把这些作为开源发布还为时过早:在这个阶段,它更接近研究,而不是成品。一旦整个项目搭建流程能稳定地跑下来,我会把所有东西开放出来。请在 X 上关注我。