公司动态
一个人维护 230 个 GitHub 仓库,发版靠的是一条 Agent 流水线
现在我的项目停在 228 个工具、180 个旗舰、230 个 GitHub 仓库——而发版这件事90% 的步骤已经不是我在做了。本文复盘这条人只拍板、Agent 跑腿的发版流水线它长什么样、哪里必须人、以及一次真实的差点发崩是怎么被自己拦下来的。背景230 个仓库为什么不能手发这些工具都是单文件、零依赖、离线优先的网页小工具每个工具是一个index.html纯函数内核 浏览器 UI。它们归在一个 GitHub 组织下每款一个仓库加上门户仓和聚合器仓一共 230 个。发一版意味着10 个新仓库要从零建库、接线进门户和聚合器、生成宣传物料、推到 GitHub 并启用 Pages。如果全手动一批 10 个工具就是几十次重复点击 上百处易错编辑。结论先说一个人能维护 230 仓库不是因为勤快是因为把可重复全交给了流水线。流水线解剖6 个阶段人是哪一段整条链路是 research → build → test → wire → promo → publish。我把每一段标了人 / Agent1.调研人用 WebSearch 找 2026 热门 / 高星 / 创意方向由我定下这一批做哪 10 款旗舰。这是唯一需要品味的环节。2.构建Agentmake_batchNN.py用一个 SPEC 元组循环把 10 个纯函数内核生成 10 套index.html/_test.js/smoke.js/og.svg/og.png/README.md/.nojekyll。3.测试Agentrun_matrix_tests.py抽每个工具的纯函数内核用 Node 断言再用 jsdom 冒烟验 UI。4.接线Agentwire_batchNN.py把 10 款插进门户WB和聚合器nano-workbench更新FLAG_IDS与计数。5.物料Agentgen_promoNN.py从FLAG_IDS动态解析旗舰配色生成 hero / carouselgen_og.py一次生成 230 张 og 图。6.发布Agentpublish_batchNN.sh用gh建库 启用 Pages 设 5 个 topics。人的判断只落在第 1 段做什么和第 0 段红线不一踩一捧、不比竞品。其余全是脚本。图16 阶段流水线只有调研选型和内容红线需要人其余 5 段由 Agent 脚本闭环。实证批三五一次全绿的数据别只听我说自动化。批三五最新稳定批的实际跑分10 款新工具TokenizeForge / BoidsForge / RaycastForge / PendulumForge / QuadtreeForge / TspForge / KnapsackForge / DitherForge / SpiroForge / ChordForge断言3917 条0 失败冒烟228 个工具 smoke 全 PASS发布10 个新仓gh repo create Pages 启用 topics×5 全 OK回归矩阵 228 工具全部 PASS。这条数据不是手工点出来的——是run_matrix_tests.py一次扫完 228 个仓库、汇总成MATRIX_TESTS.md出来的。复现只需两句# 一次扫完 228 仓库输出 MATRIX_TESTS.md python run_matrix_tests.py # 单工具自测 node ToolForge/_test.js图2批三五的实测指标——3917 断言 0 失败、228 smoke 全绿、10 仓自动建库。差点发崩流水线怎么自己拦下自己最能说明为什么需要流水线的是一次真实的险情。接线脚本wire_batchNN.py有一条铁律注入锚点必须唯一——inject(s, anchor, block)会校验锚点在文件里出现恰好一次否则直接SystemExit整批中止。批三十一就栽过沿用上一批的FLAG_IDS末键旧末键新旗舰插不进去锚点计数对不上脚本立刻SystemExit。如果是手动编辑这种插错位置但文件还能打开的静默漂移极可能带着坏链接上线。流水线把会悄悄出错变成大声死给你看。// wire 脚本的注入守卫锚点必须恰好出现 1 次否则整批中止 function inject(s, anchor, block, label){ var n (s.match(new RegExp(escape(anchor),g))||[]).length; if(n ! 1) throw new Error(ANCHOR label 出现 n 次期望 1 —— SystemExit); return s.replace(anchor, anchor \n block); }这条守卫后来写进了nano-tools-matrix-audit审计 skill每次发版前先扫一遍 230 仓库的计数与 FLAG 一致性。图3左为手动编辑的静默漂移文件能开、链接已坏右为流水线的注入守卫锚点计数 ≠ 1 立刻 SystemExit把坏发布拦在上线前。局限哪些事 Agent 至今接不住诚实地说流水线不是银弹选型品味做 Voronoi 还是做 SudokuAgent 能给灵感但这批要冲算法可视化的决断是人下的。批三六的 10 款Voronoi / Harmonograph / Cloth / Wave / Sand / Reaction / Minesweeper / 2048 / Sokoban / Palette就是我拍的。测试预期批三六第一批自测红了 4 个Cloth / Sand / Sokoban / Palette但全是我在断言里写错了预期不是内核 bug——修正断言后全绿。Agent 跑测试但什么算对仍要人定义。内容红线对外文章不一踩一捧、不比竞品这条规则流水线不会自己遵守得人在回路里卡。结论能规模化的个人开源是分工不是加班230 仓库的本质不是我很能肝而是把重复劳动拆成了人决策 机器执行两层。下一次你维护一组需要统一发版的东西先问这段是需判断还是可重复把后者交给流水线前者留给自己。开源地址整组单文件工具矩阵当前 228 工具 / 180 旗舰 / 230 仓库已全部开源矩阵门户流水线接线的目标仓https://github.com/wangzifan396-wzf/WB单文件工具聚合器https://github.com/wangzifan396-wzf/nano-workbenchGitHub 组织主页wangzifan396-wzf (WangZi) · GitHub