Repository navigation
v1.1.0: P1 完善 — schema 版本化 + 环境变量兼容 + 致谢规范化
v1.1.0: P1 完善 — schema 版本化 + 环境变量兼容 + 致谢规范化
🆕 新功能
- state.json schema 版本化与自动迁移
旧项目打开时自动迁移到新 schema,无需手动处理:
新增 SCHEMA_VERSION = 1 常量和 migrate_state() 函数
init_project 写入 schema_version: 1 字段
load_state 自动检测旧版(project_info 字段)迁移到 project,并持久化迁移结果
migrate_state 返回 (state, changed) 元组,幂等可重复调用
cmd_status / cmd_contract 不再依赖 project_info fallback
迁移示例:
- 环境变量双前缀兼容(CODEX_ + CLAUDE_)
本工具现在同时兼容 Codex 和 Claude Code 两种环境:
8 个 SKILL.md:
fiction-doctor: CLAUDE_PLUGIN_ROOT → CODEX_PLUGIN_ROOT 优先 fallback 到 CLAUDE_PLUGIN_ROOT
README 新增"环境变量兼容性"说明段落
用户无需任何额外配置,无论用 Codex 还是 Claude Code 都能正常工作。
🔧 重构
3. metadata.openclaw.sources 迁移到致谢章节
14 个 SKILL.md 从 frontmatter 移除非标准 metadata.openclaw.sources 字段(Codex/WorkBuddy skill 不识别此字段),改为在每个文件末尾添加 ## 致谢 章节列出来源仓库:
markdown
致谢
本 skill 的开发参考了以下开源项目的思路与实现:
- lingfengQAQ/webnovel-writer
- worldwonderer/oh-story-claudecode
符合 Codex/WorkBuddy skill 标准字段规范,frontmatter 只保留 name 和 description。
- yaml 描述与 SKILL.md 同步
fiction-write/agents/openai.yaml: 描述更新为含修改模式("写作 Normal/Deep 双模式 + 修改 Re-craft/Rewrite 双模式")
fiction-start/SKILL.md: 旧 fiction-revise 引用改为 fiction-write 内建变更传播流程
fiction-write/SKILL.md: 移除旧的 fiction-revise 变更传播引用
📊 变更统计
17 文件变更
+201 行 / -104 行
涉及 14 个 SKILL.md + 1 个 yaml + fiction.py + README.md
⬆️ 升级方法
bash
git pull origin main
或指定版本
git checkout v1.1.0
从 v1.0.3 升级无破坏性变更:
旧 state.json 会自动迁移(幂等,可重复打开)
环境变量原 CLAUDE_* 仍可用,新增 CODEX_* 优先级更高
所有 skill 行为保持兼容
🔍 验证方法
bash
1. 编码检测
python scripts/check_encoding.py .
期望: 105+ OK, 0 BAD
2. CLI 参数
python scripts/fiction.py doctor --help # 应显示 --chapter/--deep
python scripts/fiction.py export --help # 应显示 --format/--output
3. schema 迁移测试(新建项目检查 schema_version)
python scripts/fiction.py init --title test --author me --genre urban /tmp/test
cat /tmp/test/.novel/state.json # 应含 "schema_version": 1
📝 后续待办(P2/P3,非阻塞)
fiction-write/SKILL.md 拆分(当前 16KB 偏大)
agents 编排描述(reviewer/context/data-agent)与脚本实现对齐
cmd_memory 加 list/search/delete 子命令
LICENSE 文件
pytest 测试用例
pre-commit hook
CHANGELOG
完整变更: v1.0.3...v1.1.0