内部技术调研 · MULTICA 架构全景 · 2026-07-11

一个 Go 云控制面 + 一整套 TypeScript 前端
加上跑在你机器上的 Agent 守护进程

Multica 不是"一种语言写完的"。它是 Go 后端(服务器 / 守护进程 / CLI 同一个二进制)负责所有服务端状态与 Agent 调度,加上一套 pnpm + Turborepo 的 TypeScript 前端 monorepo(Web / 桌面 / 移动端共享核心逻辑)。下面把每一端用什么语言、怎么连起来,以及它和 Paseo 的根本区别一次讲清。

一句话
区别
Multica = 云优先的 Go 控制面(Postgres + Redis + AWS),Agent 作为"看板上的同事"被托管调度;前端只是它 API 的客户端。 Paseo = 全 TypeScript 的本地优先守护进程,主打语音 + 真实终端,手机通过端到端加密 relay 连你自己的电脑,没有中心数据库。两者共享 React 19 / Expo / Electron / WebSocket 这套"外壳" DNA,但心脏完全不同。
01

Multica 完整全景:各端与关系

箭头 = 数据流 / 调用方向。蓝色块 = Go,蓝紫块 = TypeScript,青色 = React Native,深色 = Electron。

CLIENTS · 客户端 (TypeScript) Web 应用 Next.js 16 · React 19 App Router · Tailwind v4 桌面 App Electron 39 + electron-vite 内嵌 Go CLI 二进制 移动 App (iOS) Expo 55 · RN 0.83 expo-router · NativeWind CLI 客户端 multica login / issue / workspace 共享包 (pnpm workspace) @multica/core · React Query + Zustand + zod (无 DOM) @multica/ui · /views HTTPS REST + WebSocket (实时事件) BACKEND · Go 后端 (单二进制, go 1.26) Multica Server Chi 路由 · gorilla/websocket · JWT 鉴权 sqlc 生成查询 · pgx/v5 连接池 robfig/cron (Autopilot 定时) · Prometheus 指标 openai-go SDK · 事件总线 / realtime 同一 Go module → server / daemon / cli 数据 & 云 (AWS) PostgreSQL 17 + pgvector 160+ migrations · 全文/向量检索 Redis 缓存/队列 S3 + Secrets 附件/密钥 外部集成 GitHub · Lark/飞书 · Slack · Composio RUNTIME · 跑在你机器上的守护进程 (Go) Agent Daemon (内嵌于同一 Go 二进制) 通过 WebSocket 反连 Server (daemonws) 自动探测 PATH 上的 Agent CLI server/pkg/agent/* 逐个 provider 适配 (shell 调用) claim → start → stream 进度 → complete/fail 双向 WS 长连 AGENT CLIs · 被 Go 适配层拉起的真实编码 Agent Claude Code · Codex · Kiro CLI · Copilot · OpenCode · OpenClaw · Hermes · Pi · Cursor · Kimi · CodeBuddy · Qoder · TRAE · Antigravity
核心洞察:Server、Daemon、CLI 是同一个 Go 二进制的不同子命令(server/cmd/multica + internal/daemon + internal/cli)。前端三端(Web/桌面/移动)共享 @multica/core 的业务逻辑,只是外壳不同。
02

Go 后端:一个二进制,三种身份

Go · Server

API 服务器

  • Chi HTTP 路由 + CORS
  • gorilla/websocket 实时推送
  • sqlc 从 SQL 生成类型安全查询
  • pgx/v5 Postgres 驱动/连接池
  • JWT (golang-jwt) 鉴权
  • Prometheus 指标 · cron 调度
Go · Daemon

本机守护进程

  • WebSocket 反连 Server
  • 探测 PATH 上的 Agent CLI
  • 任务生命周期:claim/start/complete
  • 流式回传进度
  • 就是你机器上的"Runtime"
Go · CLI

命令行工具

  • cobra 命令框架
  • multica login / daemon / issue
  • 被桌面 App 内嵌打包
  • Homebrew / 安装脚本分发
Go · pkg/agent

Agent 适配层

  • 每个 provider 一个 .go 文件
  • claude / codex / kiro / hermes …
  • 拼命令行、解析流式输出
  • MCP 配置注入
  • 这是 Multica 接 Agent 的方式
存储 PostgreSQL 17 + pgvector 缓存/队列 Redis 对象存储/密钥 AWS S3 · Secrets Manager LLM openai-go SDK 集成 GitHub · 飞书 · Slack · Composio 部署 Docker · Helm · Vercel(web)
03

前端 monorepo:pnpm + Turborepo,一套逻辑三处复用

硬边界:core 零 DOM / 零 localStorage / 零 process.env;ui 不导入 core;views 不碰 next/*,靠 NavigationAdapter 路由。

apps/desktop

桌面 (Electron 39)

  • electron-vite + electron-builder
  • React 19 · react-router-dom
  • 打包内嵌 Go CLI
  • 自动更新 electron-updater
apps/mobile

移动 (Expo / RN)

  • Expo ~55 · React Native 0.83
  • expo-router · NativeWind
  • React 19 · rn-primitives
  • 目前主打 iOS
packages/*

共享包

  • core:headless 逻辑(React Query hooks / Zustand / API client / zod / i18next)
  • ui:shadcn / Base UI 原子组件
  • views:共享业务页面
  • tsconfig / eslint-config

状态管理规则:React Query 拥有所有服务端状态(issue / agent / inbox…),Zustand 只管客户端视图状态(筛选 / 草稿 / 弹窗)。WS 事件更新 React Query 缓存,而不是直接写 store。

04

Paseo 架构:全 TypeScript,本地优先,语音 + 终端

npm workspaces(非 pnpm/turbo)· 工具链用 tsgo(TS 原生编译器预览)+ oxlint / oxfmt(Rust)· 以公开 npm 包 @getpaseo/* 分发 · AGPL-3.0。

你的手机 / 浏览器 packages/app Expo 54 · RN 0.81 · expo-router 内嵌 xterm 终端 · webview 预览 TanStack Query · Zustand · i18next 中转 (可选) packages/relay 端到端加密 (tweetnacl/NaCl) Cloudflare Workers 适配 只转发密文, 不存内容 E2EE WS 你的电脑 (真相之源, Node 守护进程) packages/server — Node 守护进程 Express + ws · node-pty (真实 PTY 终端) @xterm/headless · ACP SDK (Agent Client Protocol) Claude Agent SDK · MCP SDK · OpenCode SDK · Vercel ai 语音: sherpa-onnx + Silero VAD · pino 日志 桌面版 = Electron 41 直接包住这个 server 共享 SDK protocol · client · highlight zod wire schema + AOT 校验器 daemon-client SDK, 前后端共用 packages/cli — `paseo` commander · clack prompts 与 server 同机调度 Agent 通过 ACP / SDK / PTY 驱动的编码 Agent Claude · Codex · TRAE · Kiro · OpenCode … (ACP 协议 + 各家 SDK + 真实终端) website TanStack Start + Router Cloudflare Workers
Paseo 里"服务器"跑在你自己的机器上,是数据真相之源;relay 只做端到端加密转发。它没有中心 Postgres、没有多租户云——这跟 Multica 完全相反。
05

逐项对比:Multica vs Paseo

点击表头可排序。蓝色 = Multica橙色 = Paseo

维度 Multica Paseo
后端语言Go 1.26(单二进制)TypeScript / Node(无 Go)
数据真相之源云端 PostgreSQL 17 + pgvector你自己的机器(本地文件),无中心 DB
部署形态云优先多租户 + 可自托管(Docker/Helm)本地优先;以 npm 包分发
Server ↔ 你机器Daemon 反连云 Server (WS)Server 就在本机;手机经 E2EE relay 连入
Agent 接入方式Go 适配层 shell 调各家 CLIACP 协议 + 各家 SDK + node-pty 真实终端
招牌能力看板/Issue · Squads · Autopilot 定时 · 集成语音控制 · 真实终端 · 端到端加密
缓存 / 队列Redis进程内 (lru-cache / ttlcache)
前端 monorepopnpm workspaces + Turboreponpm workspaces(无 turbo)
Web 框架Next.js 16 (App Router)Expo Web + website 用 TanStack Start
移动端Expo 55 / RN 0.83(iOS 为主)Expo 54 / RN 0.81(iOS + Android + Web)
桌面端Electron 39(前端壳,内嵌 Go CLI)Electron 41(直接包住 Node server)
CLIGo + cobra(同一二进制)TS + commander(npm 包)
Lint / 格式化ESLint + tscoxlint + oxfmt(Rust)+ tsgo
开源许可见仓库 LICENSEAGPL-3.0

共享 DNA(两边都有):React 19 · Expo/React Native · Electron · zod · TanStack Query · Zustand · WebSocket 实时 · "守护进程 + CLI + 桌面 + 移动"的四件套形态。

06

根本区别:控制面 vs 本地优先

Multica 是"云控制面 + 托管调度"

心脏是一个 Go 服务器 + Postgres。它把 Agent 建模成看板上的"同事":有 profile、被指派 issue、汇报进度。你的机器只是它调度出去的一个 Runtime。前端(Web/桌面/移动)都只是这套云 API 的客户端。适合团队协作、多人多 Agent、定时自动化。

为什么用 Go

并发调度、长连接 WebSocket 扇出、Prometheus 指标、单二进制分发(server=daemon=cli)——这些都是 Go 的强项,也解释了为什么后端不用 TypeScript。

Paseo 是"本地优先 + 语音/终端"

心脏是一个跑在你电脑上的 Node 守护进程,直接开真实 PTY 终端、跑语音识别,通过端到端加密让手机远程遥控你的机器。没有中心数据库,你的机器就是真相之源。适合个人开发者随身控制自己的编码 Agent。

为什么全 TypeScript

本地单机、无需高并发云调度;ACP/MCP/各家 Agent SDK 生态都在 Node;语音、终端、跨端 UI 复用同一套 TS 类型和 zod schema——一种语言打通守护进程到手机。

记住这句
同样是"管你的编码 Agent",Multica 把大脑放在云端(Go)、让 Agent 变成团队看板上的同事;Paseo 把大脑放在你电脑上(TS)、让你用语音和终端随身操控。外壳很像,内核相反。