chore(migration): Cursor → Claude Code 反向迁移 + 单轨化(v2)

- 删除 5 个 AGENTS.md(根 + 4 子模块)与 .cursor/、.cursorignore,全部已备份
- 在 CLAUDE.md 末尾追加 5 节迁移必需内容(CLI/Shell 中文与编码、Claude Code 资产入口、Hook 与权限、不破坏原则、历史追溯),保留用户选定的 226 行项目规则全集
- 用户级 12 个 skills 从 ~/.cursor/skills/ 剥包装回迁到 ~/.claude/skills/(neozqyy-cursor-migration → neozqyy-claude-code-migration)
- docs/ai-env-history/ 顶层 10 文件入仓(含 conversation_index.csv、file_impact_index.csv,已脱敏);sessions/ 原文继续本地保留
- 新增 tools/claude-code/migrate_ai_environment.py(--check 14/14 通过)
- 新增 docs/claude_code_migration.md 与 docs/audit/changes/2026-05-02__claude_code_migration.md
- .gitignore 调整:开放 2 个 CSV 索引入仓,保留 sessions/ 与 claude-history/ 排除
- 不混入 124 个业务变更(AI 模块重构、runtime_context、sandbox 等保持 unstaged)
- 备份位置:~/.claude/backups/pre-claude-code-migration-2026-05-02/

第二轮迁移(第一轮 commit 6facb2d 已被 git reset 回滚;本轮策略为追加而非重写 CLAUDE.md)
This commit is contained in:
Neo
2026-05-03 21:08:13 +08:00
parent 81e41730ec
commit f2e0de8fab
36 changed files with 15227 additions and 1041 deletions

View File

@@ -0,0 +1,127 @@
# 变更审计记录Cursor → Claude Code 反向迁移与单轨化
| 字段 | 值 |
|------|-----|
| 日期 | 2026-05-02 |
| 类型 | 开发环境迁移 + 项目规则单轨化 |
| Git HEAD迁移前 | 81e4173 |
| 当前分支 | dev |
| 备注 | 第二轮迁移(第一轮 commit 6facb2d 已被用户 git reset 回滚) |
## 操作摘要
把项目主开发环境从 Cursor 反向迁回 Claude Code并完成**单轨化**:删除 AGENTS.md 双轨、删除 `.cursor/` Cursor 自带格式资产,全面采用 Claude Code 原生 CLAUDE.md / `.claude/` 结构。用户级 12 个手写 skills 从 `~/.cursor/skills/` 剥包装回迁到 `~/.claude/skills/``docs/ai-env-history/` 顶层索引8 个 md/json + 2 个 CSV入仓。新建 `tools/claude-code/migrate_ai_environment.py` 作为决策固化与校验脚本。
**与第一轮的差异**:本轮保留用户在 reset 后选定的 226 行 CLAUDE.md更全**仅追加** Claude Code 必需的 5 节迁移内容CLI/Shell 编码、资产入口、Hook、不破坏原则、历史追溯不重写为精简版。
## 变更文件
### 新增
- `docs/claude_code_migration.md`(迁移说明、决策记录、回滚步骤)
- `docs/audit/changes/2026-05-02__claude_code_migration.md`(本文件)
- `tools/claude-code/migrate_ai_environment.py`(决策固化 + `--check` 模式校验 14 项)
- `docs/ai-env-history/`(顶层 10 个文件首次入仓README + 4 csv + 1 json + 4 md含本次新追加 conversation_index.csv 与 file_impact_index.csv 的 .gitignore 调整)
### 修改
- `CLAUDE.md`(追加 5 节CLI/Shell 中文与编码强制 + Claude Code 资产入口表 + Hook 与权限表 + 不破坏原则 + 历史追溯;保留原 226 行项目规则不动)
- `.gitignore`(开放 conversation_index.csv 与 file_impact_index.csvsessions/ 与 claude-history/ 仍排除)
- `docs/ai-env-history/topic_timeline.md`(追加"反向迁移 Cursor → Claude Code"主题节,已在第一轮保留)
### 删除
- `AGENTS.md`130 行,已备份)
- `apps/backend/AGENTS.md`52 行已备份CLAUDE.md 等价保留)
- `apps/etl/connectors/feiqiu/AGENTS.md`81 行已备份CLAUDE.md 等价保留)
- `apps/demo-miniprogram/AGENTS.md`18 行,已备份)
- `db/AGENTS.md`60 行,已备份)
- `.cursor/`整目录rules/.mdc × 8 + skills/SKILL.md × 5 + hooks.json + ai_env_guard.py + mcp.json已完整备份
- `.cursorignore`(已备份)
### 用户级(仓外)
- 重新生成 `~/.claude/skills/`12 个 skill 目录63 文件;从 `~/.cursor/skills/` 剥包装)
- 备份 `~/.claude/backups/pre-claude-code-migration-2026-05-02/`(项目+用户级源资产 + BACKUP_MANIFEST.md
## 改动注解
### 高风险文件
**`CLAUDE.md`(根)**
- 类型:修改(追加 5 节迁移内容到 226 行版本末尾)
- 原因Claude Code 原生加载 `CLAUDE.md`;保留用户主动选定的 226 行项目规则全集;追加 Claude Code 必需的工作机制描述
- 思路:第一轮重写为 179 行被用户回滚(用户偏好保留完整规则);本轮策略为"追加"而非"重写",把"CLI/Shell 中文与编码"插入"语言(强制)"之后,把"Claude Code 资产入口"+"Hook 与权限"+"不破坏原则"+"历史追溯"4 节追加到末尾
- 风险:高(项目权威规则);回滚:`git checkout HEAD -- CLAUDE.md` 即恢复到 81e4173 版本
**`docs/ai-env-history/` 入仓**
- 类型新增10 个顶层文件首次入仓)
- 原因:上轮 Cursor 迁移产生但未入仓;本次反向迁移要求"复用历史索引",需固化到 git
- 思路先做敏感扫描DSN/API key/JWT/AWS仅 2 个 hit 经核实是文档中描述敏感扫描正则模式自身(误报);`sessions/` 子目录 109 文件因体积大、是原文摘要,继续 .gitignore 保留本地
- 结果10 文件入仓README、apps_current_worklist、cursor_migration_manifest、dev_environment_inventory、topic_timeline.md、topic_timeline.csv、vscode_insiders_extensions.csv、w0-01_worktree_split_execution、conversation_index.csv、file_impact_index.csv无密钥/DSN 泄露
- 风险:低;回滚:`git rm -r --cached docs/ai-env-history/`
**`.cursor/` 整目录删除**
- 类型:删除
- 原因Cursor 自带格式资产,与 Claude Code 不兼容rules/.mdc 内容已提炼进 CLAUDE.mdskills 已镜像到 `.claude/commands/`hooks 已转为 `.claude/hooks/*.py`
- 风险:高(项目级规则源);回滚:备份在 `~/.claude/backups/pre-claude-code-migration-2026-05-02/project_cursor/.cursor/`
**用户级 skills 回迁**
- 类型:新增(~/.claude/skills/ 12 个目录)
- 原因:原则 #2 "用户手写规则、skills 完整迁移";这些 skill 的 description 明确标注"从 Claude Code 迁移",本质是用户在 Claude Code 时代的手写资产,被搬到 Cursor 时包了一层兼容层
- 思路:批量脚本剥掉迁移说明前言、`disable-model-invocation` 字段、Codex 时代尾部话术;按需求文档第 10 节触发策略调整 description自动触发 2 个、显式触发 10 个);`neozqyy-cursor-migration` 重命名为 `neozqyy-claude-code-migration` 并重写指向 Claude 原生路径
- 风险:低(用户目录,备份完整);回滚:`rm -rf ~/.claude/skills`~/.cursor/skills/ 原位保留
### 普通文件
- 4 个子模块 `CLAUDE.md` 未改动diff 显示与对应 AGENTS.md 等价,仅符号差异 `→` vs `->`
- `.claude/commands/``.claude/hooks/``.claude/settings.json``.mcp.json` 未改动
- 用户级 `~/.claude/agents/` 8 个未改动
## 数据库变更
无。本次迁移不涉及任何 schema/迁移/DDL/RLS 变更。
## 风险与回滚
### 风险点
- **中**CLAUDE.md 追加章节后总行数 ~290 行,内容偏多但分章节清晰;下次会话开始会自动加载新版本,按 Claude Code 规范行为
- **低**:用户级 12 个 skills 的触发关键词调整后,模型自动匹配命中率可能轻微下降(显式触发的 10 个本就要求显式调用)
- **低**`.cursor/` 删除后,如果同一仓库被 Cursor 打开Cursor 会读不到规则;用户已确认主用 Claude CodeCursor 作为冷备
- **可忽略**`.ignore` 文件保留ripgrep 用),但 Cursor 时代设置的某些 ignore 规则已删(`.cursorignore`
### 回滚要点
- 完整回滚:见 `docs/claude_code_migration.md` 第 5 节 + `BACKUP_MANIFEST.md`
- 部分回滚(仅恢复 AGENTS.md`~/.claude/backups/pre-claude-code-migration-2026-05-02/project_root/` 复制对应文件
- Skills 回滚:`rm -rf ~/.claude/skills`~/.cursor/skills/ 原位未动)
- CLAUDE.md 回滚到追加前:`git checkout HEAD -- CLAUDE.md`
## 验证
### 已执行
- `python tools/claude-code/migrate_ai_environment.py --check`**14/14 通过**
### 待用户后续验证
- IDE 中输入 `/audit` 等 5 个 slash 命令是否能加载(需 Claude Code 重新加载会话)
- 8 个 subagent 通过 `Agent` 工具调用是否正常
- MCP 测试库 `pg-etl-test` / `pg-app-test` `SELECT 1` 通过
## 合规检查
| 项目 | 状态 |
|------|------|
| `docs/claude_code_migration.md` | 已创建(迁移说明) |
| `docs/audit/changes/2026-05-02__claude_code_migration.md` | 本文件 |
| `docs/audit/audit_dashboard.md` | 已被 124 个业务变更修改M收尾时统一刷新 |
| `docs/ai-env-history/` 入仓 | 顶层 10 文件 |
| 敏感扫描 | 0 hit |
| 备份完整性 | BACKUP_MANIFEST.md 含回滚步骤 |
| 不混入 124 个业务变更 | 仅 add 迁移文件 |