Skip to content

Latest commit

 

History

History
209 lines (150 loc) · 5.74 KB

File metadata and controls

209 lines (150 loc) · 5.74 KB

ClawTeam Evolution Roadmap

现状 (v0.2)

单用户 → 单机 → 文件系统 → CLI 驱动
  • 所有数据在 ~/.clawteam/(团队配置、任务、消息)
  • 所有 agent 必须在同一台机器
  • 纯文件 I/O,零依赖

Phase 1: Transport 抽象层 (v0.3)

目标: 让消息通信层可插拔,不改上层接口。

架构变化:

现在:
  MailboxManager → 直接读写文件

Phase 1:
  MailboxManager → Transport(接口)
                   ├── FileTransport (默认,当前行为)
                   └── (未来: RedisTransport, ...)

具体任务:

任务 描述 建议
定义 Transport 接口 send(), receive(), peek(), peek_count(), broadcast() 人员 A
重构 FileTransport mailbox.py 当前的文件操作抽成 FileTransport 人员 A
重构 MailboxManager 通过 CLAWTEAM_TRANSPORT=file 选择 backend 人员 A
TaskStore 抽象 同样抽出 FileTaskStore,预留接口 人员 B
测试 确保重构后行为不变 人员 B

交付物:

clawteam/transport/
├── __init__.py
├── base.py           # Transport 抽象基类
└── file.py           # FileTransport (当前行为)

clawteam/store/
├── __init__.py
├── base.py           # TaskStore 抽象基类
└── file.py           # FileTaskStore (当前行为)

验收: 所有现有命令行为不变,CLAWTEAM_TRANSPORT=file 为默认值。


Phase 2: Redis Transport (v0.4)

目标: 支持跨机器消息通信。

架构变化:

机器A (leader) ─── RedisTransport ──┐
                                    ├── Redis Server
机器B (worker) ─── RedisTransport ──┘

团队配置 / 任务 → 仍然用文件(或共享文件系统)
消息通信 → Redis (高频,实时)

具体任务:

任务 描述 建议
RedisTransport 实现 LPUSH/RPOP 实现 send/receive 人员 A
连接管理 URL 配置、连接池、断线重连 人员 A
配置方式 CLAWTEAM_TRANSPORT=redis + CLAWTEAM_REDIS_URL=redis://... 人员 B
broadcast 实现 需要知道团队成员列表 → 依赖 TeamManager 人员 B
混合模式 消息走 Redis,配置/任务走文件 人员 B
集成测试 两台机器(或两个 container)实际跑通 一起

新增依赖: redis (pypi),可选安装 pip install clawteam[redis]

验收:

# 机器 A
export CLAWTEAM_TRANSPORT=redis
export CLAWTEAM_REDIS_URL=redis://192.168.1.100:6379
clawteam team spawn-team dev-team -n leader
clawteam spawn tmux claude --team dev-team -n worker1 --task "..."

# 机器 B
export CLAWTEAM_TRANSPORT=redis
export CLAWTEAM_REDIS_URL=redis://192.168.1.100:6379
clawteam inbox receive dev-team --agent worker1
# => 收到消息 ✅

Phase 3: 共享状态层 (v0.5)

目标: 团队配置和任务也能跨机器共享。

Phase 2 只解决了消息跨机器,但团队配置(config.json)和任务(task-*.json)还在本地文件。

两种路线(选一个):

路线 A: NFS / 共享文件系统

# 所有机器挂载同一个 NFS
export CLAWTEAM_DATA_DIR=/mnt/shared/clawteam
# 零代码改动,直接可用

最简单,但依赖网络文件系统基础设施。

路线 B: Redis 统一存储

消息 → Redis (Phase 2 已做)
配置 → Redis Hash
任务 → Redis Hash

所有状态都在 Redis,文件系统只做本地缓存

具体任务 (路线 B):

任务 描述 建议
RedisTeamStore 团队配置存 Redis Hash 人员 A
RedisTaskStore 任务存 Redis Hash 人员 B
数据迁移工具 clawteam migrate file-to-redis 一起
统一配置 CLAWTEAM_BACKEND=redis 一个变量搞定所有 一起

验收: 两台机器共享同一个团队、同一个任务板、同一个消息队列。


Phase 4: 多用户协作 (v0.6)

目标: 不同人的 agent 组成一个团队。

新增能力:

能力 描述
用户身份 区分"谁的 agent"(不只是 agent name)
权限模型 谁能创建团队、谁能加入、谁能看任务
命名空间 user1/worker1 vs user2/worker1
Token 认证 连接 Redis 时验证身份
用户 A 的 Claude Code ──┐
                        ├── Redis ── Team: project-x
用户 B 的 Claude Code ──┘

用户 A 的 agent 和用户 B 的 agent 在同一个团队里协作

Phase 5: Web UI (v1.0)

目标: 浏览器看板,替代终端 Rich 渲染。

clawteam board serve --port 8080
  • 实时看板(WebSocket 推送)
  • 多团队概览
  • 任务拖拽
  • 消息历史

总览

v0.2         → 单机文件系统,能用
v0.3 (现在)  → Config 系统 + 多用户协作 + Web UI (已完成,跨机器用 SSHFS)
v0.4+        → 可选: Transport 抽象层 / Redis (如需超出 SSHFS 的场景)

v0.3 已完成内容

  • Config 系统:clawteam config show/set/get/health
  • 多用户协作:CLAWTEAM_USER / clawteam config set user,(user, name) 复合唯一性
  • Web UI:clawteam board serve,SSE 实时推送,深色主题看板
  • 跨机器方案:SSHFS/云盘 + CLAWTEAM_DATA_DIR,零代码改动

协作建议

两人并行的最佳分工模式:

Phase 1:  人员 A — Transport 抽象 + FileTransport
          人员 B — Store 抽象 + FileTaskStore + 测试

Phase 2:  人员 A — RedisTransport 核心实现
          人员 B — 配置系统 + broadcast + 集成测试

Phase 3:  人员 A — RedisTeamStore
          人员 B — RedisTaskStore + 迁移工具

接口定义(Phase 1)要先一起对齐,后面就可以各做各的。