# EwoooC (MOMO Pro System) — Codex 專案工作規則 > 版本: V13.5 > 目標: 把專案知識整理成 Codex 可低成本讀取、可持續維護、可安全落地的單一工作入口。 ## 1. 入口原則 - `AGENTS.md` 是本專案給 Codex 的唯一入口索引。 - `CONSTITUTION.md` 是紅線與不可違反規則。 - `docs/adr/` 保存重大架構決策。 - `docs/memory/README.md` 保存「要讀哪份記憶」的輕量索引。 - `CLAUDE.md` 僅保留為舊文件相容入口,不再作為正式規範來源。 ## 2. Token 節流原則 - 先讀索引,再讀必要文件,禁止每次任務全文掃描所有 Markdown。 - 預設只讀與當前任務直接相關的 1 到 3 份文件。 - ADR 只讀 `docs/adr/README.md` 與命中的單篇 ADR,不整包展開。 - Memory 只讀 `docs/memory/README.md` 與命中的單篇記憶,不整包展開。 - 大型歷史文件、考古文、外部存檔只在任務明確需要時才開啟。 - 若規則已存在於 `CONSTITUTION.md`,不要再到其他文件尋找重複版本。 ## 3. Codex Session SOP ### 開始前 1. 先讀 `AGENTS.md`。 2. 再讀 `CONSTITUTION.md` 中與本次任務直接相關的章節。 3. 讀 `docs/adr/README.md`,只打開命中的 ADR。 4. 讀 `docs/memory/README.md`,只打開命中的 memory。 ### 進行中 - 先看程式碼與實際行為,再回頭補讀文件。 - 若文件與程式碼衝突,以程式碼、部署實況、已接受 ADR 為準,並回補文件。 - 修改時優先維持最小變更面,避免為了整理而擴大 diff。 ### 結束前 - 有新架構決策才新增 ADR。 - 有長期有效且非架構層的專案知識才更新 memory。 - 有 AI 自動化閉環、模型分工、告警/自癒行為變更才更新 `docs/AI_INTELLIGENCE_MODULE_SOT.md`。 - 有全域紅線變更才更新 `CONSTITUTION.md`。 - 有入口或索引變更才更新 `AGENTS.md` 或對應 README。 ## 4. 文件分層 ### `AGENTS.md` - 只放 Codex 工作方式、入口索引、環境摘要、必讀路徑。 - 保持短,不放長篇歷史、細節 SOP、逐步教學。 ### `CONSTITUTION.md` - 只放不可違反規則、跨任務穩定成立的硬性約束。 - 避免放會頻繁變動的操作細節。 ### `docs/adr/` - 只放重大架構決策與後果。 - 新 ADR 需包含 Context、Decision、Alternatives、Consequences。 ### `docs/memory/` - 只放高重用、非決策型、跨 session 容易遺忘但值得保存的資訊。 - 每篇 memory 應短小、單主題、可被索引命中。 ### Skills - 本專案不再維護 `.claude/skills` 或本地技能腳本作為正式規範。 - 若使用者要求「更新 Skills」,預設轉譯為更新 `docs/guides/*.md` 的可重複流程與 `AGENTS.md` 索引,不新增私有 skill 真相來源。 - 若未來需要可重複流程,優先寫成: 1. `docs/guides/*.md` 的操作手冊 2. 可執行腳本 3. 對應 ADR 或 memory 的短索引 ## 4.1 Agent 角色原則 - 本專案保留歷史上的 12 角色分工思維,但改用 Codex 官方建議的「按需分工」模式。 - 角色矩陣不作為 session 開場必讀,詳細說明放在 `docs/guides/codex_agent_roles.md`。 - 預設由單一 Codex 直接完成任務;只有高風險、大規模、或明確可並行時才分角色思考。 - 最小心法:先 `planner`,出問題先 `debugger`,做完一定經過 `critic`。 ## 4.2 一頁式 Dispatch 表 | 如果任務是… | 先用哪個角色思維 | 第二角色 | 收尾 | |---|---|---|---| | 一般功能開發 | `planner` | `fullstack-engineer` | `critic` | | 線上 bug / 排程異常 / Telegram 故障 | `debugger` | `fullstack-engineer` | `critic` | | 大型重構 / 拆大檔 / Blueprint 清理 | `planner` | `refactor-specialist` | `critic` | | DB schema / ORM / 漏表 / migration | `db-expert` | `migration-engineer` | `critic` | | 安全修補 / 權限邊界 / secret 防護 | `vuln-verifier` | `fullstack-engineer` | `critic` | | 外部 API / SDK / 平台規格更新 | `web-researcher` | `tool-expert` | `fullstack-engineer` | | 接手舊模組 / 新 session 重新進場 | `onboarder` | `explorer` | `planner` | | 工具、CI、hook、部署流程選型 | `tool-expert` | `planner` | `critic` | 最小決策規則: - 不確定先 `planner` - 有錯先 `debugger` - 動 DB 先 `db-expert` - 動安全先 `vuln-verifier` - 要上線前一定有 `critic` ## 5. 環境摘要 | 主機 | IP | 角色 | |---|---|---| | 110 | `192.168.0.110` | Gateway、Nginx、Gitea、n8n、Superset | | 188 | `192.168.0.188` | App、DB、生產容器、AutoHeal target(不可作為 Ollama 節點) | | GCP-SSD-1 | `34.87.90.216` | Primary Ollama (High Performance SSD, All Models) | | GCP-SSD-2 | `34.21.145.224` | Secondary Ollama (SSD Optimized, Redundancy) | ## 6. 核心服務 | 容器 | 角色 | 入口 | |---|---|---| | `momo-pro-system` | Flask/Gunicorn 主應用 | `app.py` | | `momo-scheduler` | 排程任務 | `run_scheduler.py` | | `momo-telegram-bot` | Telegram Bot | `run_telegram_bot.py` | | `momo-db` | PostgreSQL + pgvector | `momo-postgres` service | ## 7. 生產安全紅線 - 禁止使用 `docker compose ... --remove-orphans`。 - 禁止影響 `momo-db` 的資料與容器生命週期。 - 跨專案資源邊界以 ADR-011 為準。 - 部署、容器、SSH 類操作先看 `docs/adr/ADR-011-cross-project-resource-isolation.md`。 - `gunicorn.conf.py` 必須透過 `docker-compose.yml` bind mount 進 `momo-app`;除救急外,不以 `docker cp` 當常態部署方式。 - CD rebuild 應先完成 image build,再短暫 recreate 三應用容器;禁止把 no-cache build 時間變成長時間 502。 - HTTP health / Blackbox / CD 探測必須打 `/health`,不可打 Dashboard 首頁 `/`,避免監控流量觸發重型查詢造成 worker starvation。 - 所有 AI Agent / LLM / embedding 呼叫必須 Ollama-first,且只允許 GCP-A `34.87.90.216:11434` → GCP-B `34.21.145.224:11434` → 111 `192.168.0.111:11434` 三主機級聯;Gemini 只能作為備援或 ADR-028 鎖定場景,且預設由 `GEMINI_API_HARD_DISABLED=true` 硬封鎖,188 不可作為 Ollama 節點。 ## 8. 常用入口 - 部署 SOP: `docs/guides/deployment_sop.md` - DevOps 手冊: `docs/guides/devops_handbook.md` - 模組化治理: `docs/guides/modularization_governance.md` - 前端更版路線圖: `docs/guides/frontend_upgrade_roadmap.md` - AI 觀測台 UI 治理: `docs/guides/observability_ui_governance.md` - AI 自動化 Session SOP: `docs/guides/ai_automation_session_sop.md` - Browse.sh 爬蟲診斷手冊: `docs/guides/browse_sh_crawler_playbook.md` - Webcrumbs 共用 UI Runtime: `docs/guides/webcrumbs_shared_runtime.md` - 外部專業 Benchmark: `docs/guides/external_professional_benchmark.md` - AI 競價情報 SOT: `docs/AI_INTELLIGENCE_MODULE_SOT.md` - Agent 角色矩陣: `docs/guides/codex_agent_roles.md` - ADR 索引: `docs/adr/README.md` - Memory 索引: `docs/memory/README.md` - 歷史紀錄: `docs/memory/history_logs.md` - 程式碼模組化盤點: `docs/memory/code_modularization_inventory_20260430.md` - AI 自動化閉環記憶: `docs/memory/ai_automation_closure_20260429.md` - AI 觀測台 UI QA 記憶: `docs/memory/observability_ui_qa_guardrails_20260505.md` - 憑證手冊: `docs/memory/credentials_passbook.md` ## 9. 常用指令 ```bash source venv/bin/activate && python app.py git push origin main ./scripts/quick_review.sh --sync-observability-css ./scripts/quick_review.sh --observability-qa ssh wooo@192.168.0.110 "ssh ollama@192.168.0.188 \"docker ps --format '{{.Names}} | {{.Status}}' | grep momo-; docker exec momo-scheduler env | grep -iE 'TELEGRAM|NVIDIA'; docker logs momo-scheduler --since 1h | grep -E 'Telegram|Error' | tail -10\"" ssh wooo@192.168.0.110 "ssh ollama@192.168.0.188 \"cd /home/ollama/momo-pro && docker compose up -d --no-deps --force-recreate \"" ``` ## 10. 正式規範結論 - Codex 在本專案的正式治理入口是:`AGENTS.md`、`CONSTITUTION.md`、`docs/adr/README.md`、`docs/memory/README.md`;AI 架構事實以 `docs/AI_INTELLIGENCE_MODULE_SOT.md` 為 SOT。 - 其他文件預設都視為按需查閱資料,不是 session 開場必讀。