retaintive Agentic Factory 演进路线图¶
这是 retaintive 自己的工厂演进计划。三个阶段,按需推进——每个阶段都能独立交付价值,不需要等下一阶段才能跑通。
最后更新:2026-03
三阶段总览¶
Phase 现在(已有) Phase 中期(1-2 个月) Phase 成熟期(触发条件满足后)
──────────────────── ────────────────────── ──────────────────────────────
Claude Code native + Beads 单独引入 + Gas Town 全套
git worktree 手动管理 共享任务数据库 Mayor 自动调度
Meegle MCP 已有 依赖图 + 防碰撞 Meegle → Beads bridge
你是调度员 你还是调度员 AI 是调度员
核心原则:不要为了"工厂"而工厂。每一步都以"这个阶段是否明显减少你的手动操作"为标准。
Phase 现在:Claude Code native(已有,能用)¶
你已经有的¶
基础设施:
CLAUDE.md(每个 repo) ← agent 读取规则的入口
.claude/rules/execution-policy.md ← 预写决策,agent 遇到分叉不需要问你
~/.claude/skills/(23 个 skills) ← 专业化操作能力
Meegle MCP(7 个 tools) ← 任务管理集成
工作流:
Phase 0-2:你 + AI 交互式设计,产出 Task Spec
Phase 3:手动启动 Claude Code → git worktree × N → 并行 PR
注意:这里的「Phase 0-2 / Phase 3」指任务工作流阶段(见 操作手册)。本文「Phase 现在 / 中期 / 成熟期」指 factory 工具演进阶段——是两套不同的命名体系,不要混淆。
当前瓶颈¶
| 问题 | 现象 |
|---|---|
| 每次 Phase 3 需要你手动启动 | 睡前还要记得"run agent" |
| 多个 agent 靠你口头分配任务 | 容易踩到同一个文件 |
| 没有任务依赖图 | "GAP 7 要等 GAP 3" 靠口头说 |
| Session 结束记忆消失 | 下次 agent 要重建上下文 |
现在就能做的增量优化(0 额外工具)¶
- 补全
.claude/working-memory/_template.md(防 context 丢失) - 补全
.claude/templates/plans/(impl.md 模板) - 确保每次 Phase 3 前 Task Spec 里有明确的"受影响文件边界"(防碰撞)
Phase 中期:引入 Beads(单独用,不装 Gas Town)¶
触发条件(满足任意一个就可以考虑)¶
- 一周内出现过 2 次"两个 agent 改了同一文件"
- 开始并行 > 3 个任务,手动分配开始出错
- 需要表达任务依赖:"GAP 7 必须等 GAP 3 完成才能开始"
安装(5 分钟)¶
brew install beads
# 或
npm install -g @beads/bd
# 在 repo 根目录初始化
cd callytics-infrastructure
bd init
# 如果不想把 .beads/ 提交进 git:
bd init --stealth
怎么用¶
每次 Phase 2 拆完子任务后,用 Beads 管理执行层:
# Phase 2 产出子任务后,写进 Beads
bd create "实现 contacts 表 phone 索引" --priority high
bd create "更新 AI 分析 prompt" --priority normal
bd dep add <task-2-id> --depends-on <task-1-id> # task-2 依赖 task-1
# Agent 启动时认领任务(防止两个 agent 做同一件事)
bd update --claim <task-id>
# 查看当前状态
bd show
# 查看哪些任务现在可以开始(依赖已满足)
bd ready
和 Meegle 的分工:
Meegle = 业务/产品层(Phase 0-2,你看的)
"这个 sprint 做 Feature X"
Beads = 执行层(Phase 3,agent 看的)
"Feature X 的 task-1 Agent A 正在做,task-2 等待中"
这个阶段不需要装¶
- ❌ Dolt(Beads 单独用有内置的轻量后端)
- ❌ Go(brew/npm 安装的 Beads 是预编译二进制)
- ❌ tmux(不装 Gas Town 就不需要)
- ❌ Gas Town 本体
Phase 成熟期:Gas Town 全套(Mayor 自动调度)¶
⚠️ 前提条件:Phase 中期已稳定运行 4+ 周,Beads 已融入日常工作流。
触发条件(必须全部满足)¶
- 每周并行任务量稳定 > 10 个
- 有一台可以 24/7 运行的机器(Mac 不睡眠,或专用服务器)
- Phase 1 的 Task Spec 产出流程已标准化(每个 spec 都有清晰验收标准)
- Meegle → Beads bridge 已写好并经过测试
如果上面有任何一条没满足,不要进入这个阶段。Mayor 的价值来自于"任务持续涌入",没有量就没有杠杆。
Gas Town 带来什么¶
| 能力 | 现在(手动) | Gas Town 之后(自动) |
|---|---|---|
| 任务分配 | 你手动启动每个 Claude Code session | Mayor 看到 Beads 队列有任务就自动分配 |
| Polecat 管理 | 不存在 | Mayor 知道哪些 Polecat 空闲,自动调度 |
| 跨 session 记忆 | 每次重建上下文 | Polecats 有持久 identity,记得上次做了什么 |
| 监控 | 看 terminal 输出 | gt feed 实时流 + browser dashboard |
安装步骤(届时参考)¶
# 1. 安装依赖
brew install go dolt
brew install beads # 如果 Phase 中期已装则跳过
# 2. 安装 Gas Town
go install github.com/steveyegge/gastown/cmd/gt@latest
# 3. 初始化 workspace
mkdir ~/gt && cd ~/gt
gt init
# 4. 添加 repo(Rig)
gt rig add callytics-infrastructure ~/workspace/callytics-infrastructure
gt rig add callytics-dashboard ~/workspace/callytics-dashboard
# 5. 启动 Mayor
gt mayor attach
# 然后告诉 Mayor:"你的任务来自 Beads 队列,请查看并分配"
Meegle → Beads Bridge 设计草图¶
Gas Town 不原生读 Meegle,需要一个 bridge 脚本(届时实现,现在是设计草图):
逻辑流程:
1. 从 Meegle 拉取 Phase 2 已完成的子任务
→ 使用 Meegle MCP: get_node_detail(sprint_node_id)
→ 过滤条件:task.hasAcceptanceCriteria === true
2. 写入 Beads
→ bd create "<task_title>" --metadata "meegle_id=<id>"
→ 如有依赖:bd dep add <task_id> --depends-on <dep_id>
3. 完成同步(Beads 完成 → 关闭 Meegle 工单)
→ 查询 Beads status=done 的任务
→ 调用 Meegle MCP: finish_node(meegle_id)
关键约束:
只同步 Phase 2 已完成(有验收标准)的子任务
Phase 0-1 的模糊任务绝不进 Beads
Mayor 不会自动执行没有验收标准的任务
阶段对比一览¶
| Phase 现在 | Phase 中期 | Phase 成熟期 | |
|---|---|---|---|
| 谁是调度员 | 你 | 你 | Mayor(AI) |
| 任务防碰撞 | 靠口头分配 | Beads --claim 原子认领 |
Beads + Mayor 自动分配 |
| 任务依赖 | 口头说 | bd dep add 依赖图 |
依赖图 + Mayor 自动排队 |
| 隔夜自动跑 | 你要手动启动 | 你要手动启动 | Mayor 自动触发 |
| 工具复杂度 | 低 | 低(brew install 1 行) | 高(Dolt + Go + tmux 全套) |
| 月成本增加 | $0 | $0 | ~$5/月(VPS)+ Claude API token × N |
| 需要的前提 | 已有 | — | 任务量 > 10/周 + 24/7 机器 |
不演进也是合理的选择¶
Gas Town 成熟期不是"终点",是"可选项"。如果:
- 你的任务量一直维持在 3-5 个/周 → Phase 现在已经够用
- Phase 中期(Beads)已经解决了碰撞和依赖问题 → 停在这里完全合理
- Gas Town 的运维成本(版本耦合、tmux 不稳定)超过了收益 → 不引入
正确的问题不是"我们应该用 Gas Town 吗",而是"当前阶段的瓶颈是什么,最小成本的解法是什么"。
参考资料¶
- Gas Town + Beads 技术详解 — 本目录下的知识库文档
- Agentic Software Factory — 完整参考 — 工厂设计原则
- Agentic Software Factory — 操作手册 — Phase 0-3 工作流