MCPcopy Index your code
hub / github.com/Kxiandaoyan/Memoh-v2

github.com/Kxiandaoyan/Memoh-v2 @v1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0 ↗ · + Follow
3,787 symbols 11,514 edges 397 files 1,088 documented · 29%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Memoh-v2

Real Isolation · Real Memory · Real Evolution — The Uncompromising AI Agent Platform

License Go Vue Docker

Others share a runtime — we give each bot its own containerd container.

Others use SQLite vector search — we use Qdrant + BM25 + LLM triple extraction.

Others edit memory files by hand — our bots reflect, experiment, and review on their own.

中文 · Feature Guide · Installation · Tutorials · Screenshots


Quick Start

Requires Docker:

curl -fsSL https://raw.githubusercontent.com/Kxiandaoyan/Memoh-v2/main/scripts/install.sh | sh

Silent install (skip prompts): curl -fsSL ... | sh -s -- -y

Or manually:

git clone --depth 1 https://github.com/Kxiandaoyan/Memoh-v2.git
cd Memoh-v2
docker compose up -d

Visit http://localhost:8082. Default login: admin / admin123

After installation, configure in this order:

1. Settings -> Provider    Add API provider, enter API Key and Base URL
       |
2. Provider -> Models      Add models (chat or embedding type)
       |
3. New Bot                 Select a template or start blank, set name and type
       |
4. Bot -> Settings         Choose Chat model, Embedding model, language, etc.
       |
5. Bot -> Channels         Connect Telegram / Lark messaging platforms (optional)

For detailed installation, upgrade, uninstall, and data migration guides, see Installation & Upgrade.


Architecture Overview

                    ┌──────────────┐
                    │   Web UI     │ :8082
                    │  Vue 3       │
                    └──────┬───────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
      ┌───────▼──────┐ ┌──▼──────────┐ │
      │   Server     │ │ Agent       │ │
      │   Go + Echo  │ │ Gateway     │ │
      │   :8080      │ │ Bun + Elysia│ │
      └──┬────┬──────┘ │ :8081       │ │
         │    │         └──┬──────────┘ │
         │    │            │            │
    ┌────▼┐ ┌─▼─────┐  ┌──▼──────────┐ │
    │ PG  │ │Qdrant │  │ Containerd  │◄┘
    │     │ │       │  │ (per-bot    │
    │     │ │       │  │  containers)│
    └─────┘ └───────┘  └─────────────┘
Service Responsibility
Server (Go) REST API, auth, database, container management, conversation routing, memory retrieval
Agent Gateway (Bun) AI inference, system prompt assembly, tool execution, streaming, subagent dispatch
Web (Vue 3) Management UI: bots, models, channels, skills, files, evolution, heartbeat visualization
PostgreSQL Relational data (users, bots, messages, configs, evolution logs)
Qdrant Vector database (memory semantic search)
Containerd Container runtime (one isolated container per bot)

Screenshot Preview

👉 Click for more screenshots


Core Features

Full details for each feature in the Feature Guide.

  • Bot Management & Templates — 13 mental-model templates (10 real thought-leaders), two-step professional bot creation
  • Conversation & Streaming — SSE real-time streaming + synchronous modes, automatic context management and memory recall
  • Three-Layer Memory — Vector semantic search + BM25 keywords + LLM smart extraction, auto-indexed after each turn
  • Isolated Container Sandbox — Each bot gets a containerd container with file I/O, shell, browser, and snapshot rollback
  • Multi-Platform Channels — Telegram / Lark / Web chat / CLI with cross-platform identity unification
  • MCP Tool System — 15 built-in tools + any external MCP server, Stdio and Remote transport
  • Heartbeat & Scheduling — Periodic + event-driven dual-mode triggers; bots act proactively
  • Self-Evolution — Three-phase organic cycle (Reflect / Experiment / Review) with full evolution log tracking
  • Subagents & Skills — Auto-dispatched subagents, one-click skill install from ClawHub marketplace
  • OpenViking Tiered Context — L0/L1/L2 structured memory layers, dramatically reducing token consumption
  • Token Usage & Diagnostics — Dashboard charts + multi-bot comparison, one-click service health check
  • Cross-Bot Collaboration/shared workspace with file-based coordination

Documentation

Document Description
Feature Guide Full details on all 12 core features
Concepts Guide Model types, persona system, Provider configuration
Installation & Upgrade Install / upgrade / uninstall / data migration
Known Limitations Current shortcomings and workarounds
OpenClaw Comparison 42-item comprehensive comparison
Tutorials 18 step-by-step tutorials (quick start to advanced tips)
Screenshots More UI screenshots
Feature Audit 74-item feature audit
Prompts Inventory Complete prompts reference

Tech Stack

Service Stack Port
Server (Backend) Go + Echo + Uber FX + pgx/v5 + sqlc 8080
Agent Gateway Bun + Elysia + Vercel AI SDK 8081
Web (Frontend) Vue 3 + Vite + Tailwind CSS + Pinia 8082
Dependency Version Purpose
PostgreSQL 18 Relational data storage
Qdrant latest Vector database
Containerd v2 Container runtime

Acknowledgments

This project is a secondary development based on Memoh. Thanks to the original authors for their excellent work.

Extension points exported contracts — how you extend this code

Reader (Interface)
Reader defines conversation lookup behavior. [27 implementers]
internal/conversation/interfaces.go
StreamReplySender (Interface)
StreamReplySender sends replies within a single inbound-processing scope. It supports both one-shot delivery and streami [7 …
internal/channel/adapter.go
ToolExecutor (Interface)
ToolExecutor represents business-facing tools (message/schedule/memory). [16 implementers]
internal/mcp/tool_types.go
Handler (Interface)
(no doc) [30 implementers]
internal/server/server.go
LLM (Interface)
LLM is the interface for LLM operations needed by memory service [3 implementers]
internal/memory/types.go
Writer (Interface)
Writer defines write behavior needed by the inbound router. [2 implementers]
internal/message/types.go
Embedder (Interface)
(no doc) [3 implementers]
internal/embeddings/embeddings.go
OVInitializer (Interface)
OVInitializer can pre-initialize the OpenViking data directory inside a bot container. [1 implementers]
internal/handlers/prompts.go

Core symbols most depended-on inside this repo

String
called by 660
internal/channel/types.go
Warn
called by 267
internal/channel/adapters/feishu/logger.go
String
called by 150
internal/mcp/sources/federation/source.go
Close
called by 139
internal/channel/adapter.go
ParseUUID
called by 138
internal/db/utils.go
Info
called by 128
internal/channel/adapters/feishu/logger.go
push
called by 107
agent/src/utils/attachments.ts
QueryRow
called by 106
internal/db/sqlc/db.go

Shape

Function 1,468
Method 1,467
Struct 648
Interface 170
TypeAlias 22
Class 6
Enum 3
FuncType 3

Languages

Go83%
TypeScript17%

Modules by API surface

packages/sdk/src/@pinia/colada.gen.ts125 symbols
packages/sdk/src/sdk.gen.ts124 symbols
internal/conversation/flow/resolver.go113 symbols
internal/containerd/service.go66 symbols
cmd/agent/main.go60 symbols
internal/channel/adapter.go53 symbols
internal/memory/service.go49 symbols
internal/channel/inbound/identity_test.go46 symbols
internal/channel/inbound/channel.go44 symbols
internal/channel/adapters/telegram/telegram.go43 symbols
internal/channel/inbound/identity.go41 symbols
packages/web/src/store/chat-list.ts40 symbols

For agents

$ claude mcp add Memoh-v2 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact