Tại thời điểm viết bài, Artie là một đội ngũ gồm 17 người. Mỗi người trong chúng tôi đều làm việc cùng Hermes, một harness agent AI mã nguồn mở từ @NousResearch. Nó chạy trên một máy vật lý duy nhất tại Đức, có tính cách khác nhau cho từng nhóm và "mơ" vào ban đêm.
Đây là câu chuyện về cách nó trở nên như vậy.
Mọi thứ bắt đầu từ một liên hệ WhatsApp của một kỹ sư
Vài tháng trước, một trong những kỹ sư của chúng tôi (Ani, @anirudhsriramzz) đã tự vận hành Hermes cho cá nhân. Chỉ là một thiết lập riêng tư, và anh ấy trò chuyện với nó qua WhatsApp.
Cùng khoảng thời gian đó, Robin, CTO của chúng tôi, quay lại sau một hackathon nơi một người bạn đã giới thiệu cho anh ấy cả một danh sách các agent đang thực hiện công việc. Câu hỏi anh ấy mang về rất đơn giản: làm thế nào để cung cấp điều đó cho tất cả mọi người tại Artie, chứ không chỉ dành cho các kỹ sư?
Chúng tôi đã xem xét OpenClaw trước tiên. Nó tốt. Nhưng thật dễ dàng để thấy một agent đi lạc hướng và làm những điều không ai yêu cầu, và chúng tôi muốn có các rào chắn bảo vệ (guardrails) trước khi nghĩ đến quy mô. Vì vậy, chúng tôi chọn Hermes và bắt đầu suy nghĩ về việc các rào chắn đó nên như thế nào.
Một bộ não với tấm che mắt
Cách chúng tôi nhìn nhận vấn đề: mỗi phòng thí nghiệm AI đều đã tung ra một bộ não. Bạn có thể hỏi nó bất cứ điều gì và nó sẽ trả lời. Hỏi cùng một điều năm lần và bạn sẽ nhận được năm câu trả lời, tất cả đều hợp lý nhưng được định hình khác nhau.
Điều đó ổn cho một cửa sổ chat. Nhưng nó là một vấn đề khi bạn muốn bộ não đó thực hiện một công việc cụ thể. Nếu một kỹ sư bán hàng yêu cầu đánh giá rủi ro cho 25 luồng khách hàng đang mở, họ cần cùng một định dạng mỗi lần để có thể hành động, so sánh theo tuần và tin tưởng vào kết quả.
Những con ngựa đua đeo tấm che mắt để chúng tập trung chạy trên đường đua thay vì nhìn vào đám đông. Các Skills và Tools chính là những tấm che mắt đó. Harness là cách bạn gắn chúng vào. Hermes, Codex, Claude Code và những sản phẩm khác đều là các phiên bản của cùng một ý tưởng: một cách để quyết định những gì mô hình được phép làm và đầu ra của nó nên trông như thế nào.
Khi chúng tôi nghĩ theo cách đó, dự án không còn là 'thiết lập một chatbot' nữa mà trở thành 'xây dựng những tấm che mắt cho từng công việc tại Artie'.
Một máy chủ $60 ở Đức vận hành tất cả
Robin và Ani đã thiết lập Hermes đầu tiên trong khoảng ba giờ vào một cuối tuần. Chúng tôi thuê gói rẻ nhất trên Railway, khởi động Hermes với một hồ sơ mặc định và để đội ngũ kỹ sư thỏa sức thử nghiệm.
Trong vòng năm ngày, chúng tôi liên tục chạm ngưỡng giới hạn sử dụng của Railway. Mỗi cảnh báo đều là một lời nhắc nâng cấp. Đó là bài học thực tế đầu tiên: ngay khi một đội ngũ thực sự áp dụng một agent, hóa đơn không còn giống như một dự án phụ nữa.
Cơ sở hạ tầng sản xuất của chúng tôi chạy trên AWS và vẫn giữ nguyên như vậy. Nhưng đây là một sandbox nội bộ cho các agent, không phải cơ sở hạ tầng phục vụ khách hàng, và chúng tôi muốn xem mình có thể làm cho nó rẻ đến mức nào. Chúng tôi tìm thấy Hetzner (@Hetzner_Online), một công ty hosting của Đức, và mua một máy vật lý với giá $60 một năm. Mọi instance Hermes tại Artie hiện nay đều chạy trên chiếc máy đó.
Chúng tôi là một công ty nhỏ gọn và linh hoạt. Toàn bộ câu hỏi về AI tại Artie là: làm thế nào để khiến đội ngũ trở nên AI-native nhất có thể mà không đốt tiền vô ích? Chiếc máy Hetzner là câu trả lời đầu tiên.
Những gì chúng tôi thực sự mong muốn
Với một cỗ máy đủ khả năng chịu tải, chúng tôi ngồi xuống và xác định mục đích của Hermes. Hai mục tiêu chính.
Mỗi người đều có một trợ lý. Kỹ sư, bán hàng, vận hành, marketing, thiết kế. Một phiên bản junior của chính bạn giúp bạn làm được nhiều hơn, thay vì một thứ thay thế bạn. Nỗi sợ trong ngành là các agent sẽ chiếm lấy công việc. Trải nghiệm của chúng tôi thì ngược lại: khi mọi người đều có một trợ lý, mọi người đưa sản phẩm ra nhanh hơn và đảm nhận những công việc mà trước đây họ không thể làm.
Luôn có con người trong vòng lặp kiểm soát. Hermes có thể làm bất cứ điều gì được chỉ dẫn. Trước khi bất kỳ thứ gì được đưa vào môi trường production, tài liệu hoặc gửi cho khách hàng, một con người sẽ xem xét nó.
Con người có chuyên môn sâu, agent cũng nên như vậy
Không ai trong một đội ngũ 17 người giỏi chỉ một lĩnh vực duy nhất. Nhưng ai cũng có điểm mạnh đặc biệt. Chúng tôi tuyển dụng dựa trên điểm mạnh đó.
Vì vậy, chúng tôi đặt câu hỏi tại sao các agent của chúng tôi lại phải khác biệt. Một kỹ sư junior làm copywriting marketing là lãng phí. Một marketer junior đụng vào codebase còn tệ hơn. Chúng tôi mô hình hóa các agent theo cách chúng tôi nghĩ về con người: trao cho mỗi agent một lĩnh vực chuyên môn, một tính cách và quyền truy cập vào những thứ mà lĩnh vực đó cần.
Điều này tạo ra một gia đình các hồ sơ Hermes, mỗi hồ sơ dành cho một nhóm.
Hermes Plan và Hermes Code thuộc về đội ngũ kỹ thuật. Plan dành cho tech lead: xác định xem chúng ta làm A rồi B, hay làm A và B song song rồi mới đến C, và ghi chép lại. Plan phân phối công việc lên một bảng Kanban. Code nhận các ticket và thực thi ngầm dựa trên codebase hiện có, mở PR và chờ đợi. Con người xem xét PR, và chỉ khi đó nó mới được merge vào master. Khi một nhiệm vụ hoàn thành, nó kích hoạt nhiệm vụ tiếp theo trong kế hoạch.
Tác dụng phụ mà không ai lường trước được: phần lớn thời gian của đội ngũ kỹ thuật bây giờ dành cho việc lập kế hoạch. Trước đây, mọi người sống trong code và quá trình thực thi. Bây giờ, họ sống trong thiết kế hệ thống và khâu review, còn Hermes Code xử lý phần ở giữa.
Hermes Sales chuẩn bị trước các cuộc gọi khám phá (discovery call). Nó nghiên cứu prospect, xác định stack công nghệ hiện tại của họ và trích xuất ngữ cảnh hiện tại về thương vụ. Vì nó cũng có quyền truy cập vào tài liệu và kiến thức kỹ thuật của chúng tôi, nó có thể tiến xa hơn một bước: nếu prospect nói rằng họ đang di chuyển dữ liệu bằng một công cụ cụ thể, Hermes có thể cho sales biết công cụ đó thường gặp lỗi ở đâu, ví dụ như schema drift, trước khi cuộc gọi thậm chí bắt đầu.
Hermes Design và Hermes Code kết hợp cho phép đội marketing thiết kế, xây dựng và triển khai các landing page mà không cần nhờ đến kỹ sư. Trang web marketing của chúng tôi dùng Next.js và chúng tôi không còn sử dụng CMS. Design làm việc bên trong hệ thống component hiện có, kiểm tra xem component đã tồn tại chưa trước khi tạo mới, và bàn giao cho Code để triển khai.
Hermes BizOps xử lý các công việc vận hành định kỳ: đánh giá pipeline, đối soát, cập nhật tracker, tìm ra các ngoại lệ cần sự can thiệp của con người.
Và có một hồ sơ mặc định cho mọi thứ không phù hợp với các danh mục trên.
Phần lớn chúng tôi tương tác với các agent này thông qua Slack. Một số người dùng Hermes desktop. Dù bằng cách nào, toàn bộ hệ thống đã chuyển từ phản ứng sang chủ động: các agent đã có sẵn codebase, tài liệu, CRM và internet, nên chúng có thể trả lời từ mọi nguồn thay vì chờ đợi được cung cấp ngữ cảnh.
Skills, được version hóa như code, ngay từ ngày đầu
Các hồ sơ là tính cách. Skills là thứ làm cho chúng trở nên năng lực.
Một skill là một quy trình tái sử dụng cho một loại công việc thực tế: cần kiểm tra điều gì trước, nguồn nào là uy tín, đầu ra trông như thế nào, cách xác minh ra sao. Chúng tôi tự viết các skill từ tuần đầu tiên và đặt chúng trong một repo Git. Mọi Hermes đều đọc từ đó. Khi một skill thay đổi, đó là một commit, có lịch sử, mà mọi hồ sơ đều cập nhật.
Chúng tôi cố ý không viết quá nhiều skill. Có hàng triệu cách để làm cho AI phục vụ bạn và hầu hết internet sẽ khuyên bạn xây dựng một nhà máy agent tự động hoạt động 24/7. Nếu bạn có token vô hạn, thì được thôi. Chúng tôi thì không. Một agent lật giở hàng trăm skill để quyết định dùng cái nào sẽ đốt token cho việc ra quyết định đó. Vì vậy, chúng tôi cắt bỏ mọi thứ không rõ ràng đáng với chi phí, và chúng tôi tiếp tục cắt giảm.
Quy tắc chúng tôi chốt lại: nếu giá trị là hiển nhiên, chi phí là xứng đáng. Nếu giá trị mơ hồ, nó sẽ không được xây dựng.
Hermes mơ
Hermes có một hệ thống cron. Bạn có thể giao cho nó một nhiệm vụ và tần suất, và nó sẽ tự chạy.
Lấy cảm hứng từ nghiên cứu của Anthropic về bộ nhớ agent, chúng tôi đã sử dụng nó để sao chép một điều mà con người làm. Trong giấc ngủ REM, não bộ của bạn sắp xếp lại ngày hôm đó. Một số thứ được đẩy vào bộ nhớ dài hạn. Một số bị loại bỏ. Một năm mà bạn chuyển thành phố và du lịch liên tục thì đáng nhớ bởi vì không có gì lặp lại.
Vì vậy, mỗi đêm, khi không ai sử dụng, mỗi Hermes đều mơ. Nó xem xét những gì nó đã làm trong ngày, quyết định điều gì hữu ích và điều gì không, đẩy các phần hữu ích vào bộ nhớ và hạ cấp phần còn lại. Sau đó, nó gửi báo cáo cho kỹ sư của chúng tôi. Báo cáo nói những điều như: Tôi đã làm sai cái này, tôi đã làm sai cái kia, tôi đã sửa nó, tôi đã lưu trữ bản sửa lỗi, và tôi đã quên thói quen gây ra lỗi đó.
Qua nhiều tuần, mỗi hồ sơ trở nên có quan điểm rõ ràng hơn về những gì nó nên và không nên làm cho đội ngũ của mình. Chúng tôi không lập trình những quan điểm đó. Chúng xuất phát từ việc mơ.
Tại sao chúng tôi tự vận hành harness của mình
Mọi người hỏi tại sao chúng tôi không chỉ dùng Cursor, hoặc Codex, hoặc Claude Code.
Chúng tôi có thể, và về mặt kỹ thuật, chúng tôi có thể chuyển khối lượng công việc vào ngày mai. Nhưng vì chúng tôi tự vận hành và quản lý Hermes, mô hình nền tảng bên dưới có thể là của bất kỳ ai. Nếu một phòng thí nghiệm tăng giá vào tuần tới, chúng tôi chuyển đổi. Các hồ sơ của chúng tôi giờ đủ ổn định để việc hoán đổi mô hình không làm hỏng chúng. Vào thứ Hai, chúng tôi có thể đang dùng mô hình của Anthropic; nếu giá cả biến động, chúng tôi có thể chuyển sang OpenAI vào thứ Sáu.
Lý do thứ hai là tính năng. Nếu Cursor không hỗ trợ xác thực bạn cần, hoặc liên tục mắc cùng một lỗi trong codebase của bạn, bạn phải gửi ticket và chờ đợi. Khi Hermes cần một thứ gì đó, chúng tôi tự xây dựng nó. Hermes là một phần của Artie, được tích hợp vào các hệ thống của chúng tôi giống như bất kỳ công cụ nội bộ nào, thay vì một thứ chúng tôi chắp vá và hy vọng nó tiếp tục hoạt động.
Kỹ thuật AI đắt đỏ vào lúc này vì kinh tế token chưa ổn định. Một ngày nào đó, việc chạy những thứ này sẽ gần như miễn phí. Cho đến lúc đó, sở hữu harness là cách chúng tôi kiểm soát hóa đơn.
Tình trạng hiện tại và những gì tiếp theo
Hermes đã đạt khoảng 85 đến 90% mục tiêu. Nó thực hiện công việc thực tế mỗi ngày. Lần chạy đầu tiên không phải lúc nào cũng là lần chạy tốt nhất.
Vì vậy, chúng tôi đang đầu tư vào các bài đánh giá (evals). Mỗi khi Hermes nhận một câu hỏi và tạo ra câu trả lời, chúng tôi muốn biết điều gì tốn thời gian, những skill nào đã được gọi, những tool nào thất bại và tại sao. Chúng tôi tự host Arize Phoenix, một giải pháp mã nguồn mở, để có được thông tin này mà không cần mua thêm công cụ khác. Dấu vết (traces) từ Hermes đi vào Phoenix, và Phoenix cho chúng tôi biết: nhiệm vụ này đã gọi năm skill và hai tool, tool này mất thời gian lâu nhất, cái kia thất bại, đây là lý do.
Bên dưới đó, chúng tôi chạy telemetry qua Datadog: số token đã tiêu thụ, tỷ lệ thành công cho mỗi nhiệm vụ, cảnh báo tới trực ban nếu một Hermes gặp sự cố hoặc kho lưu trữ bộ nhớ đầy. Mỗi nhiệm vụ chạy trong một sandbox, và chúng tôi đã xây dựng hệ thống dọn dẹp (pruning) riêng để làm sạch các sandbox hàng ngày.
Mục đích của tất cả những điều này là chúng tôi không còn phải đoán xem một thay đổi có làm cho Hermes tốt hơn hay không. Chúng tôi thay đổi một skill, chúng tôi nhận được báo cáo. Nếu nó tốt hơn, nó được giữ lại. Nếu nó tệ hơn, chúng tôi hoàn tác.
Chúng tôi cũng viết tài liệu trực tiếp vào server Hermes: cấu hình của bạn chứa gì, bạn được phép làm gì, dữ liệu có ý nghĩa gì. Bất kỳ Hermes nào cũng có thể đọc nó. Điều này có nghĩa là chúng tôi có thể khởi động một Hermes mà nhiệm vụ duy nhất là đọc dữ liệu eval và cải thiện các hồ sơ khác.
Nó về cơ bản là Hermes Coach. Nó huấn luyện Hermes.
Mười bảy người, một máy chủ ở Đức, một gia đình các agent đi ngủ mỗi đêm và thức dậy sắc bén hơn một chút. Chúng tôi xây dựng nó vì chúng tôi nhỏ bé và muốn đưa sản phẩm ra thị trường như thể chúng tôi không hề nhỏ.





