# How we built Hermes to support our entire team
**作者**: Jacqueline Cheong
**日期**: 2026-09-16T16:35:59.000Z
**来源**: [https://x.com/JacquelineSYC19/status/2100262432413528336](https://x.com/JacquelineSYC19/status/2100262432413528336)
---

At the time of writing, Artie is a team of 17. Every one of us works alongside Hermes, an open-source AI agent harness from [@NousResearch](https://x.com/@NousResearch). It runs on a single physical machine in Germany, has a different personality for each team, and dreams at night.
This is how it got that way.
## It started as one engineer's WhatsApp contact
A few months ago, one of our engineers (Ani, [@anirudhsriramzz](https://x.com/@anirudhsriramzz)) was running Hermes for himself. Just a personal setup, and he talked to it over WhatsApp.
Around the same time, Robin, our CTO, came back from a hackathon where a friend had shown him a whole roster of agents running their work. The question he brought back was simple: how do we make that available to everyone at Artie, and not only the engineers?
We looked at OpenClaw first. It's good. But it was easy to watch an agent wander off and do something nobody asked for, and we wanted guardrails before we wanted scale. So we picked Hermes and started thinking about what the guardrails should be.
## A brain with blinders
The way we think about it: every lab has shipped a brain. You can ask it anything and it will answer. Ask it the same thing five times and you'll get five answers, all plausible, all shaped differently.
That's fine for a chat window. It's a problem when you want the brain to do a job. If a sales engineer asks for a risk read on 25 open customer threads, they need the same format every time so they can act on it, compare weeks, and trust the thing.
Racehorses wear blinders so they run the track instead of looking at the crowd. Skills and tools are the blinders. The harness is how you strap them on. Hermes, Codex, Claude Code and the rest are all versions of the same idea: a way to decide what the model is allowed to do and how its output should look.
Once we thought of it that way, the project stopped being 'set up a chatbot' and became 'build the blinders for each job at Artie.'
## A $60 server in Germany runs all of it
Robin and Ani set up the first Hermes in about three hours one weekend. We rented the cheapest plan on Railway, booted Hermes with one default profile, and let the engineering team at it.
Within five days we were hitting Railway's usage limits over and over. Every alert was a prompt to upgrade. That was the first real lesson: the moment a team actually adopts an agent, the bill stops looking like a side project.
Our production infrastructure runs on AWS and stays there. But this was an internal sandbox for agents, not customer infrastructure, and we wanted to see how cheap we could make it. We found Hetzner ([@Hetzner_Online](https://x.com/@Hetzner_Online)), a German hosting company, and bought a physical machine for $60 a year. Every Hermes at Artie runs on that box today.
We're a scrappy company. The whole question of AI at Artie has been: how do we make the team as AI-native as possible without setting money on fire? The Hetzner box was the first answer.
## What we actually wanted
With a machine that could take the load, we sat down and decided what Hermes was for. Two goals.
Everyone gets a sidekick. Engineers, sales, ops, marketing, design. A junior version of yourself that helps you do more, rather than a thing that replaces you. The fear in the industry is that agents take the job. Our experience is the opposite: when everyone has one, everyone ships faster and takes on work they couldn't before.
A human is always in the loop. Hermes can do whatever it's instructed to do. Before anything lands in production, in the docs, or in front of a customer, a person reviews it.
## People spike, so agents should too
Nobody on a team of 17 is good at only one thing. But everyone spikes somewhere. We hire for the spike.
So we asked why our agents should be any different. A junior engineer working on marketing copy is a waste. A junior marketer in the codebase is worse. We modeled the agents the way we think about people: give each one a domain, a personality, and access to the things that domain needs.
That gave us a family of Hermes profiles, one per team.
Hermes Plan and Hermes Code belong to engineering. Plan is for the tech lead: figure out whether we do A then B, or A and B in parallel and C later, and write it down. Plan dispatches the work to a Kanban board. Code picks up the tickets and executes in the background against our existing codebase, opens PRs, and waits. A human reviews the PR, and only then does it merge to master. One task finishing kicks off the next one in the plan.
The side effect nobody predicted: most of engineering's time is now spent on the plan. Historically people lived in the code and the execution. Now they live in the system design and the review, and Hermes Code handles the middle.
Hermes Sales preps before a discovery call. It researches the prospect, figures out their existing stack, and pulls current context on the deal. Because it also has our docs and our engineering knowledge, it can go a step further: if a prospect tells us they're moving data with a particular tool, Hermes can tell the rep where that tool tends to break, say on schema drift, before the call even starts.
Hermes Design and Hermes Code together let marketing design, build, and ship landing pages without pulling in an engineer. Our marketing site is on Next.js and we no longer use a CMS. Design works inside the existing component system, checks whether a component already exists before inventing one, and hands off to Code for implementation.
Hermes BizOps handles the recurring operational work: pipeline reviews, reconciliation, tracker updates, finding the exceptions that need a human.
And there's a default profile for everything that doesn't fit.
Most of us talk to these through Slack. Some use Hermes desktop. Either way, the whole thing shifted from reactive to proactive: the agents already have the codebase, the docs, the CRM, and the internet, so they can answer from everywhere instead of waiting to be fed context.
## Skills, versioned like code, from day one
The profiles are personalities. Skills are what make them competent.
A skill is a reusable procedure for a real class of work: what to check first, which sources are authoritative, what the output looks like, how to verify it. We wrote our own from the first week and put them in a Git repo. Every Hermes reads from there. When a skill changes, it's a commit, with history, that every profile picks up.
We were deliberate about not writing too many. There are a million ways to make AI work for you and most of the internet will tell you to build a 24/7 factory of autonomous agents. If you had infinite tokens, sure. We don't. An agent flipping through hundreds of skills to decide which one to use burns tokens on the deciding. So we cut everything that wasn't obviously worth its cost, and we keep cutting.
The rule we ended up with: if the value is obvious, the cost is justified. If the value is vague, it doesn't get built.
## Hermes dreams
Hermes has a cron system. You can give it a task and a cadence and it runs on its own.
Inspired by Anthropic's work on agent memory, we used it to copy something humans do. During REM sleep, your brain sorts the day. Some things get promoted into long-term memory. Some get dropped. A year where you moved cities and travelled constantly is memorable because nothing repeated.
So every night, when no one is using it, each Hermes dreams. It reviews what it did that day, decides what was useful and what wasn't, promotes the useful parts into memory and demotes the rest. Then it sends our engineer a report. The report says things like: I did this wrong, I did that wrong, I've corrected it, I've stored the correction, and I've forgotten the habit that caused it.
Over weeks, each profile gets more opinionated about what it should and shouldn't be doing for its team. We didn't program the opinions. They came from the dreaming.
## Why we run our own harness
People ask why we don't just use Cursor, or Codex, or Claude Code.
We could, and technically we could move the workloads tomorrow. But because we run and operate Hermes ourselves, the model underneath can be anyone's. If one lab raises prices next week, we switch. Our profiles are stable enough now that swapping the model doesn't break them. On a Monday we might be on an Anthropic model; if the pricing moves, we might be on OpenAI by Friday.
The second reason is features. If Cursor doesn't support the authentication you need, or keeps making the same mistake in your codebase, you file a ticket and wait. When Hermes needs something, we build it. Hermes is part of Artie, wired into our systems the way any internal tool is, instead of something we bolted on and hope keeps working.
AI engineering is expensive right now because the token economics haven't settled. One day running this stuff will be close to free. Until then, owning the harness is how we stay in control of the bill.
## Where it is today, and what's next
Hermes is maybe 85 to 90 percent of the way there. It does real work every day. The first pass isn't always the best pass.
So we're investing in evals. Every time Hermes gets a question and produces an answer, we want to know what took time, which skills it called, which tools failed and why. We're self-hosting Arize Phoenix, which is open source, so we get this without buying another tool. Traces from Hermes go into Phoenix, and Phoenix tells us: this task called five skills and two tools, this tool took the longest, this one failed, here's why.
Underneath that we run telemetry through Datadog: tokens spent, success rate per task, alerts to on-call if a Hermes goes down or the memory store fills up. Every task runs in a sandbox, and we built our own pruning system that cleans the sandboxes out daily.
The point of all of it is that we no longer have to guess whether a change made Hermes better. We change a skill, we get a report. If it's better, it stays. If it's worse, we revert.
We also wrote documentation into the Hermes server itself: what's in your config, what you're allowed to do, what the data means. Any Hermes can read it. Which means we could spin up a Hermes whose only job is to read the eval data and improve the other profiles.
It's basically Hermes Coach. It coaches Hermes.
Seventeen people, one German server, a family of agents that go to sleep every night and wake up a little sharper. We built it because we're small and wanted to ship like we weren't.
## 相关链接
- [Jacqueline Cheong](https://x.com/JacquelineSYC19)
- [@JacquelineSYC19](https://x.com/JacquelineSYC19)
- [79K](https://x.com/JacquelineSYC19/status/2100262432413528336/analytics)
- [@NousResearch](https://x.com/@NousResearch)
- [@anirudhsriramzz](https://x.com/@anirudhsriramzz)
- [@Hetzner_Online](https://x.com/@Hetzner_Online)
- [Upgrade to Premium](https://x.com/i/premium_sign_up)
- [12:35 AM · Sep 17, 2026](https://x.com/JacquelineSYC19/status/2100262432413528336)
- [79.4K Views](https://x.com/JacquelineSYC19/status/2100262432413528336/analytics)
- [View quotes](https://x.com/JacquelineSYC19/status/2100262432413528336/quotes)
---
*导出时间: 2026/9/17 09:03:58*
---
## 中文翻译
# 我们如何打造 Hermes 来支持整个团队
**作者**: Jacqueline Cheong
**日期**: 2026-09-16T16:35:59.000Z
**来源**: [https://x.com/JacquelineSYC19/status/2100262432413528336](https://x.com/JacquelineSYC19/status/2100262432413528336)
---

撰写本文时,Artie 是一个 17 人的团队。我们每个人都与 Hermes 共事——这是来自 [@NousResearch](https://x.com/@NousResearch) 的一个开源 AI 代理框架。它运行在德国的一台物理机器上,为每个团队准备了不同的“人格”,并且会在夜里做梦。
它是如何变成这样的。
## 它最初只是一个工程师的 WhatsApp 联系人
几个月前,我们的一位工程师(Ani,[@anirudhsriramzz](https://x.com/@anirudhsriramzz))自己用起了 Hermes。那只是一个个人配置,他通过 WhatsApp 和它对话。
大约在同一时间,我们的 CTO Robin 从一场黑客马拉松回来,一位朋友向他展示了一整队正在运转工作的代理。他带回来的问题很简单:我们如何让 Artie 的每个人都能用上这种能力,而不仅仅是工程师?
我们先看了 OpenClaw。它很好。但很容易看到代理跑偏去做没人要求的事,我们希望先有护栏,再谈规模化。于是我们选择了 Hermes,并开始思考护栏应该是什么样的。
## 戴着眼罩的大脑
我们的想法是:每家实验室都发布了大脑。你可以问它任何问题,它都会回答。同样的问题问五次,你会得到五个答案,都貌似有理,却形状各异。
这对聊天窗口来说没问题。但当你想让大脑去完成一项工作时,这就成了问题。如果销售工程师需要对 25 个待处理的客户对话做风险评估,他们需要每次都得到相同的格式,才能据此行动、进行周与周之间的对比,并信任这个东西。
赛马戴着眼罩,是为了沿着赛道奔跑而不是看人群。技能和工具就是眼罩。而框架(harness)是你把它们系上去的方式。Hermes、Codex、Claude Code 以及其他工具都是同一思路的不同版本:一种决定模型被允许做什么、以及其输出应该长什么样的方式。
一旦我们这样想,这个项目就不再是“搭建一个聊天机器人”,而是“为 Artie 的每一项工作打造专属的眼罩”。
## 一台 60 美元的德国服务器运行着这一切
Robin 和 Ani 在一个周末用了大约三小时搭起了第一台 Hermes。我们租了 Railway 上最便宜的方案,用一个默认配置启动了 Hermes,让工程团队先试用。
五天之内,我们就反复触发了 Railway 的用量上限。每一次告警都是一次升级的提示。这是第一个真正的教训:当一个团队真正采用代理的那一刻,账单就不再像一个副业项目的开销了。
我们的生产基础设施运行在 AWS 上,并且会一直留在那里。但这是一个面向代理的内部沙箱,不是客户基础设施,我们想看看能把它做得多么便宜。我们找到了 Hetzner([@Hetzner_Online](https://x.com/@Hetzner_Online)),一家德国主机公司,花 60 美元买了一台物理机器,用一年。今天,Artie 的每一台 Hermes 都运行在那台机器上。
我们是一家精打细算的公司。Artie 在 AI 上的全部核心问题就是:如何让团队尽可能 AI 原生化,而不把钱烧掉?那台 Hetzner 机器是第一个答案。
## 我们真正想要的是什么
有了一台能承受负载的机器之后,我们坐下来决定 Hermes 的用途。两个目标。
每个人都有一位助手。工程师、销售、运营、市场、设计。一个帮你做更多事的“初级版自己”,而不是取代你的东西。行业里的担忧是代理会抢走工作。我们的经验恰恰相反:当每个人都拥有一个代理时,每个人交付得更快,也能承担以前无法承担的工作。
人始终在环节之中。Hermes 可以做任何被指示去做的事。但在任何东西进入生产环境、进入文档、或出现在客户面前之前,都必须有人审核。
## 人各有专长,代理也应该如此
在一个 17 人的团队里,没有人只擅长一件事。但每个人都在某处有专长。我们招聘就是看专长。
于是我们问:为什么我们的代理要有所不同?“初级工程师”去写营销文案是浪费,“初级营销员”进入代码库则更糟。我们按照看待人的方式来建模代理:给每一个一个领域、一种人格,以及该领域所需的访问权限。
这给了我们一个 Hermes 配置家族,每个团队一个。
Hermes Plan 和 Hermes Code 属于工程团队。Plan 服务于技术负责人:判断我们是先做 A 再做 B,还是 A、B 并行而 C 稍后,并把它写下来。Plan 把工作分发到一个看板。Code 领取工单,在后台针对我们现有的代码库执行,开 PR,然后等待。人工审核 PR,通过之后才合并到 master。一个任务完成会触发计划中的下一个任务。
一个没人预料到的副作用:工程团队的大部分时间现在都花在计划上。过去人们生活在代码和执行里。现在他们生活在系统设计和审核中,而 Hermes Code 负责中间的部分。
Hermes Sales 在探索性通话之前做准备。它研究潜在客户,摸清他们现有的技术栈,并拉取这笔交易当下的背景。因为它还拥有我们的文档和工程知识,它能更进一步:如果潜在客户告诉我们他们正在用某个特定工具迁移数据,Hermes 可以在通话开始之前就告诉销售代表那个工具容易在哪里出问题,比如 schema 漂移。
Hermes Design 和 Hermes Code 结合起来,让市场营销能够设计、构建并上线落地页,而不需要拉上工程师。我们的营销网站在 Next.js 上,我们已经不再使用 CMS。Design 在现有组件系统内工作,在发明新组件之前先检查组件是否已存在,然后交给 Code 实现。
Hermes BizOps 处理重复性的运营工作:管线复盘、对账、追踪器更新、找出需要人工处理的异常。
还有一个默认配置,用来处理不归以上任何团队管的事。
我们大多数人通过 Slack 与它们交流。有些人在桌面端使用 Hermes。无论哪种方式,整个体系从被动转为主动:这些代理已经掌握了代码库、文档、CRM 和互联网,因此它们可以从各处获取答案,而不是等着被喂给上下文。
## 技能像代码一样版本化,从第一天开始
配置是人格。技能是让它们胜任工作的东西。
一项技能是一个可复用的流程,对应一类真实的工作:先检查什么,哪些信息源是权威的,输出长什么样,如何验证。我们从第一周就自己编写技能,并把它们放进一个 Git 仓库。每一台 Hermes 都从那里读取。当一项技能变更时,那是一次 commit,带历史记录,每个配置都会同步到。
我们刻意控制不写太多。让 AI 为你所用的方法有百万种,互联网上大多数人会告诉你去建一座 7×24 小时运转的自主代理工厂。如果你有无限的 token,当然可以。我们没有。一个代理翻阅几百项技能来决定用哪一项,会把 token 烧在“做决定”上。所以我们砍掉了一切明显不值得其成本的东西,并且一直在砍。
我们最终得出的规则是:如果价值显而易见,成本就是合理的。如果价值模糊,就不建。
## Hermes 会做梦
Hermes 有一个 cron 系统。你可以给它一个任务和一个节奏,它就会自己运行。
受 Anthropic 在代理记忆方面工作的启发,我们用它来模仿人类的一种行为。在 REM 睡眠中,你的大脑会整理这一天。有些东西被提升进长期记忆。有些被丢弃。一个搬了城市又频繁旅行的年份之所以难忘,是因为没有东西是重复的。
所以每天夜里,当没人在使用时,每一台 Hermes 都会做梦。它回顾自己当天做了什么,判断哪些有用、哪些没用,把有用的部分提升进记忆,把其余的降级。然后它给我们的工程师发一份报告。报告会说类似:这件事我做错了,那件事我也做错了,我已经纠正了,我已经存下了纠正,并且我已经忘掉了导致错误的那个习惯。
几周下来,每个配置对自己应该和不应该为团队做什么,会变得更有主见。这些主见不是我们编程出来的。它们来自做梦。
## 为什么我们运行自己的框架
有人问我们为什么不直接用 Cursor、Codex 或 Claude Code。
我们可以,而且严格来说我们明天就能把工作负载迁走。但正因为我们自己运行和运维 Hermes,底层的模型可以是任何人的。如果某家实验室下周涨价,我们就切换。我们的配置现在已经足够稳定,换模型不会破坏它们。周一我们可能在用 Anthropic 的模型;如果价格变动,周五我们可能就用 OpenAI 了。
第二个原因是功能。如果 Cursor 不支持你需要的认证方式,或者在你的代码库里反复犯同一个错误,你只能提工单然后等待。当 Hermes 需要什么时,我们自己造。Hermes 是 Artie 的一部分,像任何内部工具一样接入我们的系统,而不是我们外挂上去、祈祷它一直能用的东西。
AI 工程现在很昂贵,因为 token 的经济学还没有定型。总有一天,运行这些东西的成本会接近免费。在那之前,拥有自己的框架是我们控制账单的方式。
## 如今的进展,以及接下来的计划
Hermes 大概完成了 85% 到 90%。它每天都在做真正的工作。但第一次产出的结果不总是最好的结果。
所以我们正在投入 evals(评估)。每当 Hermes 接到一个问题并给出答案时,我们想知道什么花了时间、它调用了哪些技能、哪些工具失败了以及为什么。我们自托管了开源的 Arize Phoenix,这样不用再买一个工具就能获得这些。Hermes 的追踪数据进入 Phoenix,Phoenix 告诉我们:这个任务调用了五项技能和两个工具,这个工具耗时最长,这个失败了,原因在这里。
在这之下,我们通过 Datadog 运行遥测:消耗的 token、每个任务的成功率、以及当某台 Hermes 宕机或记忆存储被填满时向值班人员发出的告警。每个任务都在沙箱中运行,我们还自建了一套剪枝系统,每天清理沙箱。
这一切的意义在于,我们不再需要猜测某项改动是否让 Hermes 变得更好了。我们改一项技能,就会收到一份报告。如果更好,就保留。如果更差,就回滚。
我们还在 Hermes 服务器本身写入了文档:你的配置里有什么、你被允许做什么、这些数据意味着什么。任何一台 Hermes 都能读到它。这意味着我们可以启动一台 Hermes,它唯一的任务就是阅读评估数据并改进其他配置。
它基本上就是 Hermes Coach。它给 Hermes 当教练。
十七个人,一台德国服务器,一群每晚入睡、醒来时又敏锐一点的代理。我们打造它,是因为我们规模小,却想像不小的公司那样交付。
## 相关链接
- [Jacqueline Cheong](https://x.com/JacquelineSYC19)
- [@JacquelineSYC19](https://x.com/JacquelineSYC19)
- [79K](https://x.com/JacquelineSYC19/status/2100262432413528336/analytics)
- [@NousResearch](https://x.com/@NousResearch)
- [@anirudhsriramzz](https://x.com/@anirudhsriramzz)
- [@Hetzner_Online](https://x.com/@Hetzner_Online)
- [Upgrade to Premium](https://x.com/i/premium_sign_up)
- [12:35 AM · Sep 17, 2026](https://x.com/JacquelineSYC19/status/2100262432413528336)
- [79.4K Views](https://x.com/JacquelineSYC19/status/2100262432413528336/analytics)
- [View quotes](https://x.com/JacquelineSYC19/status/2100262432413528336/quotes)
---
*导出时间: 2026/9/17 09:03:58*