OpenClaw / Hermes / paperclip からのスムーズな移行
duduclaw migrate-from は、既存の OpenClaw、Hermes、paperclip の設定を
DuDuClaw に一発で移行するコマンドです。デフォルトはプレビューモードで、
「何をインポートし、何をスキップし、なぜか」を表示するだけです。計画に問題が
なければ --apply を付けて実際に書き込みます。
# プレビュー(ファイルは一切書き込まない)duduclaw migrate-from openclaw
# 計画を確認したうえで実際に適用duduclaw migrate-from openclaw --applyduduclaw migrate-from <openclaw|hermes|paperclip> [--source <path>] [--apply] [--rename]| フラグ | 動作 |
|---|---|
| (なし) | 移行計画をプレビューするのみ。ファイルは書き込まない。 |
--source <path> |
移行元ディレクトリを指定。openclaw/hermes にはデフォルト値あり。paperclip では必須。 |
--apply |
実際に書き込みを実行する。 |
--rename |
同名の agent がある場合、スキップせず -imported サフィックス付きでインポートする。 |
各項目には以下のいずれかのステータスが付きます。
IMPORTED— インポート済み(または今回インポートされる)。PARTIAL— 部分的にインポート、または人手による確認が必要(例:Claude 以外のモデル)。SKIPPED(理由)— 何らかの理由でスキップ(移行元ファイル欠落、パース失敗、セキュリティによるブロックなど)。CONFLICT(理由)— 移行先にすでに値があり、既存の設定を守るため上書きしなかった。
全体の結果は COMPLETE / DEGRADED / PARTIAL のいずれかに集約されます。適用後は
~/.duduclaw/imported/<platform>/migration-report.md に完全なレポートが書き出されます。
すべてのトークン値は「先頭 4 文字+末尾 4 文字」のマスク表示のみで、画面にもレポートにも
平文では出力されません。
プラットフォーム別
Section titled “プラットフォーム別”OpenClaw(~/.openclaw)
Section titled “OpenClaw(~/.openclaw)”duduclaw migrate-from openclaw # デフォルトの移行元は ~/.openclawduduclaw migrate-from openclaw --source /path/to/.openclaw --applyopenclaw.json(JSON5)を読み込み、以下をインポートします。
- Agents:
agents.list[](未指定の場合は単一のmain)。それぞれの workspace persona(SOUL.md)と記憶(MEMORY.md/USER.md/memory/*.mdの箇条書き)も 含む。 - チャンネルトークン:
channels.telegram.botToken、channels.discord.token、channels.slack.botToken+appToken(暗号化して config.toml に書き込み)。 WhatsApp は linked-device のため技術的に移行不可能でSKIPPED。 - モデル:
agents.defaults.model.primary(anthropic/プレフィックスを除去)。 - Anthropic API key:
envセクションと~/.openclaw/.envから取得。他プロバイダーの キーはSKIPPED。 - Cron:旧形式の
cron/jobs.json(防御的にパース)。新しい SQLite cron スキーマは 未検証のためSKIPPED。 - Skills:OpenClaw の優先順位に従って
SKILL.mdフォルダを探索(先にスキャンして からインストール)。
旧ディレクトリ名 ~/.moltbot、~/.clawdbot もサポートしています。
Hermes(~/.hermes)
Section titled “Hermes(~/.hermes)”duduclaw migrate-from hermes --apply# active ではない profile を移行する場合:duduclaw migrate-from hermes --source ~/.hermes/profiles/<name> --applyHermes はシングル agent プラットフォームなので、DuDuClaw agent を 1 つ(id は
hermes)生成します。インポートする内容:
- モデル:
config.yamlのmodel.default。 - チャンネルトークン(
.envから):TELEGRAM_BOT_TOKEN、DISCORD_BOT_TOKEN、SLACK_BOT_TOKEN+SLACK_APP_TOKEN。EMAIL_*チャンネルは v1 では未対応のためSKIPPED。 - Persona / 記憶:
SOUL.md、memories/MEMORY.md、memories/USER.md。 - Cron:
cron/jobs.json(防御的にパース)。 - 移行対象は active な profile のみ。それ以外の profile は
SKIPPEDとして一覧 表示され、--sourceを使って個別に移行するよう案内されます。
paperclip:公式エクスポート経由
Section titled “paperclip:公式エクスポート経由”paperclip のデータは組み込みの PostgreSQL に格納されており、DuDuClaw はこのデータ ベースに直接接続しません。まず paperclip 側でエクスポートしてください。
paperclipai company export <company-id> --out ./export \ --include company,agents,projects,issues,tasks,skills
duduclaw migrate-from paperclip --source ./export --apply--source は必須です(指定しない場合は上記の手順が表示されます)。インポート
する内容:
- Agents:
agents/<slug>/AGENTS.mdの frontmatter(name/title/reportsTo/skills) → DuDuClaw agent、本文 →SOUL.md。reportsToはそのままreports_toに マッピングされる(作成時は上位・下位のトポロジー順にソート。循環を検出した場合は 全員を上位なしに変更しPARTIALを付与)。 - Tasks:
tasks/<slug>/TASK.md→ Task Board。recurring→ cron。 - Skills:
skills/<slug>/SKILL.md→ agent の SKILLS/(先にスキャン)。 - COMPANY.md → 共有 wiki ページ
shared/wiki/imported/paperclip-company.md。 - paperclip の公式エクスポート形式には機密情報が含まれない(channel token /
API key / DB id)ため、チャンネルとキーは常に
SKIPPED。
セキュリティとデータ保全
Section titled “セキュリティとデータ保全”- Skills は先にスキャンしてからインストール:
SKILL.mdは必ず duduclaw-security の prompt-injection スキャナー(ルール 6 種類)を通過する。検出時は fail-closed で インストールされずSKIPPED(security)になる。インポートされた skill はskill_auto_activateをfalse(安全側のデフォルト)のまま維持する。 - 絶対に上書きしない:既存の同名 agent は
SKIPPED(または--renameを使う)。 config.toml にすでにある channel token / API key はCONFLICTになり、元の値は 変更されない。 - トークンは暗号化して保存:channel token と API key は AES-256-GCM で暗号化して から config.toml に書き込まれ、平文でファイルに残ることはない。
- データは失われない:v1 では会話履歴を
sessions.dbにパースして取り込むことは しないが、--applyは元の session / 会話ファイルをそのまま~/.duduclaw/imported/<platform>/raw/にアーカイブし、後から参照できるようにする。
v1 の非対応範囲(正直な境界線)
Section titled “v1 の非対応範囲(正直な境界線)”- 会話履歴のデータベース化(そのままのアーカイブのみ)。
- OpenClaw の新しい SQLite cron / auth-profiles(スキーマ未検証)。
- WhatsApp の linked-device 認証情報(デバイスに紐づいており移行不可)。
- Hermes の active 以外の profile(
--sourceを使って個別に移行可能)。 - paperclip の Postgres への直接読み込み(公式エクスポートを利用すること)。
- 外部記憶バックエンド(Honcho / Mem0 / QMD / LanceDB)。
よくある質問
Section titled “よくある質問”Q:プレビューは何かを変更しますか?
いいえ。--apply を付けない限り、ファイルは一切書き込まれず、チャンネルも起動され
ません。
Q:途中で CONFLICT が出た場合はどうすればよいですか?
CONFLICT は移行先にすでに値があり、既存の設定を守るためにスキップされたことを意味
します。インポートした値に置き換えたい場合は、config.toml 内の古い値を手動で削除
してから再実行するか、--rename を使って別の agent としてインポートしてください。
Q:Claude 以外のモデルはどうなりますか?
[model] preferred にそのまま保持され PARTIAL としてマークされます。どの
runtime(codex / gemini / openai_compat)にマッピングするかは人手での確認が
必要になります。DuDuClaw が代わりに推測することはありません。