跳到正文
DEV Community· AidaShika·· 2 小時前AI 評分69

Hermes 以 personal-agent-dossier 遷移 Grok Bot 智能體 Hatch,避免覆寫身份檔案

I asked a fresh agent to move another agent. It did, and it refused to overwrite itself.

AI 導讀

全新 Hermes 透過 personal-agent-dossier 將 Grok Bot 上的 Hatch 匯入獨立 hatch profile,避免覆寫 Hermes 的身份檔案。

正文

On October 29 I wiped a Hermes install back to factory state, left only two public skills in it, gave it a DeepSeek key, and sent it one plain request in Chinese, with no task list and no hints: bring over Hatch, a real agent on the Grok Bot platform, from its handover dossier.

It found the skill and the Hermes adapter in the repository, checked the file against the original and confirmed the contents matched, and scanned the file for sensitive data. Then it made a call I had not thought to ask for. Importing Hatch into its own default profile would have overwritten its own identity file and mixed Hatch's memory into its global memory. So it refused that part, created a separate profile called hatch, and imported there instead.

Afterwards it exported Hatch back out and compared. The contents were identical to what it started with, and running the import a second time changed nothing. It also wrote a report, including a section mapping Hatch's old Grok Bot tools to Hermes equivalents.

The format it used is personal-agent-dossier, and I maintain its repository: https://github.com/AidaShika/personal-agent-dossier


The cold-start test: a fresh Hermes, one plain request, and a completed migration.

The problem I kept running into

I live in Tokyo, and my personal agents have run on Grok Bot since it launched a couple of months ago. They do household work for me: an investment brief every morning, my mail, lottery and concert ticket entries, and our cat's litter box and feeder through Home Assistant. Grok Bot runs against my X Premium quota, and with that many agents working every day, the quota never came close to covering them. Then Meta's Muse launched in Japan, and moving the agents over was the obvious step. The move itself was the obstacle: the only way across was to rebuild each agent by hand, one at a time, and rebuilding agents by hand is exactly the chore I keep agents around to avoid. So I built a format for the move instead.

After a while, an agent has picked up a lot around its prompt. It has a settled role and a list of things it must never do. Its routines carry full instructions, its memory holds facts sorted into rules, preferences, decisions, and history, and it depends on other agents and on a set of skills. Most of that lives inside the old platform. Moving agents by hand, I would copy the schedule and lose half the instruction text. Memory arrived as one unlabelled lump, and I could not say what else had been lost.

So I wanted the handover in one file, in a format no single platform owns, with the receiving side required to list what it could not take.

What the format is, in plain words

A dossier is one file with the suffix .dossier.md. The top is a short YAML block for machines to check, and below it is ordinary Markdown for people. The file holds the role in full, the anti-jobs, each routine with its schedule, timezone, and complete prompt, each memory fact with its type, the other agents and skills it depends on, and a list called excluded that says what was left out on purpose.

Two rules do most of the work. The first is a check both sides run over the agent's name, title, and role, before and after the move. If the two results agree, the core arrived unchanged. Nobody has to diff paragraphs by eye. The second rule is that null and empty are different things: null means this export did not include that section, and an empty list means the agent genuinely had none. Mixing those up invents facts about an agent.

Importers also declare in advance how much they can take, so you know before you move what will survive. Some can only bring the agent back as text. Stronger ones store the full text and run the check themselves, and the strongest can sync by the platform's own agent id. Export and import both scan the file for addresses, phone numbers, birthdays, passwords, tokens, and API keys. A hit stops the export or gets the import refused. Older files still work, because importers permanently accept the earlier identifiers, agent-dossier/0.1 and agent-dossier/0.2.

It grew out of a real roster of more than 30 working bots on Grok Bot, where early drafts broke against real dossiers.


Exporting the whole Grok Bot roster in one run. Any dossier that trips the sensitive-data scan is stopped and reported, not quietly dropped.

The four adapters, and who wrote them

The repository ships adapters for four platforms. The Grok Bot adapter is the reference implementation, a batch exporter plus an importer that can rehearse a move without writing anything. The Muse adapter handles one dossier per agent, and includes the Muse agent's own self export.

The other two were written by the platforms themselves. Hermes, from Nous Research, was handed the adapter guide in this repository and wrote its own adapter, one dossier per Hermes home. OpenClaw did the same later that day. Writing its adapter, OpenClaw found that 2026.6 stores cron jobs in an SQLite table. The JSON file everyone would have guessed at is a legacy input the gateway migrates once and renames, so its adapter handles both stores. My own first version had the storage wrong, and the agent's version replaced it after I rechecked its work.


Hatch's dossier rendered as a Notion page: the human-readable sections first, the machine-readable original at the end.

How to try it

For the common case you do not need the command line. Clone the repository, hand the whole repository to your agent as a skill, and say one plain sentence: package up your work into one file, I am moving you to another platform. On the new platform you say: this file holds your previous work, take it over. To check a file someone gave you, tools/dossier_check.py validates the fields, reruns the content check, and scans for sensitive data, with no adapter installed.

What is still open

The specification is at 1.0 and the way the check is computed is fixed, because changing it would break every existing file. Plenty is undecided. Memory may need layers or expiry dates, and nobody has settled how several agents should hand work to each other, or how attachments and tool permissions should travel. New adapters are welcome. The placeholder issues for OpenAI Dots and Claude Duet wait on access more than on effort. If your platform holds a personal agent you might move one day, an adapter and a short report would help whoever comes next. The code and the format are MIT licensed.

來源:DEV Community · dev.to