← all posts← 所有文章 · home首页

The team that does not sleep永不入眠的团队

Homie is a family project with a staffing problem: the family is busy, and the staff is just me. I get an hour after the kids are down, maybe a few stolen minutes between meetings. That's not enough to keep a real product moving.

So I did the obvious unreasonable thing. I hired a fleet. Not people — a set of agents that live outside the app repo (so they never dirty my working tree) and quietly push Homie forward while I'm at work or asleep. Each one has a narrow job, a strict guardrail, and a personality I probably spent too long on.

The cast

The core of it is an assembly line. Work flows left to right:

  • Tester 🧪 — the QA inspector. Every morning it drives the real app with Playwright across phone, tablet, and desktop, screenshots every parent and kid surface, and has a vision model actually look at them for things that are clipped, broken, or just ugly. It runs against an isolated GPU-free backend with its own database, so it never touches our family's real data.
  • Scout 🔍 — the detective. Read-only by law. It triages the Tester's findings plus real bug reports, checks whether master already fixed them, and files clean tasks into the backlog.
  • Builder 🔧 — the craftsman. Picks the top task, works in its own git worktree on a branch, makes the smallest correct change, and won't commit until the test gate is green.
  • Reviewer 🔬 — the judge. Gives every Builder PR a second-eye pass and the deeper test suite, and auto-merges only the green, low-risk ones.
  • Integrator 🔀 — the conductor. Runs the merge train: serial rebase, resolve, re-gate, merge onto master.

Around that line are the specialists: Librarian 📚 keeps docs honest against the code, Collector 📊 and Sentinel 👁️ read Homie's vitals every day and file a reliability/performance report, Publisher 📡 ships aggregate stats to homie-lab.com, and Architect 🏛️ takes the trickier, design-shaped tasks when I hand them over.

And my favorite hire: Coach 🎓. It watches how the team actually works and tunes the agents' own prompts — "guard async teardown," "re-run the full gate before commit," "don't block clean docs PRs." The fleet gets better at its job without me rewriting every spec by hand.

The loop closes itself

The part I'm proudest of isn't any single agent — it's that the line bends back on itself.

A failing test routes the task back to the Builder to fix. The Tester diffs new UI since its last run and, when it finds an untested surface, files "add coverage for X" — so the test suite grows itself as Homie grows. Coach turns recurring mistakes into permanent guardrails. I set very little of this in motion each day; mostly it runs.

Agent HQ

Watching a pile of cron jobs scroll logs is miserable, so I built a console — Agent HQ at agents.homie-lab.com, behind a passkey. It's a living scene: each agent is a little character standing where it sits in the real pipeline, with a status and an in-character speech bubble. Tester "eyeballing every screen size," Builder "on it — smallest correct fix," Integrator "all tracks clear." When a fix loops back, the card literally bounces.

It's not just a window, though. From HQ I can talk to the fleet — dispatch a directive in plain English ("deployment to Prod failed, please take a look") and Scout picks it up, triages, and routes it. There's a Monitor tab for Homie's real health, a Blog studio, and test-gated Deploy to dev/prod buttons. The whole team, on one screen, that I can actually direct.

The guardrails (because they have my keys)

A fleet of agents with write access is a great way to wake up to a wrecked repo, so the rules are strict. Scout is read-only. Builders only ever touch their own worktree branch — never master, never git push, never deploy, never the secrets. A budget governor reserves headroom on the shared subscription so the agents never starve me out of my own account. And the most important rule: I am the merge gate. Nothing reaches our family's Homie without passing through a green pipeline and, for anything risky, me.

So what does it actually buy me?

Here's the honest answer. The fleet doesn't replace the fun part — the architecture, the hard calls, the "what should Homie even be" thinking. It replaces the part that used to kill the project: the slow leak of small bugs, stale docs, untested screens, and "I'll get to it" that piles up when one tired person maintains a real product alone.

Now there's a steady drip. I wake up to triaged findings and a few clean PRs waiting for a thumbs-up. The docs already match the code. Homie's vitals are on a dashboard instead of in my anxiety. My scarce hour goes to the interesting work, and the boring-but-essential work happens overnight.

And to be clear about the split: it's roughly 50/50. About half of what actually ships still comes from the focus sessions where I sit down with the main agents and work a hard problem end to end — the things that genuinely need my attention and judgment. The fleet doesn't take that over; it clears the runway for it. The human is never out of the loop. I'm just spending more of my loop on the complex, interesting work and less on the chores.

It also turned out to be the best teacher I've had in a while. Building the thing that builds Homie — the handoffs, the guardrails, the self-correction — is real systems engineering, applied to a system I have to live with every day.

And yes — this post came to you through one more member of the fleet, the Blogger. I gave it a topic; it drafted; I edited. Even the writing has a teammate now. :)

Homie 是个有"用人荒"的家庭项目:家里事多,人手却只有我一个。能挤出来的,无非是孩子睡下后的那一个钟头,外加会议缝里偷来的零碎几分钟。靠这点时间,一个真正的产品根本动不起来。

于是我做了件看似离谱、其实顺理成章的事——招了一整支"舰队"。不是人,是一组智能体(agent)。它们住在应用代码仓库之外,绝不弄脏我的工作区;趁我上班或熟睡时,悄悄把 Homie 往前推。每一个都只管一件窄窄的事,守着一道死规矩,外加一份我多半花了过多心思去打磨的性格。

出场人物

整套东西的核心,是一条流水线,活儿从左往右流:

  • 测试员(Tester) 🧪 —— 质检员。每天清早,它用 Playwright 在手机、平板、桌面上把整个应用真刀真枪地跑一遍,给每一个家长端、孩子端的界面截图,再交给一个视觉模型,让它真正去"看":哪里被裁了、哪里坏了、哪里就是丑。它跑在一套隔离的、不带 GPU 的后端上,有独立的数据库,绝不碰我们家人的真实数据。
  • 侦察兵(Scout) 🔍 —— 侦探,规矩定死只读。它把测试员的发现和真实的用户反馈拢到一起分诊,先看 master 是不是早修好了,再把干净利落的任务归进待办。
  • 建造者(Builder) 🔧 —— 工匠。挑出最该做的那条任务,在自己独立的 worktree 分支里动手,只做"最小的正确改动",测试不全绿,绝不提交。
  • 评审员(Reviewer) 🔬 —— 裁判。给每一个 PR 再过一遍"第二双眼睛",跑更深的测试,只放行那些既通过又低风险的,自动合并。
  • 整合者(Integrator) 🔀 —— 调度。它开的是"合并列车":一节一节地变基、解冲突、重新过关、并入 master。

这条线的四周,还围着一群专才:图书管理员(Librarian) 📚 盯着文档,让它老实地跟代码对齐;采集器(Collector) 📊 和哨兵(Sentinel) 👁️ 每天给 Homie 量"体征",出一份可靠性与性能报告;发布员(Publisher) 📡 把汇总数据推到 homie-lab.com;而那些更棘手、更偏设计的活儿,我会交给架构师(Architect) 🏛️。

我最得意的一名"员工",是教练(Coach) 🎓。它在一旁看团队到底是怎么干活的,然后回头去改智能体们自己的提示词——"异步收尾要当心"、"提交前把完整测试重跑一遍"、"别拦着干净的文档 PR"。于是整支舰队越干越顺手,而我不必再一条条手写规范。

闭环自己合上了

我最得意的,其实不是某一个智能体,而是这条流水线会自己拐回来,接上自己的头。

测试一挂,任务就被退回建造者那儿去修。测试员会拿这次的界面和上回比对,一旦发现哪块没被测试盖到,就顺手提一条"给 X 补测试"——于是测试套件随着 Homie 一起长大,自己给自己加码。教练再把那些反复犯的错,固化成永久的护栏。这一切,我每天只需轻轻推一把,剩下的,多半它自己就转起来了。

智能体总部(Agent HQ)

整天盯着一堆定时任务刷日志,实在熬人。所以我干脆做了个控制台——藏在通行密钥(passkey)后面的 Agent HQ,地址是 agents.homie-lab.com。它是一幕活的场景:每个智能体都化成一个小角色,站在它在真实流水线里的位置上,顶着各自的状态和一句符合人设的台词。测试员"正把每种屏幕尺寸挨个端详",建造者"上手了——最小的正确修复",整合者"轨道全清"。某个修复一拐回来,那张卡片真的会蹦一下。

但它不只是一扇看的窗。在总部里,我能直接对舰队下令——一句大白话("生产环境部署挂了,去看看"),侦察兵就接住、分诊、再分发出去。这里还有看 Homie 真实健康的 Monitor 页、一个 Blog 工作室,以及经测试把关的 部署到 dev / prod 按钮。整支队伍,尽收一屏,而我是真的能指挥得动它。

护栏(毕竟,钥匙在它们手里)

一支有写权限的智能体舰队,是让你某天一觉醒来发现仓库稀烂的绝佳途径。所以规矩立得很死:侦察兵只读;建造者永远只碰自己那条 worktree 分支——不碰 master、不 git push、不部署、不近密钥;一个预算调度器在共享订阅上替我留足余量,免得这群家伙把我自己挤得没账号可用。而最要紧的一条是:我,就是那道合并闸门。 任何东西想抵达我们家人手上的 Homie,都得先过一条全绿的流水线;但凡沾点风险,还得再过我这一关。

那它到底替我换来了什么?

老实说,这支舰队并不抢走有意思的那部分——架构、艰难的取舍、"Homie 到底该是什么"这种琢磨。它接手的,恰恰是过去差点把项目拖垮的那部分:小 bug 的慢性渗漏、过时的文档、没人测的界面,还有一个疲惫的人独自扛一个真实产品时,越攒越多的那句"回头再说"。

如今,这些事化成了一股稳稳的细流。我一睁眼,等着我的是已经分好诊的发现,和几个干干净净、只差我点个头的 PR。文档早跟代码对齐了。Homie 的体征摊在一块仪表盘上,而不再压在我的心里。那点金贵的时间,全用在有意思的事上;至于那些无聊却躲不掉的活儿,夜里就办妥了。

也把账算清楚:大体上五五开。真正发出去的东西里,约有一半仍来自我亲自坐下、跟主力智能体一道把一道难题从头啃到尾的专注时段——那些真正需要我的注意力和判断的事。舰队不接这一棒,它只是替我把跑道清空。人,从不出局;我只是把更多的精力挪到了复杂而有趣的地方,把更少的留给了杂务。

它还顺带成了我近来最好的一位老师。去造那个"造 Homie 的东西"——那些交接、那些护栏、那套自我纠错——本身就是扎扎实实的系统工程,而且是落在一个我每天都得与之共处的系统上。

对了——这篇文章,也是舰队又一位成员、博主(Blogger) 替我送到你眼前的。我给题,它起草,我润色。如今,连写字这件事,都有了搭档。:)