Skip to main content

Honcho - ระบบความจำที่ทำให้ AI เข้าใจเราจริงๆ

· 14 min read

สารบัญ

เรื่องมันเริ่มจากความรำคาญเล็กๆ

ทุกครั้งที่เปิด session ใหม่กับ AI ผมต้องเล่าเรื่องเดิมซ้ำๆ - ใช้ Arch Linux นะ, ชอบ self-hosted tools, บล็อกอยู่ที่ blog.2my.xyz, เขียนเรื่อง Linux กับ homelab เป็นหลัก ทุกครั้ง AI ก็จะทักเหมือนเพิ่งเจอผมครั้งแรก

มันเหมือนมีเพื่อนคุยด้วยทุกวัน แต่เพื่อนคนนั้นความจำสั้นมาก

TL;DR

Honcho คือ open-source memory library ที่ทำให้ AI ไม่ใช่แค่ "จำ facts" แต่ "เข้าใจ context" ผ่าน Dialectic Reasoning + Dreaming มี Peer Card, Multi-Peer, Embedding/Hybrid Search รองรับ self-hosted เชื่อม Hermes Agent ได้ทันที ติดตั้งด้วย Docker Compose ใช้ RAM ~2GB

ผมใช้ Hermes Agent เป็น AI assistant หลัก - รันบน ThinkPad T14, เชื่อมกับ Telegram, มี tools ครบ ทุกอย่างดีหมด ยกเว้นเรื่องเดียว: ความจำ

ความจำของ AI มันยากกว่าที่คิด

ปัญหาไม่ใช่ว่า AI จำไม่ได้ - มันมี memory system อยู่แล้ว แต่ memory แบบเดิมๆ มันมีข้อจำกัด:

Flat memory (แบบ key-value) - เก็บเป็น fact แยกๆ เช่น "ชอบ Arch Linux", "อยู่ขอนแก่น" มันใช้ได้กับข้อมูลง่ายๆ แต่พอข้อมูลซับซ้อนขึ้น เช่น "ผมเคยคุยเรื่องนี้กับ AI เมื่อ 3 วันก่อน แล้วมันสรุปว่ายังไงนะ?" - flat memory ตอบไม่ได้

Vector search (semantic search) - ดีกว่า แต่ก็ยังเป็นการ "ค้นหา" ไม่ใช่การ "เข้าใจ" มันหาข้อความที่คล้ายๆ ได้ แต่ไม่ได้ให้เหตุผลว่าข้อมูลเหล่านั้นเชื่อมโยงกันยังไง

แล้วผมก็เจอ Honcho

Honcho คืออะไร

Honcho เป็น open-source memory library ที่สร้างโดย Plastic Labs - บริษัทวิจัยในนิวยอร์กที่ได้รับเงินทุน $5.35M ระดับ pre-seed จาก Variant, White Star Capital และ Mozilla Ventures ภารกิจของพวกเขาคือ "solve identity for the agentic world"

สิ่งที่ทำให้ Honcho ต่างจาก memory system อื่นๆ คือมันไม่ได้แค่ "เก็บ" ข้อมูล - มัน "คิด" เกี่ยวกับข้อมูล

Dialectic Reasoning - คิดหลายรอบเพื่อเข้าใจลึกขึ้น

เวลาเราคุยกับ AI ผ่าน Honcho ทุก message จะถูกส่งเข้า reasoning engine ที่วิเคราะห์ว่าบทสนทนานั้นบอกอะไรเกี่ยวกับเราบ้าง ไม่ใช่แค่สิ่งที่พูด แต่รวมถึงสิ่งที่ไม่ได้พูดด้วย

เช่น ถ้าผมพูดว่า "วันนี้เขียน blog เรื่อง Honcho เสร็จแล้ว" - Honcho ไม่แค่จำว่าผมเขียน blog แต่จะ infer ว่าผมเป็นคนที่ชอบเขียน, สนใจเรื่อง AI memory, และมี blog เป็นของตัวเอง

Dreaming - นอนหลับแล้วความจำ consolidate

อันนี้ผมชอบมากที่สุด Honcho มีระบบ "dreaming" ที่ทำงานเบื้องหลัง เหมือนสมองตอนนอนหลับของมนุษย์ - ตอนที่เราไม่ได้คุย ระบบจะ:

  • สรุปข้อมูลที่ล้าสมัย → อัปเดต
  • หา pattern จาก conclusions หลายๆ อัน
  • สร้าง Peer Card อัตโนมัติ
  • แก้ข้อขัดแย้งในข้อมูล

Note: Dreaming ทำงานอัตโนมัติเมื่อมี conclusions ใหม่ 50+ ข้อ และ idle อย่างน้อย 60 นาที (ปรับได้) สำหรับ homelab ที่ใช้ส่วนตัว แนะนำลด DOCUMENT_THRESHOLD เป็น 15 จะได้ consolidate ถี่ขึ้น

Peer Card - บัตรประจำตัวของ AI

Peer Card คือ snapshot ของสิ่งที่ Honcho รู้เกี่ยวกับเรา มันไม่ใช่แค่ list of facts แต่เป็น โมเดลที่ AI สร้างขึ้นเอง จากการสังเกตเราในบทสนทนาต่างๆ

# ตั้ง Peer Card ของ user
peer.set_card([
"ชื่อเล่น: เรา",
"อาชีพ: Fullstack Developer",
"ชอบ: open-source, Linux, homelab",
"คอมพิวเตอร์: ThinkPad T14 Gen3 (Arch + KDE)",
])

Multi-Peer - ไม่ใช่แค่ user กับ assistant

Honcho ไม่ได้ล็อคอยู่กับ model user-assistant มันรองรับ "peers" หลายตัว - users, agents, groups, projects, ideas ทุกอย่างเป็น peer ได้

สิ่งที่เจ๋งคือมันสามารถ model what one peer knows about another - เช่น "nanako (AI) รู้อะไรเกี่ยวกับเรา (user)?" ได้เลย

Features ทั้งหมด

Honcho มี features หลายระดับ ตั้งแต่พื้นฐานจนถึงขั้นสูง ผมจัดกลุ่มไว้ให้เห็นภาพชัด:

🟢 พื้นฐาน - ใช้ได้ทันที

Featureคำอธิบาย
Chat Endpointถาม Honcho ด้วยภาษาธรรมชาติ - "สรุปนิสัยของเรา", "nanako รู้อะไรเกี่ยวกับเราบ้าง" ไม่ต้อง query database ตรง
Peer Cardบัตรประจำตัวที่ Honcho สร้างขึ้นเองจากการ observe บทสนทนา ไม่ใช่แค่ list of facts แต่เป็น representation ที่ AI เข้าใจ
Session Contextดู summary + peer representation ของ session ใดก็ได้ - รู้ว่าคุยเรื่องอะไร สรุปว่ายังไง
Message Storageเก็บทุก message พร้อม metadata - timestamp, peer, session, token count
Multi-Peerรองรับ peers หลายตัว - users, agents, groups ทุกอย่างเป็น peer ได้

🟡 ขั้นกลาง - ต้องตั้งค่าเพิ่ม

Featureคำอธิบาย
Embedding (Semantic Search)แปลงข้อความเป็น vector → ค้นหาด้วยความหมาย ไม่ใช่แค่ keyword "อาหารที่ชอบ" เจอ "ชอบกินส้มตำ" ด้วย
Hybrid Searchผสม keyword + semantic search → ผลลัพธ์ดีกว่าแบบเดียว
Dialectic Reasoningคิดหลายรอบ - Cold (ดูข้อมูล) → Audit (ตรวจสอบ) → Reconcile (สรุป) ปรับ depth ตามความซับซ้อนของ query
Custom Instructionsใส่คำสั่งเฉพาะให้ deriver/dreamer - เช่น "เน้นเรื่องงาน", "อย่าเก็บข้อมูลสุขภาพ"

🔴 ขั้นสูง - ต้อง embedding + deriver

Featureคำอธิบาย
Deriver (Conclusions)Background worker ที่วิเคราะห์ข้อความ → extract facts (explicit), สรุป (deductive), หา pattern (inductive), หาข้อขัดแย้ง (contradiction)
Dreamingทำงานตอน idle - summarize ข้อมูลเก่า, หา pattern, สร้าง Peer Card อัตโนมัติ, แก้ข้อขัดแย้ง เหมือนสมองตอนนอนหลับ
File Uploadอัปโหลดไฟล์ (PDF, รูป, code) เข้า Honcho → วิเคราะห์เนื้อหา + เก็บเป็น context
Webhooksรับ event เมื่อมีข้อมูลใหม่ - เหมาะสำหรับ integrate กับระบบอื่น

⭐ Features ที่แนะนำให้ใช้

จากที่ลองใช้จริง ผมแนะนำ features เหล่านี้เป็นอันดับแรก:

1. Peer Card - หัวใจของระบบ

ตั้ง Peer Card ให้ละเอียดตั้งแต่แรก มันคือ "first impression" ที่ Honcho ใช้ตัดสินใจว่าจะจดจำอะไร ยิ่งละเอียด ยิ่งแม่น:

peer.set_card([
"ชื่อเล่น: เรา",
"อายุ: 35 ปี",
"อาชีพ: Fullstack Developer ที่โรงพยาบาล",
"คอมพิวเตอร์: ThinkPad T14 Gen3 (Arch + KDE)",
"ชอบ: open-source, Linux, homelab",
"ไม่ชอบ: over-engineering, buzzwords",
"รูปแบบการทำงาน: ชอบ simple solutions, เน้น practical",
])

2. Chat Endpoint - ถามได้เลย ไม่ต้อง query

ใช้ Chat Endpoint แทนการ query database ตรง - ถามด้วยภาษาธรรมชาติ ได้คำตอบที่คิดมาแล้ว:

# ถามเรื่อง user
peer.chat("สรุปนิสัยการทำงานของเรา")

# ถามว่า AI รู้อะไรเกี่ยวกับเรา
peer.chat("nanako รู้อะไรเกี่ยวกับเราบ้าง", target="nanako")

# ถามเรื่อง session เก่า
peer.chat("เมื่อวานคุยเรื่องอะไร")

3. Embedding + Hybrid Search - ค้นหาด้วยความหมาย

ถ้า LLM provider ไม่รองรับ embedding (เช่น MiMo) ให้ใช้ Gemini ฟรี tier:

EMBEDDING__PROVIDER=gemini
EMBEDDING__MODEL=gemini-embedding-001
EMBEDDING__API_KEY=your_gem..._key

4. Dreaming - ให้ AI คิดตอนเราไม่ได้คุย

ตั้ง threshold ให้เหมาะกับการใช้ส่วนตัว (default สูงเกินไป):

DREAM__DOCUMENT_THRESHOLD=15
DREAM__MIN_HOURS_BETWEEN_DREAMS=2
DREAM__IDLE_TIMEOUT_MINUTES=30

Embedding เปลี่ยนเกมยังไง

หลายคนอาจสงสัยว่า embedding มันต่างจาก keyword search ยังไง ลองดูตัวอย่างจริง:

สถานการณ์ก่อน (ไม่มี embedding)หลัง (มี embedding)
search "อาหารที่ชอบ"เจอเฉพาะข้อความที่มีคำว่า "อาหาร"เจอ "ชอบกินส้มตำ", "ชอบกินข้าวเหนียว" ด้วย
search "อารมณ์"ไม่เจอ "เหนื่อยจัง"เจอ "เหนื่อยจัง" เพราะ embedding เข้าใจความหมาย
search "เครื่องดื่ม"ไม่เจอ "ชอบกาแฟ"เจอ "ชอบกาแฟ" เพราะ embedding รู้ว่ากาแฟ = เครื่องดื่ม
100 ข้อความสะสมDreaming ไม่ process (ไม่มี embedding ให้วิเคราะห์)Deriver วิเคราะห์ pattern + สร้าง conclusions
คุยเรื่องเดิมซ้ำๆAI ไม่รู้ว่าเคยคุยแล้วDreaming จับ pattern + สรุปให้

สรุปสั้นๆ: Embedding แปลงข้อความเป็นตัวเลข (vector) → ให้ AI เข้าใจ "ความหมาย" ไม่ใช่แค่ "คำ" ทำให้ search แม่นขึ้น, Dreaming ทำงานได้, และ Deriver สร้าง conclusions ได้

เทียบกับตัวอื่น

ผมลอง research ดู memory solutions ที่มีอยู่ในตอนนี้:

FeatureHonchoMem0Zep/GraphitiLetta/MemGPT
ApproachReasoning-first, peer-centricFact extractionKnowledge graphAgent self-managed
Graph-basedPartial (peer model)✅ (strongest)
Background reasoning✅ Dreaming
Self-hosted✅ (AGPL-3.0)✅ (Apache 2.0)✅ (needs Neo4j)✅ (Apache 2.0)
MCP supportLimitedLimited
LongMemEval~90.4%93.4%~71.2%N/A
IntegrationHermes, Claude Code, CursorLangChain, LlamaIndexLangChainPython SDK

Note: ตัวเลข benchmark ขึ้นอยู่กับ configuration และ methodology มาก — บางแหล่งรายงาน Mem0 สูงกว่า บางแหล่งรายงาน Honcho นำ (third-party comparisons วาง Honcho ที่ ~90.4% และ Mem0 ที่ ~65% บน LongMemEval-class benchmarks ในบางการทดสอบ) สรุปคือ Honcho มี approach ที่ต่างกัน - ไม่ใช่แค่จำ facts ได้มากกว่า แต่เข้าใจ context ลึกกว่า ขึ้นอยู่กับ use case ว่าต้องการแบบไหน

ทำไมถึงเลือก Honcho

สำหรับผม เหตุผลหลักคือ:

  1. Self-hosted ได้จริง - ข้อมูลไม่ออกนอกเครื่อง
  2. Hermes integration - Hermes Agent มี Honcho memory provider ในตัว
  3. Reasoning-first - ไม่ใช่แค่เก็บข้อมูล แต่คิดเกี่ยวกับมันด้วย
  4. Dreaming - background processing ที่ไม่กระทบ performance
  5. Peer model - รองรับ multi-agent scenarios

ติดตั้งเบื้องต้น

Prerequisites

  • Docker Engine + Docker Compose
  • OpenAI-compatible API key (OpenRouter, MiMo, etc.)
  • Server หรือ homelab (RAM 2GB+ พอ)

1. Clone & Setup

git clone https://github.com/plastic-labs/honcho.git ~/honcho
cd ~/honcho

2. Docker Compose

ใช้ pre-built image แทน build เอง (เร็วกว่า + ไม่ต้องแก้ปัญหา DNS ตอน build):

services:
api:
image: ghcr.io/plastic-labs/honcho:latest
network_mode: host
container_name: honcho-api
entrypoint: ["sh", "docker/entrypoint.sh"]
depends_on:
database:
condition: service_healthy
redis:
condition: service_healthy
environment:
- DB_CONNECTION_URI=postgresql+psycopg://postgres:${POSTGRES_PASSWORD}@127.0.0.1:5432/honcho
- CACHE_URL=redis://127.0.0.1:6379/0?suppress=true
- CACHE_ENABLED=true
env_file:
- .env
restart: unless-stopped

database:
image: pgvector/pgvector:pg15
network_mode: host
container_name: honcho-postgres
restart: unless-stopped
command: ["postgres", "-c", "max_connections=200"]
environment:
- POSTGRES_DB=honcho
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- ./data/postgres:/var/lib/postgresql/data
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d honcho"]
interval: 5s
timeout: 5s
retries: 5

redis:
image: redis:8-alpine
network_mode: host
container_name: honcho-redis
restart: unless-stopped
volumes:
- ./data/redis:/data

Note: network_mode: host ทำให้ containers share network กับ host - ง่ายต่อการ debug เพราะเชื่อม localhost ได้ตรงๆ แต่ถ้า deploy production ควรใช้ bridge network + expose ports เฉพาะที่จำเป็น

3. Environment Variables

cat > .env << 'EOF'
POSTGRES_PASSWORD=your_secure_password

# LLM Provider (ใช้ OpenAI-compatible endpoint อะไรก็ได้)
LLM_OPENAI_API_KEY=your_api_key
LLM_OPENAI_BASE_URL=https://api.openai.com/v1
EOF

Note: Honcho รองรับ LLM providers หลายตัว - OpenAI, Anthropic, Gemini และ OpenAI-compatible proxies (OpenRouter, MiMo, vLLM, etc.) ถ้าใช้ proxy ให้ตั้ง LLM_OPENAI_BASE_URL ชี้ไปที่ proxy endpoint

4. Start

docker compose up -d
# รอ 30-60 วินาทีให้ migrations เสร็จ
sleep 30
curl http://localhost:8000/health
# ควรจะได้: {"status":"ok"}

5. เชื่อมกับ Hermes

# ตั้ง memory provider
hermes config set memory.provider honcho

# สร้าง config file
cat > ~/.hermes/honcho.json << 'EOF'
{
"baseUrl": "http://YOUR_SERVER_IP:8000",
"enabled": true,
"peerName": "your_name",
"aiPeer": "your_agent_name",
"workspace": "hermes",
"recallMode": "hybrid",
"sessionStrategy": "per-session",
"writeFrequency": "async",
"saveMessages": true,
"dialecticDepth": 2,
"dialecticReasoningLevel": "low"
}
EOF

Note: recallMode: hybrid ให้ Hermes ถาม Honcho ก่อนตอบทุกครั้ง - ได้ context จาก memory มาช่วย ถ้าอยากประหยัด tokens ใช้ context แทน (ถามเฉพาะตอนที่ context ไม่พอ)

6. ทดสอบ

hermes chat -q "จำไว้ว่า ฉันชอบกินข้าวมันไก่"
hermes chat -q "ฉันชอบกินอะไร"
# ควรจะได้: ข้าวมันไก่

Best Practices

จากที่ลองใช้จริงมาสักพัก มีหลายเรื่องที่อยากแชร์:

1. ตั้ง Dream threshold ให้เหมาะกับการใช้งาน

default DOCUMENT_THRESHOLD=50 สูงเกินไปสำหรับ homelab ที่ใช้ส่วนตัว แนะนำลดเหลือ 15-20:

DREAM__DOCUMENT_THRESHOLD=15
DREAM__MIN_HOURS_BETWEEN_DREAMS=2

2. Embedding ต้องมี

Honcho ต้องการ embedding model สำหรับ vector search ถ้า LLM provider ไม่รองรับ embeddings (เช่น MiMo) ต้องใช้ provider อื่นสำหรับ embeddings:

  • Google Gemini - ฟรี tier, สมัครที่ aistudio.google.com
  • OpenAI - text-embedding-3-small ($0.02/1M tokens)
  • Self-hosted - nomic-embed-text ผ่าน Ollama

3. Peer Card คือหัวใจ

ตั้ง Peer Card ให้ละเอียดตั้งแต่แรก - มันคือ "first impression" ที่ Honcho ใช้ตัดสินใจว่าจะ remember อะไร:

peer.set_card([
"ชื่อ: ...",
"อาชีพ: ...",
"ความสนใจ: ...",
"รูปแบบการทำงาน: ...",
"สิ่งที่ชอบ/ไม่ชอบ: ...",
])

4. ใช้ Chat Endpoint สำหรับ introspection

ไม่ต้อง query database ตรง - ถาม Honcho ด้วยภาษาธรรมชาติได้เลย:

peer.chat("สรุปนิสัยการทำงานของเรา")
peer.chat("nanako รู้อะไรเกี่ยวกับเราบ้าง", target="nanako")

5. ระวังเรื่อง API key

ถ้า LLM provider ไม่รองรับ embedding API จะเจอ error 401 ใน logs ไม่ต้องตกใจ - chat endpoint กับ peer card ยังทำงานได้ปกติ แค่ vector search กับ conclusions จะไม่ทำงาน

ขยายระบบ - Honcho หนึ่งตัว หลาย Hermes

อีก scenario ที่น่าสนใจคือ ถ้าอนาคตมี Hermes หลายเครื่อง - เช่น T14 เป็นเครื่องหลัก แต่อยากมี X13 หรือเครื่องอื่นใน homelab รัน Hermes ด้วย จะเชื่อม Honcho ยังไง?

โครงสร้างที่แนะนำ

ไอเดียง่ายๆ - Honcho ทำหน้าที่เป็น central brain ส่วน Hermes หลายเครื่องเป็น แขนขา ที่เชื่อม brain เดียวกัน

ทางเลือก 3 แบบ

แบบ A: Shared Memory (แนะนำ)

ทุกเครื่องเชื่อม Honcho เดียวกัน, workspace เดียวกัน, peer เดียวกัน - จำได้หมดไม่ว่าคุยจากเครื่องไหน

// honcho.json - copy ไปทุกเครื่อง
{
"baseUrl": "http://10.0.0.136:8000",
"peerName": "kongvut",
"aiPeer": "nanako",
"workspace": "hermes",
"recallMode": "hybrid",
"writeFrequency": "async"
}

แบบ B: Separate Workspace

ทุกเครื่องเชื่อม Honcho เดียวกัน แต่คนละ workspace (hermes-t14, hermes-x13) - จำแยกตามเครื่อง เหมาะถ้าอยากให้ context ต่างกัน

แบบ C: Single Agent, Multi-Platform

Hermes ตัวเดียว (T14) รับทุก channel เครื่องอื่นแค่ forward มา - ง่ายที่สุด แต่ T14 ต้องรันตลอด

ทำไม Shared Memory ดีที่สุด

  • Peer = kongvut คนเดียว - ไม่ว่าคุยจากเครื่องไหน AI ก็จำได้เหมือนกัน
  • SOUL.md + Memory - copy ไปด้วย บุคลิก consistent ทุกเครื่อง
  • Session ID - Honcho auto-generate จาก Telegram chat ID คุยจาก chat เดียวกัน แต่คนละเครื่อง → session เดียวกัน
  • ติดตั้งง่าย - copy ~/.hermes/honcho.json ไปเครื่องใหม่ จบ

ข้อควรระวัง

  1. SOUL.md - ต้อง copy ไปด้วย ไม่งั้น persona ต่างกัน
  2. Memory/Skills - copy หรือ sync ผ่าน git
  3. Embedding - ยังต้องแก้จุดเดียวคือ Honcho server (ทุกเครื่อง share embedding เดียวกัน)
  4. Network - ทุกเครื่องต้องเข้าถึง Honcho server ได้ (LAN หรือ VPN)
  5. Backup - Honcho data อยู่ที่เดียว ต้อง backup ให้ดี

สรุปสั้นๆ: Honcho คือ สมองส่วนกลาง - ติดตั้ง Hermes กี่เครื่องก็ได้ แค่ชี้มาที่ brain เดียวกัน ก็ได้ memory เดียวกัน 🧠

Network & Security

โพสต์นี้มี private IP (10.0.0.136) และระบุว่าใช้ network_mode: host สิ่งที่ต้องระวัง:

  • ไม่ควร expose Honcho API ออก internet โดยตรง - ใช้ VPN (WireGuard/Outline) หรือ reverse proxy กับ auth ถ้าต้องเข้าถึงจากนอกบ้าน
  • PostgreSQL + Redis ใน compose ใช้ network_mode: host → ใครเข้าถึง host ได้ก็เข้าถึง database ได้ ตรวจสอบ firewall ให้ block port 5432/6379 จากภายนอก
  • API key เก็บใน .env ไม่ควร check in Git - ใช้ git update-index --skip-worktree .env หรือ secret manager
  • Peer Card มี PII - ชื่อ อายุ อาชีพ ถ้า backup Honcho data ต้องเข้ารหัส

สำหรับ homelab ส่วนตัว แนะนำ: LAN-only + VPN เข้าบ้านก่อน แล้วค่อย access services

สรุป

Honcho ไม่ใช่ silver bullet - มันมี complexity เพิ่มขึ้นกว่า flat memory แบบเดิม แต่สำหรับผม สิ่งที่ได้กลับมามันคุ้มค่า:

  • AI จำผมได้จริงๆ ไม่ใช่แค่จำ facts แต่เข้าใจ context
  • Background reasoning ทำงานโดยไม่กระทบ performance
  • Self-hosted บน homelab - ข้อมูลไม่ออกนอกเครื่อง
  • เชื่อมกับ Hermes ได้ทันที ไม่ต้องเขียน code เพิ่ม

ถ้าคุณใช้ Hermes Agent แล้วรู้สึกว่า AI จำอะไรไม่ได้เลย - Honcho คือคำตอบ


References

แชร์บทความ

เนื้อหานี้มีประโยชน์ไหม? ช่วยสนับสนุนค่ากาแฟให้ผู้เขียนสักแก้ว

Buy Me a Coffee
Loading...