OpenClaw to Hermes Migration (7/13) — A 5-Week Plan: Function Category Breakdown

Week 1 is the SQLite schema, Week 5 is the cutover


ํ•ต์‹ฌ ์š”์•ฝ

What this post covers: - Transplant unit design: collapsing 30+ scripts into a function category breakdown (A–K) to fix migration units at a manageable count. - 5-week cutover schedule template: Week 1 schema → Week 2 migration → Week 3 install → Week 4 asset transplant → Week 5 dual-run + cutover. - Three deliverable specs: detailed schedule, Profile definitions, memcore API spec — required fields and inter-document relationships for each.

Function Category Breakdown — Grouping by Functional Unit

Enumerating transplant specs at the script level expands the move/verification surface to 30+ units. Grouping by functional unit reduces that same scope to a tractable set. The grouping criterion is "shares the same schema or protocol," and the table below is the result of applying that criterion.

Category Core
A Memory System 4-tier, Retain tags, U-tag dialectic, Reflect, micro-cycle, Topic-Cued Recall, semantic search
B Heartbeat 3-tier + 11 escalation reasons + Quota check
C Self-Review 3-stage + Skill Evolution Loop
D Daily Audit Phase A–E (guide/update detection, diagnosis, aggregation, final review)
E Researcher Deep Mode 5-round AutoSearch + 3-tier web access
F Channel Routing Discord primary channel + Telegram Forum 6 topics
G Profile Mapping Workspaces → 5–6 profiles
H Hooks PostToolUse, PreToolUse, SessionStart/End/Compact
I Security Model loopback, token, dmPolicy, single-user scope
J Auto Update com.hermes.update-check (new)
K Deprecation Targets OpenClaw-specific skills and scripts

How It Works

Grouping by category produces two effects. First, the transplant checklist shrinks from N (scripts) to K (categories). Second, because items within a category share the same data structures, verification scenarios need to be designed only once and reused across all internal items. Take Heartbeat (B) as an example: the 3-tier logic, 11 escalation reasons, and Quota check all share the same message schema, so a single regression test covers the entire group.

Limitations

Cross-category dependencies (e.g., A Memory ↔ H Hooks) must be tracked separately. Grouping alone does not fix execution order; the actual sequence in the 5-week schedule is derived from the dependency graph.

5-Week Schedule — Dependency Order and Verification Checkpoints

Week Work
1 memcore SQLite schema design + library skeleton
2 bank/memcore conversion (rsync snapshot + migration)
3 Hermes install + 1 profile + MemoryProvider adapter
4 Transplant 8 preserved assets + define Hermes profiles (5–6)
5 Dual-run + verification + cutover

Each week is broken down to input / output / verification / rollback conditions at the day level. At any interruption point in the migration, it must be possible to reconstruct "which stage is currently active." The Week 5 dual-run — running both systems simultaneously before stopping one — carries the most densely defined rollback conditions.

Three Deliverable Specs

1. Hermes-Migration-Detailed-Plan.md

The 5-week schedule itemized as Day 1–35. Each day's input, output, verification criteria, and rollback conditions are defined in table form. The objective: at any arbitrary point mid-migration, "current state · next action · recovery path on failure" must be queryable from a single document.

2. Hermes-Profile-Definitions.md

Draft AGENTS.md for 5–6 Hermes profiles: - mir-coordinator — user persona, routing - research — web research + Deep Mode - writer — writing - coder — coding + CLI - google-workspace — Gmail / Calendar - memory-ops — Reflect, audit, housekeeping

Each profile explicitly declares its active skill categories. The compression from multiple workspaces down to 6 profiles is the core design point and is the tangible output of category G (Profile Mapping).

3. memcore-API-Spec.md

External API signatures for the memcore library. Includes a mapping table to Hermes's MemoryProvider interface — initialize / system_prompt_block / prefetch / sync_turn / get_tool_schemas / handle_tool_call / shutdown / on_session_end / on_pre_compress / on_memory_write / on_delegation. This mapping is what makes the Week 3 adapter work mechanical rather than exploratory.

Applicability and Open Questions

Applicability. The function grouping + 5-week cutover template is reusable for any migration satisfying these three conditions: (1) the source system is decomposable into script/skill units; (2) there are sufficient resources to run both systems in parallel; (3) an adapter layer sharing memory/state between the two can be designed. If any of the three conditions is absent, the Week 5 dual-run cannot be structured.

Open questions. - When the category count exceeds the current breakdown, the grouping benefit diminishes. Where is the upper bound? - Is day-level granularity sufficient for Week 5 cutover rollback conditions, or does it need to go down to the hour level? - The MemoryProvider interface's on_pre_compress hook does not map 1:1 to OpenClaw's existing compression logic. Should this gap be absorbed in the adapter, or should the interface itself be adjusted?

The next post covers the Week 1–2 execution results — SQLite schema structure, FTS5 index configuration, and measurements at the point where 7 of 8 preserved assets were transplanted.

Series overview: Series index

๋Œ“๊ธ€

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

Agent Memory Engine (2/10) — Building an AI Agent Memory System with SQLite Alone

"ML Foundations (9/9) — PyTorch vs TensorFlow, and the Road to Local LLMs"

"RAG Core Study (14/26) — Evaluation Sets with RAGAS & DeepEval"

"ML Foundations (8/9) — Deep Learning Architectures: CNN, RNN, Attention"

"ML Foundations (7/9) — Deep Learning Training: Optimizers, Regularization, Initialization"

OpenClaw to Hermes Migration (2/13) — What to Preserve, Partially Port, or Discard

AI Agents I Built (5/7) — Building an Automated Blogger API Publishing System