Bài "Hermes setup của tôi, cứ chê đi" 517 điểm: công ty phần mềm một người, tổ chức như công ty thật
Anh đăng bài với tựa "My Hermes setup, roast me" (cứ chê đi) và nhận lại 517 điểm cùng 116 bình luận. Hệ thống chạy trên một chiếc Mac Apple Silicon nhiều RAM. Sản phẩm là app quản lý công trường: frontend Next.js, API NestJS, postgres, redis, pgbouncer, nginx kèm brotli. Anh dựng nó một mình, Hermes đảm nhận phần lớn việc hiện thực: tự ghi task cho chính nó, viết code, chạy QA, deploy, và tự giữ tài liệu của nó luôn mới. Việc của anh phần lớn là duyệt qua Telegram.
"Công ty" bốn agent
Bốn profile Hermes đóng bốn vai: local-admin là "quản đốc" - nhận tin Telegram, chạy cron, điều phối việc cho các profile khác bằng một dispatcher tự viết (60 giây kiểm tra một lượt: thăng cấp task, thu hồi worker kẹt, cooldown khi lỗi liên tiếp, mỗi profile tối đa một worker đang chạy). coder là "thợ chính" - mặc định dùng model mây, có chuỗi fallback qua nhiều nhà cung cấp, cuối cùng rơi về model cục bộ Qwen 35B chạy bằng LM Studio ngay trên máy Mac khi mây bị giới hạn tốc độ. planner lo nghiên cứu (qua SearXNG tự host), ghi task, và viết nhật ký vận hành mỗi tối vào vault Obsidian. qa-tester chạy kiểm thử trình duyệt đầu-cuối bằng Playwright. Còn một profile "repository" làm thư viện skill chung, các profile kia mount vào dùng chung không nhân bản.
Mẹo chống phình prompt: mỗi profile chỉ nạp những skill trong danh sách whitelist của nó (anh phải vá thêm tính năng này vào Hermes), thay vì profile nào cũng ôm trọn mọi skill.
10 cron job đóng vai "ban kiểm soát"
- Watchdog worker kẹt (15 phút/lần): worker nào task không còn ở trạng thái đang làm thì bị thu hồi - ân hạn 10 phút, trần cứng 90 phút.
- Khám sức khỏe dispatcher (15 phút): phát hiện treo/deadlock, chỉ nhắn Telegram khi có gì đó THẬT SỰ thay đổi so với lần kiểm tra trước.
- Flowkeeper kanban (30 phút): một agent LLM làm "vệ sinh bảng việc" - dọn task mồ côi, lan truyền trạng thái hết-chặn.
- Hậu kiểm sau việc (30 phút): soát các task được đánh dấu hoàn thành trong 2 giờ qua theo một checklist - "hoàn thành" chưa chắc đã hoàn thành.
- Soi độ cũ của ảnh Docker (1 giờ): đối chiếu git SHA nướng trong nhãn image đang chạy với HEAD, lệch là tự kích hoạt redeploy.
- Bắn thử suy luận (4 giờ): gọi completion thật trên TỪNG nhà cung cấp để xác nhận cả chuỗi còn sống.
- Backup DB kanban lúc 03:00 (giữ 7 bản theo ngày), launchd chép sang máy chủ lúc 03:05, giữ 14 bản.
Bộ nhớ 3 tầng và các ranh giới an toàn
Trí nhớ chia ba tầng giống jonathan-rivera nhưng có thêm lớp ngữ nghĩa: MEMORY.md mỗi profile bị giới hạn cứng 2.200 ký tự (vì nó bị nạp vào mọi lượt gọi model, chỉ chứa luật hành vi); kiến thức dài nằm trong vault Obsidian khoảng 14 thư mục chủ đề; mỗi 30 phút một job đồng bộ tăng dần vault sang Hindsight (bộ nhớ ngữ nghĩa mã nguồn mở chạy trên pgvector), và các profile gọi hindsight_recall khi cần - không nhồi thường trực vào system prompt.
Ranh giới an toàn đáng học: mọi khóa API nhốt trong một container riêng - chìa khóa không bao giờ chạm vào container Hermes; Hermes không được cấp quyền Docker socket; và "Hermes không có quyền admin Gitea ở bất kỳ đâu - điều này tôi giữ cứng". Thao tác nguy hiểm (deploy, rebuild, git pull) đi qua một bridge chạy trên máy chủ dưới sự giám sát của launchd.
Vá cả chính Hermes - và được hãng nhận lại
Phiên bản Hermes anh dùng (0.15.1) thiếu hoặc hỏng vài thứ khi chạy ở quy mô này, nên anh bind-mount đè 8 file Python (chỉ đọc) lên site-packages trong container: thêm guardrail chống lặp tool, sửa giờ reset hạn mức tuần của nhà cung cấp, thêm whitelist skill, sửa lỗi file lock trên macOS, làm bảng kanban chỉ-đọc với worker được spawn ra, sửa crash SQLite lúc khởi động, sửa báo động "dispatcher kẹt" giả. Trong phần bình luận anh khoe: một trong các bản vá đó đã được Nous Research tiếp nhận vào bản 0.17 chính thức.
Phần thật thà
Có người hỏi chi phí bảo trì, anh đáp: "Nghe buồn cười khi nói 'không bảo trì' trong khi tôi liên tục thêm bớt - ý tôi là chưa có gì gãy." Và một câu đáng giá khác: "Hermes vẫn thường làm khựng công việc, kể cả khi đã có blueprint và cron job." Bài học cho người mới: mức tự động hóa này là đích đến sau nhiều tháng mày mò của một người có tư duy kỹ sư - hãy bắt đầu nhỏ với một agent và một việc, rồi lớn dần như chính hệ thống này.
Bình luận
Đăng nhập bằng Google để tham gia bình luận và hỏi đáp cùng cộng đồng.