with one click
athena-migrate
// Athena 版本迁移工具. v9.6.4 重写: 含 v9.6.2 → v9.6.4 破坏式重构 (sprints/ + compound/ + 4 新 ai_state 文件 + lessons.md 三选项交互).
// Athena 版本迁移工具. v9.6.4 重写: 含 v9.6.2 → v9.6.4 破坏式重构 (sprints/ + compound/ + 4 新 ai_state 文件 + lessons.md 三选项交互).
检查项目依赖 (库 / 包 / jar) 是否有可升级版本, 适配多生态: Maven / npm·pnpm·yarn·bun / PyPI / Cargo / Go / RubyGems / Composer / NuGet. 铁律: 版本号必须从官方 registry 在线查询, 不靠记忆/编造, 且区分 "声明的版本是否存在" 与 "是否最新". 用户要求"看有没有要更新的依赖"时使用.
维护 .ai_state/architecture/ 长效档案 (项目现状档). Refactor/System 路径完成后强制更新 ARCHITECTURE.md 总入口 + {type}-{slug}.md 子系统档. 注: 不同于 cx 端的 architect.toml subagent (后者是 design stage 工作者).
Athena 主入口 skill. 接收用户任务, 做 PACE 路由分诊 (brainstorm/roadmap/plan/...), 启动对应 stage. v9.6.4 升级: 加 brainstorm + roadmap 分诊 (铁律 14), 加路由检测自动 ultrathink 提示.
Athena 项目初始化 skill. 在项目中执行 /athena-init 时调用. 职责: 探测平台 / 工具可用性, 创建 .ai_state/ 目录 + 复制 _index.md 模板 + 填入探测结果.
PACE review stage 执行 skill. v9.6.4 升级: 6 维度 (并行 spawn 3 subagent: reviewer + spec-compliance + evaluator).
快速查看当前项目的 Athena 状态: stage / path / sprint / 进度 / 活动 worktree. 无副作用, 只读.
| name | athena-migrate |
| description | Athena 版本迁移工具. v9.6.4 重写: 含 v9.6.2 → v9.6.4 破坏式重构 (sprints/ + compound/ + 4 新 ai_state 文件 + lessons.md 三选项交互). |
| effort | medium |
| 来源 → 目标 | 难度 | 破坏性 |
|---|---|---|
| v9.6.2 → v9.6.4 | 中 | 破坏式 (lessons.md 需用户选择) |
# 检测当前版本
version=$(grep -oP 'version:\s*"\K[\d.]+' .ai_state/_index.md || echo "unknown")
echo "Current: $version"
# 强制备份
backup_dir=".ai_state.backup-$(date +%Y%m%d-%H%M%S)"
cp -r .ai_state "$backup_dir"
echo "✓ 备份: $backup_dir"
mkdir -p .ai_state/sprints
mkdir -p .ai_state/roadmap
mkdir -p .ai_state/architecture
mkdir -p .ai_state/compound
# v9.6.2 details/ → v9.6.4 sprints/legacy-{date}-v962-merge/
if [ -d .ai_state/details ]; then
legacy_slug="$(date +%Y-%m-%d)-legacy-v962-merge"
mkdir -p ".ai_state/sprints/${legacy_slug}/reviews"
# 文件搬迁 (保留全部历史)
[ -f .ai_state/details/design.md ] && mv .ai_state/details/design.md ".ai_state/sprints/${legacy_slug}/"
# reviews/sprint-N.md → reviews/passN.md (改名)
for f in .ai_state/details/reviews/sprint-*.md; do
[ -f "$f" ] || continue
N=$(basename "$f" | sed 's/sprint-\(.*\)\.md/\1/')
mv "$f" ".ai_state/sprints/${legacy_slug}/reviews/pass${N}.md"
done
# cleanup-pass-N.md → cleanup-pass.md (合并若多个)
cleanup_files=(.ai_state/details/cleanup-pass-*.md)
if [ ${#cleanup_files[@]} -gt 0 ]; then
cat .ai_state/details/cleanup-pass-*.md > ".ai_state/sprints/${legacy_slug}/cleanup-pass.md" 2>/dev/null
fi
# 其他文件 (runtime-events.md / proposals.md 等) 整体搬
mv .ai_state/details/* ".ai_state/sprints/${legacy_slug}/" 2>/dev/null
rmdir .ai_state/details
echo "✓ details/ → sprints/${legacy_slug}/"
fi
主 agent 必须询问用户:
检测到 v9.6.2 → v9.6.4 迁移. lessons.md ($(wc -l < .ai_state/lessons.md) 行) 处理选项:
[1] 整体保留为单文件:
→ compound/$(date +%Y-%m-%d)-learning-legacy-v962-migration.md
(推荐: 保留全部历史, 但不分类 doc_type)
[2] 手工逐段拆分:
→ 我引导你, 每段你分类为 learning/trick/decision/explore
(推荐: 分类后好搜, 但花时间)
[3] 全部丢弃:
→ 删除 lessons.md, compound/ 从空开始
(注意: 历史经验丢失. 仅当 lessons.md 全是过时垃圾时选)
选 [1/2/3]:
today=$(date +%Y-%m-%d)
mv .ai_state/lessons.md ".ai_state/compound/${today}-learning-legacy-v962-migration.md"
# 在文件头加 frontmatter (没有则补)
主 agent 读 lessons.md, 按段询问用户:
段落 1: "useEffect 依赖项漏掉导致无限循环..."
分类: [1=learning, 2=trick, 3=decision, 4=explore, s=skip, q=quit]
> 1
slug (kebab-case): useeffect-deps-infinite-loop
✓ 写入 compound/{date}-learning-useeffect-deps-infinite-loop.md (从 templates/learning.md)
每段独立一个 compound 文件, 主 agent 引导填模板字段.
echo "⚠️ 确认删除 lessons.md? 备份在 ${backup_dir}/lessons.md 仍可恢复. (y/N)"
read confirm
[ "$confirm" = "y" ] && rm .ai_state/lessons.md
# 用 python 脚本 (或 yq) 升级 frontmatter
# 新增字段: current_sprint_slug / current_roadmap_slug / counts.compound / next_action / 等
# 详见 ~/.claude/skills/pace/templates/_index.md
主 agent 读旧 _index.md, 与新模板合并 (老字段保留 + 新字段填默认值), 提示用户审阅.
rm -f .ai_state/lessons.md # 已迁移
# details/ 已在 Step 3 移除
echo "✓ 旧文件清理"
# 跑 index-updater 重新扫一遍
node ~/.claude/hooks/index-updater.cjs
# 检查新结构
ls .ai_state/sprints/
ls .ai_state/compound/
echo "✓ 迁移完成. 版本: 9.6.4"
echo " 备份: ${backup_dir}"
echo " 如需回滚: rm -rf .ai_state && mv ${backup_dir} .ai_state"
| 改动 | 影响 |
|---|---|
details/ → sprints/{date}-{slug}/ | 旧路径全失效 |
lessons.md → compound/{date}-{type}-{slug}.md | 旧引用全失效 |
_index.md.current_sprint = N (数字) → current_sprint_slug = "..." (字符串) | hook + skill 全改 |
_index.md.lessons_count → counts.compound.{type} | 4 个分类计数 |
_index.md 新增 8 字段 (current_roadmap_slug / next_action / last_subagent / 等) | 老 frontmatter 不全, 需补 |
| 铁律 12 内容变 (subagent 始终用 + worktree 大功能强制) | 用户使用习惯需调整 |
迁移失败 / 不满意:
# 备份目录就是回滚点
rm -rf .ai_state
mv .ai_state.backup-{timestamp} .ai_state
echo "✓ 已回滚到 v9.6.2"
_index.md.version 字段)