本文件是仓库级执行入口,面向 AI 代理优先,同时兼顾人类开发者。
目标:
- 统一项目执行路径(先看哪里、先跑什么、门禁是什么)。
- 明确文档分工,降低跨文档来回切换成本。
- 固化高风险硬规则(尤其是 Prisma 迁移流程)。
文档分工:
AGENTS.md:入口导航 + 硬边界 + 执行门禁。README.md:项目全貌、联调背景、接口与运行说明。docs/standards/*.md:专项规范细则(权威来源)。docs/solutions/:历史问题解决与流程经验库(按类别组织,frontmatter 包含module/tags/problem_type),在相关模块实现或排障时可检索参考。
apps/backend:NestJS API、Agent 工作流、Prisma 数据层。apps/frontend:Next.js 前端演示应用。packages/chat-stream-protocol:聊天 SSE 协议工具包(event envelope、SSE framing/parsing、terminal 判定、轻量 protocol UI helpers)。packages/shared-types:前后端共享类型定义。infra:本地依赖编排(如infra/docker-compose.yml)。data:本地数据与运行期数据目录。
- 安装依赖:
pnpm install
- 启动基础依赖:
docker compose -f infra/docker-compose.yml up -d
- 初始化环境变量:
cp apps/backend/.env.example apps/backend/.envcp apps/frontend/.env.example apps/frontend/.env
- 启动前后端:
pnpm dev
- 浏览器默认从网关入口联调:
http://localhost:3000/data-sources
- 快速网关 smoke(可选但推荐):
node tests/smoke/nginx-dev-gateway-smoke.mjs
常用后端 DB 命令:
- 生成 Prisma Client:
pnpm --filter @text2sql/backend run prisma:generate - 开发环境生成迁移:
pnpm --filter @text2sql/backend run prisma:migrate --name <migration_name> - 空库回放校验:
pnpm --filter @text2sql/backend run prisma:verify-empty-db
Root 级(跨项目):
pnpm run format:checkpnpm run testpnpm run build
Backend 级:
pnpm --filter @text2sql/backend run lintpnpm --filter @text2sql/backend run buildpnpm --filter @text2sql/backend run testpnpm --filter @text2sql/backend run prisma:verify-empty-db
Frontend 级:
pnpm --filter @text2sql/frontend run lintpnpm --filter @text2sql/frontend run testpnpm --filter @text2sql/frontend run build
CI 参考:
.github/workflows/backend-prisma-quality.yml.github/workflows/frontend-quality.yml
- 统一入口:
http://localhost:3000可访问,/data-sources -> 创建会话 -> 发送消息主链路可用。 /settings入口可访问,至少包含LLM 模型、RAG 配置、RAG 运行三个 tab;其中配置变更仅在RAG 配置下操作。RAG 配置健康检查需同时覆盖dry-check(草稿)与persisted-check(已保存),并校验返回checkedAgainst=draft|persisted、reasonCode可解释,且检测失败不应清空草稿输入。- 网关 smoke:
node tests/smoke/nginx-dev-gateway-smoke.mjs可区分 frontend/backend/stream 三类上游失败。 - 健康检查:
GET http://localhost:3002/health应可用(后端内部端口检查),且dependencies.ragConfig.embedding/rerank应可见当前激活 provider+model+configSource 摘要。 - 若本次改动涉及流式/工具调用:需关注 stream 与 tool 相关字段一致性(细节见 LLM 迁移规范)。
- 若本次改动涉及 Text2SQL v2 read-model/delivery hard-cut:执行
pnpm --filter @text2sql/backend run collect:text2sql-v2-eval-gate- (发布阻断)
pnpm --filter @text2sql/backend run collect:text2sql-v2-eval-gate:strict pnpm --filter @text2sql/backend run collect:text2sql-v2-focused-coverage-gatepnpm run text2sql:no-legacy-compat:check- 并核对
rollout.recommendedStage与rollout.rollbackSuggested。
- 若本次改动涉及 modeling parity 指标:执行
pnpm --filter @text2sql/backend run collect:modeling-parity-shadow-gate,确认relationshipPlatform/semanticSpine/modelingWorkspace三维输出可生成。 - 若本次改动需要发布门禁(go/no-go):执行
pnpm --filter @text2sql/backend run collect:modeling-parity-shadow-gate:strict,并检查rollout.recommendedStage与rollout.rollbackSuggested。
来源:docs/standards/backend-prisma-migration-spec.md
适用范围:
apps/backend/prisma/schema.prismaapps/backend/prisma.config.tsapps/backend/prisma/migrations/*/migration.sql
关键 MUST:
- 迁移 SQL 必须由 Prisma CLI 生成。
- 结构变更必须先改
schema.prisma,再生成迁移。 - 表结构变更时
prisma:generate必跑。
必跑门禁:
pnpm --filter @text2sql/backend run prisma:generatepnpm --filter @text2sql/backend run prisma:verify-empty-db
来源:docs/standards/frontend-react-shadcn-spec.md
适用范围:
apps/frontend/src/appapps/frontend/src/components
关键 MUST:
- React 函数组件 + shadcn-ui 体系。
- 业务代码禁止直接使用原生 HTML UI 交互控件(表单/交互类);必须优先复用 shadcn 组件(含业务封装)。
input/select/button/textarea仅为示例,不限于此。 - Tailwind CSS v4,不回退 v3 模式。
- 保持核心演示链路可用(创建会话/发送消息/SQL 预览)。
- 涉及 RAG 可见化改造时,必须覆盖 runId(sync/stream)一致性、
selected_context四态矩阵、terminal 不回退 loading、375px 与键盘可达性(Enter/Space+aria-expanded)验收。
必跑门禁:
pnpm --filter @text2sql/frontend run lintpnpm --filter @text2sql/frontend run testpnpm --filter @text2sql/frontend run build
来源:docs/standards/llm-stream-tool-migration-spec.md
适用范围:
- 后端 LLM gateway、同步消息接口、SSE 流式接口、工具调用链路。
关键 MUST:
- 同步接口保持
AgentRunResponse合同。 - 流式事件字段必须完整(
type/runId/sessionId/at/data)。 - 工具调用走 allowlist,失败可追踪。
- Text2SQL v2 active runtime seam 固定为
conversation/application/workflow/Text2SQLWorkflowRunner -> conversation/runtime/stages/RunV2LangGraphStage -> conversation/runtime/langgraph/Text2SqlV2LangGraphRunnerService。 - 若接入提示词模板运行时,必须保证
run.trace.promptTemplate与delivery.evidence.promptTemplate字段语义一致。 - hard-cut 生效后,run read/save-view/replay 仅支持显式 v2 读模型(
run.trace.v2.version/stageOrder/stages);历史 shape 必须返回410 LEGACY_RUN_UNSUPPORTED(见 runbook)。 - 叙事边界必须明确:
007 closeout仅覆盖 LangGraph topology +delegation=0,008 strict-completion额外覆盖 metadata grounding / correction grounding / context-pack parity(含strictCompletionRows门禁),009 runtime-intelligence额外覆盖runtimePlan/artifactRefs/smartDefaults(含 runtime coverage rows 与 eval fixture families)。
必跑检查:
GET http://localhost:3002/health中 stream/tool-calling 相关字段应符合预期。pnpm --filter @text2sql/backend run collect:modeling-parity-shadow-gate输出需包含modelingWorkspace.metrics.deployBlockRate/rollbackRate/schemaBacklogAvg与rollout.recommendedStage。pnpm --filter @text2sql/backend run collect:text2sql-v2-eval-gate输出需包含 closeout 五门禁(evalMetrics/evalTraceability/characterization/noLegacyCompat/focusedCoverage)及rollout.recommendedStage/rollbackSuggested/reasons。pnpm --filter @text2sql/backend run collect:text2sql-v2-focused-coverage-gate输出需包含 scoped coverage、关键文件门槛、A-M flow blockers 与 eval fixture 行为测试追溯。- strict-completion 语义补齐后,focused coverage 输出还需包含
strictCompletionRows评估结果(metadata grounding / correction grounding / context-pack parity)。 - runtime-intelligence 生效后,focused/eval 输出还需覆盖
runtime-plan-consistency、artifact-ref-compaction、smart-defaults-evidence、plain-general-no-sql、large-context-compaction、validation-diagnostics、correction-grounding、execution-preview、all-stage-stream-lifecycle;focused coverage 还需包含runtimeArtifactProducerRows与streamLifecycleRows。 pnpm run text2sql:no-legacy-compat:check必须通过。
来源:docs/standards/governance-terminology-spec.md
适用范围:
apps/backend/src/modules/governance/**apps/frontend/src/lib/admin-api-client.tsdocs/standards/**README.md
关键 MUST:
- 治理主链路仅使用
workspace datasource binding、table-permissions、policyVersion。 - 不得在治理主链路继续接受 legacy 路由/字段(
table-acl、acl、rule-group)。 - 历史术语只允许出现在明确迁移上下文(带迁移注记),不得作为 active narrative。
必跑检查:
pnpm run governance:terminology:check
来源:docs/standards/backend-business-capability-topology-spec.md
适用范围:
apps/backend/src/modules/**apps/backend/src/app.module.tsscripts/check-backend-capability-boundaries.ts
关键 MUST:
- 后端一级能力域固定为
conversation/governance/knowledge/platform。 - 依赖方向固定:
conversation -> governance|knowledge|platform,governance|knowledge -> platform。 platform禁止反向依赖业务域;跨域调用仅允许稳定入口(facade/public entry)。- 禁止新增“宽导出中枢”形态依赖。
- 业务域及其兼容根模块(
chat/agent/memory/glossary/rag)禁止直接 importmodules/data/**实现路径。 - 业务域及其兼容根模块禁止依赖
platform/data/data.module.ts(PlatformDataModule聚合入口)。 - 能力边界门禁输出必须包含 RAG 专项
ragImportReport(blocked legacy active/direct implementation、allowed shared internal、canonical public entry)。 conversation -> knowledge/**计数基线默认9(可通过BACKEND_CAPABILITY_BOUNDARY_CONVERSATION_KNOWLEDGE_BASELINE覆盖)。
必跑检查:
pnpm run backend:capability-boundary:check(落地后)
说明:
- 以上仅为执行摘要,细节规则以 standards 原文为准。
涉及表/列/索引/约束/外键变更时,必须遵循:
- 修改
apps/backend/prisma/schema.prisma - 生成迁移:
pnpm --filter @text2sql/backend run prisma:migrate --name <migration_name>
- 生成 Client(必跑):
pnpm --filter @text2sql/backend run prisma:generate
严格禁止:
- 手写或手改
apps/backend/prisma/migrations/*/migration.sql - 跳过
prisma:generate直接提交结构改动
以下任一发生变化,必须同步更新本文件:
README.md的关键流程/联调说明变化docs/standards/*.md的 MUST 或门禁变化package.json/apps/*/package.json脚本变化.github/workflows/*quality*.yml门禁步骤变化
维护原则:
- 只写可在仓库中追溯验证的命令与路径。
- 保持“入口文档”定位,不扩展为故障百科。
当任务目标是“设计前端页面”或“优化页面视觉与交互”时,默认自动启用 frontend-design skill(无需额外确认)。
触发范围(示例):
- 新页面视觉设计(落地页、后台页、仪表盘、设置页等)
- 现有页面改版(布局、层级、配色、排版、动效)
- 组件交互体验优化(状态、可用性、视觉一致性)
执行顺序:
- 先按
frontend-design完成上下文检测、视觉方案与交互方案。 - 再在本仓库既有前端规范下实现(遵循
docs/standards/frontend-react-shadcn-spec.md)。 - 完成后执行一次视觉验收(优先项目已有浏览器工具),并补跑前端质量门禁命令。
例外:
- 若用户明确指定其他设计方向或流程,以用户指令为最高优先级。
当需求涉及“理解 Text2SQL 全链路(含 RAG)”时,优先阅读以下 canonical 文档,再进入实现/排障:
docs/rag-understanding/text2sql-rag-end-to-end-understanding.md(主白皮书)docs/rag-understanding/text2sql-rag-runid-replay-handbook.md(runId 回放)docs/rag-understanding/text2sql-rag-local-learning-lab.md(本地实验)
维护护栏:
- 文档合同检查:
node scripts/check-docs-rag-understanding.mjs - smoke:
node tests/smoke/docs-rag-understanding-contract-smoke.mjs
当需求涉及 modeling 画布的以下问题时,优先阅读并复用该 playbook:
- 拖拽卡片闪烁(drag flicker)
- relationship 连线挂错行/错 handle(edge binding)
- auto layout 后节点重叠(layout overlap)
参考文档:
docs/solutions/workflow-issues/frontend-modeling-reactflow-flicker-edge-binding-layout-playbook-2026-04-24.md
This project has a graphify knowledge graph at graphify-out/.
Rules:
- Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure
- If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
- After modifying code files in this session, run
graphify update .to keep the graph current (AST-only, no API cost)