6.3 KiB
6.3 KiB
Boss 技术选型建议
更新日期:2026-03-23
选型原则
- 先保证系统能跑,再追求最优雅
- 持久状态优先于纯内存编排
- 结构化事件优先于拼字符串日志
- 尽量复用成熟 agent 运行时,而不是自己重写编码 agent
总体选型建议
| 层 | 推荐 | 备选 | 原因 |
|---|---|---|---|
| 前端控制台 | Next.js | Remix, Nuxt | 适合快速做管理台和流式 UI |
| Desktop | Tauri | Electron | 后续需要时再补,Tauri 更轻 |
| 后端 API | NestJS 或 Fastify | Express, Go Fiber | 结构清晰,适合长期维护 |
| 工作流引擎 | Temporal | Inngest, BullMQ + 自建状态机 | 长任务、中断、审批、恢复是核心需求 |
| 队列/事件 | Redis Streams | NATS, Kafka | MVP 阶段足够轻,开发快 |
| 主数据库 | Postgres | MySQL | 事务、JSON、查询能力更适合控制平面 |
| 缓存 | Redis | KeyDB | 用于会话热数据、限流、事件流 |
| Manager Agent | Codex | Claude API, GPT-5.x Responses | 适合做规划、汇总、重规划 |
| Worker Runtime | Codex CLI + Claude Code | OpenHands agent runtime | 直接复用成熟编码 agent |
| 工具协议 | MCP | 自定义 tool API | 标准化工具接入 |
| 浏览器自动化 | Playwright | Puppeteer | 成熟稳定,适合 agent 使用 |
| 聊天入口 | Slack 或 Telegram | 飞书, 企业微信 | 文档、生态和迭代速度更合适 |
| 身份认证 | Clerk 或 Auth.js | 自建 OAuth | MVP 快速起步 |
| 监控 | OpenTelemetry + Grafana | Datadog, Sentry | 方便追踪任务链路 |
为什么推荐这个技术组合
1. Next.js 作为控制台前端
原因:
- 适合做 dashboard、对话界面、任务树、设备面板
- 容易做流式更新和服务端渲染
- 与 TypeScript 一体化
不建议现在单独起 React Native:
- 当前核心不是移动端,而是 control plane
2. NestJS 或 Fastify 作为后端
如果团队偏工程化:
- 选 NestJS
如果你想更轻更快:
- 选 Fastify
建议:
- 先用 Fastify 或 NestJS 中你更熟的那个
- 关键是把服务边界拆干净
3. Temporal 作为工作流引擎
这是当前最关键的选型之一。
Boss 不是短请求系统,而是长任务系统。你需要天然支持:
- 几分钟到几小时的任务
- 中途暂停
- 审批等待
- worker 断线重连
- 任务恢复
如果不用工作流引擎,后面会自己补很多分布式状态机逻辑。
如果 MVP 阶段不想上 Temporal:
- 可以先用
BullMQ + Postgres 状态表 - 但要尽快收敛到真正可恢复的工作流模型
4. Postgres 作为主数据库
Boss 的核心不是海量日志,而是:
- 会话
- 任务树
- 审批
- worker 注册
- 状态快照
这些都非常适合 Postgres。
5. Codex 作为 manager
原因:
- 你希望主账号持续对话和重规划
- manager 不需要最强本地执行,它更需要任务理解、拆解和汇总
- Codex 在多入口和云任务语境里更契合 manager 角色
推荐职责:
- 规划
- 重规划
- 汇总
- 风险解释
不建议让 manager 干太多底层执行:
- 容易把规划和执行耦合死
6. Claude Code / Codex CLI 作为 worker runtime
原因:
- 本地设备执行体验成熟
- 适合接 terminal、filesystem、git、browser
- 真实开发环境兼容性更好
建议策略:
- Mac 和 Windows worker 都先抽象成统一
executor - 底层可配置使用
codex或claude
服务拆分建议
第一阶段服务
api-gatewaysession-servicetask-servicescheduler-serviceworker-gatewaynotification-service
第二阶段可拆
approval-servicememory-servicegit-integration-servicechat-connector-service
数据存储建议
Postgres 表
建议至少有:
usersproject_sessionsmessagestaskstask_dependenciesworker_nodesworker_capabilitiesworker_assignmentstask_eventsapproval_requestsartifacts
Redis 用途
- worker 在线状态
- 事件总线
- UI 实时订阅
- 节流和限流
Worker 设计建议
worker 进程结构
组成:
boss-worker守护进程executor适配层tool adapterssandbox policyevent reporter
worker 本地目录策略
建议:
- 一个统一工作根目录
- 每个任务一个独立 workspace
- 每个任务一个独立 git worktree
示例:
~/boss-worker/
repos/
worktrees/
cache/
artifacts/
worker 能力声明
每个 worker 启动时上报:
- OS
- shell
- 是否支持浏览器自动化
- 是否支持特定 IDE
- 是否有移动端模拟器
- 是否具备 repo 热缓存
协议选型建议
MCP
用途:
- 统一工具调用
适合接:
- Git
- 文件系统
- 浏览器
- Issue 系统
- CI
A2A
用途:
- 中长期用于 agent 之间通信
建议:
- MVP 不强依赖
- 但内部消息模型尽量向 agent-to-agent 协作靠拢
前后端通信建议
控制台实时能力
推荐:
- WebSocket 或 Server-Sent Events
用途:
- 推送任务状态
- 推送审批请求
- 推送设备在线变化
worker 连接方式
推荐:
- WebSocket 长连接
原因:
- 需要双向通信
- 需要下发中断和恢复命令
安全建议
最小权限原则
- worker 不要默认拥有所有仓库权限
- 每种工具调用都要有权限分级
高风险动作审批
必须纳入审批的动作:
- 删除大量文件
- 强推分支
- 执行危险 shell
- 访问敏感路径
审计
必须记录:
- 谁发起了什么
- 哪个 worker 执行了什么
- 哪个 agent 建议了什么
- 审批前后状态
推荐的 MVP 技术栈
MVP 最稳组合
- 前端:Next.js
- 后端:NestJS
- 数据库:Postgres
- 缓存和事件:Redis
- 工作流:BullMQ,后续升级 Temporal
- Manager:Codex
- Worker:Codex CLI + Claude Code
- 聊天入口:Telegram 或 Slack
如果你要一步到位更稳
- 前端:Next.js
- 后端:NestJS
- 数据库:Postgres
- 缓存:Redis
- 工作流:Temporal
- Manager:Codex
- Worker:Codex CLI + Claude Code
- 监控:OpenTelemetry
不推荐的坑
- 不要一开始就全微服务
- 不要一开始就自研完整 agent runtime
- 不要把聊天平台当成主控制台
- 不要让多个任务共用一个工作目录
- 不要把审批做成“日志里提示一下”而不是显式状态