# 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-gateway` - `session-service` - `task-service` - `scheduler-service` - `worker-gateway` - `notification-service` ### 第二阶段可拆 - `approval-service` - `memory-service` - `git-integration-service` - `chat-connector-service` ## 数据存储建议 ### Postgres 表 建议至少有: - `users` - `project_sessions` - `messages` - `tasks` - `task_dependencies` - `worker_nodes` - `worker_capabilities` - `worker_assignments` - `task_events` - `approval_requests` - `artifacts` ### Redis 用途 - worker 在线状态 - 事件总线 - UI 实时订阅 - 节流和限流 ## Worker 设计建议 ### worker 进程结构 组成: - `boss-worker` 守护进程 - `executor` 适配层 - `tool adapters` - `sandbox policy` - `event reporter` ### worker 本地目录策略 建议: - 一个统一工作根目录 - 每个任务一个独立 workspace - 每个任务一个独立 git worktree 示例: ```text ~/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 - 不要把聊天平台当成主控制台 - 不要让多个任务共用一个工作目录 - 不要把审批做成“日志里提示一下”而不是显式状态