diff --git a/docs/superpowers/specs/2026-07-27-claude-to-codex-project-context-design.md b/docs/superpowers/specs/2026-07-27-claude-to-codex-project-context-design.md new file mode 100644 index 00000000..aa8e10b5 --- /dev/null +++ b/docs/superpowers/specs/2026-07-27-claude-to-codex-project-context-design.md @@ -0,0 +1,101 @@ +# Claude 项目上下文迁移到 Codex:设计说明 + +## 目标 + +在不删除或修改现有 `.claude` 配置的前提下,把 `factory` 项目中仍有效的 Claude 项目知识迁移成 Codex 可稳定使用的项目级上下文。 + +迁移后的配置应做到: + +- Codex 每次进入仓库时都能读取关键项目约束。 +- 较长的背景资料和历史排障记录不会挤占常规任务上下文。 +- 发版流程只在用户明确要求时启用。 +- 不复制数据库口令等敏感信息。 +- Claude 与 Codex 可以继续并行使用。 + +## 现状 + +项目内现有 Claude 配置: + +- `.claude/settings.local.json`:Claude 工具授权历史,包含大量机器相关命令及明文数据库连接信息。 +- `.claude/commands/release.md`:后端发版命令。 +- Claude 用户目录中的项目 memory:包含前后端关系、动态路由、Python 虚拟环境、生产库只读查询约束、脚本忽略规则、发版约束、套壳 App 背景及一次历史缺陷排查。 + +项目当前没有根目录 `CLAUDE.md`、`AGENTS.md` 或项目级 Codex memory。 + +## 采用方案 + +采用分层兼容结构: + +1. 根目录 `AGENTS.md` + - 放置每次工作都应遵守的稳定规则。 + - 内容保持简短,避免把一次性历史排障细节注入所有任务。 + - 指向更详细的 memory 和按需 skill。 + +2. `.agents/skills/release/SKILL.md` + - 把 `.claude/commands/release.md` 转换为 Codex 项目 skill。 + - 仅在用户明确要求“发版”“release”或“bump 版本”时使用。 + - 保留版本生成、更新 `SYS_VERSION`、检查 changelog、提交、打 tag 和推送的顺序。 + - 去掉 Claude 专属的 `Co-Authored-By` 署名。 + - 保留远端写操作前的工作区检查和失败处理约束。 + +3. `.codex/memory/` + - `MEMORY.md` 作为主题索引。 + - 按主题保存项目背景、用户反馈和历史排障资料。 + - 去除 Claude 的 session ID、Claude 专属元数据和 wiki 链接语法。 + - 使用普通 Markdown 相对链接,便于人工和 Codex 按需读取。 + +4. `.claude/` + - 原样保留,不删除、不重写。 + +## 内容映射 + +必须进入 `AGENTS.md` 的规则: + +- 配套前端位于 `../ehs_web`;后端 API 变化时检查对应前端调用。 +- `ehs_web` 菜单和路由由后端动态下发,新页面不要修改 `src/config/route.js`。 +- Django/Python 命令使用项目根目录 `.venv/Scripts/python.exe`。 +- `scripts/*.py` 是有意忽略的一次性脚本,未经明确要求不得 `git add -f`。 +- 不自动提升版本或发版,只有用户明确要求时才执行 release skill。 +- 生产数据库只允许只读查询;任何写操作需要用户另行明确授权。 +- 不在项目文档、skill 或命令中保存数据库口令。 + +保存在 `.codex/memory/` 的资料: + +- 前后端工程关系与统计页面惯例。 +- 生产数据库只读验证方法,但连接参数只指向本地忽略配置,不记录凭据。 +- 前端独立发版流程。 +- 两个 WebView 套壳 App 的位置与交互约定。 +- `material_ofrom` 合批历史缺陷的排查结论和后续接续点。 +- 上述关键反馈规则的详细原因。 + +不迁移的内容: + +- `.claude/settings.local.json` 中的 Claude 权限语法。 +- 临时 scratchpad 路径、历史会话 ID、一次性命令白名单。 +- 数据库用户名、密码及可直接复用的带密码命令。 + +## 安全与错误处理 + +- 新文件中扫描常见密码片段和 `PGPASSWORD`,确认没有凭据泄漏。 +- 不读取或修改被 `.gitignore` 排除的本地数据库配置。 +- 不连接生产数据库验证迁移,因为本任务只迁移文档和工作约束。 +- 不删除 `.claude`,迁移失败时现有 Claude 工作流不受影响。 +- 不执行 release skill;仅验证其结构与引用路径。 + +## 验证 + +完成迁移后执行: + +1. 检查 `AGENTS.md`、`.agents/skills/release/SKILL.md` 和 `.codex/memory/*.md` 均存在。 +2. 检查 `AGENTS.md` 中的索引链接均能解析到实际文件。 +3. 搜索新文件中的密码、`PGPASSWORD`、Claude session ID 和临时 scratchpad 路径。 +4. 对照原 memory 索引,确认所有仍有效主题均已覆盖。 +5. 检查 Git diff,确认 `.claude` 没有变化,且没有混入用户现有未跟踪文件。 + +## 完成标准 + +- Codex 项目级入口、按需发版 skill 和 memory 索引全部建立。 +- 原 Claude 配置保持不变。 +- 原有 9 个 memory 主题均被迁移或被更高层规则覆盖。 +- 新配置不含明文凭据或 Claude 专属运行痕迹。 +- 验证命令通过,Git diff 只包含本次迁移相关文件。