<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>多Agent on UKonA有空</title><link>https://ukona.cn/tags/%E5%A4%9Aagent/</link><description>Recent content in 多Agent on UKonA有空</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 02 Oct 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://ukona.cn/tags/%E5%A4%9Aagent/index.xml" rel="self" type="application/rss+xml"/><item><title>一个人带四台机器干活：我把AI协作做成了流水线</title><link>https://ukona.cn/posts/life-065/</link><pubDate>Fri, 02 Oct 2026 12:00:00 +0800</pubDate><guid>https://ukona.cn/posts/life-065/</guid><description>&lt;blockquote&gt;
&lt;p&gt;字数：约3000字 | 阅读时间：9分钟
&lt;strong&gt;&amp;ldquo;把派活做成流水线，把拍板留给人。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;「记忆工程」系列第三篇。上一篇讲完数据模型，这篇兑现第一篇埋的伏笔：这个项目由我和几个AI协作开发，一台服务器上的AI做编排，另外几台机器上的AI分头写代码。这篇把这条流水线拆开讲讲。&lt;/p&gt;
&lt;p&gt;先交代起点，免得后面显得太顺。立项时项目手里有什么？一份需求提案、一份设计文档、一轮五路红队评审——结论FAILED，11个阻塞性问题；外加一张14个开发任务的清单。开工数：0。&lt;/p&gt;
&lt;p&gt;决策者没打算自己一行行补代码，也没打算找一个&amp;quot;超级Agent&amp;quot;托管一切。最后跑通的东西说出来很朴素：一块任务板，一条纪律，三台机器上各跑一个干活的AI，工头也住在其中一台服务器上。&lt;/p&gt;
&lt;h2 id="一第一个决定不并行"&gt;一、第一个决定：不并行&lt;/h2&gt;
&lt;p&gt;直觉上，多台机器就该并行，越多越快。我们拍板的第一个架构决策恰恰相反：&lt;strong&gt;全局串行&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;原因一半是钱：三个干活的AI共用同一个编码模型的订阅额度，并行等于三倍烧钱抢饭吃。另一半是评审链：串行让每个任务都有干净的&amp;quot;谁写的、谁评的&amp;quot;记录，出了问题翻commit就能定位到环节。并行省下的时间，排查时会加倍还回去。&lt;/p&gt;
&lt;p&gt;机制落在共享记忆库里的一把全局锁上：任何worker开工前先看锁，锁上写着当前任务和执行者；干完、评完、落库，才轮到下一个。推进时段也卡着额度的低峰走——工作日的深夜和清晨，加上周末全天，每晚一到两个任务，不贪多。&lt;/p&gt;
&lt;p&gt;还有条潜规则：纯架构设计、文档合并这类不消耗编码额度的活，工头直接干，不进流水线排队。&lt;/p&gt;
&lt;h2 id="二谁干什么谁不许夸自己"&gt;二、谁干什么，谁不许夸自己&lt;/h2&gt;
&lt;p&gt;分工是踩过坑之后修出来的：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;节点&lt;/th&gt;
&lt;th&gt;角色&lt;/th&gt;
&lt;th&gt;主要产出&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;工头主机&lt;/td&gt;
&lt;td&gt;编排+评审集成&lt;/td&gt;
&lt;td&gt;派活、收报告、架构文档、静态评审&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;云服务器A&lt;/td&gt;
&lt;td&gt;worker&lt;/td&gt;
&lt;td&gt;编码、CI、文档、巡检、看门狗&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows笔记本&lt;/td&gt;
&lt;td&gt;worker&lt;/td&gt;
&lt;td&gt;编码重活、实测类任务&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;人类决策者&lt;/td&gt;
&lt;td&gt;拍板者&lt;/td&gt;
&lt;td&gt;检查点验收、例外处置&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;其中一条纪律值得单独一段：&lt;strong&gt;禁止自审自批&lt;/strong&gt;。谁写的代码，交叉评审必须换一台机器。评审报告本身也是一次commit，和代码一样进Git历史。到收官时，仓库里攒下191个commit、35份评审文档——评审在这个项目里是交付物，有编号、有结论、可追溯。&lt;/p&gt;
&lt;h2 id="三一个任务的一生"&gt;三、一个任务的一生&lt;/h2&gt;
&lt;p&gt;拿一个典型任务走一遍全流程：&lt;/p&gt;
&lt;p&gt;任务板上认领（任务板是一份人人可读的Markdown清单）→ 读spec、写代码、跑测试 → push到远端 → 协调器把变更集派给另一台机器交叉评审 → 评审报告落docs目录 → 阻塞项退回修复，非阻塞项记档留给下一个任务吸收 → 任务板打勾 → 共享记忆库沉淀一条经验。&lt;/p&gt;
&lt;p&gt;几个数字：MVP阶段8个里程碑任务全部走完这套流程；加上收尾和增强轮，任务板上T1到T16全部打勾；自动化测试从0涨到近400个，全绿。&lt;/p&gt;
&lt;p&gt;更重要的是检查点制度。整条流水线只在三种情况下需要人出场：战略拍板（要不要做）、阶段验收（specs二审、demo验收）、例外处置。流水线跑了一个多月，人真正出手一只手数得过来——三次检查点拍板，外加几次事故处置。其余时间，任务板自己转。&lt;/p&gt;
&lt;h2 id="四翻车集锦流水线是修出来的"&gt;四、翻车集锦：流水线是修出来的&lt;/h2&gt;
&lt;p&gt;听起来太顺了？事故记录都在档案里。&lt;/p&gt;
&lt;p&gt;**事故一：凭空蒸发的任务。**凌晨给笔记本上的AI派了个分析任务，日志显示已开工，十来分钟后再看：临时目录清空、AI进程归零，任务没了。根因查了一圈才定位：笔记本在Linux子系统（WSL）里跑AI，派活的会话被一个300秒超时杀掉后，子系统判断&amp;quot;没人用了&amp;quot;，五分钟后把整个实例连锅端了。处置：换Windows原生方式跑AI，加&amp;quot;保温&amp;quot;长连接防回收，顺便立了规矩——所有事故必须落档，格式固定：现象、根因、处置、沉淀。&lt;/p&gt;
&lt;p&gt;**事故二：评审查死的罗生门。**笔记本上的AI连着两次在评审任务里&amp;quot;卡死&amp;quot;：进程活着，不报错，就是不产出。靠对比采样才抓到真相：它在Windows上跑测试套件，Node测试进程启动极慢，600秒超时根本跑不完；AI随即陷入&amp;quot;读日志→诊断→再等等&amp;quot;的补救循环，永远不会主动放弃。由此总结出判死三件套：CPU采样对比、日志最后写入时间、产出物是否存在——三条证据齐了就判死重派，不再干等。顺带改了纪律：笔记本从此只做纯静态评审，实跑测试的活交给服务器。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;事故三：派发通道不可靠。&lt;strong&gt;工头派活走消息通道，丢过三次。最后长出来的机制叫&lt;/strong&gt;心跳自主开工&lt;/strong&gt;：每个worker有自己的巡检节奏，主动检查任务板和锁文件，发现该自己干的活没人干，就按决策记录自行开工。协调通道从必需品降级成了加速器——它挂了，活照样往前走。&lt;/p&gt;
&lt;p&gt;三次事故，三份档案，三条新纪律。这条流水线的可靠性，一半是设计出来的，另一半是这么修出来的。&lt;/p&gt;
&lt;h2 id="五工头干完活拆了自己的工棚"&gt;五、工头干完活，拆了自己的工棚&lt;/h2&gt;
&lt;p&gt;流水线的最后一环是监督。每小时一轮看门狗巡检：任务板状态、worker进程、锁文件、远端同步，只读写档不发通知，有异常才升级。稳定期连续几十轮巡检结果一字不差——这种&amp;quot;无聊&amp;quot;是流水线健康时的标准长相。&lt;/p&gt;
&lt;p&gt;收官方式有点意思。MVP验收通过后，每小时协调器按设计执行了自我移除：任务板全勾、锁状态改成&amp;quot;等待拍板&amp;quot;、协调进程注销。工头干完活，自己拆了工棚，这件事本身也写进了完成记录。&lt;/p&gt;
&lt;h2 id="六写在流水线边上"&gt;六、写在流水线边上&lt;/h2&gt;
&lt;p&gt;带得走的三条：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;**串行是纪律，也是保险。**并行度上不去的时候，先把评审链做干净；&lt;/li&gt;
&lt;li&gt;**事故是流水线的一部分。**翻车不落档，等于白翻；&lt;/li&gt;
&lt;li&gt;**人只出现在必须拍板的地方。**检查点之外，人和AI互不打扰。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;照例：本文由 AI 起草、人类审校拍板。这个栏目本身，就是这个项目的人机协作现场记录。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;「记忆工程」系列 · 03 | 上一篇：&lt;a href="https://ukona.cn/life-064/"&gt;把记忆存进Git：一个AI记忆系统的数据模型&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>