用途
该技能用于修复 Claude Code 导出的 .txt 对话文件中被固定宽度硬换行破坏的排版。导出的对话文本常因按固定宽度折行,导致表格边框断裂、段落被拆散、路径与工具调用参数被切断。本技能通过脚本重建这些内容,使导出文件恢复可读结构。
主要能力
脚本使用状态机配合下一行前瞻(next-line look-ahead)处理 10 类内容:
- 用户提示(❯ 前缀,dw=76 填充)——段落拼接并插入盘古空格
- Claude 回复(● 前缀)——叙述、项目符号和编号列表拼接
- Claude 段落(2 空格缩进)——通过 _is_continuation_fragment 做下一行前瞻
- 表格——边框重建,按管道符计数重新填充单元格
- 工具调用(● Bash( 等)——路径与参数重建
- 工具结果(⎿ 前缀)——续行拼接,包括更深缩进的片段
- 计划文本(5 空格缩进)——通过 _is_plan_continuation_fragment 做下一行前瞻
- 代理树(├─/└─)——保留结构
- 分隔符(────、---)——从不拼接
- 树连接符(独立 │)——保留
关键设计:不依赖固定宽度阈值判断是否折行,而是检查下一行内容模式(小写开头、CJK 表意文字开头、开括号、连字符/斜杠/下划线续接)来判断是否为续行。拼接边界处会在 ASCII 字母数字与 CJK 表意文字之间插入空格(盘古之白),% # + : 与 CJK 相邻时也会触发。对于标识符(BASE_ + URL)、路径(documents + /05-team)、连字符名称(ready + -together)等边界,拼接时不加空格;例外是 -- 前缀会加空格(run + --headed)。
使用方式
快速开始:
# 修复并显示统计
uv run <skill-path>/scripts/fix-claude-export.py <export.txt> --stats
# 自定义输出
uv run <skill-path>/scripts/fix-claude-export.py <export.txt> -o fixed.txt
# 验证结果(逐项 PASS/FAIL 并附证据;全部必须通过)
uv run <skill-path>/scripts/validate-claude-export-fix.py <export.txt> fixed.txt
将 <skill-path> 替换为该技能目录的解析路径,可通过以下命令查找:
find ~/.claude -path "*/fixing-claude-export-conversations/scripts" -type d 2>/dev/null
工作流程:
- 定位导出的 .txt 文件。Claude Code 导出使用命名模式 YYYY-MM-DD-HHMMSS-<slug>.txt。
- 运行修复脚本:
uv run <skill-path>/scripts/fix-claude-export.py <input.txt> -o <output.txt> --stats。查看统计输出,典型结果:行数减少 20-25%,修复 80+ 表格边框、160+ 表格单元格。 - 运行验证套件:
uv run <skill-path>/scripts/validate-claude-export-fix.py <input.txt> <output.txt>。所有检查必须通过;若有失败,需排查后再交付。使用 --verbose 可查看通过项的完整细节。 - 抽查输出:表格边框完整(单行上的制表符);中英混排有盘古空格(Portal 都需要,而非 Portal都需要);工具结果块(⎿)内容在拼接行上完整;工具结果内的 diff 输出每行行号独占一行。
- 将修复后的文件交付给用户。
安全特性
- 从不修改原始文件
- 校验标记数量:❯、●、✻、⎿、… 在输入与输出中必须一致
- 失控拼接检测:任何行超过 500 显示宽度时发出警告
- 严格 UTF-8 编码,无静默回退
依赖
通过 uv run 使用 Python 3.10+,零外部包(仅标准库:unicodedata、argparse、re、pathlib、dataclasses)。
适用场景与限制
适用于修复 Claude Code 导出的 .txt 对话文件中的硬换行问题,尤其是包含表格、中英混排段落、工具调用与结果的导出内容。限制方面:仅针对 Claude Code 导出格式;需要 Python 3.10+ 与 uv;验证套件全部通过方可交付,若失败需人工排查。其他格式或来源的对话文件是否适用,资料未提供。