Source excerpts used for this adoption decision. Low-confidence cases link back to GitHub instead of forcing a misleading quote.
README excerpt
README.md
Install
安装 chat-history-import
Copy the repository root into:
把仓库根目录复制到:
<workspace>/skills/chat-history-import
安装 conversation-history
Copy the companion skill directory into:
把配套 skill 目录复制到:
<workspace>/skills/conversation-history
单机共享安装
For shared install, copy:
如果想做共享安装,复制到:
~/.openclaw/skills/chat-history-import
~/.openclaw/skills/conversation-history
Then start a new OpenClaw session or run:
然后启动一个新的 OpenClaw session,或者运行:
openclaw skills info chat-history-import
openclaw skills info conversation-history
重复安装说明
If OpenClaw already provides conversation-history from a plugin or shared skills directory, avoid installing a second copy into the same scope.
如果 OpenClaw 已经通过插件或 shared skills 目录提供了 conversation-history,就不要在同一个 scope 里再装第二份。
Practical rule:
实践上建议这样处理:
- one
conversation-history per scope is best - workspace-local copies typically override shared copies
- if both exist, check
openclaw skills info conversation-history to see which source is active
- 每个 scope 最好只保留一份
conversation-history - workspace-local 通常会覆盖 shared 版本
- 如果两份都在,运行
openclaw skills info conversation-history 看当前实际生效的是哪一份
SKILL.md excerpt
SKILL.md
What Scripts Do vs. What The Model Does
Scripts handle deterministic work:
- inspect the source archive
- normalize messages into the archive schema
- validate archive compatibility
- write review artifacts
- apply approved memory merges
Validation must be reported in two layers when relevant:
import-batch validation: whether the files written by this import are validfull-archive validation: whether the entire existing archive tree is valid
If full-archive validation fails because of pre-existing files outside this import batch, do not describe the new import itself as failed. Report the historical archive issue separately.
The model handles semantic work:
- decide what each day is worth remembering
- rewrite imported history into the style of existing OpenClaw daily memory
- decide what belongs in
MEMORY.md - compare imported
MEMORY.md candidates against existing MEMORY.md
Do not try to replace this semantic step with Python heuristics.
Also do not assume the bundled Python parsers can recognize every source format.
For unknown input formats, the model may need to inspect the source and write a temporary format-specific parser.
Core Rules
1. Do not import external history into agents/ /sessions/.
2. Treat logs/message-archive-raw/ as the canonical destination for imported raw chat history.
3. Imported archive output must pass {baseDir}/scripts/validate_archive.py and stay compatible with the conversation-archive plugin's archive contract.
4. Daily memory should merge into the existing memory/YYYY-MM-DD.md file for that date.
5. Daily memory body should look like normal OpenClaw memory: concise Chinese bullets, minimal metadata, no “Claude 备份里显示” phrasing.
6. Use a short HTML comment only to mark import provenance.
7. MEMORY.md is the default memory file here and is always review-required before apply.
Import Workflow
1. Inspect
Start by inspecting the source:
python3 {baseDir}/scripts/inspect_import.py /path/to/archive-or-file
Use local file structure first. Use web research only as fallback for unclear formats.
When helpful, check whether the current workspace already has conversation-archive and conversation-history available, so the user can be told what will happen after import:
- archive-only import
- import plus future live archive
- import plus searchable archive recall
Guardrails
- Do not claim imported archive compatibility unless validation passes.
- Do not describe the current import as failed when only pre-existing archive files failed full-archive validation.
- Do not imply that imported history will automatically be searchable unless the workspace also has an archive-retrieval workflow such as
conversation-history. - Do not imply that future live chats will keep flowing into the same archive tree unless
conversation-archive or equivalent live archive plumbing is enabled. - Do not let imported daily memory read like a profile summary.
- Do not silently overwrite existing
MEMORY.md facts. - Do not add bulky metadata into daily memory bodies.
- Do not skip daily-memory review based only on titles, thread names, or sparse sampling.
- Do not apply
MEMORY.md filtering standards to daily memory distillation. - Do not assume unknown source formats can be handled safely without inspection.
- Do not promote a temporary parser into the skill unless it is stable and broadly reusable.
- Do not invent memory-writing preferences when the local OpenClaw environment already exposes them in config or existing memory files.
Read {baseDir}/references/schema.md before changing archive output.