TL;DR

Ngày 18/04/2026, Nous Research merge PR #12075 vào hermes-agent, sửa một bug tồn tại lâu: tính năng session_search trả về 0 kết quả khi query bằng tiếng Trung, Nhật hoặc Hàn. Fix bắt nguồn từ PR cộng đồng của Viviennn (GitHub vominh1919) và được teknium1 hoàn thiện. Với CJK user, đây là lần đầu Hermes Agent thực sự nhớ được các phiên làm việc cũ.

What's new

Trước khi có fix này, một user gõ 记忆断裂 ("memory break") để tìm lại cuộc hội thoại cũ sẽ nhận về mảng rỗng — dù đúng chuỗi đó đang nằm trong database. Nguyên nhân: SQLite FTS5 (full-text search engine Hermes dùng cho file ~/.hermes/state.db) không tokenize được text CJK theo cách expect. Kết quả là tính năng persistent memory — điểm bán hàng lớn nhất của Hermes Agent — không hoạt động với gần 2 tỷ người dùng tiếng Trung, Nhật, Hàn.

PR #12075 thêm một fallback đơn giản: nếu FTS5 trả về rỗng query chứa ký tự CJK, retry bằng WHERE content LIKE '%query%'. Tất cả filter cũ (session id, user, time range) được giữ nguyên.

Why it matters

Hermes Agent định vị mình là "An Agent That Grows With You" — chạy local, có memory persistent qua MEMORY.md, USER.md và session search. Nếu session search chết với CJK, thì đối với user Trung/Nhật/Hàn, Hermes bị hạ cấp xuống ngang một chatbot stateless. Fix này không chỉ là bug patch — nó là điều kiện cần để Hermes Agent khả dụng ở thị trường CJK, nơi Nous Research chưa có mặt mạnh.

Câu chuyện phía sau cũng đáng chú ý: fix gốc đến từ community contributor Viviennn qua ba PR liên tiếp (#11516, #11517, #11541). teknium1 "salvage" lại, bổ sung test và merge. Đây là pattern hiếm ở các dự án AI tools — nơi maintainer thường tự build mọi thứ.

Technical facts

PropertyValue
PR merged#12075 — 2026-04-18
Author cuốiteknium1 (salvage từ vominh1919 / Viviennn)
Scripts/files touchedhermes_state.py, release.py, tests
New helper_contains_cjk() — check Unicode Han, Hiragana, Katakana, Hangul
Fallback triggerFTS5 = 0 rows AND query có CJK char
New regression tests12
Total test suite149 tests, all pass
Perf impact (English)Zero — fast path không đổi

Logic chia hai tầng:

  1. FTS5 chạy trước như cũ (nhanh, giữ perf tiếng Anh).
  2. Nếu FTS5 rỗng + query chứa CJK → retry bằng LIKE pattern, kèm snippet extraction căn giữa match để UI preview vẫn có ngữ cảnh.

Comparison — vs. cách fix khác

Ứng dụng FTS5 khác (ví dụ Joplin, Obsidian plugins) thường xử CJK bằng cách swap tokenizer sang ICU hoặc integrate thư viện segmentation như Jieba cho tiếng Trung. Cách đó search nhanh và chính xác hơn, nhưng thêm native dependency, yêu cầu rebuild index, và tăng kích thước binary.

PR #12075 chọn hướng ngược lại: không thêm dep, không re-index, chỉ thêm fallback. Trade-off: LIKE '%x%' là full-scan O(n), nên trên DB cực lớn (hàng chục GB) sẽ chậm hơn. Tuy nhiên fallback chỉ kích hoạt khi FTS5 đã miss, nên hot path tiếng Anh không bị ảnh hưởng. Với đa số user tự host (vài GB session history), đây là đánh đổi hợp lý.

Use cases

  • Dev Trung/Nhật/Hàn dùng Hermes qua Telegram, Discord, Slack, WhatsApp, Signal, Email, hoặc CLI — giờ có thể hỏi "nhớ bug 记忆断裂 hôm trước không?" và agent kéo đúng session ra.
  • Team multilingual — conversation mix tiếng Anh với CJK. Search hoạt động nhất quán bất kể ngôn ngữ.
  • Long-running projects — nơi giá trị cốt lõi của Hermes là memory tích luỹ theo thời gian. CJK user giờ mới thực sự dùng được feature này.

Limitations & pricing

  • Perf: LIKE fallback là linear scan. Trên DB cực lớn (tens of GB), CJK search có thể chậm hơn English. Không vấn đề với deploy cá nhân/team thông thường.
  • Scope: Cover Han (Chinese), Hiragana, Katakana (Japanese), Hangul (Korean). Không cover các script cũng khó tokenize khác như Thai, Khmer, Lao — cần fix riêng.
  • Pricing: Hermes Agent open-source, self-hosted, free. Code public tại NousResearch/hermes-agent.
  • Availability: Merged vào main 18/04/2026 — git pull là có ngay.

What's next

Nous Research chưa công bố roadmap cụ thể cho tokenizer work tiếp theo. Câu hỏi mở: có upgrade lên ICU tokenizer khi user base CJK lớn lên không, hay giữ LIKE fallback mãi? Ngắn hạn, fix này đã đủ để mở cửa thị trường CJK cho Hermes Agent.

Bài học lớn hơn: khi build AI tools ra thị trường global, internationalization không phải nice-to-have. Một bug tokenizer tưởng nhỏ có thể vô hiệu hoá feature flagship với hàng tỷ user. Và community contribution vẫn là đường ngắn nhất để catch những bug này — Viviennn là người đầu tiên đụng phải, và cũng là người đầu tiên fix.

Nguồn: Teknium trên X, PR #12075, Hermes Agent docs — Sessions.