MicroFish/.claude/onboarding/step1_codebase/02_conventions.md

67 lines
2.8 KiB
Markdown

# Step 1 — CLAUDE.md Conventions Decisions
Decisions made while updating `CLAUDE.md` (Step 1, PROMPT 2).
## Date: 2026-05-06
## Drivers
The recent merge `feat/graphiti-neo4j-migration` (commit `6264828`)
replaced Zep Cloud with **Neo4j + Graphiti** as the primary
knowledge-graph store. The previous CLAUDE.md was out of date.
## Section-by-Section Decisions
### Tech Stack
- **Memory/Graph (UPDATED):** Primary = **Neo4j + Graphiti** (`graphiti-core>=0.3`).
Zep Cloud is now legacy / kept for backwards compatibility only. Code
files still named `zep_*` are historical artefacts; the underlying
store is Neo4j.
- **Versions added:** Vue 3.5, Vite 7, axios 1.14, vue-router 4.6,
vue-i18n 11, D3 7, camel-oasis 0.2.5, camel-ai 0.2.78.
- **i18n:** Documented `vue-i18n` + `/locales/{en,zh,languages}.json`.
### Required Environment Variables
Updated to reflect `app/config.py`:
- Added: `NEO4J_URI`, `NEO4J_USER`, `NEO4J_PASSWORD`, `EMBEDDING_MODEL`.
- Added: optional `LLM_BOOST_*` block (omit entirely if unused).
- Marked `ZEP_API_KEY` as deprecated/compat (empty string OK).
### Conventions (per user direction)
- **Follow the conventions already established in this project.**
- Don't impose external style guides on existing code.
- 4-space indent, snake_case in Python; comments/docstrings mix English
and Chinese — both styles must continue to work.
- No enforced formatter or linter — match the surrounding file.
- New tooling decisions (Ruff, Prettier, etc.) require discussion before
adoption.
### Architecture — Must-Respect Rules
Confirmed all architectural patterns drawn from the actual code:
1. Background tasks via `Task` model (status + progress polling).
2. Reasoning-model output stripping (`<think>` tags, code fences).
3. Simulation IPC via `simulation_ipc.py`.
4. Subprocess cleanup via `SimulationRunner.register_cleanup()`.
5. Startup recovery via `_recover_stuck_projects()`.
6. Per-project graph isolation via `group_id` (Neo4j-specific).
7. Chat prefix injection to suppress tool calls in user-visible
responses.
### Commands
- Added a note that `npm run dev` requires Neo4j running.
- Added a note that no lint/format command is configured.
- Clarified that pytest currently has only one script-style test
(`backend/scripts/test_profile_format.py`).
## What's Now in CLAUDE.md
- Project overview (unchanged).
- Commands (with Neo4j prerequisite note + lint disclaimer).
- Tech stack (Neo4j+Graphiti primary, Zep deprecated, full versions).
- Required env vars (Neo4j block, optional boost block, deprecated zep).
- 5-step pipeline (rephrased to mention Graphiti+Neo4j).
- Backend / frontend structure (added i18n, locale, logger to utils).
- Key implementation conventions (the seven must-respect rules).
- Coding conventions (project-internal, no external imposition).
## Next
- **PROMPT 3:** Review / update `README.md`.