news 2026/10/3 22:39:13

Memoh架构揭秘(上):Go+Vue 3单体仓库目录结构与核心模块地图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Memoh架构揭秘(上):Go+Vue 3单体仓库目录结构与核心模块地图

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 / ElectronWeb 前端与桌面端
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 单体仓库的架构哲学

  1. 后端按领域分包:internal/下每个包对应一个清晰职责,agent/内部分层(runtime / context / tool / decision),依赖方向由internal/arch/的架构守卫测试强制约束;
  2. 进程可拆分:server 与 channel 可独立部署,channel 通过internal/rpc/的共享密钥 RPC 通信;
  3. 容器即工作区:workspace + container + display 三件套实现"Agent 专属电脑";
  4. 前后端契约先行: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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 22:39:11

剪映操作|做数字人口播,用什么工具效果自然

适用对象:AI视频生成任务的创作者。本文只处理“做数字人口播,用什么工具效果自然?”这一件事。先确定这一条要解决什么结论放前面:处理“做数字人口播,用什么工具效果自然?”,把生成或自动剪辑…

作者头像 李华
网站建设 2026/10/3 22:35:24

【Linux笔记】网络基础

一、网络发展的背景1.1 从独立到互联的必然性计算机是人的工具,人要协同工作,注定了网络的产生是必然的。发展路径为:独立模式 → 网络互联(数据共享)→ 局域网LAN(交换机/路由器连接更多计算机&#xff09…

作者头像 李华
网站建设 2026/10/3 22:35:02

C输入输出函数详解:Coursebook printf/scanf完整参考

C输入输出函数详解:Coursebook printf/scanf完整参考 【免费下载链接】coursebook Open Source Introductory Systems Programming Textbook for the University of Illinois 项目地址: https://gitcode.com/GitHub_Trending/co/coursebook Coursebook 是伊利…

作者头像 李华
网站建设 2026/10/3 22:34:20

merge 为什么有时只是移动指针,有时会多一个 commit

merge 为什么有时只是移动指针,有时会多一个 commit 前面讲 checkout 和 reset 时,我们一直围绕几样东西看: HEAD:当前站在哪里。分支引用:refs/heads/master 这种名字指向哪个 commit。index:下一次提交准…

作者头像 李华