skills/chatlab-convert-cn/SKILL.md
将 ChatLab 暂不支持的本地聊天导出转换为经过验证的 ChatLab JSONL 或 JSON:分析源文件结构,编写并运行本地 Node.js 或 Python 转换脚本,并在导入前核对记录数量。当 ChatLab 无法识别 CSV、HTML、TXT、XML、SQLite/数据库、厂商自定义 JSON/JSONL、压缩包等聊天导出,或用户要求 Agent 适配未知聊天格式时使用。
npx skillsauth add hellodigua/chatlab chatlab-convert-cnInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
在不修改源文件的前提下转换暂不支持的聊天导出。优先交付可复用的转换脚本和经过验证的 JSONL,而不是一次性改写文件。
安装命令:
npx skills add ChatLab/ChatLab --skill chatlab-convert-cn -g
99 并明确统计映射数量。确认唯一、准确的源路径。存在多个候选文件时询问用户,不要猜测。每条命令都要给路径加引号。
chatlab --help
chatlab validate --help
chatlab formats
chatlab import "/absolute/path/to/source" --dry-run --json
如果 dry-run 已经识别源文件,不要重复转换,改用 chatlab-import-cn 完成导入。
如果 chatlab 不存在,或已有版本没有 validate 命令:
npm install -g chatlab-cli@latest;scripts/validate-chatlab.mjs;chatlab formats 和源文件 dry-run,并明确说明无法确认 ChatLab 是否已原生支持该源格式。内置验证器需要 Node.js 20 或更高版本。如果 node --version 也不可用,可以继续编写转换器,但必须把结果标记为“尚未验证”,并引导用户安装 Node.js 和 chatlab-cli;未经同意不要自行安装。
不能用肉眼检查替代 CLI 或内置严格验证器。
先检查文件元信息、编码、压缩包目录、JSON 字段、CSV 表头、XML/HTML 元素名或数据库表结构。不要运行会打印原始消息列的 cat、无限制 head 或 SQL 查询。
确实需要样本值时,编写一个简短的本地检查脚本,只输出:
<TEXT length=42> 这样的正文掩码;压缩包要解压到独立工作目录,并拒绝逃逸该目录的条目。数据库必须只读打开。
编写转换器前,完整阅读 references/chatlab-format.md。记录源字段到 ChatLab 字段的映射,包括:
只有当歧义会改变身份、会话边界、时间含义或本人归属时才询问用户;这些字段不能猜测。
一个 ChatLab 文件只能表示一个会话。如果源文件包含多个会话,要使用防冲突且确定性的文件名分别输出,绝不能误合并。
默认输出 JSONL。只有源文件较小、天然结构化,并且可以明确安全地放入内存时才使用 JSON。
选择当前已安装且最简单的运行时:
转换器必须:
skipped 默认为零。把未知消息映射为类型 99 属于保留,不计为跳过。
先对受限的本地样本或脚本的 sample 模式运行转换器,然后验证。有 CLI 时运行:
chatlab validate "/absolute/path/to/sample.jsonl" --json
没有 CLI 时,定位本 SKILL.md 所在目录,并使用随 Skill 分发的验证器:
node "/absolute/path/to/chatlab-convert-cn/scripts/validate-chatlab.mjs" "/absolute/path/to/sample.jsonl"
修复全部 error 后才能全量转换。逐项检查 warning 并说明为什么可以接受,不能自动忽略。
运行完整转换,然后使用 CLI 或内置验证器验证每一个输出文件。有 CLI 时继续执行导入 dry-run:
chatlab validate "/absolute/path/to/converted.jsonl" --json
chatlab import "/absolute/path/to/converted.jsonl" --dry-run --json
没有 CLI 时运行:
node "/absolute/path/to/chatlab-convert-cn/scripts/validate-chatlab.mjs" "/absolute/path/to/converted.jsonl"
按验证能力区分结果,不能混用结论:
ok: true,转换器输出消息数等于验证器消息数,源消息数等于输出消息数加上用户明确接受的跳过数,且没有隐藏源解析错误;chatlab import --dry-run --json 也返回 ok: true。没有 CLI 时只能报告“格式验证通过”,并提醒用户之后可以安装 CLI 完成 dry-run,或将结果文件拖入 ChatLab;不能声称已经通过导入验证。
只有同时满足以下条件,才能认为转换结果已经通过完整导入验证:
ok: true;ok: true;如果用户只要求转换,在当前环境可完成的验证后停止。报告输出路径、脚本路径、会话数、成员数、消息数、跳过数、警告、映射限制和实际达到的验证级别,不要引用消息正文。
如果用户明确要求导入,使用同一个已验证文件移除 --dry-run:
chatlab import "/absolute/path/to/converted.jsonl" --json
如果此时仍没有 CLI,说明自动导入需要 chatlab-cli,建议安装并征得用户同意;不能把“格式验证通过”当成已经导入。
存在多个输出时,逐个预览并独立导入。报告每个结果的会话 ID 和数量;不要删除转换脚本或转换结果。
development
Convert unsupported local chat exports into validated ChatLab JSONL or JSON by inspecting their structure, writing and running a local Node.js or Python converter, and verifying record counts before import. Use when ChatLab cannot recognize a CSV, HTML, TXT, XML, SQLite/database, vendor-specific JSON/JSONL, archive, or other chat export format, or when a user asks an agent to adapt an unknown chat format for ChatLab.
tools
Safely preview and import local chat export files into ChatLab through the chatlab CLI. Use when a user asks an external agent to import, re-import, or incrementally update ChatLab from a local QQ, WeChat, Telegram, WhatsApp, LINE, Discord, Instagram, Google Chat, ChatLab JSON/JSONL, or other supported chat export.
tools
通过 chatlab CLI 安全预览并将本地聊天导出文件导入 ChatLab。当用户要求外部 Agent 从本地 QQ、微信、Telegram、WhatsApp、LINE、Discord、Instagram、Google Chat、ChatLab JSON/JSONL 或其他受支持的聊天导出文件执行首次导入、重新导入或增量更新时使用。
tools
通过 chatlab CLI 分析本地 ChatLab 聊天记录。当用户要求外部 Agent 检查对话、查找证据、总结话题、比较成员,或基于已导入的 ChatLab 数据分析指定人物或群组关系时使用。