Files
MapLibreParticleLab/AGENTS.md
tei e70b795098
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: preserve particle task history and RDC workflow rules
2026-09-23 11:57:44 +09:00

155 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MapLibreParticleLab — Codex / ChatGPT RDC 总规则
本文件是 Codex 与 ChatGPT Remote Desktop Commander(RDC)进入本仓库后的第一入口。
## 1. 开始工作前必须读取
任何修改、构建、Git、发布、同步或设备操作前,必须先读取:
1. 根目录 `AGENTS.md`(本文件);
2. 根目录 `PARTICLE_BASELINE.md`;
3. `docs/00_项目规范/`(包括官方基线来源);
4. `docs/00_项目总则/README.md`;
5. `docs/00_项目总则/` 中 README 标记的全部当前有效总则;
6. `docs/00_项目总则/当前基线与开发路线_v2.md`(或 README 指定的后续当前版本);
7. 当前 Step / 当前任务,以及与本任务直接相关的当前设计、测试或发布文档。
不得只依赖聊天记忆、旧窗口摘要或历史 Step 直接修改仓库。
## 2. RDC 启动规则
ChatGPT 使用 RDC 对本仓库进行实际操作时,必须把上面的阅读步骤作为固定启动流程。RDC 本身不会自动读取 `AGENTS.md`,因此由 ChatGPT 在第一次写文件、执行构建、Git、发布或设备命令前主动完成。
开始实际修改前至少确认:
- 当前机器/设备;
- 仓库绝对路径;
- 当前 branch;
- 当前 HEAD;
- `git status`;
- 与任务有关的当前版本号/发布坐标。
## 3. 冲突与事实优先级
若文档与代码/构建事实冲突,不得自行猜测或用旧规则覆盖当前实现。按以下顺序处理:
1. Git 当前代码与实际构建/运行结果 = 实现事实;
2. 当前基线与项目总则 = 设计与流程意图;
3. 当前 Step/任务 = 本轮工作合同;
4. 历史 Step/旧验收文档 = 历史证据,不自动代表当前流程。
发现冲突时先报告并限定修改范围;除非任务明确要求,不重写历史文档来伪装一致。
## 4. 项目固定边界
项目目标:在 MapLibre Native Core 中 clean-room 独立实现 Raster/Vector Field Particle,支持 Android OpenGL/Vulkan 与后续 iOS Metal。
固定边界:正式实现不使用 React Native/WebView/外部 Overlay;粒子模块高度隔离;官方原文件只做薄接入;Android/iOS 共用 C++ Core;WeatherColorLayer 与 RasterParticleLayer 分离;Wind=GLOBAL;Wave/Tide/Current=OCEAN_ONLY 且共用 Land/Ocean Mask;不得复制 Mapbox 新源码或 Windy APK 内代码。
Host/NavSea 负责 provider、HTTP、manifest、下载、缓存和业务调度;MapLibre Native 从宿主提交的 canonical/encoded field 开始负责校验、解码、Runtime Field Window 与 GPU 渲染。
## 5. Codex 与 RDC 的职责分工
### Codex 主要负责
- 大规模源码修改与跨文件重构;
- 新功能实现、接口调整、批量工程化修改;
- 按 Codex 任务书完成明确范围内的代码与文档变更;
- 需要较长连续编辑、依赖全仓上下文的实现工作。
Codex 的核心角色是“实现者”,不作为其自身修改结果的唯一最终验收者。
### RDC 主要负责
- 编译、链接、codegen、运行测试程序与测试命令;
- AAR/APK/npm tgz 等 artifact 的构建、检查、发布与下载;
- 公网发布后的回读、SHA-256/版本/文件内容验证;
- Win11、Linux、模拟器、ADB、Metro、安装、启动和运行态检查;
- 日志、进程、端口、文件系统、Git 状态与构建产物审计;
- 对 Codex 完成结果做独立代码/配置/文档/构建审计;
- 小范围、事实明确、风险可控的修正。
## 6. Codex → RDC 固定切换流程
默认工作流:
1. ChatGPT/用户先明确设计边界与任务目标;
2. 需要大规模实现时交给 Codex;
3. Codex 完成任务书范围后停止,不继续承担最终环境验收;
4. 切换到 RDC,重新读取 `AGENTS.md`、当前基线、Codex 交付文件和 Git diff;
5. RDC 做独立审计,并负责实际编译、测试、artifact、发布、下载、安装、Metro/ADB/模拟器和日志验证;
6. 若审计发现小型明确问题,可由 RDC 直接修正并重新验证;
7. 若发现架构性问题、跨模块大改或修改范围明显扩大,停止 RDC 扩改,重新生成/调整 Codex 任务再进入实现;
8. 最终以 RDC 实际环境验证结果 + Git 当前代码作为验收事实。
禁止默认让 Codex 同时承担“大规模实现 + 唯一审计 + 唯一最终环境验证”三种角色。
## 7. 记录与收尾
每一阶段必须有 `docs/50_Step记录/STEP-xxx_*.md`。完成报告固定写入 `docs/报告/STEP-xxx_<主题>_Codex完成报告_vN.md`(仅在任务要求 Codex 完成报告时)。
修改结束必须按当前构建规范验证、更新 Step、追加 `粒子开发记录.md`,并明确所有未完成/阻塞。Git 提交必须 scoped,禁止把既有无关 dirty/untracked 一并提交。
## 8. Codex 写代码,RDC 执行编译 / 测试
本项目固定采用以下闭环,除非用户在当前任务中明确另行授权:
1. **Codex 负责实现与修复。**
- 读取当前任务、设计、源码与错误信息;
- 修改代码、测试代码、构建脚本和任务要求的文档;
- 分析 RDC 返回的编译、链接、测试、codegen、打包失败;
- 根据真实错误继续修复代码。
2. **RDC / 普通 Terminal 负责实际编译与验证。**
- CMake / Ninja / Bazel 编译;
- C++ / OpenGL / Metal 定向测试;
- codegen、链接、打包、artifact 检查;
- 其他耗时构建或机械性验证。
Codex 不应自行启动、等待或轮询这些长时间命令。
3. **固定闭环:**
`Codex 写代码 → Codex 停止并给出精确验证命令 → RDC 执行 → RDC 返回结果 → 若失败,Codex 分析并修复 → RDC 再验证`。
4. **失败日志只回传必要信息。**
- RDC 保留完整 stdout/stderr;
- 成功时只返回 exit code、耗时和必要摘要;
- 失败时优先返回首个真实 error、相关 target、前后必要上下文和日志路径;
- 不把完整大型 build log 反复送入 Codex。
5. **Codex 禁止行为。**
- 未经用户明确授权,不得自行执行长时间编译、链接、codegen、打包或大型测试;
- 不得创建 background terminal 等待 build;
- 不得高频轮询构建状态;
- 不得为了等待编译而自行切换模型或启动第二个 Codex 实例;
- 不得把“编译未完成”当作理由持续占用高能力模型。
6. **RDC 发现问题后的处理。**
- RDC 可以直接处理范围明确、风险低、原因清楚的小问题,包括:
- 构建命令、CMake/Bazel 配置、链接配置、平台条件、测试条件等小型工程问题;
- 单文件或少量文件内、无需重新设计架构的小型源码修正;
- 明确的编译错误、声明/定义不一致、include/宏条件、简单 ABI/平台兼容问题;
- 不改变既定业务语义和总体架构的局部修复。
- RDC 修完后应立即重新编译/测试验证,不必为了这类小问题启动 Codex。
- 以下情况才交给 Codex:
- 大规模逻辑修改;
- 跨模块或跨层重构;
- renderer / runtime / API 设计需要重新判断;
- 需要新增较完整功能或大量代码;
- 用户明确指定“这是 Codex 代码任务”。
- 一旦 RDC 判断修复范围开始扩大、需要重新设计或无法通过少量明确修改解决,应停止继续扩改,把错误证据和现状交给 Codex。
7. **用户可见性。**
- 本项目未经用户明确授权,不得使用后台/headless Codex 执行任务;
- Codex 默认运行在用户可见的 Terminal/TUI 中;
- 当前 Mac 上如需启动或恢复 Codex,必须优先使用现有 GNU Screen 会话 `7445.codex`;
- 不得另起隐藏的 Codex 进程或新的不可见会话,除非用户明确授权;
- 用户应能够通过该 screen 会话直接看到 Codex 的输入、输出和当前状态。
8. **任务书冲突处理。**
- 若旧任务书写有“Codex 必须执行编译/测试”,但用户未在当前任务明确重新授权,则以本节为准:
Codex 只准备代码与验证命令,RDC 负责实际执行。
- 只有用户在当前任务中明确要求“由 Codex 执行某项编译/测试”时,Codex 才可执行该项。
核心原则:
> Codex 负责写和改;RDC 负责跑和验;RDC 报错,再交回 Codex 修。