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

2.8 KiB

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.