Skip to main content

什么是 Multica

Multica 是一个开源的Managed Agents平台,项目口号是"你的下一批员工,不是人类"( Your next 10 hires won't be human )。它将Claude CodeCodexOpenCodeOpenClawHermesGeminiPiCursor Agent等主流AI编码智能体转化为真正的团队成员——可以像分配任务给同事一样,把Issue分配给AgentAgent会自主接手工作、编写代码、更新状态、报告阻塞问题。

项目地址:https://github.com/multica-ai/multica

Multica

Multica解决了当前AI辅助开发中的核心痛点:

  • 割裂的工作流:开发者需要在编辑器、命令行和任务看板之间频繁切换,把AI输出手动搬运到项目管理系统。
  • 缺少管理层:没有统一的入口对多个AI工具进行任务分配、进度追踪和成果沉淀。
  • 厂商绑定:各家AI工具有自己的UI和工作流,难以在团队中统一规范。
  • 技能无法复用:每次让AI做类似工作都要重写Prompt,团队的最佳实践无法沉淀。

核心特性

特性说明
Agent即队友Agent有个人档案,出现在看板,可发评论、创建Issue、主动报告阻塞
自主任务执行任务全生命周期自动管理:排队→认领→执行→完成/失败
可复用技能每个解决方案都可沉淀为全团队共享的 Skill,随时间持续增强团队能力
统一运行时一个控制台管理本地 Daemon 和云端运行时,自动检测可用 CLI
多工作区工作区级别隔离,各自独立的 AgentIssue 和配置
厂商中立同时支持 8 种主流AI编码 Agent CLI,无厂商锁定
自部署支持完整开源,支持 Docker 自部署,数据完全掌控

架构设计

整体架构

Multica采用三层架构:前端Web应用Go后端服务本地Daemon。三者通过HTTP REST APIWebSocket进行通信。

技术栈明细

层级技术栈说明
前端Next.js 16App RouterReact 18,实时看板UI
后端GoChi routersqlcgorilla/websocket单二进制,高性能
数据库PostgreSQL 17 + pgvector支持向量搜索
Agent运行时本地 Daemon托管多种 AI CLI 的执行
部署Docker Compose自部署一键启动

各组件详解

前端(Next.js Web 应用)

前端提供项目看板、Issue管理、Agent配置、运行时监控等全套UI。其关键设计要点:

  • 使用staleTime: Infinity配合WebSocket推送驱动数据更新,避免频繁轮询:
  • 通过WebSocket订阅工作区级别事件总线,实时接收issue:createdissue:updated、任务进度流等事件;
  • JWT鉴权 + WebSocket Origin白名单双重安全控制。

后端(Go 服务)

后端是整个系统的核心调度层,主要模块如下:

模块路径职责
Handlerserver/internal/handler/HTTP路由处理,参数校验,响应序列化
Serviceserver/internal/service/核心业务逻辑:任务调度、Autopilot
Daemonserver/internal/daemon/Agent Daemon逻辑实现
Realtimeserver/internal/realtime/WebSocket Hub,管理订阅连接
Eventsserver/internal/events/进程内事件总线(发布/订阅)
Authserver/internal/auth/JWT + PAT(个人访问令牌)认证
Mentionserver/internal/mention/Issue标识符(如MUL-117)展开为链接

使用sqlc生成类型安全的数据库访问层,避免手写SQL映射。

实时事件总线

server/internal/events/bus.go实现了一个进程内同步发布/订阅事件总线:

// 订阅特定事件
bus.Subscribe("issue:created", func(e Event) { ... })

// 全局订阅(接收所有事件)
bus.SubscribeAll(func(e Event) { ... })

// 发布事件(各 handler 可调用)
bus.Publish(events.Event{
Type: "issue:updated",
WorkspaceID: workspaceID,
Payload: payload,
})

事件总线连接服务端业务逻辑与WebSocket推送层,解耦各模块。

Agent Daemon

Daemon是运行在用户本地机器(或云实例)上的 Agent 执行引擎,源码位于server/internal/daemon/,这是 Multica 区别于其他平台最关键的组件:

启动流程:

  1. CLI配置文件加载认证token
  2. 调用API获取用户所有工作区,为每个工作区、每个检测到的 Agent CLI 注册一个Runtime
  3. 启动workspaceSyncLoop(每30s)发现新工作区;
  4. 启动heartbeatLoop(默认每15s)维持心跳;
  5. 启动gcLoop清理完成任务的沙箱目录;
  6. 进入pollLoop(默认每3s)轮询并认领任务。

沙箱技术:隔离执行环境

MulticaAgent执行隔离采用文件系统级进程隔离方案,源码位于server/internal/daemon/execenv/

注意:Multica当前版本的沙箱不依赖containerVM层,而是通过独立目录树 + Git Worktree实现环境隔离。这是一种轻量级沙箱,优先保证速度和可移植性,适合编码类任务。

目录结构

每个任务运行时,Daemon~/multica_workspaces/<workspace_id>/<task_id_short>/下创建一套独立目录:

~/multica_workspaces/
└── <workspace_id>/
└── <task_id_short>/ # 任务根目录 (envRoot)
├── workdir/ # Agent 的工作目录(代码在此)
├── output/ # 任务输出文件
├── logs/ # 执行日志
├── .gc_meta.json # GC 元数据(issue_id, workspace_id, 完成时间)
└── codex-home/ # 仅 Codex:per-task CODEX_HOME

Git Worktree 代码隔离

Agent需要操作代码仓库时,通过multica repo checkout <url>命令:

  1. Daemon调用git worktree addworkdir/下创建独立工作树,分支命名为multica/<agent-name>/<timestamp>
  2. 每个任务获得独立的Git分支,Agent的代码修改互不影响;
  3. 支持同一工作区多个Agent同时在同一个代码仓库的不同分支上并行工作;
  4. 任务完成后,GC循环自动清理工作树和沙箱目录。

运行时配置注入

不同Agent CLI使用不同的配置文件约定,Multica 通过InjectRuntimeConfig函数统一处理:

Agent注入文件说明
claudeCLAUDE.mdClaude Code 原生读取工作目录下的 CLAUDE.md
codexAGENTS.md + CODEX_HOME/skills/Codex 通过 AGENTS.mdCODEX_HOME 发现技能
opencodeAGENTS.mdOpenCode 原生读取 AGENTS.md
openclawAGENTS.mdOpenClaw 原生读取 AGENTS.md
geminiGEMINI.mdGemini CLI 原生读取 GEMINI.md
cursorAGENTS.mdCursor Agent 原生读取 AGENTS.md
piAGENTS.mdPi CLI 原生读取 AGENTS.md

注入内容包括:Agent身份信息、可用的multica CLI命令列表、仓库列表和工作流指引,赋予Agent完整的上下文感知能力。

GC 机制

gcLoop定期扫描multica_workspaces/目录,读取每个子目录的.gc_meta.json,对完成时间超过保留期(默认 7 天)的任务目录执行清理,防止磁盘无限膨胀。

多 Agent 协作机制

设计哲学

Multica的多Agent协作核心思路是:Issue作为协作的基本单元,多个Agent可以围绕同一个 Issue 进行异步协作,而不需要在Agent间建立直接的通信通道。这使协作模型更接近人类团队的实际工作方式。

协作触发机制

Multica支持两种触发Agent执行任务的方式:

分配触发(Assignment Trigger)

Issue分配给Agent时自动触发:

Issue 分配给 Agent-A
→ TaskService.EnqueueTaskForIssue()
→ 创建 agent_task_queue 记录
→ Daemon 轮询认领
→ Agent-A 开始执行

@mention 触发(Mention Trigger)

Issue评论中@mention特定Agent,触发该Agent参与协作:

评论内容:@agent-b 请帮我做代码审查
→ TaskService.EnqueueTaskForMention()
→ Agent-B 收到任务,上下文为触发评论 ID
→ Agent-B 读取评论内容,响应并执行

这使多个Agent可以在同一个Issue下进行接力或并行协作。

多 Agent 协作完整流程

任务上下文传递

为了让Agent在接手任务时理解完整上下文,Multica会将以下信息注入到执行环境中:

  • IssueID:当前处理的 Issue 编号;
  • TriggerCommentID:触发本次执行的评论ID(区分是分配触发还是评论触发);
  • AgentID / AgentNameAgent 的身份;
  • AgentInstructionsAgent 的个性化指令(人设/技能方向);
  • AgentSkillsAgent 已安装的技能列表;
  • Repos:工作区已注册的代码仓库列表。

Agent通过multica CLI 工具与平台交互,读取和更新 Issue 状态:

# Agent 在执行过程中可调用的命令
multica issue get <id> --output json # 读取 Issue 详情
multica issue comment list <id> --output json # 读取所有评论
multica issue comment add <id> --content "..." # 发布评论
multica issue status <id> in_progress # 更新状态
multica repo checkout <url> # 检出代码仓库

与其他项目相比的优势

维度MulticaOpenDevinAutoGenCrewAI
集成方式包装现有成熟 CLIClaude Code 等)自有 Agent 框架自有框架自有框架
Agent 协作Issue + @mention 异步协作任务规划 + 子 AgentAgent 对话轮转角色分工,顺序/并行
人机协作模式看板式,与人类工作流无缝融合主要面向自动化管道代码优先,程序化代码优先,程序化
技术底座成熟的 AI CLI 工具独立沙箱 + 自有 LLM 接入PythonLLM APIPythonLLM API
团队协作原生多用户多 Agent单用户为主单用户为主单用户为主
技能复用Skills 系统,团队共享Memory 系统有限无内建机制
部署方式Docker 自部署 / 云服务自部署本地Python本地Python

Multica 的核心优势在于:

  1. 零框架锁定:不自研 Agent 框架,直接集成业界最优秀的Claude CodeCodexCLI,充分利用这些工具已有的代码理解、工具调用和上下文管理能力;
  2. 团队原生设计:多用户、多角色、多工作区是第一公民,而非后期补丁;
  3. 与人类工作流融合:看板模型是大多数开发团队最熟悉的工作方式,Agent 参与到已有流程中,而不是要求团队适应新工作方式;
  4. 异步协作:基于 Issue/评论的异步协作模型天然支持跨时区、跨人机的复杂工作场景。

Skills 技能系统

SkillsMultica 的知识积累和复用机制。每个技能是一个结构化的 Markdown 文档,描述特定领域的工作流程或最佳实践。

技能的工作方式

  1. 团队成员在 Multica 平台上创建并管理 Skills
  2. Agent 被创建时,可以为其分配一组 Skills
  3. 任务执行前,DaemonAgentSkills 写入沙箱执行环境对应位置(Claude 写入.claude/skills/Codex 写入CODEX_HOME/skills/等);
  4. Agent CLI 在启动时自动发现并加载这些技能作为上下文。

技能锁文件

项目使用skills-lock.json管理技能依赖(类似package-lock.json的思路):

{
"version": 1,
"skills": {
"frontend-design": {
"source": "anthropics/skills",
"sourceType": "github",
"computedHash": "063a0..."
},
"shadcn": {
"source": "shadcn/ui",
"sourceType": "github",
"computedHash": "507f0..."
}
}
}

Skills 支持从 GitHub 拉取社区贡献的技能包,实现跨团队知识共享。

安装与配置

快速安装(推荐)

# macOS / Linux,通过 Homebrew 安装
brew install multica-ai/tap/multica

# 一键配置:连接 Multica Cloud,登录,启动 Daemon
multica setup

自部署(Self-Hosting)

# 方式一:安装脚本(自动部署服务端 + 安装 CLI)
curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash -s -- --with-server
multica setup self-host

# 方式二:手动克隆部署
git clone https://github.com/multica-ai/multica.git
cd multica
make selfhost

# CLI 安装和配置
brew install multica-ai/tap/multica
multica setup self-host

自部署后访问:

Daemon 配置参数

配置项环境变量默认值说明
轮询间隔MULTICA_DAEMON_POLL_INTERVAL3s检查新任务的频率
心跳间隔MULTICA_DAEMON_HEARTBEAT_INTERVAL15s存活心跳频率
Agent 超时MULTICA_AGENT_TIMEOUT2h单个任务最长运行时间
最大并发任务MULTICA_DAEMON_MAX_CONCURRENT_TASKS20同时执行的最大任务数
Daemon IDMULTICA_DAEMON_ID主机名唯一标识
工作区根目录MULTICA_WORKSPACES_ROOT~/multica_workspaces沙箱目录根路径

Agent CLI 路径覆盖

如果 Agent CLI 不在系统PATH中,可通过环境变量指定:

变量说明
MULTICA_CLAUDE_PATHclaude二进制的自定义路径
MULTICA_CLAUDE_MODEL覆盖使用的 Claude 模型
MULTICA_CODEX_PATHcodex二进制的自定义路径
MULTICA_CODEX_MODEL覆盖使用的 Codex 模型
MULTICA_GEMINI_PATHgemini二进制的自定义路径
MULTICA_GEMINI_MODEL覆盖使用的 Gemini 模型

使用示例

示例一:分配第一个任务给 Agent

# 1. 安装 CLI 和至少一个 Agent CLI
brew install multica-ai/tap/multica
# 确保 claude 或 codex 在 PATH 上

# 2. 一键配置并启动
multica setup

# 3. 创建一个 Issue
multica issue create --title "实现用户注册功能" --description "需要添加邮件验证"

# 4. 查看 Issue 列表,获取 ID
multica issue list --output json

# 5. 将 Issue 分配给 Agent(在 Web UI 中操作,或使用 CLI)
multica issue assign <issue-id> --to "Claude"

示例二:通过 @mention 触发多 Agent 协作

假设Agent-AClaude Code)已完成功能实现,现在需要Agent-BCodex)进行代码审查:

# 在 Issue 的评论中 @mention Agent-B
multica issue comment add <issue-id> \
--content "@codex-reviewer 功能实现已完成,请审查代码质量并提出改进建议"

Multica后端检测到@mention后自动为Agent-B创建任务,Agent-B读取评论上下文后自主开展审查。

示例三:查看 Daemon 状态和日志

# 查看 Daemon 运行状态
multica daemon status

# 实时跟踪日志
multica daemon logs -f

# 查看 JSON 格式的详细状态(包含已注册的 Runtime 信息)
multica daemon status --output json

示例四:自定义 Agent 超时和并发

# 启动 Daemon 时指定参数
multica daemon start \
--agent-timeout 4h \
--max-concurrent-tasks 5 \
--poll-interval 5s

示例五:多工作区管理

# 查看当前所有工作区
multica workspace list

# 切换工作区
multica workspace use <workspace-slug>

# 在特定工作区创建 Issue
multica issue create --title "后端优化" --workspace <workspace-id>

与同类项目对比

Multica vs Golutra

维度MulticaGolutra
定位团队AI Agent协作管理平台个人多Agent工作空间桌面应用
架构云端/自部署服务 + 本地 Daemon本地 Tauri 桌面应用(Rust + Vue 3
用户模型多人团队,角色权限单人,一人军团
看板项目看板(Issue 驱动)桌面 GUI 面板
沙箱文件系统 + Git WorktreePTY 伪终端进程级隔离
Agent 协作Issue + @mention 异步协作并行 PTY 面板,手动派发
技能系统Skills(团队共享)无内建机制
适用场景工程团队,长期项目个人高强度多任务并行

Multica vs Paperclip

Multica 官方文档直接对标 Paperclip,核心差异如下:

维度MulticaPaperclip
定位团队AI Agent协作平台个人AI Agent公司模拟器
用户模型多人团队,角色权限单人 Board Operator
Agent 交互Issue + 评论会话Issue + 心跳轮询
部署模式云端优先,支持自部署本地优先
管理深度轻量(Issue / Project / Labels重度(组织架构 / 审批 / 预算)
扩展性Skills 系统Skills + 插件系统

Multica vs OpenDevin(All-Hands)

维度MulticaOpenDevin
框架包装外部 CLI自研 Agent 框架
沙箱文件系统 + Git WorktreeDocker 容器级隔离
使用门槛低(现有工具直接接入)中(需理解框架)
扩展能力依赖外部 CLI 能力框架内可深度定制
团队协作原生支持,多用户主要单用户模式
适用场景团队日常开发协作复杂自动化管道探索

开发者接入

对于想参与 Multica 贡献的开发者,本地开发环境搭建:

环境依赖:

  • Node.js v20+
  • pnpm v10.28+
  • Go v1.26+
  • Docker
git clone https://github.com/multica-ai/multica.git
cd multica

# 一键启动开发环境(自动检测主仓库或 worktree)
make dev

make dev会自动完成:创建环境配置文件、安装 JS 依赖、启动 PostgreSQL 容器、初始化数据库、执行迁移、启动后端和前端。

对于需要并行开发多个功能的贡献者,项目提供了Git Worktree支持,每个worktree使用独立数据库(通过端口哈希自动分配隔离端口),互不干扰。

总结

Multica代表了一种务实的AI团队协作思路:不重新发明AI框架,而是为最优秀的现有AI CLI工具构建一层团队协作管理层。它的 Issue 驱动、@mention 协作、Skills 技能积累和 Git Worktree 隔离等设计,使AI Agent能够真正融入工程团队的日常工作流,而非成为需要单独维护的独立系统。

对于希望在团队中引入AI Agent协作、同时保持厂商中立和数据自主的工程团队,Multica值得认真评估。