Memoh架构揭秘(上):Go+Vue 3单体仓库目录结构与核心模块地图
【免费下载链接】Memoh✨ The open-source multi-agent platform. Every agent gets its own computer, desktop, network, and long-term memory. You can bring your own key, or host your coding agent like Claude Code, Codex and so on.项目地址: https://gitcode.com/gh_mirrors/me/Memoh
Memoh 是一个开源的多智能体(Multi-Agent)平台,它为每个 AI Agent 提供独立的"云电脑"——专属的文件系统、桌面、浏览器、网络和长期记忆。如果你想读懂这个项目的源码布局,本文就是一份 Go 后端 + Vue 3 前端单体仓库(Monorepo)的完整模块地图,帮你快速定位核心模块、找到关键入口。
一眼看懂:Memoh 单体仓库顶层结构
Memoh 采用Go + Vue 3 + Rust + TypeScript混合技术栈,所有代码集中在同一个仓库中。顶层目录可以分成四大块:
| 目录 | 技术栈 | 职责 |
|---|---|---|
cmd/ | Go | 可执行程序入口(服务端、通道服务、容器内桥接) |
internal/ | Go | 后端核心领域包(100+ 个包) |
apps/ | Vue 3 / Electron | Web 前端与桌面端 |
packages/ | TypeScript | 共享前端库(UI、SDK、图标) |
db/conf/docker/ | SQL / TOML / Docker | 数据层、配置与部署 |
完整的项目结构地图官方维护在 docs/codebase-map.md,是新人上手的第一份必读材料。
Go 后端:三个入口 + 一套领域包
程序入口:cmd/目录
Memoh 后端可以运行为单进程或双进程两种形态,入口都在 cmd/ 下:
- cmd/agent/—— 主服务端,承载核心 Agent、数据库和 REST API,是最核心的二进制;
- cmd/channel/—— 独立通道服务(拆分部署模式),负责 Telegram、Discord、微信等平台适配和 Webhook;
- cmd/bridge/—— 运行在每个 Agent 容器内部的 gRPC 桥接进程,通过 Unix Domain Socket 与宿主机通信;
- cmd/gen-bridge-mtls/—— 生成桥接层的 mTLS 证书。
💡 提示:
internal_rpc.shared_secret配置留空时,channel 会内嵌进 server 进程,成为一体化单进程运行。
核心领域包:internal/地图
internal/ 是整个后端的"心脏",约 100 个领域包。按重要性梳理核心模块:
🤖 智能体运行时:internal/agent/
这是最复杂的子树,内部按职责分层(详见 docs/codebase-map.md):
runtime/native/—— 基于 Twilight AI SDK 的原生运行时,处理提示词、流式输出与钩子;runtime/codex/、runtime/claudecode/—— 直接托管 Claude Code、Codex 等外部编程 Agent;runtime/acp/—— 通过 ACP 协议接入自定义 Agent;context/—— 上下文片段、历史投影、压缩(Compaction)与输出限制;tool/—— 20+ 内置工具:浏览器操作(browser.go)、计算机使用(computer_a11y.go)、记忆读写(memory.go)、定时任务(schedule.go)、子代理(subagent.go)等;application/—— Turn 编排:上下文组装、持久化、审批与运行时调度。
💬 消息通道:internal/channel/
Memoh 支持十几个聊天平台的接入,channel/下有 180 个文件:
adapters/—— 各平台适配器(Telegram、Discord、飞书、QQ、钉钉、微信、Slack 等);inbound/—— 入站消息适配与 Turn 分发;route/—— 外部会话到内部 Thread 的路由;discuss/—— 讨论模式驱动。
🖥️ 工作区与容器:internal/workspace/+internal/container/
"每个 Agent 一台云电脑"正是靠这两个包实现:
internal/workspace/—— 工作区容器的全生命周期管理(创建/启动/停止/协调),维护 gRPC 桥接连接池;internal/container/—— 容器运行时抽象层,适配 Docker、containerd、Apple Virtualization 三种后端;internal/display/—— 桌面显示服务(Xvnc / WebRTC 会话与输入转发);internal/workspacedeps/—— 按 Bot 维度安装 Agent CLI 等受管依赖。
🧠 长期记忆与其他支撑模块
internal/memory/—— 长期记忆系统,支持 Qdrant 向量库、BM25 与 LLM 抽取多提供方;internal/mcp/—— MCP 协议管理(连接、OAuth、工具网关);internal/handlers/—— 全部 REST API 端点;internal/models/+internal/providers/—— LLM 模型与提供方管理,模板定义在 conf/providers/(OpenAI、Anthropic、Google、DeepSeek 等 40+ 家);internal/supermarket/+internal/apps/—— Supermarket 应用市场的发现与安装。
前端:Vue 3 Web 应用与 Electron 桌面端
前端代码集中在 apps/,包含两个应用:
🌐apps/web/—— 主 Web 应用
基于Vue 3 + Vite + Pinia + i18n,目录组织非常清晰:
src/pages/—— 20+ 个页面:bots/(Bot 管理)、supermarket/(应用市场)、memory/(记忆)、providers/(模型提供方)、settings-section/(设置)等;src/store/—— Pinia 状态管理,按业务域拆分(chat、settings、workdirs 等),每个 store 都配了单测;src/components/+src/composables/—— 组件与组合式函数;src/i18n/—— 多语言支持(英/中/日等)。
💻apps/desktop/—— Electron 桌面端
桌面端是独立的 electron-vite 工程,但复用 Web 端的页面、布局、store 与设计令牌,只替换 Electron 外壳。打包配置见 apps/desktop/electron-builder.yml。
共享库与数据层
packages/—— TypeScript 共享库
| 包 | 作用 |
|---|---|
packages/sdk/ | 由 OpenAPI 自动生成的 TS SDK([@memohai/sdk]) |
packages/ui/ | 共享 UI 组件库(git 子模块) |
packages/icons/ | 品牌/提供方图标库(110+ 图标) |
packages/config/ | 共享配置工具 |
db/—— 数据层
- db/postgres/migrations/—— 318 个 SQL 迁移文件,可直观看到数据模型演进史;
- db/postgres/queries/—— sqlc 查询定义,代码由 sqlc.yaml 生成,禁止手改;
- db/pgvector/—— 向量检索扩展迁移。
配置与部署
- conf/—— 多平台配置模板:
app.docker.toml、app.apple.toml、app.windows.toml,外加 40+ 个 LLM 提供方 YAML 模板; - docker/—— 生产级 Dockerfile、Nginx 配置与入口脚本;
- devenv/—— 开发环境 compose 编排;
- scripts/—— 安装、发布、数据库工具脚本;
- mise.toml—— mise 任务与工具版本定义,统一开发环境。
小结:Memoh 单体仓库的架构哲学
- 后端按领域分包:
internal/下每个包对应一个清晰职责,agent/内部分层(runtime / context / tool / decision),依赖方向由internal/arch/的架构守卫测试强制约束; - 进程可拆分:server 与 channel 可独立部署,channel 通过
internal/rpc/的共享密钥 RPC 通信; - 容器即工作区:workspace + container + display 三件套实现"Agent 专属电脑";
- 前后端契约先行:
spec/中的 OpenAPI 规范驱动 SDK 自动生成,保证 Vue 3 前端与 Go 后端始终对齐。
掌握这张模块地图后,你可以沿着 docs/codebase-map.md 深入任何一个子模块。下一篇将深入讲解 Memoh 的 Agent 运行时:Turn 编排、上下文压缩与工具执行链路。
【免费下载链接】Memoh✨ The open-source multi-agent platform. Every agent gets its own computer, desktop, network, and long-term memory. You can bring your own key, or host your coding agent like Claude Code, Codex and so on.项目地址: https://gitcode.com/gh_mirrors/me/Memoh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考