@pzy560117/codex-harness 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -27
- package/bin/harness.js +7 -7
- package/lib/commands/doctor.js +12 -12
- package/lib/commands/init.js +105 -105
- package/lib/commands/run.js +22 -22
- package/lib/commands/verify.js +12 -12
- package/lib/main.js +62 -62
- package/lib/powershell/find-powershell.js +20 -20
- package/lib/powershell/invoke-script.js +34 -34
- package/lib/project/assert-initialized.js +20 -20
- package/lib/project/detect-project-root.js +5 -5
- package/lib/release/cache-layout.js +34 -34
- package/lib/release/download-release.js +25 -25
- package/lib/release/package-source-layout.js +13 -13
- package/lib/release/release-config.js +6 -6
- package/lib/release/release-manifest.js +76 -76
- package/lib/release/resolve-package-source.js +21 -21
- package/lib/release/resolve-version.js +26 -26
- package/lib/release/unpack-zip.js +25 -25
- package/lib/release/verify-sha256.js +16 -16
- package/package-source/AGENTS.md +48 -57
- package/package-source/PACKAGE.md +7 -7
- package/package-source/README.md +85 -81
- package/package-source/docs/codex-harness-engineering/templates/AGENTS.md +51 -0
- package/package-source/docs/codex-harness-engineering/templates/README.md +21 -20
- package/package-source/docs/codex-harness-engineering/templates/bootstrap-codex-harness.ps1 +144 -110
- package/package-source/docs/codex-harness-engineering/templates/ci/AGENTS.md +15 -0
- package/package-source/docs/codex-harness-engineering/templates/ci/github-action-codex-review.yml +110 -110
- package/package-source/docs/codex-harness-engineering/templates/config/AGENTS.md +19 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/architect.toml +18 -17
- package/package-source/docs/codex-harness-engineering/templates/config/agents/backend-worker.toml +15 -14
- package/package-source/docs/codex-harness-engineering/templates/config/agents/docs-researcher.toml +13 -12
- package/package-source/docs/codex-harness-engineering/templates/config/agents/docs-worker.toml +16 -15
- package/package-source/docs/codex-harness-engineering/templates/config/agents/explorer.toml +15 -14
- package/package-source/docs/codex-harness-engineering/templates/config/agents/failure-triage.toml +19 -18
- package/package-source/docs/codex-harness-engineering/templates/config/agents/frontend-worker.toml +15 -14
- package/package-source/docs/codex-harness-engineering/templates/config/agents/harness-writer.toml +16 -15
- package/package-source/docs/codex-harness-engineering/templates/config/agents/planner.toml +16 -15
- package/package-source/docs/codex-harness-engineering/templates/config/agents/readonly-research.toml +14 -13
- package/package-source/docs/codex-harness-engineering/templates/config/agents/reviewer.toml +13 -12
- package/package-source/docs/codex-harness-engineering/templates/config/agents/security-reviewer.toml +16 -15
- package/package-source/docs/codex-harness-engineering/templates/config/agents/stage1-reviewer.toml +15 -14
- package/package-source/docs/codex-harness-engineering/templates/config/agents/stage2-reviewer.toml +16 -15
- package/package-source/docs/codex-harness-engineering/templates/config/agents/test-planner.toml +18 -17
- package/package-source/docs/codex-harness-engineering/templates/config/agents/test-runner.toml +15 -14
- package/package-source/docs/codex-harness-engineering/templates/config/agents/visual-reviewer.toml +16 -15
- package/package-source/docs/codex-harness-engineering/templates/config/codex-agent-roles.md +24 -24
- package/package-source/docs/codex-harness-engineering/templates/config/codex-config.toml +12 -12
- package/package-source/docs/codex-harness-engineering/templates/config/codex-readme.md +6 -6
- package/package-source/docs/codex-harness-engineering/templates/config/env-check.ps1 +44 -40
- package/package-source/docs/codex-harness-engineering/templates/config/env.example +13 -12
- package/package-source/docs/codex-harness-engineering/templates/config/global-AGENTS.md +40 -40
- package/package-source/docs/codex-harness-engineering/templates/config/global-config.toml +19 -19
- package/package-source/docs/codex-harness-engineering/templates/config/rules/agents.md +118 -115
- package/package-source/docs/codex-harness-engineering/templates/config/rules/coding-style.md +57 -74
- package/package-source/docs/codex-harness-engineering/templates/config/rules/constitution.md +4 -4
- package/package-source/docs/codex-harness-engineering/templates/config/rules/git.rules +41 -41
- package/package-source/docs/codex-harness-engineering/templates/config/rules/harness.rules +29 -29
- package/package-source/docs/codex-harness-engineering/templates/config/rules/safety.rules +35 -35
- package/package-source/docs/codex-harness-engineering/templates/context/AGENTS.md +19 -0
- package/package-source/docs/codex-harness-engineering/templates/context/API_MAP.md +18 -0
- package/package-source/docs/codex-harness-engineering/templates/context/CHANGELOG_AI.md +11 -0
- package/package-source/docs/codex-harness-engineering/templates/context/CURRENT_TASK.md +114 -0
- package/package-source/docs/codex-harness-engineering/templates/context/DB_SCHEMA.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/context/DECISIONS.md +12 -0
- package/package-source/docs/codex-harness-engineering/templates/context/KNOWN_ISSUES.md +12 -0
- package/package-source/docs/codex-harness-engineering/templates/context/PROJECT_CONTEXT.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/context/architecture-brief.md +58 -58
- package/package-source/docs/codex-harness-engineering/templates/context/dev-plan.md +89 -83
- package/package-source/docs/codex-harness-engineering/templates/context/feature-pack.md +101 -101
- package/package-source/docs/codex-harness-engineering/templates/context/repo-map.md +102 -78
- package/package-source/docs/codex-harness-engineering/templates/context/service-dependency-matrix.yaml +25 -25
- package/package-source/docs/codex-harness-engineering/templates/contracts/AGENTS.md +17 -0
- package/package-source/docs/codex-harness-engineering/templates/contracts/README.md +24 -16
- package/package-source/docs/codex-harness-engineering/templates/contracts/openapi.yaml +182 -182
- package/package-source/docs/codex-harness-engineering/templates/contracts/orval.config.ts +20 -20
- package/package-source/docs/codex-harness-engineering/templates/contracts/prism-usage.md +41 -34
- package/package-source/docs/codex-harness-engineering/templates/design/AGENTS.md +21 -0
- package/package-source/docs/codex-harness-engineering/templates/design/ai-image-brief.md +122 -122
- package/package-source/docs/codex-harness-engineering/templates/design/component-map.md +45 -31
- package/package-source/docs/codex-harness-engineering/templates/design/design-brief.md +183 -178
- package/package-source/docs/codex-harness-engineering/templates/design/design-tokens.json +88 -88
- package/package-source/docs/codex-harness-engineering/templates/design/frontend-architecture.md +164 -146
- package/package-source/docs/codex-harness-engineering/templates/design/image-to-frontend-spec.md +64 -52
- package/package-source/docs/codex-harness-engineering/templates/design/screen-states.md +157 -122
- package/package-source/docs/codex-harness-engineering/templates/design/visual-parity-review.md +21 -21
- package/package-source/docs/codex-harness-engineering/templates/docs/AGENTS.md +19 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/architecture-constraints.md +97 -83
- package/package-source/docs/codex-harness-engineering/templates/docs/code-semantics-and-navigation.md +54 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/code-style-and-naming.md +116 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/directory-structure-template.md +88 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/env-and-deployment-template.md +60 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/frontend-quality-rules.md +165 -138
- package/package-source/docs/codex-harness-engineering/templates/docs/governance-auto-repair.md +82 -80
- package/package-source/docs/codex-harness-engineering/templates/docs/harness-architecture.md +78 -78
- package/package-source/docs/codex-harness-engineering/templates/docs/install-manifest-governance.md +16 -16
- package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-architecture.md +241 -219
- package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-import.md +108 -108
- package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-lint.md +98 -98
- package/package-source/docs/codex-harness-engineering/templates/docs/mcp-knowledge-governance.md +24 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/new-project-checklist.md +7 -7
- package/package-source/docs/codex-harness-engineering/templates/docs/new-project-usage.md +107 -43
- package/package-source/docs/codex-harness-engineering/templates/docs/project-agents-template.md +211 -154
- package/package-source/docs/codex-harness-engineering/templates/docs/prompt-knowledge-integration.md +100 -89
- package/package-source/docs/codex-harness-engineering/templates/docs/regression-rules.md +47 -45
- package/package-source/docs/codex-harness-engineering/templates/docs/requirement-prep-kit/README.md +3 -3
- package/package-source/docs/codex-harness-engineering/templates/docs/rule-governance.md +98 -98
- package/package-source/docs/codex-harness-engineering/templates/docs/service-dependency-matrix.md +70 -55
- package/package-source/docs/codex-harness-engineering/templates/docs/task-session-strategy.md +133 -116
- package/package-source/docs/codex-harness-engineering/templates/docs/team-knowledge-sync.md +187 -187
- package/package-source/docs/codex-harness-engineering/templates/docs/trace-format.md +44 -32
- package/package-source/docs/codex-harness-engineering/templates/governance/AGENTS.md +18 -0
- package/package-source/docs/codex-harness-engineering/templates/governance/branch-protection-checklist.md +50 -50
- package/package-source/docs/codex-harness-engineering/templates/governance/feedback-evolution-loop.md +55 -55
- package/package-source/docs/codex-harness-engineering/templates/governance/retry-budget.yaml +30 -30
- package/package-source/docs/codex-harness-engineering/templates/governance/risk-levels.yaml +53 -53
- package/package-source/docs/codex-harness-engineering/templates/governance/sandbox-policy.md +13 -13
- package/package-source/docs/codex-harness-engineering/templates/hooks/AGENTS.md +15 -0
- package/package-source/docs/codex-harness-engineering/templates/hooks/hook-stop-verify.ps1 +171 -118
- package/package-source/docs/codex-harness-engineering/templates/hooks/hooks.json +40 -40
- package/package-source/docs/codex-harness-engineering/templates/knowledge/AGENTS.md +16 -0
- package/package-source/docs/codex-harness-engineering/templates/knowledge/catalog.md +6 -6
- package/package-source/docs/codex-harness-engineering/templates/knowledge/decisions/DECISION-HARNESS-001.md +39 -39
- package/package-source/docs/codex-harness-engineering/templates/knowledge/guidelines/GUIDELINE-RULES-001.md +30 -30
- package/package-source/docs/codex-harness-engineering/templates/knowledge/knowledge-catalog.md +41 -41
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/plan-template.md +252 -252
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/spec-template.md +145 -145
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/tasks-template.md +47 -47
- package/package-source/docs/codex-harness-engineering/templates/package-assets/AGENTS.md +19 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/AGENTS.md +25 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/README.md +118 -42
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/START-HERE.md +66 -53
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/agent-ecosystem-practices.md +140 -140
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/best-practices.md +9 -9
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/codex-global-rules-example.md +48 -48
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/goal-templates.md +380 -380
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/README.md +64 -64
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/contracts/openapi.yaml +25 -25
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/contracts/orval.config.ts +20 -20
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/ai-image-brief.md +44 -44
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/component-map.md +17 -17
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/design-brief.md +58 -58
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/frontend-architecture.md +106 -106
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/image-to-frontend-spec.md +72 -72
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/screen-states.md +25 -25
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/ui-image-review.md +38 -38
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/difficulty-research.md +39 -39
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/page-inventory.md +5 -5
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/prd-lite.md +41 -41
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/requirement-interface-matrix.md +32 -32
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/state-matrix.yaml +14 -14
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/generated/model/Ticket.ts +6 -6
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/generated/ticket-api.ts +35 -35
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/http-client.ts +8 -8
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/ui/TicketFilterBar.tsx +72 -72
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/plans/features/ticket-filter.dev-plan.md +48 -48
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/progress.txt +1 -1
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/stories/TicketFilterBar.stories.tsx +33 -33
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/task.json +54 -54
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/verify.ps1 +42 -42
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/global-rules-and-bootstrap.md +157 -157
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/goal-harness-integration-guide.md +364 -364
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/implementation-flow.md +7 -5
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/implementation-guide.md +25 -25
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/knowledge-surface-map.md +186 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/mode-matrix.md +57 -57
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/new-project-usage.md +176 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/project-agents-template.md +168 -154
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/superpowers-codex-solo-builder-playbook.md +676 -676
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/AGENTS.md +22 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/API_MAP.md +18 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/CURRENT_TASK.md +89 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/dev-plan.md +166 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/contracts/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/contracts/README.md +24 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/contracts/prism-usage.md +41 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/component-map.md +45 -31
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/design-brief.md +183 -178
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/design-tokens.json +88 -88
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/frontend-architecture.md +164 -146
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/image-to-frontend-spec.md +64 -52
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/screen-states.md +157 -122
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/visual-parity-review.md +21 -21
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/env-and-deployment-template.md +60 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/frontend-quality-rules.md +161 -138
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/regression-rules.md +47 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/trace-format.md +86 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/product/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/product/prd-lite.md +166 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/product/state-matrix.yaml +116 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/prompts/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/prompts/implement-one-task.md +150 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/prompts/repair-one-finding.md +70 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/spec/11-security-design.md +43 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/spec/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/EVIDENCE_PROTOCOL.md +54 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/NATURAL_LANGUAGE_TEST_CASES.md +690 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/REGRESSION_PLAN.md +28 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/TEST_STRATEGY.md +98 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/TRACEABILITY_MATRIX.md +23 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/verify-matrix.md +51 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/README.md +10 -10
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/e2e.md +30 -30
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/README.md +60 -60
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/app/Mobile_App_Production_Readiness_Framework_/347/247/273/345/212/250/347/253/257/345/205/250/345/271/263/345/217/260/347/224/237/344/272/247/345/217/257/344/270/212/347/272/277/350/247/204/350/214/203.md +2457 -2457
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/app/catalog.md +33 -33
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/architecture.md +358 -358
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/common/AI_Coding_Production_Control_Framework_AI/345/206/231/345/256/214/347/232/204/344/273/243/347/240/201/345/246/202/344/275/225/344/270/215/345/244/261/346/216/247.md +2055 -2055
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/common/catalog.md +34 -34
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/initial-content.md +296 -296
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/integration-roadmap.md +221 -221
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/architecture-constraints.md +95 -83
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/code-semantics-and-navigation.md +17 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/code-style-and-naming.md +116 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/frontend-quality-rules.md +138 -138
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/governance-auto-repair.md +82 -80
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/mcp-knowledge-governance.md +24 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/service-dependency-matrix.md +55 -55
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/speckit-requirements-gate.md +124 -124
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/PACKAGE.md +7 -7
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/README.md +52 -52
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/install-agent-here.ps1 +57 -57
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/agents.md +115 -115
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/coding-style.md +57 -74
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/constitution.md +4 -4
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/git.rules +41 -41
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/harness.rules +29 -29
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/safety.rules +35 -35
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/check-ai-sync-drift.ps1 +205 -205
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/sync-ai-config-to-targets.ps1 +826 -826
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/sync-targets.example.json +35 -35
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/harness/harness-governance-check.ps1 +864 -366
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/HOW_TO_USE_SKILLS.md +79 -79
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/academic-mermaid-diagrams/SKILL.md +172 -172
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ai-config-git-sync/SKILL.md +152 -152
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ai-config-git-sync/references/command-recipes.md +92 -92
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/auto-commit/SKILL.md +324 -322
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/better-icons/SKILL.md +3 -3
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/SKILL.md +100 -100
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/references/windows-openrouter-clash-playbook.md +94 -94
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/scripts/diagnose-openrouter-route.ps1 +282 -282
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/scripts/ensure-openrouter-rule.ps1 +101 -101
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/fixing-metadata/SKILL.md +6 -6
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/frontend-design/SKILL.md +37 -37
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/git-xianyu-analyzer/SKILL.md +3 -3
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/SKILL.md +204 -188
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/references/current-repo-sync-matrix.md +150 -110
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/references/stale-patterns.md +65 -65
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/init-autopilot/SKILL.md +17 -15
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/log-analysis-optimization/SKILL.md +5 -5
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/SKILL.md +28 -28
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-e2e-planner/SKILL.md +11 -11
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-e2e-runner/SKILL.md +6 -6
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-mock-cleaner/SKILL.md +4 -4
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/SKILL.md +67 -67
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/agents/openai.yaml +7 -7
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/scripts/configure-qoder-codex-api.ps1 +278 -278
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/requirements-design-template/SKILL.md +87 -87
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skills-index.md +12 -12
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-analyze/SKILL.md +34 -34
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-checklist/SKILL.md +8 -8
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-clarify/SKILL.md +28 -28
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-e2e-tasks/SKILL.md +12 -12
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-implement/SKILL.md +37 -37
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-plan/SKILL.md +140 -138
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-specify/SKILL.md +100 -100
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-tasks/SKILL.md +86 -86
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-verify/SKILL.md +144 -142
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/SKILL.md +145 -143
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/references/current-repo-notes.md +42 -41
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/references/github-samples.md +33 -33
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/scripts/collect-root-doc-facts.ps1 +174 -145
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/ai-integrity-and-originality.md +191 -191
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/citation-templates.md +99 -99
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/final-checklist.md +60 -60
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/photographer-booking-paper.md +85 -85
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/test-result-templates.md +22 -22
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/thesis-analysis-template.md +63 -63
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/update-codemaps/SKILL.md +31 -31
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/README.md +15 -15
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.analyze.md +60 -60
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.checklist.md +8 -8
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.clarify.md +28 -28
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.e2e-testing.md +10 -10
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.implement.md +56 -56
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.plan.md +137 -134
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.specify.md +100 -100
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.tasks.md +86 -86
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.verify.md +130 -130
- package/package-source/docs/codex-harness-engineering/templates/product/AGENTS.md +19 -0
- package/package-source/docs/codex-harness-engineering/templates/product/acceptance-criteria.md +47 -47
- package/package-source/docs/codex-harness-engineering/templates/product/difficulty-research.md +47 -47
- package/package-source/docs/codex-harness-engineering/templates/product/page-inventory.md +21 -21
- package/package-source/docs/codex-harness-engineering/templates/product/prd-lite.md +166 -158
- package/package-source/docs/codex-harness-engineering/templates/product/requirement-interface-matrix.md +37 -37
- package/package-source/docs/codex-harness-engineering/templates/product/state-matrix.yaml +116 -105
- package/package-source/docs/codex-harness-engineering/templates/prompts/AGENTS.md +15 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/controller-loop.md +88 -88
- package/package-source/docs/codex-harness-engineering/templates/prompts/failure-triage.md +71 -69
- package/package-source/docs/codex-harness-engineering/templates/prompts/harness-audit.md +54 -52
- package/package-source/docs/codex-harness-engineering/templates/prompts/implement-one-task.md +150 -148
- package/package-source/docs/codex-harness-engineering/templates/prompts/repair-one-finding.md +70 -67
- package/package-source/docs/codex-harness-engineering/templates/prompts/review-one-task.md +45 -43
- package/package-source/docs/codex-harness-engineering/templates/prompts/review-stage1-spec.md +111 -109
- package/package-source/docs/codex-harness-engineering/templates/prompts/review-stage2-quality.md +82 -80
- package/package-source/docs/codex-harness-engineering/templates/prompts/visual-evaluator.md +80 -78
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/backend-worker.md +41 -41
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/docs-worker.md +28 -28
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/frontend-worker.md +46 -46
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/harness-writer.md +40 -40
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/test-runner.md +27 -27
- package/package-source/docs/codex-harness-engineering/templates/runtime/AGENTS.md +66 -50
- package/package-source/docs/codex-harness-engineering/templates/runtime/codex-loop.ps1 +2129 -231
- package/package-source/docs/codex-harness-engineering/templates/runtime/doctor.ps1 +224 -224
- package/package-source/docs/codex-harness-engineering/templates/runtime/project-task-template.json +42 -39
- package/package-source/docs/codex-harness-engineering/templates/runtime/scripts/test-install-modes.ps1 +2 -2
- package/package-source/docs/codex-harness-engineering/templates/runtime/smoke-task.json +52 -52
- package/package-source/docs/codex-harness-engineering/templates/runtime/task-run-profile.json +86 -86
- package/package-source/docs/codex-harness-engineering/templates/runtime/task.json +11 -8
- package/package-source/docs/codex-harness-engineering/templates/runtime/verify.ps1 +21 -21
- package/package-source/docs/codex-harness-engineering/templates/scripts/AGENTS.md +15 -0
- package/package-source/docs/codex-harness-engineering/templates/scripts/ai-workflow/check-ai-sync-drift.ps1 +205 -205
- package/package-source/docs/codex-harness-engineering/templates/scripts/harness/harness-governance-check.ps1 +864 -366
- package/package-source/docs/codex-harness-engineering/templates/spec/10-data-model.md +23 -7
- package/package-source/docs/codex-harness-engineering/templates/spec/11-security-design.md +30 -13
- package/package-source/docs/codex-harness-engineering/templates/spec/AGENTS.md +15 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/ACCEPTANCE_CRITERIA.md +39 -39
- package/package-source/docs/codex-harness-engineering/templates/testing/ACCEPTANCE_EXAMPLES.md +37 -37
- package/package-source/docs/codex-harness-engineering/templates/testing/AGENTS.md +19 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/EVIDENCE_PROTOCOL.md +54 -48
- package/package-source/docs/codex-harness-engineering/templates/testing/NATURAL_LANGUAGE_TEST_CASES.md +5 -4
- package/package-source/docs/codex-harness-engineering/templates/testing/REGRESSION_PLAN.md +28 -20
- package/package-source/docs/codex-harness-engineering/templates/testing/RISK_BASED_TEST_PLAN.md +16 -16
- package/package-source/docs/codex-harness-engineering/templates/testing/TEST_STRATEGY.md +98 -97
- package/package-source/docs/codex-harness-engineering/templates/testing/TRACEABILITY_MATRIX.md +6 -5
- package/package-source/docs/codex-harness-engineering/templates/testing/coverage-policy.md +25 -25
- package/package-source/docs/codex-harness-engineering/templates/testing/e2e-plan.md +139 -139
- package/package-source/docs/codex-harness-engineering/templates/testing/failure-findings.example.json +3 -3
- package/package-source/docs/codex-harness-engineering/templates/testing/failure-triage.md +62 -62
- package/package-source/docs/codex-harness-engineering/templates/testing/test-data-plan.md +36 -36
- package/package-source/docs/codex-harness-engineering/templates/testing/test-report.md +85 -41
- package/package-source/docs/codex-harness-engineering/templates/testing/verify-matrix.md +15 -5
- package/package-source/docs/codex-harness-engineering/templates/tools/AGENTS.md +14 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/acceptance-lint.ps1 +37 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/architecture-lint.ps1 +150 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/backend-lint.ps1 +137 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/business-lint.ps1 +148 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/component-lint.ps1 +148 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/config-lint.ps1 +159 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/context-lint.ps1 +187 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/contract-lint.ps1 +148 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/data-lint.ps1 +37 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/directory-lint.ps1 +152 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/docs-lint.ps1 +40 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/impact-lint.ps1 +148 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/integration-lint.ps1 +37 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/mobile-lint.ps1 +37 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/observability-lint.ps1 +137 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/performance-lint.ps1 +148 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/refactor-lint.ps1 +137 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/security-lint.ps1 +159 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/session-lint.ps1 +126 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/spec-lint.ps1 +285 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/state-lint.ps1 +137 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/style-lint.ps1 +155 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/testing-lint.ps1 +192 -0
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/ui-lint.ps1 +148 -0
- package/package-source/docs/codex-harness-engineering/templates/trace/AGENTS.md +16 -0
- package/package-source/docs/codex-harness-engineering/templates/trace/eval-case.yaml +24 -24
- package/package-source/docs/codex-harness-engineering/templates/trace/trace.schema.json +101 -101
- package/package-source/install-manifest.json +149 -79
- package/package-source/tools/install/ai-workflow/check-ai-sync-drift.ps1 +205 -205
- package/package-source/tools/install/ai-workflow/sync-ai-config-to-targets.ps1 +826 -826
- package/package-source/tools/install/ai-workflow/sync-targets.example.json +35 -35
- package/package-source/tools/install/bootstrap-codex-harness.ps1 +145 -129
- package/package-source/tools/install/env-check.ps1 +40 -40
- package/package-source/tools/install/init-project.ps1 +1 -1
- package/package-source/tools/install/install-agent-here.ps1 +57 -57
- package/package-source/tools/install/install-agent.ps1 +33 -31
- package/package.json +23 -23
|
@@ -1,2055 +1,2055 @@
|
|
|
1
|
-
# AI Coding Production Control Framework:AI 写完的代码如何不失控的工程规范
|
|
2
|
-
|
|
3
|
-
> 版本:v1.0
|
|
4
|
-
> 生成日期:2026-05-17
|
|
5
|
-
> 文档定位:AI 编程项目的架构约束文档、Agent 工作入口文档、AI 生成代码验收规范、工程团队协作规范、代码评审与 Release Gate、React + Python 前后端分离项目示例。
|
|
6
|
-
> 核心观点:**人的职责不是把 AI 生成的每一行代码都读完,而是先定义系统边界、架构抽象、接口契约、验收标准和高风险人工 Review 点,再让 AI 在这些约束内放大实现能力。**
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 总目录
|
|
11
|
-
|
|
12
|
-
- 第一卷:AI Coding 可控性通用框架
|
|
13
|
-
- 0. 文档说明
|
|
14
|
-
- 1. 核心问题:AI 写的代码为什么会失控
|
|
15
|
-
- 2. AI Coding 三层控制模型
|
|
16
|
-
- 3. 人与 AI 的职责边界
|
|
17
|
-
- 4. AI Coding 失败模型与风险域
|
|
18
|
-
- 5. 项目文档地图:AGENTS.md 作为 Agent 入口
|
|
19
|
-
- 6. 第一层:架构层规范
|
|
20
|
-
- 7. 第二层:模式与抽象层规范
|
|
21
|
-
- 8. 第三层:实现层规范
|
|
22
|
-
- 9. AI Coding 工作流
|
|
23
|
-
- 10. AI 任务拆分与变更边界
|
|
24
|
-
- 11. 代码评审策略:不逐行盯死,但要盯住风险
|
|
25
|
-
- 12. 测试、CI 与质量门禁
|
|
26
|
-
- 13. 安全、隐私、依赖与供应链
|
|
27
|
-
- 14. 文档、证据留存与可追溯性
|
|
28
|
-
- 15. 团队治理、角色分工与持续改进
|
|
29
|
-
- 16. 通用 Release Gate
|
|
30
|
-
- 第二卷:React + Python 前后端分离项目示例
|
|
31
|
-
- 17. 示例项目边界
|
|
32
|
-
- 18. 推荐仓库结构
|
|
33
|
-
- 19. AGENTS.md 最小可用模板
|
|
34
|
-
- 20. 架构规范模板
|
|
35
|
-
- 21. API 契约规范模板
|
|
36
|
-
- 22. React 前端模式与抽象规范
|
|
37
|
-
- 23. Python 后端模式与抽象规范
|
|
38
|
-
- 24. 数据模型、状态与错误处理规范
|
|
39
|
-
- 25. 测试策略模板
|
|
40
|
-
- 26. 高风险人工 Review 清单
|
|
41
|
-
- 27. React + Python Release Gate
|
|
42
|
-
- 第三卷:模板、映射关系与落地清单
|
|
43
|
-
- 28. 三层控制模型映射表
|
|
44
|
-
- 29. 不同项目阶段的最低文档集
|
|
45
|
-
- 30. 不同 AI 工具的指令文件映射
|
|
46
|
-
- 31. AI Coding Prompt 模板
|
|
47
|
-
- 32. PR / Review 模板
|
|
48
|
-
- 33. 常见失控场景与处置方案
|
|
49
|
-
- 34. 与移动端生产可上线规范的衔接
|
|
50
|
-
- 35. 补充风险
|
|
51
|
-
- 36. 待确认问题
|
|
52
|
-
- 37. 建议下一步拆分的专项文档
|
|
53
|
-
- 附录 A:官方资料索引
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
# 第一卷:AI Coding 可控性通用框架
|
|
58
|
-
|
|
59
|
-
## 0. 文档说明
|
|
60
|
-
|
|
61
|
-
### 0.1 文档目的
|
|
62
|
-
|
|
63
|
-
本规范用于解决 AI 自动化编码、AI pair coding、Codex / Claude Code / Copilot / Cursor 等 Agent 参与开发后出现的典型问题:
|
|
64
|
-
|
|
65
|
-
> 功能看起来做完了,代码也能跑,但团队打开代码后发现系统结构不清楚、模块关系说不清、接口契约不稳定、抽象层混乱、维护者没有掌控感。
|
|
66
|
-
|
|
67
|
-
这类问题的本质不是“AI 代码一定不能用”,也不是“人必须逐行读完所有 AI 代码”。真正的问题是:
|
|
68
|
-
|
|
69
|
-
- 在 AI 写代码前,系统边界没有定义清楚。
|
|
70
|
-
- 架构层没有被团队确认。
|
|
71
|
-
- 模块划分和抽象模式没有被写成可执行规范。
|
|
72
|
-
- API 契约、数据流、错误处理、测试策略没有前置。
|
|
73
|
-
- AI 在实现层自由生长,形成了局部正确但全局混乱的系统。
|
|
74
|
-
- 团队把 Review 压力放到了最后一层实现代码,导致信息负担过重。
|
|
75
|
-
|
|
76
|
-
本规范的目标是建立一套 **AI Coding 的生产可控体系**:
|
|
77
|
-
|
|
78
|
-
- 让 AI 写代码前先读取架构与规范。
|
|
79
|
-
- 让 AI 的代码生成发生在被定义好的边界内。
|
|
80
|
-
- 让人类重点控制架构层、抽象层、接口契约和高风险实现点。
|
|
81
|
-
- 让 AI 负责放大实现层效率,而不是替代系统设计。
|
|
82
|
-
- 让每次 AI 变更都可追溯、可测试、可审计、可回滚。
|
|
83
|
-
|
|
84
|
-
### 0.2 适用范围
|
|
85
|
-
|
|
86
|
-
适用于以下场景:
|
|
87
|
-
|
|
88
|
-
- 个人使用 AI 辅助开发完整项目。
|
|
89
|
-
- 小团队使用 AI 自动化 Coding。
|
|
90
|
-
- 企业内部使用 Codex、Claude Code、Copilot、Cursor、Windsurf、Trae 等编码 Agent。
|
|
91
|
-
- 前后端分离项目。
|
|
92
|
-
- 移动端、Web、后端、SaaS、电商、AI 应用、内部工具等产品。
|
|
93
|
-
- 需要让 AI 基于项目规范生成代码、测试、文档、Review 意见的项目。
|
|
94
|
-
|
|
95
|
-
不局限于 React + Python。第二卷仅以 React + Python 前后端分离作为示例。
|
|
96
|
-
|
|
97
|
-
### 0.3 不适用范围
|
|
98
|
-
|
|
99
|
-
本规范不是:
|
|
100
|
-
|
|
101
|
-
- 某一个 AI 工具的完整使用手册。
|
|
102
|
-
- 替代代码审查、安全审计、合规审查的工具。
|
|
103
|
-
- 让 AI 完全自主上线代码的授权书。
|
|
104
|
-
- 法律、金融、医疗、隐私等高风险合规意见。
|
|
105
|
-
|
|
106
|
-
涉及支付、认证、授权、隐私、生产基础设施、数据迁移、财务、医疗、金融、法律、儿童数据、内容安全等高风险场景,必须额外做人工 Review 和专项评估。
|
|
107
|
-
|
|
108
|
-
### 0.4 目标读者
|
|
109
|
-
|
|
110
|
-
| 角色 | 关注重点 |
|
|
111
|
-
|---|---|
|
|
112
|
-
| 创始人 / 技术负责人 | 如何在 AI 加速开发时保持系统掌控感 |
|
|
113
|
-
| 架构师 | 系统边界、模块分层、接口契约、演进路线 |
|
|
114
|
-
| 前端工程师 | 组件、Hook、Service、状态、路由、请求、测试规范 |
|
|
115
|
-
| 后端工程师 | Router、Service、Repository、Model、事务、异常、API 规范 |
|
|
116
|
-
| QA / 测试 | AI 生成代码如何验收、如何自动化、哪些必须人工测 |
|
|
117
|
-
| 安全团队 | AI 生成代码的安全边界、依赖、Secrets、日志、权限 |
|
|
118
|
-
| 产品经理 | 需求如何变成可约束 AI 的规格说明 |
|
|
119
|
-
| DevOps / SRE | CI、灰度、回滚、监控、发布门禁 |
|
|
120
|
-
| AI Agent 使用者 | 如何写 AGENTS.md、CLAUDE.md、项目规则和任务模板 |
|
|
121
|
-
|
|
122
|
-
### 0.5 术语定义
|
|
123
|
-
|
|
124
|
-
| 术语 | 定义 |
|
|
125
|
-
|---|---|
|
|
126
|
-
| AI Coding | 使用 AI Agent 或 AI 辅助工具进行代码生成、修改、测试、重构和 Review |
|
|
127
|
-
| Agent | 能读取项目、编辑文件、运行命令、提交变更或辅助 Review 的 AI 编程执行体 |
|
|
128
|
-
| AGENTS.md | 项目级 Agent 指令入口文件,用于描述项目规范、工作流程、文档地图和约束 |
|
|
129
|
-
| CLAUDE.md | Claude Code 常用的项目记忆 / 指令文件,用于指导 Claude 在项目中的行为 |
|
|
130
|
-
| 架构层 | 定义系统边界、核心模块、外部依赖、数据流、部署和非功能约束的层级 |
|
|
131
|
-
| 模式与抽象层 | 定义代码组织方式、分层模式、组件模式、Service / Repository / Hook 等抽象的层级 |
|
|
132
|
-
| 实现层 | 函数、类、组件、页面、接口实现、测试代码等具体代码层级 |
|
|
133
|
-
| 接口契约 | API 请求、响应、错误码、鉴权、幂等、分页、版本兼容等约定 |
|
|
134
|
-
| Release Gate | 发布准入门槛,存在阻断项时不得合并、发布或全量上线 |
|
|
135
|
-
| Human Review Gate | 必须由人类审查的节点,尤其用于安全、支付、权限、隐私、数据迁移等高风险代码 |
|
|
136
|
-
| Progressive Loading | 让 Agent 按任务加载相关规范,而不是每次无差别读取全部文档 |
|
|
137
|
-
|
|
138
|
-
### 0.6 风险等级定义
|
|
139
|
-
|
|
140
|
-
| 等级 | 定义 | 处理要求 |
|
|
141
|
-
|---|---|---|
|
|
142
|
-
| Blocker | 会导致不能合并、不能发布、严重安全 / 隐私 / 支付 / 数据事故或系统不可理解 | 禁止合并或上线;已上线必须回滚、降级或关闭 |
|
|
143
|
-
| Critical | 严重影响可维护性、核心流程、质量、合规或后续扩展 | 必须修复后才能全量;可在严格灰度或隔离环境验证 |
|
|
144
|
-
| Major | 影响主要体验、代码质量或开发效率,但有临时方案 | 明确负责人和修复计划 |
|
|
145
|
-
| Minor | 不影响核心功能和架构稳定,主要是风格、文案或局部优化 | 可后续优化,但需记录 |
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
## 1. 核心问题:AI 写的代码为什么会失控
|
|
150
|
-
|
|
151
|
-
### 1.1 失控不是“代码跑不了”,而是“系统不可理解”
|
|
152
|
-
|
|
153
|
-
AI Coding 中后期最常见的问题不是代码完全不能运行,而是:
|
|
154
|
-
|
|
155
|
-
```md
|
|
156
|
-
- 功能看起来能用,但没人能说明为什么这么设计。
|
|
157
|
-
- 代码分散在很多地方,模块边界模糊。
|
|
158
|
-
- 相同逻辑被写了多个版本。
|
|
159
|
-
- API 调用到处都是,错误处理各写各的。
|
|
160
|
-
- 组件、Service、Model、Repository 的职责混在一起。
|
|
161
|
-
- 新需求来了,不知道该改哪里。
|
|
162
|
-
- 改一个功能会影响不相关模块。
|
|
163
|
-
- AI 总是自信地说“已完成”,但实际留下隐性风险。
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
因此,AI 写代码后的核心验收不是只看“功能是否跑通”,而要看:
|
|
167
|
-
|
|
168
|
-
```md
|
|
169
|
-
这个系统是否仍然可理解?
|
|
170
|
-
这个系统是否仍然可解释?
|
|
171
|
-
这个系统是否仍然可修改?
|
|
172
|
-
这个系统是否仍然可测试?
|
|
173
|
-
这个系统是否仍然可审计?
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### 1.2 人类逐行 Review 不是唯一答案
|
|
177
|
-
|
|
178
|
-
如果 AI 一次性生成大量代码,人类逐行阅读会带来极高的信息负担。逐行 Review 适合高风险代码,但不适合作为所有 AI 代码的默认控制方式。
|
|
179
|
-
|
|
180
|
-
更有效的控制点是:
|
|
181
|
-
|
|
182
|
-
| 控制对象 | 为什么重要 | 是否必须人工控制 |
|
|
183
|
-
|---|---|---|
|
|
184
|
-
| 系统边界 | 决定 AI 能改哪里、不能改哪里 | 是 |
|
|
185
|
-
| 架构分层 | 决定代码未来如何长大 | 是 |
|
|
186
|
-
| 模块关系 | 决定需求变更时影响范围 | 是 |
|
|
187
|
-
| 接口契约 | 决定前后端、服务间、版本间是否稳定 | 是 |
|
|
188
|
-
| 抽象模式 | 决定 AI 生成代码是否一致 | 是 |
|
|
189
|
-
| 测试策略 | 决定功能是否可验证 | 是 |
|
|
190
|
-
| 高风险实现 | 支付、安全、权限、隐私、迁移等 | 是 |
|
|
191
|
-
| 普通实现细节 | 普通函数、页面、组件、样式 | 部分抽样 + 自动化 |
|
|
192
|
-
|
|
193
|
-
结论:
|
|
194
|
-
|
|
195
|
-
> 人不需要默认读完 AI 生成的每一行普通代码,但必须定义边界、抽象、契约、验收标准,并对高风险实现做人工 Review。
|
|
196
|
-
|
|
197
|
-
### 1.3 AI 加速编码后,人更容易绕过思考
|
|
198
|
-
|
|
199
|
-
AI 的危险之处不只是“可能写错”,更是“让编码变得太容易”。当开发者用一两句话让 AI 直接生成代码时,很容易跳过这些必要思考:
|
|
200
|
-
|
|
201
|
-
```md
|
|
202
|
-
- 这个需求属于哪个业务域?
|
|
203
|
-
- 要不要改现有架构?
|
|
204
|
-
- 这个模块的边界是什么?
|
|
205
|
-
- 前端和后端的契约是什么?
|
|
206
|
-
- 这个状态应该由谁维护?
|
|
207
|
-
- 这个数据是否涉及隐私?
|
|
208
|
-
- 这个接口是否需要幂等?
|
|
209
|
-
- 这个错误是否应该统一处理?
|
|
210
|
-
- 这个功能是否需要测试?
|
|
211
|
-
- 这个实现是否会影响旧版本?
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
AI 的速度不应该阻挡人的思考。正确顺序是:
|
|
215
|
-
|
|
216
|
-
```md
|
|
217
|
-
先想清楚业务、边界、架构、抽象、契约、验收。
|
|
218
|
-
再让 AI 在这些约束内编码。
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## 2. AI Coding 三层控制模型
|
|
224
|
-
|
|
225
|
-
### 2.1 总览
|
|
226
|
-
|
|
227
|
-
AI Coding 的可控性应分为三层:
|
|
228
|
-
|
|
229
|
-
```mermaid
|
|
230
|
-
graph TB
|
|
231
|
-
A[第一层:架构层] --> B[第二层:模式与抽象层]
|
|
232
|
-
B --> C[第三层:实现层]
|
|
233
|
-
A --> D[人类强控制]
|
|
234
|
-
B --> D
|
|
235
|
-
C --> E[AI 放大实现能力]
|
|
236
|
-
C --> F[高风险人工 Review]
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
| 层级 | 控制内容 | 人类职责 | AI 职责 | 典型产物 |
|
|
240
|
-
|---|---|---|---|---|
|
|
241
|
-
| 第一层:架构层 | 系统边界、核心模块、数据流、外部依赖、非功能约束 | 定义、审查、冻结关键决策 | 解释、补全、生成图和文档草稿 | `01-architecture.md` |
|
|
242
|
-
| 第二层:模式与抽象层 | 分层模式、模块切分、接口契约、组件规则、错误处理、测试模式 | 定义团队规范,避免自由生长 | 按规范生成代码和建议 | `02-frontend-patterns.md`、`03-backend-patterns.md` |
|
|
243
|
-
| 第三层:实现层 | 函数、类、组件、页面、接口、测试代码 | 抽样 Review,高风险人工 Review | 主要实现、补测试、修复、重构 | 代码、测试、PR |
|
|
244
|
-
|
|
245
|
-
### 2.2 第一层:架构层
|
|
246
|
-
|
|
247
|
-
架构层回答:
|
|
248
|
-
|
|
249
|
-
```md
|
|
250
|
-
这个系统是什么?
|
|
251
|
-
边界在哪里?
|
|
252
|
-
核心模块有哪些?
|
|
253
|
-
模块之间怎么交互?
|
|
254
|
-
数据怎么流转?
|
|
255
|
-
哪些外部系统会接入?
|
|
256
|
-
哪些约束不能被破坏?
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
架构层要控制的是“系统骨架”。如果这一层没有定义,AI 会在实现层自由生长,导致后期无法理解。
|
|
260
|
-
|
|
261
|
-
### 2.3 第二层:模式与抽象层
|
|
262
|
-
|
|
263
|
-
模式与抽象层回答:
|
|
264
|
-
|
|
265
|
-
```md
|
|
266
|
-
前端组件怎么拆?
|
|
267
|
-
Hook 放哪里?
|
|
268
|
-
Service 放哪里?
|
|
269
|
-
状态怎么管理?
|
|
270
|
-
后端 Router / Service / Repository 怎么分工?
|
|
271
|
-
接口错误怎么返回?
|
|
272
|
-
异常怎么处理?
|
|
273
|
-
测试怎么写?
|
|
274
|
-
哪些命名和目录必须统一?
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
过去这些内容是“团队编码规范”。在 AI Coding 时代,它们也是 **Agent 的工作规范**。
|
|
278
|
-
|
|
279
|
-
### 2.4 第三层:实现层
|
|
280
|
-
|
|
281
|
-
实现层回答:
|
|
282
|
-
|
|
283
|
-
```md
|
|
284
|
-
具体函数怎么写?
|
|
285
|
-
组件怎么实现?
|
|
286
|
-
页面怎么渲染?
|
|
287
|
-
接口怎么调用?
|
|
288
|
-
单元测试怎么补?
|
|
289
|
-
异常分支怎么处理?
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
AI 最适合放大的就是这一层。前两层越清楚,第三层生成的代码越可控。
|
|
293
|
-
|
|
294
|
-
### 2.5 三层控制的核心原则
|
|
295
|
-
|
|
296
|
-
```md
|
|
297
|
-
第一层不清楚,不允许让 AI 大规模编码。
|
|
298
|
-
第二层不清楚,不允许让 AI 自由选择目录、抽象和模式。
|
|
299
|
-
第三层可以让 AI 高效生成,但必须受前两层约束。
|
|
300
|
-
高风险第三层代码必须人工 Review。
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
## 3. 人与 AI 的职责边界
|
|
306
|
-
|
|
307
|
-
### 3.1 人类应该控制什么
|
|
308
|
-
|
|
309
|
-
| 人类控制项 | 说明 | 原因 |
|
|
310
|
-
|---|---|---|
|
|
311
|
-
| 产品边界 | 做什么、不做什么、MVP 范围 | 防止 AI 扩展出不需要的功能 |
|
|
312
|
-
| 架构边界 | 系统模块、服务边界、外部依赖 | 防止自由生长 |
|
|
313
|
-
| 数据边界 | 数据所有权、隐私、缓存、持久化 | 防止数据泄露和串数据 |
|
|
314
|
-
| 接口契约 | 请求、响应、错误、鉴权、幂等、版本 | 防止前后端错位 |
|
|
315
|
-
| 抽象模式 | 目录、层级、职责、命名 | 防止重复和混乱 |
|
|
316
|
-
| 高风险代码 | 支付、权限、认证、迁移、安全、生产配置 | 防止 P0 事故 |
|
|
317
|
-
| Release Gate | 合并、发布、灰度、回滚标准 | 防止问题进入生产 |
|
|
318
|
-
|
|
319
|
-
### 3.2 AI 适合承担什么
|
|
320
|
-
|
|
321
|
-
| AI 适合项 | 说明 | 前提 |
|
|
322
|
-
|---|---|---|
|
|
323
|
-
| 生成普通实现代码 | 页面、组件、函数、Service、Repository | 已有规范和接口契约 |
|
|
324
|
-
| 生成测试代码 | 单测、集成测试、Mock、边界测试 | 测试策略明确 |
|
|
325
|
-
| 生成文档草稿 | README、API 文档、变更说明 | 架构和业务事实已确认 |
|
|
326
|
-
| 重构重复代码 | 抽函数、统一错误处理、整理目录 | 有模式规范 |
|
|
327
|
-
| 分析代码影响范围 | 查找调用链、识别变更风险 | 不替代人工判断 |
|
|
328
|
-
| 生成 Review Checklist | 基于规范检查 PR | 不能替代高风险人工 Review |
|
|
329
|
-
| 生成迁移计划草稿 | 数据库、接口、配置迁移 | 必须人工审查 |
|
|
330
|
-
|
|
331
|
-
### 3.3 AI 不应该独立决定什么
|
|
332
|
-
|
|
333
|
-
```md
|
|
334
|
-
- 是否改变系统架构。
|
|
335
|
-
- 是否新增核心模块。
|
|
336
|
-
- 是否变更 API 契约。
|
|
337
|
-
- 是否改变权限、认证、支付、风控逻辑。
|
|
338
|
-
- 是否新增第三方依赖或 SDK。
|
|
339
|
-
- 是否修改生产配置。
|
|
340
|
-
- 是否修改数据库 schema 或迁移逻辑。
|
|
341
|
-
- 是否删除历史兼容逻辑。
|
|
342
|
-
- 是否降低安全控制。
|
|
343
|
-
- 是否把调试、mock、测试入口放进生产。
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
这些操作必须进入 Human Review Gate。
|
|
347
|
-
|
|
348
|
-
---
|
|
349
|
-
|
|
350
|
-
## 4. AI Coding 失败模型与风险域
|
|
351
|
-
|
|
352
|
-
### 4.1 失败模型总览
|
|
353
|
-
|
|
354
|
-
| 风险域 | 典型表现 | 后果 | 阻断级别 |
|
|
355
|
-
|---|---|---|---|
|
|
356
|
-
| 架构漂移 | AI 新增目录、新增服务、新增抽象但无人确认 | 系统不可理解 | Critical |
|
|
357
|
-
| 模块边界混乱 | 前端组件直接调 API,后端 Router 写业务逻辑 | 难维护、难测试 | Critical |
|
|
358
|
-
| 接口契约漂移 | AI 改响应字段、状态码、错误结构 | 前后端不兼容 | Blocker / Critical |
|
|
359
|
-
| 隐式决策 | AI 自己选择技术方案但未记录 | 后续无法解释 | Major / Critical |
|
|
360
|
-
| 重复实现 | 相同工具函数、校验逻辑、错误处理多处重复 | 缺陷分散 | Major |
|
|
361
|
-
| 测试幻觉 | AI 声称已测试但没有真实跑测试 | 虚假完成 | Critical |
|
|
362
|
-
| 依赖膨胀 | 为小问题引入新库 | 供应链、包体积、漏洞风险 | Major / Critical |
|
|
363
|
-
| 安全漏洞 | Token 泄露、日志泄露、鉴权缺失、越权 | 数据事故 | Blocker |
|
|
364
|
-
| 数据迁移风险 | migration 不可回滚、旧数据不兼容 | 升级事故 | Blocker |
|
|
365
|
-
| 配置污染 | 测试环境、mock、debug 进入生产 | 生产事故 | Blocker |
|
|
366
|
-
| 过度工程化 | 简单需求被 AI 扩成复杂框架 | 维护成本上升 | Major |
|
|
367
|
-
| 局部正确全局错误 | 单功能能跑,但破坏全局模式 | 后续变更成本上升 | Critical |
|
|
368
|
-
|
|
369
|
-
### 4.2 最危险的不是错,而是“看似完成”
|
|
370
|
-
|
|
371
|
-
AI 常见输出是:
|
|
372
|
-
|
|
373
|
-
```md
|
|
374
|
-
我已经帮你完成了。
|
|
375
|
-
这不影响未来扩展。
|
|
376
|
-
这个实现是合理的。
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
但实际可能存在:
|
|
380
|
-
|
|
381
|
-
```md
|
|
382
|
-
- 没有跑测试。
|
|
383
|
-
- 没有覆盖异常分支。
|
|
384
|
-
- 没有说明改了哪些文件。
|
|
385
|
-
- 没有解释为什么这么设计。
|
|
386
|
-
- 没有检查旧接口兼容。
|
|
387
|
-
- 没有检查安全和隐私。
|
|
388
|
-
- 没有更新文档。
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
因此每次 AI 任务都必须要求输出:
|
|
392
|
-
|
|
393
|
-
```md
|
|
394
|
-
- 变更目标
|
|
395
|
-
- 变更文件
|
|
396
|
-
- 设计依据
|
|
397
|
-
- 影响范围
|
|
398
|
-
- 测试结果
|
|
399
|
-
- 未覆盖风险
|
|
400
|
-
- 需要人工确认的问题
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
---
|
|
404
|
-
|
|
405
|
-
## 5. 项目文档地图:AGENTS.md 作为 Agent 入口
|
|
406
|
-
|
|
407
|
-
### 5.1 为什么需要 AGENTS.md
|
|
408
|
-
|
|
409
|
-
AI Agent 不能只靠聊天上下文工作。项目需要一个固定入口,让 Agent 每次进入项目时知道:
|
|
410
|
-
|
|
411
|
-
```md
|
|
412
|
-
- 项目是什么。
|
|
413
|
-
- 哪些文档必须读。
|
|
414
|
-
- 当前任务应该读哪些专项规范。
|
|
415
|
-
- 哪些目录可以改。
|
|
416
|
-
- 哪些目录不能改。
|
|
417
|
-
- 代码应该按什么模式写。
|
|
418
|
-
- 做完后必须如何验证。
|
|
419
|
-
- 哪些情况必须停下来询问或人工 Review。
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
### 5.2 AGENTS.md 的定位
|
|
423
|
-
|
|
424
|
-
`AGENTS.md` 不应该塞满所有规范。它应该像地图:
|
|
425
|
-
|
|
426
|
-
```md
|
|
427
|
-
AGENTS.md = Agent 入口 + 文档索引 + 工作规则 + Release Gate 摘要
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
详细规范应拆到独立文档:
|
|
431
|
-
|
|
432
|
-
```md
|
|
433
|
-
/docs/ai-coding/
|
|
434
|
-
00-project-context.md
|
|
435
|
-
01-architecture.md
|
|
436
|
-
02-api-contracts.md
|
|
437
|
-
03-frontend-patterns.md
|
|
438
|
-
04-backend-patterns.md
|
|
439
|
-
05-data-model.md
|
|
440
|
-
06-testing-strategy.md
|
|
441
|
-
07-security-privacy.md
|
|
442
|
-
08-review-release-gate.md
|
|
443
|
-
09-task-templates.md
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
### 5.3 渐进式加载
|
|
447
|
-
|
|
448
|
-
不建议每次任务都让 AI 读取所有文档。更好的方式是:
|
|
449
|
-
|
|
450
|
-
```md
|
|
451
|
-
所有任务必须读:
|
|
452
|
-
- AGENTS.md
|
|
453
|
-
- 00-project-context.md
|
|
454
|
-
- 01-architecture.md 摘要
|
|
455
|
-
- 08-review-release-gate.md 摘要
|
|
456
|
-
|
|
457
|
-
前端任务额外读:
|
|
458
|
-
- 03-frontend-patterns.md
|
|
459
|
-
- 02-api-contracts.md,若涉及 API
|
|
460
|
-
|
|
461
|
-
后端任务额外读:
|
|
462
|
-
- 04-backend-patterns.md
|
|
463
|
-
- 05-data-model.md
|
|
464
|
-
- 02-api-contracts.md
|
|
465
|
-
|
|
466
|
-
安全 / 支付 / 权限任务额外读:
|
|
467
|
-
- 07-security-privacy.md
|
|
468
|
-
- 08-review-release-gate.md
|
|
469
|
-
```
|
|
470
|
-
|
|
471
|
-
### 5.4 CLAUDE.md / Copilot Instructions / Cursor Rules 映射
|
|
472
|
-
|
|
473
|
-
不同工具的项目指令文件不同,但逻辑相同:让工具先理解项目规则,再写代码。
|
|
474
|
-
|
|
475
|
-
| 工具 / 场景 | 推荐入口 | 说明 |
|
|
476
|
-
|---|---|---|
|
|
477
|
-
| Codex | `AGENTS.md` | Codex 官方支持项目级 AGENTS.md 指令入口 |
|
|
478
|
-
| Claude Code | `CLAUDE.md` | 可将 `CLAUDE.md` 写成项目记忆 / 规则,也可指向同一套规范 |
|
|
479
|
-
| GitHub Copilot | `.github/copilot-instructions.md`,以及 `.github/instructions/*.instructions.md` | 适合仓库级和路径级指令 |
|
|
480
|
-
| Cursor / Windsurf 等 | `.cursor/rules`、项目规则文件,按工具支持情况配置 | 建议引用同一套 `/docs/ai-coding` 规范 |
|
|
481
|
-
| 通用 Agent | `AGENTS.md` + `/docs/ai-coding` | 避免每个工具维护一份不同规范 |
|
|
482
|
-
|
|
483
|
-
可选做法:
|
|
484
|
-
|
|
485
|
-
```bash
|
|
486
|
-
# macOS / Linux 示例
|
|
487
|
-
ln -s AGENTS.md CLAUDE.md
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
注意:不同工具、不同操作系统和 Git 配置对符号链接支持不同。若团队环境复杂,可以让 `CLAUDE.md`、`.github/copilot-instructions.md` 保持简短,并在其中明确引用 `AGENTS.md` 和 `/docs/ai-coding`。
|
|
491
|
-
|
|
492
|
-
---
|
|
493
|
-
|
|
494
|
-
## 6. 第一层:架构层规范
|
|
495
|
-
|
|
496
|
-
### 6.1 架构层必须回答的问题
|
|
497
|
-
|
|
498
|
-
| 问题 | 必须写清楚什么 |
|
|
499
|
-
|---|---|
|
|
500
|
-
| 系统边界是什么 | 当前系统负责什么,不负责什么 |
|
|
501
|
-
| 核心模块是什么 | 用户、认证、订单、支付、内容、配置等模块 |
|
|
502
|
-
| 模块关系是什么 | 哪些模块可以调用哪些模块 |
|
|
503
|
-
| 数据流转是什么 | 数据从输入到存储、输出、同步如何流动 |
|
|
504
|
-
| 外部依赖是什么 | 支付、短信、邮件、对象存储、AI 模型、第三方 API |
|
|
505
|
-
| 非功能约束是什么 | 性能、安全、隐私、可靠性、可观测性、可扩展性 |
|
|
506
|
-
| 部署边界是什么 | 前端、后端、数据库、缓存、队列、CDN、对象存储 |
|
|
507
|
-
| 版本兼容是什么 | API 版本、旧客户端、数据库迁移、灰度策略 |
|
|
508
|
-
|
|
509
|
-
### 6.2 架构层文档模板
|
|
510
|
-
|
|
511
|
-
```md
|
|
512
|
-
# 01-architecture.md
|
|
513
|
-
|
|
514
|
-
## 1. 系统目标
|
|
515
|
-
- 本系统解决什么问题
|
|
516
|
-
- 当前版本范围
|
|
517
|
-
- 明确不做什么
|
|
518
|
-
|
|
519
|
-
## 2. 平台和技术栈
|
|
520
|
-
- 前端:React / TypeScript / Vite / ...
|
|
521
|
-
- 后端:Python / FastAPI / SQLAlchemy / ...
|
|
522
|
-
- 数据库:PostgreSQL / Redis / ...
|
|
523
|
-
- 部署:Docker / Kubernetes / ...
|
|
524
|
-
|
|
525
|
-
## 3. 系统边界
|
|
526
|
-
- 前端负责:页面、交互、输入校验、展示、客户端缓存
|
|
527
|
-
- 后端负责:业务规则、鉴权、数据持久化、支付校验、审计
|
|
528
|
-
- 第三方负责:支付、短信、邮件、对象存储、AI 模型等
|
|
529
|
-
|
|
530
|
-
## 4. 核心模块
|
|
531
|
-
| 模块 | 职责 | 主要输入 | 主要输出 | 不允许做什么 |
|
|
532
|
-
|---|---|---|---|---|
|
|
533
|
-
|
|
534
|
-
## 5. 数据流
|
|
535
|
-
- 用户操作 -> 前端校验 -> API -> Service -> Repository -> DB
|
|
536
|
-
- 异步任务 -> Queue -> Worker -> 状态更新 -> 通知
|
|
537
|
-
|
|
538
|
-
## 6. 外部依赖
|
|
539
|
-
| 依赖 | 用途 | 风险 | 降级方案 | 负责人 |
|
|
540
|
-
|---|---|---|---|---|
|
|
541
|
-
|
|
542
|
-
## 7. 非功能约束
|
|
543
|
-
- 性能
|
|
544
|
-
- 安全
|
|
545
|
-
- 隐私
|
|
546
|
-
- 可观测性
|
|
547
|
-
- 可回滚
|
|
548
|
-
- 可测试
|
|
549
|
-
|
|
550
|
-
## 8. 禁止破坏的架构规则
|
|
551
|
-
- 不允许前端直接绕过后端调用第三方支付确认结果
|
|
552
|
-
- 不允许 Router 写业务规则
|
|
553
|
-
- 不允许组件直接访问数据库或后端私有逻辑
|
|
554
|
-
- 不允许新增未登记的第三方依赖
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
### 6.3 架构层检查项
|
|
558
|
-
|
|
559
|
-
| 检查项 | 测试 / 验证方法 | 自动化可行性 | 阻断级别 | 通过标准 |
|
|
560
|
-
|---|---|---|---|---|
|
|
561
|
-
| 系统边界明确 | 阅读架构文档 + 需求对照 | 低 | Critical | 能说清系统负责和不负责什么 |
|
|
562
|
-
| 核心模块明确 | 架构图 + 模块表 | 中 | Critical | 每个模块有职责和禁止事项 |
|
|
563
|
-
| 外部依赖登记 | 依赖台账 + 配置检查 | 中 | Critical | 无未登记关键依赖 |
|
|
564
|
-
| 数据流清晰 | 画出核心流程数据流 | 低 | Critical | 核心流程可追踪 |
|
|
565
|
-
| 非功能约束明确 | 性能、安全、隐私、监控清单 | 中 | Major / Critical | 上线前有验收标准 |
|
|
566
|
-
|
|
567
|
-
---
|
|
568
|
-
|
|
569
|
-
## 7. 第二层:模式与抽象层规范
|
|
570
|
-
|
|
571
|
-
### 7.1 模式与抽象层的目标
|
|
572
|
-
|
|
573
|
-
这一层的目标是让 AI 在写代码时有稳定模式,而不是临时发挥。
|
|
574
|
-
|
|
575
|
-
必须回答:
|
|
576
|
-
|
|
577
|
-
```md
|
|
578
|
-
- 目录如何组织?
|
|
579
|
-
- 哪些文件放在哪?
|
|
580
|
-
- 前端组件怎么分?
|
|
581
|
-
- 后端 Router / Service / Repository 怎么分?
|
|
582
|
-
- 错误怎么处理?
|
|
583
|
-
- API 怎么请求?
|
|
584
|
-
- 状态怎么管理?
|
|
585
|
-
- 测试怎么写?
|
|
586
|
-
- 命名怎么统一?
|
|
587
|
-
```
|
|
588
|
-
|
|
589
|
-
### 7.2 抽象层不清楚时的典型事故
|
|
590
|
-
|
|
591
|
-
```md
|
|
592
|
-
- 页面里直接 fetch API。
|
|
593
|
-
- Hook 里写业务规则和持久化逻辑。
|
|
594
|
-
- Service 里拼 UI 文案。
|
|
595
|
-
- Router 里写数据库事务。
|
|
596
|
-
- Repository 返回业务 DTO。
|
|
597
|
-
- 错误处理到处 try/catch。
|
|
598
|
-
- 同一个 API 的响应类型重复定义。
|
|
599
|
-
- 多个组件各自实现 loading / error / empty 状态。
|
|
600
|
-
- 测试只测成功路径。
|
|
601
|
-
```
|
|
602
|
-
|
|
603
|
-
### 7.3 模式与抽象层模板
|
|
604
|
-
|
|
605
|
-
```md
|
|
606
|
-
# 03-frontend-patterns.md
|
|
607
|
-
|
|
608
|
-
## 1. 目录规范
|
|
609
|
-
## 2. 组件分层
|
|
610
|
-
## 3. Hook 规范
|
|
611
|
-
## 4. Service / API Client 规范
|
|
612
|
-
## 5. 状态管理规范
|
|
613
|
-
## 6. 表单和校验规范
|
|
614
|
-
## 7. 错误、Loading、Empty 状态规范
|
|
615
|
-
## 8. 路由和权限规范
|
|
616
|
-
## 9. 测试规范
|
|
617
|
-
## 10. 禁止事项
|
|
618
|
-
```
|
|
619
|
-
|
|
620
|
-
```md
|
|
621
|
-
# 04-backend-patterns.md
|
|
622
|
-
|
|
623
|
-
## 1. 目录规范
|
|
624
|
-
## 2. Router / Controller 规范
|
|
625
|
-
## 3. Service 规范
|
|
626
|
-
## 4. Repository 规范
|
|
627
|
-
## 5. Model / Schema / DTO 规范
|
|
628
|
-
## 6. 事务规范
|
|
629
|
-
## 7. 异常和错误码规范
|
|
630
|
-
## 8. 鉴权和权限规范
|
|
631
|
-
## 9. 日志与审计规范
|
|
632
|
-
## 10. 测试规范
|
|
633
|
-
## 11. 禁止事项
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
### 7.4 抽象层检查项
|
|
637
|
-
|
|
638
|
-
| 检查项 | 测试 / 验证方法 | 自动化可行性 | 阻断级别 | 通过标准 |
|
|
639
|
-
|---|---|---|---|---|
|
|
640
|
-
| 目录结构一致 | 静态扫描 + PR Review | 高 | Major / Critical | 新代码落在正确目录 |
|
|
641
|
-
| 分层职责清晰 | Review 关键文件 | 中 | Critical | 不跨层写逻辑 |
|
|
642
|
-
| 错误处理统一 | 测试错误分支 + 代码扫描 | 中 | Critical | API / UI 错误结构一致 |
|
|
643
|
-
| 测试模式明确 | 测试目录 + coverage + 用例审查 | 高 | Major / Critical | 关键分支有测试 |
|
|
644
|
-
| 禁止事项可检查 | lint、脚本、依赖扫描 | 高 | Critical | 禁止模式未出现 |
|
|
645
|
-
|
|
646
|
-
---
|
|
647
|
-
|
|
648
|
-
## 8. 第三层:实现层规范
|
|
649
|
-
|
|
650
|
-
### 8.1 实现层可以让 AI 放大效率
|
|
651
|
-
|
|
652
|
-
实现层包括:
|
|
653
|
-
|
|
654
|
-
```md
|
|
655
|
-
- 函数
|
|
656
|
-
- 类
|
|
657
|
-
- React 组件
|
|
658
|
-
- 页面
|
|
659
|
-
- Hook
|
|
660
|
-
- API Client
|
|
661
|
-
- Router
|
|
662
|
-
- Service
|
|
663
|
-
- Repository
|
|
664
|
-
- DTO
|
|
665
|
-
- 测试用例
|
|
666
|
-
- Mock 数据
|
|
667
|
-
- 文档片段
|
|
668
|
-
```
|
|
669
|
-
|
|
670
|
-
这些是 AI 最适合生成的内容,但必须遵守前两层约束。
|
|
671
|
-
|
|
672
|
-
### 8.2 实现层必须遵守的规则
|
|
673
|
-
|
|
674
|
-
```md
|
|
675
|
-
- 不得新增架构中不存在的核心模块,除非任务明确要求并通过架构 Review。
|
|
676
|
-
- 不得改变 API 契约,除非任务明确要求并更新 API 文档。
|
|
677
|
-
- 不得新增第三方依赖,除非说明原因、替代方案和风险。
|
|
678
|
-
- 不得在组件里直接写 API 细节。
|
|
679
|
-
- 不得在 Router 里写复杂业务逻辑。
|
|
680
|
-
- 不得绕过统一错误处理。
|
|
681
|
-
- 不得删除已有测试来让新代码通过。
|
|
682
|
-
- 不得把 mock、debug、测试入口放进生产路径。
|
|
683
|
-
- 不得硬编码 secret、token、API key、支付参数。
|
|
684
|
-
- 不得声称测试通过但没有提供命令和结果。
|
|
685
|
-
```
|
|
686
|
-
|
|
687
|
-
### 8.3 实现层什么时候必须人工 Review
|
|
688
|
-
|
|
689
|
-
以下场景不能只靠 AI Review:
|
|
690
|
-
|
|
691
|
-
| 场景 | 原因 | 阻断级别 |
|
|
692
|
-
|---|---|---|
|
|
693
|
-
| 支付金额、订单状态、回调验证 | 涉及资金和权益 | Blocker |
|
|
694
|
-
| 登录、认证、授权、权限 | 涉及账号安全和越权 | Blocker |
|
|
695
|
-
| 数据库 schema / migration | 涉及数据丢失和升级事故 | Blocker |
|
|
696
|
-
| Token、密钥、本地存储、日志 | 涉及敏感信息泄露 | Blocker |
|
|
697
|
-
| 用户隐私和数据采集 | 涉及合规风险 | Blocker / Critical |
|
|
698
|
-
| 生产配置、CI/CD、部署脚本 | 涉及生产事故 | Blocker |
|
|
699
|
-
| 删除兼容逻辑 | 可能影响旧版本用户 | Critical |
|
|
700
|
-
| 新增依赖 / SDK | 涉及供应链和隐私 | Critical |
|
|
701
|
-
| 风控规则 | 涉及黑灰产和误伤 | Critical |
|
|
702
|
-
| 法律、医疗、金融、儿童相关逻辑 | 高合规风险 | Blocker / Critical |
|
|
703
|
-
|
|
704
|
-
---
|
|
705
|
-
|
|
706
|
-
## 9. AI Coding 工作流
|
|
707
|
-
|
|
708
|
-
### 9.1 标准流程
|
|
709
|
-
|
|
710
|
-
```mermaid
|
|
711
|
-
graph LR
|
|
712
|
-
A[需求输入] --> B[澄清边界]
|
|
713
|
-
B --> C[检查架构影响]
|
|
714
|
-
C --> D[检查模式与抽象]
|
|
715
|
-
D --> E[生成任务计划]
|
|
716
|
-
E --> F[人工确认高风险点]
|
|
717
|
-
F --> G[AI 实现]
|
|
718
|
-
G --> H[自动化测试]
|
|
719
|
-
H --> I[AI 自检报告]
|
|
720
|
-
I --> J[人工 Review]
|
|
721
|
-
J --> K[合并 / 灰度 / 发布]
|
|
722
|
-
```
|
|
723
|
-
|
|
724
|
-
### 9.2 不允许直接进入编码的情况
|
|
725
|
-
|
|
726
|
-
当出现以下任一情况时,AI 必须先产出方案,而不是直接改代码:
|
|
727
|
-
|
|
728
|
-
```md
|
|
729
|
-
- 需求边界不清楚。
|
|
730
|
-
- 需要新增模块。
|
|
731
|
-
- 需要改 API 契约。
|
|
732
|
-
- 需要改数据库结构。
|
|
733
|
-
- 涉及支付、权限、认证、安全、隐私。
|
|
734
|
-
- 涉及删除旧逻辑。
|
|
735
|
-
- 涉及大范围重构。
|
|
736
|
-
- 需要新增依赖。
|
|
737
|
-
- 涉及生产配置。
|
|
738
|
-
- 现有文档与代码不一致。
|
|
739
|
-
```
|
|
740
|
-
|
|
741
|
-
### 9.3 AI 任务计划必须包含
|
|
742
|
-
|
|
743
|
-
```md
|
|
744
|
-
## Task Plan
|
|
745
|
-
|
|
746
|
-
1. 任务目标
|
|
747
|
-
2. 需求边界
|
|
748
|
-
3. 涉及模块
|
|
749
|
-
4. 需要读取的规范文档
|
|
750
|
-
5. 计划修改文件
|
|
751
|
-
6. 是否影响 API 契约
|
|
752
|
-
7. 是否影响数据库 / 缓存 / 配置
|
|
753
|
-
8. 是否影响权限 / 安全 / 隐私
|
|
754
|
-
9. 测试计划
|
|
755
|
-
10. 需要人工确认的问题
|
|
756
|
-
```
|
|
757
|
-
|
|
758
|
-
### 9.4 AI 完成后必须输出
|
|
759
|
-
|
|
760
|
-
```md
|
|
761
|
-
## Change Report
|
|
762
|
-
|
|
763
|
-
1. 本次完成了什么
|
|
764
|
-
2. 修改了哪些文件
|
|
765
|
-
3. 每个文件为什么修改
|
|
766
|
-
4. 是否遵守架构与模式规范
|
|
767
|
-
5. 是否改动 API 契约
|
|
768
|
-
6. 是否新增依赖
|
|
769
|
-
7. 是否涉及安全 / 隐私 / 支付 / 权限
|
|
770
|
-
8. 已运行的测试命令和结果
|
|
771
|
-
9. 未覆盖风险
|
|
772
|
-
10. 建议人工 Review 的点
|
|
773
|
-
```
|
|
774
|
-
|
|
775
|
-
---
|
|
776
|
-
|
|
777
|
-
## 10. AI 任务拆分与变更边界
|
|
778
|
-
|
|
779
|
-
### 10.1 任务必须小而明确
|
|
780
|
-
|
|
781
|
-
不建议给 AI 这样的任务:
|
|
782
|
-
|
|
783
|
-
```md
|
|
784
|
-
帮我把整个商城做完。
|
|
785
|
-
帮我重构一下项目。
|
|
786
|
-
帮我优化代码。
|
|
787
|
-
帮我把后端补完整。
|
|
788
|
-
```
|
|
789
|
-
|
|
790
|
-
应拆成:
|
|
791
|
-
|
|
792
|
-
```md
|
|
793
|
-
- 基于现有 API 契约,实现商品列表页面,不改 API。
|
|
794
|
-
- 为订单创建接口补充幂等校验,不改数据库结构。
|
|
795
|
-
- 将用户资料页面的 API 调用从组件迁移到 userService,保持 UI 不变。
|
|
796
|
-
- 为 authService 增加 token refresh 失败用例。
|
|
797
|
-
```
|
|
798
|
-
|
|
799
|
-
### 10.2 任务粒度标准
|
|
800
|
-
|
|
801
|
-
| 任务规模 | 适合 AI 直接实现吗 | 要求 |
|
|
802
|
-
|---|---|---|
|
|
803
|
-
| 单函数 / 单组件 | 可以 | 有明确输入输出 |
|
|
804
|
-
| 单页面 | 可以 | UI 状态、API、错误、测试明确 |
|
|
805
|
-
| 单接口 | 可以 | API 契约和业务规则明确 |
|
|
806
|
-
| 单模块 | 谨慎 | 先设计模块边界 |
|
|
807
|
-
| 跨模块功能 | 不建议直接实现 | 先出架构 / 任务拆分 |
|
|
808
|
-
| 大型重构 | 不允许直接实现 | 必须分阶段、可回滚 |
|
|
809
|
-
| 支付 / 鉴权 / 迁移 | 不允许自动完成后直接合并 | 必须人工 Review |
|
|
810
|
-
|
|
811
|
-
### 10.3 AI 变更边界声明
|
|
812
|
-
|
|
813
|
-
每个任务应声明:
|
|
814
|
-
|
|
815
|
-
```md
|
|
816
|
-
允许修改:
|
|
817
|
-
- src/features/product/**
|
|
818
|
-
- src/services/productService.ts
|
|
819
|
-
- tests/product/**
|
|
820
|
-
|
|
821
|
-
禁止修改:
|
|
822
|
-
- src/auth/**
|
|
823
|
-
- src/payment/**
|
|
824
|
-
- database/migrations/**
|
|
825
|
-
- deployment/**
|
|
826
|
-
```
|
|
827
|
-
|
|
828
|
-
---
|
|
829
|
-
|
|
830
|
-
## 11. 代码评审策略:不逐行盯死,但要盯住风险
|
|
831
|
-
|
|
832
|
-
### 11.1 Review 的核心变化
|
|
833
|
-
|
|
834
|
-
AI Coding 时代,Review 不应只问:
|
|
835
|
-
|
|
836
|
-
```md
|
|
837
|
-
这几行代码写得对不对?
|
|
838
|
-
```
|
|
839
|
-
|
|
840
|
-
还要问:
|
|
841
|
-
|
|
842
|
-
```md
|
|
843
|
-
这个变更是否破坏架构?
|
|
844
|
-
这个抽象是否和项目一致?
|
|
845
|
-
这个接口契约是否稳定?
|
|
846
|
-
这个变更是否可测试?
|
|
847
|
-
这个功能出了问题能否回滚?
|
|
848
|
-
这个代码是否引入安全、隐私、依赖风险?
|
|
849
|
-
```
|
|
850
|
-
|
|
851
|
-
### 11.2 Review 分层
|
|
852
|
-
|
|
853
|
-
| Review 层级 | 关注点 | 负责人 | 是否必须 |
|
|
854
|
-
|---|---|---|---|
|
|
855
|
-
| 架构 Review | 系统边界、模块关系、数据流 | Tech Lead / 架构师 | 大变更必须 |
|
|
856
|
-
| 抽象 Review | 分层、目录、命名、职责 | 模块 Owner | 必须 |
|
|
857
|
-
| 契约 Review | API、错误码、字段、版本兼容 | 前后端 Owner | 涉及接口必须 |
|
|
858
|
-
| 测试 Review | 单测、集成、边界、异常 | QA / Owner | 必须 |
|
|
859
|
-
| 安全 Review | 鉴权、隐私、日志、依赖、Secrets | 安全 / Senior | 高风险必须 |
|
|
860
|
-
| 实现 Review | 具体代码、可读性、性能 | 代码 Owner | 普通变更抽样,高风险全量 |
|
|
861
|
-
|
|
862
|
-
### 11.3 不必逐行读的代码
|
|
863
|
-
|
|
864
|
-
以下代码在规范充分、测试覆盖充分时,可以用自动化 + 抽样 Review:
|
|
865
|
-
|
|
866
|
-
```md
|
|
867
|
-
- 普通 UI 样式调整
|
|
868
|
-
- 简单展示组件
|
|
869
|
-
- 已有模式下的 CRUD 页面
|
|
870
|
-
- 已有 Service 模板下的普通 API 调用
|
|
871
|
-
- 普通表单校验
|
|
872
|
-
- 普通单元测试补充
|
|
873
|
-
```
|
|
874
|
-
|
|
875
|
-
### 11.4 必须重点读的代码
|
|
876
|
-
|
|
877
|
-
```md
|
|
878
|
-
- 影响鉴权、权限、Session、Token 的代码
|
|
879
|
-
- 影响支付、订单、退款、权益的代码
|
|
880
|
-
- 影响数据迁移、删除、清理的代码
|
|
881
|
-
- 影响外部回调、Webhook、签名验证的代码
|
|
882
|
-
- 影响日志、监控、审计的代码
|
|
883
|
-
- 影响生产配置、CI/CD、部署的代码
|
|
884
|
-
- 修改公共工具、公共中间件、全局状态的代码
|
|
885
|
-
- 删除旧兼容逻辑的代码
|
|
886
|
-
```
|
|
887
|
-
|
|
888
|
-
---
|
|
889
|
-
|
|
890
|
-
## 12. 测试、CI 与质量门禁
|
|
891
|
-
|
|
892
|
-
### 12.1 AI 生成代码必须可验证
|
|
893
|
-
|
|
894
|
-
AI 不能只说“已完成”。必须提供验证证据:
|
|
895
|
-
|
|
896
|
-
```md
|
|
897
|
-
- 运行了哪些测试命令
|
|
898
|
-
- 测试是否通过
|
|
899
|
-
- 哪些测试未运行,为什么
|
|
900
|
-
- 手动验证了哪些页面 / 接口
|
|
901
|
-
- 未覆盖哪些风险
|
|
902
|
-
```
|
|
903
|
-
|
|
904
|
-
### 12.2 CI 最低门禁
|
|
905
|
-
|
|
906
|
-
| 门禁 | 说明 | 阻断级别 |
|
|
907
|
-
|---|---|---|
|
|
908
|
-
| Lint | 代码风格和基础错误 | Major / Critical |
|
|
909
|
-
| Type Check | TypeScript / Python typing | Critical |
|
|
910
|
-
| Unit Test | 单元测试 | Critical |
|
|
911
|
-
| Integration Test | API / Service / DB 集成 | Critical |
|
|
912
|
-
| E2E Smoke | 核心流程冒烟 | Critical |
|
|
913
|
-
| Dependency Scan | 依赖漏洞和许可证 | Critical |
|
|
914
|
-
| Secret Scan | 密钥泄露扫描 | Blocker |
|
|
915
|
-
| Build | 生产构建可通过 | Blocker |
|
|
916
|
-
| Contract Test | API 契约测试 | Critical |
|
|
917
|
-
|
|
918
|
-
### 12.3 AI 不得规避测试
|
|
919
|
-
|
|
920
|
-
禁止:
|
|
921
|
-
|
|
922
|
-
```md
|
|
923
|
-
- 删除失败测试。
|
|
924
|
-
- 降低断言强度。
|
|
925
|
-
- 把失败测试标记 skip,除非有审批。
|
|
926
|
-
- 用 mock 掩盖真实集成问题。
|
|
927
|
-
- 只跑局部测试却声称全量通过。
|
|
928
|
-
- 不提供测试命令和结果。
|
|
929
|
-
```
|
|
930
|
-
|
|
931
|
-
### 12.4 测试策略矩阵
|
|
932
|
-
|
|
933
|
-
| 场景 | 必测内容 | 自动化可行性 | 人工要求 |
|
|
934
|
-
|---|---|---|---|
|
|
935
|
-
| 普通 UI | 展示、交互、错误态 | 高 | 抽样 |
|
|
936
|
-
| API | 成功、失败、鉴权、边界 | 高 | 契约 Review |
|
|
937
|
-
| 支付 | 取消、超时、回调、重复支付、对账 | 中 | 必须人工 |
|
|
938
|
-
| 权限 | 拒绝、永久拒绝、降级 | 中 | 关键路径人工 |
|
|
939
|
-
| 数据迁移 | 老数据、新数据、中断、回滚 | 中 | 必须人工 |
|
|
940
|
-
| 安全 | 越权、注入、日志、Secrets | 中 | 必须人工 |
|
|
941
|
-
|
|
942
|
-
---
|
|
943
|
-
|
|
944
|
-
## 13. 安全、隐私、依赖与供应链
|
|
945
|
-
|
|
946
|
-
### 13.1 AI 生成代码的安全基线
|
|
947
|
-
|
|
948
|
-
```md
|
|
949
|
-
- 不得硬编码 secret、token、API key、数据库密码。
|
|
950
|
-
- 不得在日志中打印 token、手机号、邮箱、地址、身份证、支付信息。
|
|
951
|
-
- 不得把敏感错误直接返回给前端。
|
|
952
|
-
- 不得绕过鉴权和权限校验。
|
|
953
|
-
- 不得信任客户端金额、用户 ID、角色、权限、订单状态。
|
|
954
|
-
- 不得忽略 TLS / HTTPS 错误。
|
|
955
|
-
- 不得引入未登记依赖。
|
|
956
|
-
- 不得把用户输入直接拼接到 SQL、命令、模板、URL。
|
|
957
|
-
- 不得让 WebView / JSBridge / Deep Link 直接触发敏感操作。
|
|
958
|
-
```
|
|
959
|
-
|
|
960
|
-
### 13.2 依赖治理
|
|
961
|
-
|
|
962
|
-
AI 很容易为了快速完成任务引入依赖。必须约束:
|
|
963
|
-
|
|
964
|
-
```md
|
|
965
|
-
新增依赖必须说明:
|
|
966
|
-
- 为什么需要
|
|
967
|
-
- 是否有内置替代方案
|
|
968
|
-
- 是否有更轻量替代
|
|
969
|
-
- 是否有安全漏洞
|
|
970
|
-
- 是否影响包体积
|
|
971
|
-
- 是否影响启动性能
|
|
972
|
-
- 是否有许可证风险
|
|
973
|
-
- 谁负责后续升级
|
|
974
|
-
```
|
|
975
|
-
|
|
976
|
-
### 13.3 AI / LLM 特有风险
|
|
977
|
-
|
|
978
|
-
如果项目本身使用 LLM 或 AI Agent,还必须检查:
|
|
979
|
-
|
|
980
|
-
```md
|
|
981
|
-
- Prompt Injection
|
|
982
|
-
- 不安全输出处理
|
|
983
|
-
- 训练 / 检索数据污染
|
|
984
|
-
- 模型拒绝服务和成本滥用
|
|
985
|
-
- 供应链风险
|
|
986
|
-
- 敏感信息泄露
|
|
987
|
-
- 工具调用越权
|
|
988
|
-
- 过度自治
|
|
989
|
-
- 错误信息导致用户误导
|
|
990
|
-
```
|
|
991
|
-
|
|
992
|
-
### 13.4 高风险安全任务必须人工 Review
|
|
993
|
-
|
|
994
|
-
AI 可以协助生成安全代码,但不能独立批准:
|
|
995
|
-
|
|
996
|
-
```md
|
|
997
|
-
- 鉴权中间件
|
|
998
|
-
- 权限模型
|
|
999
|
-
- 支付签名验证
|
|
1000
|
-
- Webhook 验证
|
|
1001
|
-
- 数据加密
|
|
1002
|
-
- Secrets 管理
|
|
1003
|
-
- 数据删除
|
|
1004
|
-
- 审计日志
|
|
1005
|
-
- 风控规则
|
|
1006
|
-
```
|
|
1007
|
-
|
|
1008
|
-
---
|
|
1009
|
-
|
|
1010
|
-
## 14. 文档、证据留存与可追溯性
|
|
1011
|
-
|
|
1012
|
-
### 14.1 每次 AI 变更必须留下证据
|
|
1013
|
-
|
|
1014
|
-
```md
|
|
1015
|
-
- 任务描述
|
|
1016
|
-
- 任务计划
|
|
1017
|
-
- 变更文件清单
|
|
1018
|
-
- 关键设计决策
|
|
1019
|
-
- 测试命令和结果
|
|
1020
|
-
- 未覆盖风险
|
|
1021
|
-
- 人工 Review 记录
|
|
1022
|
-
- 是否更新文档
|
|
1023
|
-
```
|
|
1024
|
-
|
|
1025
|
-
### 14.2 架构决策记录 ADR
|
|
1026
|
-
|
|
1027
|
-
对于重要决策,必须写 ADR:
|
|
1028
|
-
|
|
1029
|
-
```md
|
|
1030
|
-
/docs/adr/0001-use-fastapi-service-repository-pattern.md
|
|
1031
|
-
```
|
|
1032
|
-
|
|
1033
|
-
模板:
|
|
1034
|
-
|
|
1035
|
-
```md
|
|
1036
|
-
# ADR-0001:决策标题
|
|
1037
|
-
|
|
1038
|
-
## 背景
|
|
1039
|
-
为什么需要这个决策?
|
|
1040
|
-
|
|
1041
|
-
## 决策
|
|
1042
|
-
我们决定采用什么方案?
|
|
1043
|
-
|
|
1044
|
-
## 替代方案
|
|
1045
|
-
考虑过哪些方案?为什么不用?
|
|
1046
|
-
|
|
1047
|
-
## 影响
|
|
1048
|
-
对架构、测试、性能、安全、团队有什么影响?
|
|
1049
|
-
|
|
1050
|
-
## 回滚或调整方式
|
|
1051
|
-
如果未来不合适,怎么调整?
|
|
1052
|
-
```
|
|
1053
|
-
|
|
1054
|
-
### 14.3 AI 生成代码的可追溯字段
|
|
1055
|
-
|
|
1056
|
-
PR 或任务记录中建议包含:
|
|
1057
|
-
|
|
1058
|
-
```md
|
|
1059
|
-
- AI 工具:Codex / Claude Code / Copilot / Cursor / 其他
|
|
1060
|
-
- 模型,若团队需要记录
|
|
1061
|
-
- 使用的规范文件
|
|
1062
|
-
- 任务 Prompt 摘要
|
|
1063
|
-
- 是否由 AI 生成主要代码
|
|
1064
|
-
- 人工 Review 人
|
|
1065
|
-
- 合并人
|
|
1066
|
-
```
|
|
1067
|
-
|
|
1068
|
-
---
|
|
1069
|
-
|
|
1070
|
-
## 15. 团队治理、角色分工与持续改进
|
|
1071
|
-
|
|
1072
|
-
### 15.1 角色分工
|
|
1073
|
-
|
|
1074
|
-
| 角色 | 职责 |
|
|
1075
|
-
|---|---|
|
|
1076
|
-
| Tech Lead | 维护架构层规范,批准架构变更 |
|
|
1077
|
-
| Module Owner | 维护模块边界和模式规范,Review 模块变更 |
|
|
1078
|
-
| AI Operator | 操作 AI Agent,提交任务计划和变更报告 |
|
|
1079
|
-
| Reviewer | Review 代码、架构、测试和风险 |
|
|
1080
|
-
| QA | 维护测试矩阵和自动化策略 |
|
|
1081
|
-
| Security | 维护安全基线和高风险 Review 清单 |
|
|
1082
|
-
| DevOps | 维护 CI、构建、发布、回滚和监控 |
|
|
1083
|
-
| Product | 明确需求边界和不做范围 |
|
|
1084
|
-
|
|
1085
|
-
### 15.2 规范不是一次性写完
|
|
1086
|
-
|
|
1087
|
-
AGENTS.md 和规范文档应该持续迭代:
|
|
1088
|
-
|
|
1089
|
-
```md
|
|
1090
|
-
当 AI 第二次犯同样错误时,把规则写入规范。
|
|
1091
|
-
当 Code Review 发现 AI 应该知道的项目知识时,把规则写入规范。
|
|
1092
|
-
当团队反复在聊天里解释同一件事时,把规则写入规范。
|
|
1093
|
-
当新人需要同样上下文才能上手时,把规则写入规范。
|
|
1094
|
-
```
|
|
1095
|
-
|
|
1096
|
-
### 15.3 规范更新流程
|
|
1097
|
-
|
|
1098
|
-
```md
|
|
1099
|
-
发现问题 -> 归因到架构 / 抽象 / 实现 / 工具 / 测试 -> 更新对应规范 -> 加入自动化检查 -> 复盘是否降低重复错误
|
|
1100
|
-
```
|
|
1101
|
-
|
|
1102
|
-
---
|
|
1103
|
-
|
|
1104
|
-
## 16. 通用 Release Gate
|
|
1105
|
-
|
|
1106
|
-
### 16.1 Blocker:存在一个就不能合并 / 发布
|
|
1107
|
-
|
|
1108
|
-
```md
|
|
1109
|
-
- AI 未读项目规范即进行大范围修改。
|
|
1110
|
-
- 未经确认改变系统架构或核心模块边界。
|
|
1111
|
-
- 未经确认改变 API 契约。
|
|
1112
|
-
- 未经确认修改数据库 schema / migration。
|
|
1113
|
-
- 支付金额、权限、用户身份、订单状态依赖客户端可信输入。
|
|
1114
|
-
- 用户 A 可以访问用户 B 数据。
|
|
1115
|
-
- Token、secret、API key 明文存储或泄露。
|
|
1116
|
-
- 测试环境、mock、debug 入口进入生产路径。
|
|
1117
|
-
- AI 删除测试或降低断言来让代码通过。
|
|
1118
|
-
- 生产构建失败。
|
|
1119
|
-
- 关键流程没有可回滚 / 可关闭方案。
|
|
1120
|
-
- 高风险代码没有人工 Review。
|
|
1121
|
-
```
|
|
1122
|
-
|
|
1123
|
-
### 16.2 Critical:必须修复后才能全量
|
|
1124
|
-
|
|
1125
|
-
```md
|
|
1126
|
-
- 架构文档与代码明显不一致。
|
|
1127
|
-
- 模块职责混乱,存在跨层调用。
|
|
1128
|
-
- API 错误结构不统一。
|
|
1129
|
-
- 旧版本兼容失败。
|
|
1130
|
-
- 依赖未登记或存在高危漏洞。
|
|
1131
|
-
- 核心流程测试缺失。
|
|
1132
|
-
- AI 变更没有说明测试命令和结果。
|
|
1133
|
-
- 日志可能泄露敏感信息。
|
|
1134
|
-
- 权限拒绝或异常分支无降级。
|
|
1135
|
-
- 监控、告警、日志缺失导致无法定位问题。
|
|
1136
|
-
```
|
|
1137
|
-
|
|
1138
|
-
### 16.3 Major / Minor
|
|
1139
|
-
|
|
1140
|
-
```md
|
|
1141
|
-
Major:
|
|
1142
|
-
- 部分组件命名不一致。
|
|
1143
|
-
- 普通页面缺少某些边界状态。
|
|
1144
|
-
- 部分测试覆盖不足但不影响核心路径。
|
|
1145
|
-
- 文档更新不完整但关键事实清楚。
|
|
1146
|
-
|
|
1147
|
-
Minor:
|
|
1148
|
-
- 文案、样式、注释、格式等低风险问题。
|
|
1149
|
-
```
|
|
1150
|
-
|
|
1151
|
-
---
|
|
1152
|
-
|
|
1153
|
-
# 第二卷:React + Python 前后端分离项目示例
|
|
1154
|
-
|
|
1155
|
-
## 17. 示例项目边界
|
|
1156
|
-
|
|
1157
|
-
本示例假设:
|
|
1158
|
-
|
|
1159
|
-
```md
|
|
1160
|
-
前端:React + TypeScript + Vite
|
|
1161
|
-
后端:Python + FastAPI
|
|
1162
|
-
数据库:PostgreSQL
|
|
1163
|
-
缓存:Redis,可选
|
|
1164
|
-
认证:JWT / Session,按项目选择
|
|
1165
|
-
API:REST JSON
|
|
1166
|
-
部署:Docker / CI/CD
|
|
1167
|
-
```
|
|
1168
|
-
|
|
1169
|
-
目标不是规定所有项目必须这样选型,而是演示如何把“三层控制模型”落到具体技术栈。
|
|
1170
|
-
|
|
1171
|
-
---
|
|
1172
|
-
|
|
1173
|
-
## 18. 推荐仓库结构
|
|
1174
|
-
|
|
1175
|
-
```md
|
|
1176
|
-
project-root/
|
|
1177
|
-
AGENTS.md
|
|
1178
|
-
CLAUDE.md # 可选:指向 AGENTS.md 或引用同一套规范
|
|
1179
|
-
.github/
|
|
1180
|
-
copilot-instructions.md # 可选:引用 AGENTS.md
|
|
1181
|
-
workflows/
|
|
1182
|
-
ci.yml
|
|
1183
|
-
pull_request_template.md
|
|
1184
|
-
|
|
1185
|
-
docs/
|
|
1186
|
-
ai-coding/
|
|
1187
|
-
00-project-context.md
|
|
1188
|
-
01-architecture.md
|
|
1189
|
-
02-api-contracts.md
|
|
1190
|
-
03-frontend-patterns.md
|
|
1191
|
-
04-backend-patterns.md
|
|
1192
|
-
05-data-model.md
|
|
1193
|
-
06-testing-strategy.md
|
|
1194
|
-
07-security-privacy.md
|
|
1195
|
-
08-review-release-gate.md
|
|
1196
|
-
09-task-templates.md
|
|
1197
|
-
adr/
|
|
1198
|
-
0001-example.md
|
|
1199
|
-
|
|
1200
|
-
frontend/
|
|
1201
|
-
src/
|
|
1202
|
-
app/
|
|
1203
|
-
routes/
|
|
1204
|
-
features/
|
|
1205
|
-
components/
|
|
1206
|
-
hooks/
|
|
1207
|
-
services/
|
|
1208
|
-
types/
|
|
1209
|
-
lib/
|
|
1210
|
-
test/
|
|
1211
|
-
|
|
1212
|
-
backend/
|
|
1213
|
-
app/
|
|
1214
|
-
main.py
|
|
1215
|
-
api/
|
|
1216
|
-
routers/
|
|
1217
|
-
core/
|
|
1218
|
-
services/
|
|
1219
|
-
repositories/
|
|
1220
|
-
models/
|
|
1221
|
-
schemas/
|
|
1222
|
-
db/
|
|
1223
|
-
workers/
|
|
1224
|
-
tests/
|
|
1225
|
-
|
|
1226
|
-
scripts/
|
|
1227
|
-
deployment/
|
|
1228
|
-
```
|
|
1229
|
-
|
|
1230
|
-
---
|
|
1231
|
-
|
|
1232
|
-
## 19. AGENTS.md 最小可用模板
|
|
1233
|
-
|
|
1234
|
-
```md
|
|
1235
|
-
# AGENTS.md
|
|
1236
|
-
|
|
1237
|
-
本文件是本仓库所有 AI Coding Agent 的入口说明。任何编码任务开始前必须先阅读本文件。
|
|
1238
|
-
|
|
1239
|
-
## 1. 项目概览
|
|
1240
|
-
- 项目名称:待填写
|
|
1241
|
-
- 项目类型:React + Python 前后端分离
|
|
1242
|
-
- 当前阶段:MVP / Beta / Production,待填写
|
|
1243
|
-
- 核心业务:待填写
|
|
1244
|
-
|
|
1245
|
-
## 2. 必读文档
|
|
1246
|
-
所有任务必须读取:
|
|
1247
|
-
- docs/ai-coding/00-project-context.md
|
|
1248
|
-
- docs/ai-coding/01-architecture.md
|
|
1249
|
-
- docs/ai-coding/08-review-release-gate.md
|
|
1250
|
-
|
|
1251
|
-
前端任务额外读取:
|
|
1252
|
-
- docs/ai-coding/03-frontend-patterns.md
|
|
1253
|
-
- docs/ai-coding/02-api-contracts.md,若涉及 API
|
|
1254
|
-
|
|
1255
|
-
后端任务额外读取:
|
|
1256
|
-
- docs/ai-coding/04-backend-patterns.md
|
|
1257
|
-
- docs/ai-coding/05-data-model.md
|
|
1258
|
-
- docs/ai-coding/02-api-contracts.md
|
|
1259
|
-
|
|
1260
|
-
安全、支付、认证、权限、隐私、生产配置任务额外读取:
|
|
1261
|
-
- docs/ai-coding/07-security-privacy.md
|
|
1262
|
-
|
|
1263
|
-
## 3. 工作规则
|
|
1264
|
-
- 不允许在没有计划的情况下进行跨模块修改。
|
|
1265
|
-
- 不允许未经确认改变 API 契约。
|
|
1266
|
-
- 不允许未经确认新增第三方依赖。
|
|
1267
|
-
- 不允许未经确认修改数据库 migration。
|
|
1268
|
-
- 不允许硬编码 secret、token、API key、支付参数。
|
|
1269
|
-
- 不允许删除测试或降低断言来让代码通过。
|
|
1270
|
-
- 修改完成必须输出变更报告和测试结果。
|
|
1271
|
-
|
|
1272
|
-
## 4. 任务计划要求
|
|
1273
|
-
开始编码前必须说明:
|
|
1274
|
-
- 任务目标
|
|
1275
|
-
- 涉及模块
|
|
1276
|
-
- 计划修改文件
|
|
1277
|
-
- 是否影响 API / DB / 权限 / 安全 / 隐私
|
|
1278
|
-
- 测试计划
|
|
1279
|
-
- 需要人工确认的问题
|
|
1280
|
-
|
|
1281
|
-
## 5. 完成报告要求
|
|
1282
|
-
完成后必须说明:
|
|
1283
|
-
- 修改了哪些文件
|
|
1284
|
-
- 为什么这样改
|
|
1285
|
-
- 跑了哪些测试命令
|
|
1286
|
-
- 测试结果
|
|
1287
|
-
- 未覆盖风险
|
|
1288
|
-
- 建议人工 Review 点
|
|
1289
|
-
|
|
1290
|
-
## 6. 高风险人工 Review
|
|
1291
|
-
以下变更必须人工 Review:
|
|
1292
|
-
- 支付
|
|
1293
|
-
- 认证 / 授权
|
|
1294
|
-
- 用户权限
|
|
1295
|
-
- 数据库 migration
|
|
1296
|
-
- 生产配置
|
|
1297
|
-
- Secrets
|
|
1298
|
-
- 第三方依赖
|
|
1299
|
-
- 用户隐私数据
|
|
1300
|
-
- 删除旧兼容逻辑
|
|
1301
|
-
```
|
|
1302
|
-
|
|
1303
|
-
---
|
|
1304
|
-
|
|
1305
|
-
## 20. 架构规范模板
|
|
1306
|
-
|
|
1307
|
-
```md
|
|
1308
|
-
# docs/ai-coding/01-architecture.md
|
|
1309
|
-
|
|
1310
|
-
## 1. 系统边界
|
|
1311
|
-
|
|
1312
|
-
前端负责:
|
|
1313
|
-
- 页面渲染
|
|
1314
|
-
- 用户交互
|
|
1315
|
-
- 表单初步校验
|
|
1316
|
-
- 客户端状态
|
|
1317
|
-
- API 调用封装
|
|
1318
|
-
- 错误 / Loading / Empty 展示
|
|
1319
|
-
|
|
1320
|
-
后端负责:
|
|
1321
|
-
- 业务规则
|
|
1322
|
-
- 鉴权和权限
|
|
1323
|
-
- 数据持久化
|
|
1324
|
-
- 事务
|
|
1325
|
-
- 幂等
|
|
1326
|
-
- 审计日志
|
|
1327
|
-
- 支付 / 外部回调验证
|
|
1328
|
-
- 服务端可信判断
|
|
1329
|
-
|
|
1330
|
-
前端不得负责:
|
|
1331
|
-
- 判断支付是否成功
|
|
1332
|
-
- 判断用户是否有服务端权限
|
|
1333
|
-
- 生成可信金额
|
|
1334
|
-
- 直接写入数据库
|
|
1335
|
-
|
|
1336
|
-
后端不得负责:
|
|
1337
|
-
- 具体 UI 展示
|
|
1338
|
-
- 页面状态样式
|
|
1339
|
-
|
|
1340
|
-
## 2. 核心模块
|
|
1341
|
-
| 模块 | 职责 | 依赖 | 禁止事项 |
|
|
1342
|
-
|---|---|---|---|
|
|
1343
|
-
| auth | 登录、会话、权限 | user | 不允许返回敏感 token 到日志 |
|
|
1344
|
-
| user | 用户资料 | auth | 不允许跨账号访问 |
|
|
1345
|
-
| product,若有 | 商品展示 | inventory | 不允许直接处理支付 |
|
|
1346
|
-
| order,若有 | 订单创建、状态 | payment / inventory | 不允许信任客户端金额 |
|
|
1347
|
-
| payment,若有 | 支付创建、回调、对账 | order | 不允许客户端确认支付成功 |
|
|
1348
|
-
|
|
1349
|
-
## 3. 数据流
|
|
1350
|
-
用户操作 -> React 页面 -> Service -> API -> Router -> Service -> Repository -> DB
|
|
1351
|
-
|
|
1352
|
-
## 4. 外部依赖
|
|
1353
|
-
| 依赖 | 用途 | 降级方案 | Owner |
|
|
1354
|
-
|---|---|---|---|
|
|
1355
|
-
|
|
1356
|
-
## 5. 架构禁止事项
|
|
1357
|
-
- 不允许跨层调用。
|
|
1358
|
-
- 不允许前端绕过后端调用需要服务端可信判断的第三方。
|
|
1359
|
-
- 不允许新增未登记依赖。
|
|
1360
|
-
- 不允许将业务规则分散到多个层。
|
|
1361
|
-
```
|
|
1362
|
-
|
|
1363
|
-
---
|
|
1364
|
-
|
|
1365
|
-
## 21. API 契约规范模板
|
|
1366
|
-
|
|
1367
|
-
### 21.1 API 基本规则
|
|
1368
|
-
|
|
1369
|
-
```md
|
|
1370
|
-
- API 使用 REST JSON。
|
|
1371
|
-
- 所有 API 必须有 OpenAPI / Schema 定义。
|
|
1372
|
-
- 所有错误必须使用统一错误结构。
|
|
1373
|
-
- 创建 / 支付 / 提交类操作必须考虑幂等。
|
|
1374
|
-
- 客户端不能作为可信来源。
|
|
1375
|
-
- API 版本变更必须记录兼容策略。
|
|
1376
|
-
```
|
|
1377
|
-
|
|
1378
|
-
### 21.2 统一响应结构示例
|
|
1379
|
-
|
|
1380
|
-
```json
|
|
1381
|
-
{
|
|
1382
|
-
"data": {},
|
|
1383
|
-
"error": null,
|
|
1384
|
-
"requestId": "req_123"
|
|
1385
|
-
}
|
|
1386
|
-
```
|
|
1387
|
-
|
|
1388
|
-
错误示例:
|
|
1389
|
-
|
|
1390
|
-
```json
|
|
1391
|
-
{
|
|
1392
|
-
"data": null,
|
|
1393
|
-
"error": {
|
|
1394
|
-
"code": "ORDER_NOT_FOUND",
|
|
1395
|
-
"message": "订单不存在",
|
|
1396
|
-
"details": {}
|
|
1397
|
-
},
|
|
1398
|
-
"requestId": "req_123"
|
|
1399
|
-
}
|
|
1400
|
-
```
|
|
1401
|
-
|
|
1402
|
-
### 21.3 API 契约检查项
|
|
1403
|
-
|
|
1404
|
-
| 检查项 | 要求 | 阻断级别 |
|
|
1405
|
-
|---|---|---|
|
|
1406
|
-
| 请求参数 | Schema 明确,必填 / 可选清楚 | Critical |
|
|
1407
|
-
| 响应字段 | 字段类型、空值、默认值明确 | Critical |
|
|
1408
|
-
| 错误码 | 统一 code,不直接暴露内部异常 | Critical |
|
|
1409
|
-
| 鉴权 | 每个接口声明是否需要登录和权限 | Blocker |
|
|
1410
|
-
| 幂等 | 创建、支付、退款、提交类操作必须有策略 | Blocker / Critical |
|
|
1411
|
-
| 版本兼容 | 字段废弃和新增有过渡期 | Critical |
|
|
1412
|
-
|
|
1413
|
-
---
|
|
1414
|
-
|
|
1415
|
-
## 22. React 前端模式与抽象规范
|
|
1416
|
-
|
|
1417
|
-
### 22.1 前端目录示例
|
|
1418
|
-
|
|
1419
|
-
```md
|
|
1420
|
-
frontend/src/
|
|
1421
|
-
app/ # 应用初始化、Provider、全局配置
|
|
1422
|
-
routes/ # 路由定义
|
|
1423
|
-
features/ # 业务功能域
|
|
1424
|
-
user/
|
|
1425
|
-
pages/
|
|
1426
|
-
components/
|
|
1427
|
-
hooks/
|
|
1428
|
-
services/
|
|
1429
|
-
types.ts
|
|
1430
|
-
tests/
|
|
1431
|
-
components/ # 跨业务通用组件
|
|
1432
|
-
hooks/ # 跨业务通用 hooks
|
|
1433
|
-
services/ # API client 和通用服务
|
|
1434
|
-
types/ # 全局类型
|
|
1435
|
-
lib/ # 工具函数
|
|
1436
|
-
```
|
|
1437
|
-
|
|
1438
|
-
### 22.2 组件分层
|
|
1439
|
-
|
|
1440
|
-
| 层级 | 职责 | 禁止事项 |
|
|
1441
|
-
|---|---|---|
|
|
1442
|
-
| Page | 路由级页面,组合业务组件 | 不直接写复杂 API 细节 |
|
|
1443
|
-
| Feature Component | 业务组件,展示业务状态 | 不直接访问全局底层配置 |
|
|
1444
|
-
| Shared Component | 通用 UI | 不包含业务规则 |
|
|
1445
|
-
| Hook | 复用状态和行为 | 不直接承担服务端可信判断 |
|
|
1446
|
-
| Service | 封装 API 调用 | 不处理 UI 展示 |
|
|
1447
|
-
|
|
1448
|
-
### 22.3 React 禁止事项
|
|
1449
|
-
|
|
1450
|
-
```md
|
|
1451
|
-
- 不允许在组件中散落 fetch / axios 调用。
|
|
1452
|
-
- 不允许在组件中拼接 API URL。
|
|
1453
|
-
- 不允许在 UI 层判断服务端权限。
|
|
1454
|
-
- 不允许将 token 打印到 console。
|
|
1455
|
-
- 不允许每个页面各自实现错误结构。
|
|
1456
|
-
- 不允许为了简单状态引入不必要全局状态。
|
|
1457
|
-
- 不允许把业务规则写进通用组件。
|
|
1458
|
-
```
|
|
1459
|
-
|
|
1460
|
-
### 22.4 状态、错误与 Loading
|
|
1461
|
-
|
|
1462
|
-
```md
|
|
1463
|
-
每个远程数据页面必须有:
|
|
1464
|
-
- loading
|
|
1465
|
-
- success
|
|
1466
|
-
- empty
|
|
1467
|
-
- error
|
|
1468
|
-
- retry
|
|
1469
|
-
- permission denied,若涉及权限
|
|
1470
|
-
```
|
|
1471
|
-
|
|
1472
|
-
### 22.5 前端测试要求
|
|
1473
|
-
|
|
1474
|
-
| 类型 | 内容 |
|
|
1475
|
-
|---|---|
|
|
1476
|
-
| 单元测试 | 工具函数、Hook、格式化、校验 |
|
|
1477
|
-
| 组件测试 | 状态渲染、用户交互、错误态 |
|
|
1478
|
-
| 集成测试 | 页面 + API mock + 路由 |
|
|
1479
|
-
| E2E | 登录、核心业务流程、异常流程 |
|
|
1480
|
-
|
|
1481
|
-
---
|
|
1482
|
-
|
|
1483
|
-
## 23. Python 后端模式与抽象规范
|
|
1484
|
-
|
|
1485
|
-
### 23.1 后端目录示例
|
|
1486
|
-
|
|
1487
|
-
```md
|
|
1488
|
-
backend/app/
|
|
1489
|
-
main.py
|
|
1490
|
-
api/
|
|
1491
|
-
routers/
|
|
1492
|
-
user_router.py
|
|
1493
|
-
order_router.py
|
|
1494
|
-
services/
|
|
1495
|
-
user_service.py
|
|
1496
|
-
order_service.py
|
|
1497
|
-
repositories/
|
|
1498
|
-
user_repository.py
|
|
1499
|
-
order_repository.py
|
|
1500
|
-
models/
|
|
1501
|
-
user.py
|
|
1502
|
-
order.py
|
|
1503
|
-
schemas/
|
|
1504
|
-
user_schema.py
|
|
1505
|
-
order_schema.py
|
|
1506
|
-
core/
|
|
1507
|
-
config.py
|
|
1508
|
-
security.py
|
|
1509
|
-
errors.py
|
|
1510
|
-
logging.py
|
|
1511
|
-
db/
|
|
1512
|
-
session.py
|
|
1513
|
-
migrations/
|
|
1514
|
-
tests/
|
|
1515
|
-
```
|
|
1516
|
-
|
|
1517
|
-
### 23.2 分层职责
|
|
1518
|
-
|
|
1519
|
-
| 层 | 职责 | 禁止事项 |
|
|
1520
|
-
|---|---|---|
|
|
1521
|
-
| Router | 接收请求、参数校验、调用 Service、返回响应 | 不写复杂业务逻辑,不直接访问 DB |
|
|
1522
|
-
| Service | 业务规则、事务、权限判断、调用 Repository | 不拼 UI 文案,不依赖具体 HTTP 实现 |
|
|
1523
|
-
| Repository | 数据读写、查询封装 | 不写业务决策 |
|
|
1524
|
-
| Model | 数据库实体 | 不写复杂业务流程 |
|
|
1525
|
-
| Schema / DTO | 请求响应结构 | 不包含持久化逻辑 |
|
|
1526
|
-
| Core | 配置、安全、错误、日志 | 不写具体业务 |
|
|
1527
|
-
|
|
1528
|
-
### 23.3 后端禁止事项
|
|
1529
|
-
|
|
1530
|
-
```md
|
|
1531
|
-
- 不允许 Router 直接写数据库查询。
|
|
1532
|
-
- 不允许 Service 返回未脱敏的敏感字段。
|
|
1533
|
-
- 不允许 Repository 判断业务权限。
|
|
1534
|
-
- 不允许信任客户端 user_id、role、price、order_status。
|
|
1535
|
-
- 不允许在日志中打印 token、password、secret。
|
|
1536
|
-
- 不允许直接吞掉异常而不记录 requestId。
|
|
1537
|
-
- 不允许没有事务地执行多步骤关键写操作。
|
|
1538
|
-
```
|
|
1539
|
-
|
|
1540
|
-
### 23.4 事务和幂等
|
|
1541
|
-
|
|
1542
|
-
```md
|
|
1543
|
-
- 创建订单、支付、退款、发货、权益发放必须考虑幂等。
|
|
1544
|
-
- 外部回调必须验证签名和重复回调。
|
|
1545
|
-
- 多表写入必须使用事务。
|
|
1546
|
-
- 失败后必须能重试或回滚。
|
|
1547
|
-
```
|
|
1548
|
-
|
|
1549
|
-
### 23.5 后端测试要求
|
|
1550
|
-
|
|
1551
|
-
| 类型 | 内容 |
|
|
1552
|
-
|---|---|
|
|
1553
|
-
| Unit | Service 业务规则、Repository 查询逻辑 |
|
|
1554
|
-
| Integration | Router + Service + DB |
|
|
1555
|
-
| Contract | 请求响应 Schema、错误码 |
|
|
1556
|
-
| Security | 鉴权、越权、输入校验、敏感日志 |
|
|
1557
|
-
| Migration | 数据库迁移、回滚、中断恢复 |
|
|
1558
|
-
|
|
1559
|
-
---
|
|
1560
|
-
|
|
1561
|
-
## 24. 数据模型、状态与错误处理规范
|
|
1562
|
-
|
|
1563
|
-
### 24.1 数据所有权
|
|
1564
|
-
|
|
1565
|
-
```md
|
|
1566
|
-
每个核心实体必须定义 Owner:
|
|
1567
|
-
- User 由 user-service 管理。
|
|
1568
|
-
- Order 由 order-service 管理。
|
|
1569
|
-
- Payment 由 payment-service 管理。
|
|
1570
|
-
- Product 由 product-service 管理。
|
|
1571
|
-
```
|
|
1572
|
-
|
|
1573
|
-
不得多个模块同时维护同一份核心状态。
|
|
1574
|
-
|
|
1575
|
-
### 24.2 错误码规范
|
|
1576
|
-
|
|
1577
|
-
```md
|
|
1578
|
-
错误码命名:DOMAIN_ACTION_REASON
|
|
1579
|
-
示例:
|
|
1580
|
-
- AUTH_TOKEN_EXPIRED
|
|
1581
|
-
- USER_NOT_FOUND
|
|
1582
|
-
- ORDER_ALREADY_PAID
|
|
1583
|
-
- PAYMENT_SIGNATURE_INVALID
|
|
1584
|
-
```
|
|
1585
|
-
|
|
1586
|
-
### 24.3 错误处理要求
|
|
1587
|
-
|
|
1588
|
-
```md
|
|
1589
|
-
- 前端展示用户可理解文案。
|
|
1590
|
-
- 后端记录可诊断日志。
|
|
1591
|
-
- 外部错误不得原样暴露给用户。
|
|
1592
|
-
- 每个错误必须关联 requestId。
|
|
1593
|
-
- 支付、安全、隐私错误必须进入审计日志。
|
|
1594
|
-
```
|
|
1595
|
-
|
|
1596
|
-
---
|
|
1597
|
-
|
|
1598
|
-
## 25. 测试策略模板
|
|
1599
|
-
|
|
1600
|
-
```md
|
|
1601
|
-
# docs/ai-coding/06-testing-strategy.md
|
|
1602
|
-
|
|
1603
|
-
## 1. 测试目标
|
|
1604
|
-
- 保证核心流程正确。
|
|
1605
|
-
- 保证架构和接口契约不被 AI 破坏。
|
|
1606
|
-
- 保证异常、弱网、安全、权限分支可验证。
|
|
1607
|
-
|
|
1608
|
-
## 2. 测试分层
|
|
1609
|
-
| 层级 | 工具 | 覆盖内容 |
|
|
1610
|
-
|---|---|---|
|
|
1611
|
-
| Unit | pytest / vitest | 函数、Service、Hook |
|
|
1612
|
-
| Integration | pytest + test DB / MSW | API、DB、Service |
|
|
1613
|
-
| E2E | Playwright / Cypress | 核心流程 |
|
|
1614
|
-
| Contract | OpenAPI / schema test | API 契约 |
|
|
1615
|
-
| Security | secret scan / dependency scan | 安全和依赖 |
|
|
1616
|
-
|
|
1617
|
-
## 3. AI 任务最低测试要求
|
|
1618
|
-
- 普通 UI:组件测试或 E2E smoke。
|
|
1619
|
-
- API 变更:Contract + Integration。
|
|
1620
|
-
- 业务规则:Service unit test。
|
|
1621
|
-
- 支付 / 权限:单测 + 集成 + 人工 Review。
|
|
1622
|
-
- 数据迁移:迁移测试 + 回滚策略。
|
|
1623
|
-
```
|
|
1624
|
-
|
|
1625
|
-
---
|
|
1626
|
-
|
|
1627
|
-
## 26. 高风险人工 Review 清单
|
|
1628
|
-
|
|
1629
|
-
```md
|
|
1630
|
-
## 必须人工 Review
|
|
1631
|
-
|
|
1632
|
-
### 支付
|
|
1633
|
-
- 金额是否服务端计算
|
|
1634
|
-
- 商品 ID / 订单 ID 是否服务端校验
|
|
1635
|
-
- 回调签名是否验证
|
|
1636
|
-
- 重复回调是否幂等
|
|
1637
|
-
- 退款和权益回收是否一致
|
|
1638
|
-
|
|
1639
|
-
### 认证与权限
|
|
1640
|
-
- Token 是否安全存储
|
|
1641
|
-
- 过期和刷新是否正确
|
|
1642
|
-
- 是否存在越权访问
|
|
1643
|
-
- 角色和权限是否服务端判断
|
|
1644
|
-
|
|
1645
|
-
### 数据库迁移
|
|
1646
|
-
- 老数据是否兼容
|
|
1647
|
-
- migration 是否可重复执行
|
|
1648
|
-
- 失败是否可回滚
|
|
1649
|
-
- 中断后是否可恢复
|
|
1650
|
-
|
|
1651
|
-
### 安全与隐私
|
|
1652
|
-
- 日志是否脱敏
|
|
1653
|
-
- 是否硬编码 secret
|
|
1654
|
-
- 是否新增数据采集
|
|
1655
|
-
- 隐私政策是否需要更新
|
|
1656
|
-
|
|
1657
|
-
### 生产配置
|
|
1658
|
-
- 是否连接生产环境
|
|
1659
|
-
- 是否关闭 debug / mock
|
|
1660
|
-
- 是否上传 source map / mapping / 日志配置正确
|
|
1661
|
-
```
|
|
1662
|
-
|
|
1663
|
-
---
|
|
1664
|
-
|
|
1665
|
-
## 27. React + Python Release Gate
|
|
1666
|
-
|
|
1667
|
-
### 27.1 Blocker
|
|
1668
|
-
|
|
1669
|
-
```md
|
|
1670
|
-
- 生产构建失败。
|
|
1671
|
-
- TypeScript typecheck 失败。
|
|
1672
|
-
- Python 测试失败。
|
|
1673
|
-
- API 契约变更未更新文档。
|
|
1674
|
-
- Router 直接访问数据库并写业务逻辑。
|
|
1675
|
-
- React 组件直接信任客户端金额 / 权限。
|
|
1676
|
-
- 支付 / 权限 / migration 未人工 Review。
|
|
1677
|
-
- Secret 泄露。
|
|
1678
|
-
- 新增依赖未登记。
|
|
1679
|
-
- 测试环境配置进入生产构建。
|
|
1680
|
-
```
|
|
1681
|
-
|
|
1682
|
-
### 27.2 Critical
|
|
1683
|
-
|
|
1684
|
-
```md
|
|
1685
|
-
- 前端状态缺少 error / loading / empty 处理。
|
|
1686
|
-
- 后端错误结构不统一。
|
|
1687
|
-
- 旧接口兼容失败。
|
|
1688
|
-
- 关键 Service 无单元测试。
|
|
1689
|
-
- 核心流程无 E2E smoke。
|
|
1690
|
-
- 日志缺少 requestId。
|
|
1691
|
-
- 监控无法定位核心错误。
|
|
1692
|
-
```
|
|
1693
|
-
|
|
1694
|
-
---
|
|
1695
|
-
|
|
1696
|
-
# 第三卷:模板、映射关系与落地清单
|
|
1697
|
-
|
|
1698
|
-
## 28. 三层控制模型映射表
|
|
1699
|
-
|
|
1700
|
-
| 能力 / 风险项 | 架构层 | 模式与抽象层 | 实现层 | 是否 MVP 必须 | 说明 |
|
|
1701
|
-
|---|---|---|---|---|---|
|
|
1702
|
-
| 系统边界 | 是 | 否 | 否 | 是 | 没有边界不应让 AI 大规模编码 |
|
|
1703
|
-
| 核心模块 | 是 | 是 | 否 | 是 | 先定义模块,再生成实现 |
|
|
1704
|
-
| API 契约 | 是 | 是 | 是 | 是 | 前后端分离项目 P0 |
|
|
1705
|
-
| 前端组件规范 | 否 | 是 | 是 | 是 | 控制 AI 生成 UI 的结构 |
|
|
1706
|
-
| 后端分层规范 | 否 | 是 | 是 | 是 | 避免 Router / Service / Repository 混乱 |
|
|
1707
|
-
| 普通页面实现 | 否 | 否 | 是 | 视业务 | AI 可主要承担 |
|
|
1708
|
-
| 支付逻辑 | 是 | 是 | 是 | 视业务 | 高风险,必须人工 Review |
|
|
1709
|
-
| 权限逻辑 | 是 | 是 | 是 | 是 | 高风险,必须人工 Review |
|
|
1710
|
-
| 数据迁移 | 是 | 是 | 是 | 视业务 | 必须可回滚 |
|
|
1711
|
-
| 测试策略 | 是 | 是 | 是 | 是 | 没有测试,AI 完成不可验证 |
|
|
1712
|
-
| 文档地图 | 是 | 是 | 否 | 是 | AGENTS.md 是入口 |
|
|
1713
|
-
| Release Gate | 是 | 是 | 是 | 是 | 防止不可控代码合并 |
|
|
1714
|
-
|
|
1715
|
-
---
|
|
1716
|
-
|
|
1717
|
-
## 29. 不同项目阶段的最低文档集
|
|
1718
|
-
|
|
1719
|
-
### 29.1 个人 Demo
|
|
1720
|
-
|
|
1721
|
-
```md
|
|
1722
|
-
必须:
|
|
1723
|
-
- AGENTS.md
|
|
1724
|
-
- 00-project-context.md
|
|
1725
|
-
- 01-architecture.md 简版
|
|
1726
|
-
- 03/04 patterns 简版
|
|
1727
|
-
- 06-testing-strategy.md 简版
|
|
1728
|
-
```
|
|
1729
|
-
|
|
1730
|
-
### 29.2 MVP 项目
|
|
1731
|
-
|
|
1732
|
-
```md
|
|
1733
|
-
必须:
|
|
1734
|
-
- AGENTS.md
|
|
1735
|
-
- 00-project-context.md
|
|
1736
|
-
- 01-architecture.md
|
|
1737
|
-
- 02-api-contracts.md
|
|
1738
|
-
- 03-frontend-patterns.md
|
|
1739
|
-
- 04-backend-patterns.md
|
|
1740
|
-
- 06-testing-strategy.md
|
|
1741
|
-
- 08-review-release-gate.md
|
|
1742
|
-
```
|
|
1743
|
-
|
|
1744
|
-
### 29.3 生产项目
|
|
1745
|
-
|
|
1746
|
-
```md
|
|
1747
|
-
必须:
|
|
1748
|
-
- MVP 全部文档
|
|
1749
|
-
- 05-data-model.md
|
|
1750
|
-
- 07-security-privacy.md
|
|
1751
|
-
- ADR
|
|
1752
|
-
- Dependency Inventory
|
|
1753
|
-
- Build Manifest
|
|
1754
|
-
- Runbook
|
|
1755
|
-
- Release Gate 证据留存
|
|
1756
|
-
```
|
|
1757
|
-
|
|
1758
|
-
### 29.4 高风险项目
|
|
1759
|
-
|
|
1760
|
-
涉及支付、金融、医疗、儿童、隐私、AI Agent 工具调用、生产自动化时,必须额外增加:
|
|
1761
|
-
|
|
1762
|
-
```md
|
|
1763
|
-
- Threat Model
|
|
1764
|
-
- Security Review Checklist
|
|
1765
|
-
- Privacy Impact Assessment
|
|
1766
|
-
- Data Retention Policy
|
|
1767
|
-
- Incident Runbook
|
|
1768
|
-
- Human Review Gate
|
|
1769
|
-
- Red Team / Abuse Case 清单
|
|
1770
|
-
```
|
|
1771
|
-
|
|
1772
|
-
---
|
|
1773
|
-
|
|
1774
|
-
## 30. 不同 AI 工具的指令文件映射
|
|
1775
|
-
|
|
1776
|
-
| 工具 | 仓库级入口 | 路径级 / 任务级规则 | 建议做法 |
|
|
1777
|
-
|---|---|---|---|
|
|
1778
|
-
| Codex | `AGENTS.md` | 可引用子文档、计划文件 | 主文件简洁,分文档加载 |
|
|
1779
|
-
| Claude Code | `CLAUDE.md` | 子代理、技能、项目记忆 | `CLAUDE.md` 引用 `AGENTS.md` 或同源规范 |
|
|
1780
|
-
| GitHub Copilot | `.github/copilot-instructions.md` | `.github/instructions/*.instructions.md` | 仓库级 + 路径级结合 |
|
|
1781
|
-
| Cursor | `.cursor/rules` | 规则文件 | 引用同一套 docs |
|
|
1782
|
-
| 通用 IDE Agent | README / AGENTS.md | 任务 Prompt | 不要每个工具写一套不同事实 |
|
|
1783
|
-
|
|
1784
|
-
---
|
|
1785
|
-
|
|
1786
|
-
## 31. AI Coding Prompt 模板
|
|
1787
|
-
|
|
1788
|
-
### 31.1 开发任务模板
|
|
1789
|
-
|
|
1790
|
-
```md
|
|
1791
|
-
你是本项目的资深工程师。开始前必须先阅读 AGENTS.md,并根据任务类型读取相关 docs/ai-coding 文档。
|
|
1792
|
-
|
|
1793
|
-
任务:
|
|
1794
|
-
- [写清楚要做什么]
|
|
1795
|
-
|
|
1796
|
-
范围:
|
|
1797
|
-
- 允许修改:[目录 / 文件]
|
|
1798
|
-
- 禁止修改:[目录 / 文件]
|
|
1799
|
-
|
|
1800
|
-
约束:
|
|
1801
|
-
- 不允许改变 API 契约,除非先提出方案。
|
|
1802
|
-
- 不允许新增依赖,除非说明原因并等待确认。
|
|
1803
|
-
- 不允许修改数据库 migration。
|
|
1804
|
-
- 必须遵守前端 / 后端分层规范。
|
|
1805
|
-
|
|
1806
|
-
输出要求:
|
|
1807
|
-
1. 先给 Task Plan,不要立即改代码。
|
|
1808
|
-
2. 标明是否涉及架构、API、DB、安全、隐私、支付、权限。
|
|
1809
|
-
3. 经确认后再实现。
|
|
1810
|
-
4. 实现后输出 Change Report、测试命令和结果。
|
|
1811
|
-
```
|
|
1812
|
-
|
|
1813
|
-
### 31.2 代码审查模板
|
|
1814
|
-
|
|
1815
|
-
```md
|
|
1816
|
-
请基于 AGENTS.md 和 docs/ai-coding 规范审查本次 diff。
|
|
1817
|
-
|
|
1818
|
-
重点检查:
|
|
1819
|
-
- 是否破坏架构层边界
|
|
1820
|
-
- 是否破坏前后端分层
|
|
1821
|
-
- 是否改变 API 契约
|
|
1822
|
-
- 是否涉及安全 / 隐私 / 支付 / 权限
|
|
1823
|
-
- 是否新增依赖
|
|
1824
|
-
- 是否有测试覆盖
|
|
1825
|
-
- 是否有高风险点需要人工 Review
|
|
1826
|
-
|
|
1827
|
-
输出:
|
|
1828
|
-
- Blocker
|
|
1829
|
-
- Critical
|
|
1830
|
-
- Major
|
|
1831
|
-
- Minor
|
|
1832
|
-
- 建议修改
|
|
1833
|
-
- 必须人工确认项
|
|
1834
|
-
```
|
|
1835
|
-
|
|
1836
|
-
### 31.3 重构任务模板
|
|
1837
|
-
|
|
1838
|
-
```md
|
|
1839
|
-
请不要直接大范围重构。先输出重构计划:
|
|
1840
|
-
|
|
1841
|
-
1. 当前问题是什么
|
|
1842
|
-
2. 涉及哪些模块
|
|
1843
|
-
3. 哪些行为必须保持不变
|
|
1844
|
-
4. 分几步改
|
|
1845
|
-
5. 每步如何测试
|
|
1846
|
-
6. 如何回滚
|
|
1847
|
-
7. 哪些文件不能改
|
|
1848
|
-
8. 是否影响 API / DB / 权限 / 安全
|
|
1849
|
-
```
|
|
1850
|
-
|
|
1851
|
-
---
|
|
1852
|
-
|
|
1853
|
-
## 32. PR / Review 模板
|
|
1854
|
-
|
|
1855
|
-
```md
|
|
1856
|
-
## 1. 变更目标
|
|
1857
|
-
|
|
1858
|
-
## 2. 变更范围
|
|
1859
|
-
- 修改文件:
|
|
1860
|
-
- 未修改但相关文件:
|
|
1861
|
-
|
|
1862
|
-
## 3. 是否由 AI 生成主要代码
|
|
1863
|
-
- 是 / 否
|
|
1864
|
-
- 使用工具:
|
|
1865
|
-
- 使用的规范文件:
|
|
1866
|
-
|
|
1867
|
-
## 4. 架构影响
|
|
1868
|
-
- 是否改变模块边界:是 / 否
|
|
1869
|
-
- 是否改变 API 契约:是 / 否
|
|
1870
|
-
- 是否改变 DB / migration:是 / 否
|
|
1871
|
-
|
|
1872
|
-
## 5. 风险检查
|
|
1873
|
-
- 支付:是 / 否
|
|
1874
|
-
- 权限:是 / 否
|
|
1875
|
-
- 认证:是 / 否
|
|
1876
|
-
- 隐私:是 / 否
|
|
1877
|
-
- 安全:是 / 否
|
|
1878
|
-
- 生产配置:是 / 否
|
|
1879
|
-
- 新增依赖:是 / 否
|
|
1880
|
-
|
|
1881
|
-
## 6. 测试结果
|
|
1882
|
-
- 命令:
|
|
1883
|
-
- 结果:
|
|
1884
|
-
|
|
1885
|
-
## 7. 未覆盖风险
|
|
1886
|
-
|
|
1887
|
-
## 8. 人工 Review 点
|
|
1888
|
-
```
|
|
1889
|
-
|
|
1890
|
-
---
|
|
1891
|
-
|
|
1892
|
-
## 33. 常见失控场景与处置方案
|
|
1893
|
-
|
|
1894
|
-
| 场景 | 表现 | 处置 |
|
|
1895
|
-
|---|---|---|
|
|
1896
|
-
| AI 写了一堆没人认识的代码 | 目录、函数、模块突然变多 | 暂停合并,要求 AI 生成架构差异报告 |
|
|
1897
|
-
| AI 自己改了 API | 前端和后端字段对不上 | 回滚契约变更,先更新 `02-api-contracts.md` |
|
|
1898
|
-
| AI 新增多个依赖 | package / requirements 膨胀 | 做依赖审查,不必要依赖移除 |
|
|
1899
|
-
| AI 把业务写进 UI | 组件里出现权限 / 金额 / 订单状态判断 | 下沉到 Service / 后端 |
|
|
1900
|
-
| AI 绕过测试 | 删除测试、skip 测试 | Blocker,恢复测试并复盘 |
|
|
1901
|
-
| AI 过度重构 | 小任务改了大范围文件 | 拆分 PR,限定修改范围 |
|
|
1902
|
-
| AI 重复造轮子 | 多个工具函数重复 | 抽象统一工具,更新规范 |
|
|
1903
|
-
| AI 忽略高风险 | 支付 / 鉴权代码无人工 Review | 禁止合并 |
|
|
1904
|
-
|
|
1905
|
-
---
|
|
1906
|
-
|
|
1907
|
-
## 34. 与移动端生产可上线规范的衔接
|
|
1908
|
-
|
|
1909
|
-
前一份《移动端 App 全平台生产可上线规范》强调:上线不是只测功能,而要覆盖平台差异、设备矩阵、权限、支付、隐私、安全、发布、监控、长期维护。AI Coding 规范与它的关系是:
|
|
1910
|
-
|
|
1911
|
-
| 移动端生产规范中的能力 | AI Coding 中应如何前置 |
|
|
1912
|
-
|---|---|
|
|
1913
|
-
| iOS / Android 平台差异 | 写入架构层与平台专项规范,禁止 AI 自由处理 |
|
|
1914
|
-
| 支付合规 | 写入高风险人工 Review Gate |
|
|
1915
|
-
| 权限与隐私 | 写入安全隐私规范和 Release Gate |
|
|
1916
|
-
| 设备适配 | 写入前端 / 移动端 UI 模式规范 |
|
|
1917
|
-
| 构建产物审计 | 写入 CI / Build Manifest |
|
|
1918
|
-
| SDK 供应链 | 写入依赖治理和 SDK Inventory |
|
|
1919
|
-
| 可观测性 / Runbook | 写入生产发布 Gate |
|
|
1920
|
-
| 宠物商城行业专项 | 写入行业业务边界和商品 / 订单 / 售后模型 |
|
|
1921
|
-
|
|
1922
|
-
结论:
|
|
1923
|
-
|
|
1924
|
-
```md
|
|
1925
|
-
移动端生产可上线规范 = 产品能不能上线的生产标准。
|
|
1926
|
-
AI Coding 可控规范 = AI 写代码时如何不破坏这些生产标准。
|
|
1927
|
-
```
|
|
1928
|
-
|
|
1929
|
-
---
|
|
1930
|
-
|
|
1931
|
-
## 35. 补充风险
|
|
1932
|
-
|
|
1933
|
-
### 35.1 Context 漂移
|
|
1934
|
-
|
|
1935
|
-
AI 多轮对话后可能逐渐偏离原始架构和规范。应对方式:
|
|
1936
|
-
|
|
1937
|
-
```md
|
|
1938
|
-
- 关键任务使用 AGENTS.md + 任务文档重新锚定。
|
|
1939
|
-
- 长任务拆成多个小 PR。
|
|
1940
|
-
- 每个阶段输出变更报告。
|
|
1941
|
-
- 避免在同一对话里连续做多个无关大任务。
|
|
1942
|
-
```
|
|
1943
|
-
|
|
1944
|
-
### 35.2 规范过大导致 Agent 忽略重点
|
|
1945
|
-
|
|
1946
|
-
应对方式:
|
|
1947
|
-
|
|
1948
|
-
```md
|
|
1949
|
-
- AGENTS.md 保持简洁。
|
|
1950
|
-
- 详细规范拆到 docs。
|
|
1951
|
-
- 使用渐进式加载。
|
|
1952
|
-
- 每个任务只加载相关规范。
|
|
1953
|
-
```
|
|
1954
|
-
|
|
1955
|
-
### 35.3 AI Review 自我确认偏差
|
|
1956
|
-
|
|
1957
|
-
同一个 Agent 写代码又 Review 代码,容易漏掉自己的错误。应对方式:
|
|
1958
|
-
|
|
1959
|
-
```md
|
|
1960
|
-
- 高风险代码由人审。
|
|
1961
|
-
- 关键 PR 可用另一个 Agent 做独立 Review。
|
|
1962
|
-
- Review Prompt 必须基于规范和风险等级,而不是泛泛检查。
|
|
1963
|
-
```
|
|
1964
|
-
|
|
1965
|
-
### 35.4 自动化通过但架构失败
|
|
1966
|
-
|
|
1967
|
-
测试通过不代表架构合理。应对方式:
|
|
1968
|
-
|
|
1969
|
-
```md
|
|
1970
|
-
- 大改动必须架构 Review。
|
|
1971
|
-
- 关键模块必须维护 ADR。
|
|
1972
|
-
- 每次新增目录 / 抽象 / 依赖都要说明理由。
|
|
1973
|
-
```
|
|
1974
|
-
|
|
1975
|
-
---
|
|
1976
|
-
|
|
1977
|
-
## 36. 待确认问题
|
|
1978
|
-
|
|
1979
|
-
落地到具体项目时,需要确认:
|
|
1980
|
-
|
|
1981
|
-
```md
|
|
1982
|
-
- 项目使用哪些 AI 工具:Codex、Claude Code、Copilot、Cursor、其他?
|
|
1983
|
-
- 是否统一使用 AGENTS.md 作为主入口?
|
|
1984
|
-
- CLAUDE.md 是否使用符号链接,还是单独维护?
|
|
1985
|
-
- 前端是否使用 TypeScript?
|
|
1986
|
-
- 后端是否使用 FastAPI、Django、Flask 或其他 Python 框架?
|
|
1987
|
-
- API 是否使用 REST、GraphQL 或 RPC?
|
|
1988
|
-
- 是否有支付、权限、隐私、AI、移动端、跨境数据等高风险业务?
|
|
1989
|
-
- 哪些目录允许 AI 自动修改?
|
|
1990
|
-
- 哪些目录必须人工审批?
|
|
1991
|
-
- CI 是否具备 typecheck、unit test、integration test、secret scan、dependency scan?
|
|
1992
|
-
- 团队是否要求记录 AI 工具、模型和 Prompt 摘要?
|
|
1993
|
-
```
|
|
1994
|
-
|
|
1995
|
-
---
|
|
1996
|
-
|
|
1997
|
-
## 37. 建议下一步拆分的专项文档
|
|
1998
|
-
|
|
1999
|
-
```md
|
|
2000
|
-
1. AGENTS.md 落地模板专项
|
|
2001
|
-
2. React 项目前端 AI Coding 规范专项
|
|
2002
|
-
3. Python / FastAPI 后端 AI Coding 规范专项
|
|
2003
|
-
4. AI 代码 Review Checklist 专项
|
|
2004
|
-
5. 支付 / 权限 / 安全高风险人工 Review 专项
|
|
2005
|
-
6. CI 自动化门禁专项
|
|
2006
|
-
7. 依赖与供应链治理专项
|
|
2007
|
-
8. 移动端项目 AI Coding 专项
|
|
2008
|
-
9. 电商项目 AI Coding 专项
|
|
2009
|
-
10. AI Agent / LLM 应用安全专项
|
|
2010
|
-
```
|
|
2011
|
-
|
|
2012
|
-
---
|
|
2013
|
-
|
|
2014
|
-
# 附录 A:官方资料索引
|
|
2015
|
-
|
|
2016
|
-
以下资料用于校准本规范中关于 Agent 指令文件、安全开发、AI / LLM 风险和供应链治理的表述。具体项目落地时,应以团队实际工具版本和官方文档为准。
|
|
2017
|
-
|
|
2018
|
-
| 主题 | 官方资料 |
|
|
2019
|
-
|---|---|
|
|
2020
|
-
| Codex AGENTS.md | [OpenAI Codex:Custom instructions with AGENTS.md](https://developers.openai.com/codex/guides/agents-md) |
|
|
2021
|
-
| Codex Best Practices | [OpenAI Codex:Best practices](https://developers.openai.com/codex/learn/best-practices) |
|
|
2022
|
-
| Codex PLANS.md / ExecPlan | [OpenAI Cookbook:Using PLANS.md for multi-hour problem solving](https://developers.openai.com/cookbook/articles/codex_exec_plans) |
|
|
2023
|
-
| Claude Code CLAUDE.md | [Anthropic Claude Code:How Claude remembers your project](https://docs.anthropic.com/en/docs/claude-code/memory) |
|
|
2024
|
-
| GitHub Copilot Custom Instructions | [GitHub Docs:Adding repository custom instructions for GitHub Copilot](https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot) |
|
|
2025
|
-
| NIST SSDF | [NIST SP 800-218 Secure Software Development Framework](https://csrc.nist.gov/pubs/sp/800/218/final) |
|
|
2026
|
-
| NIST SSDF for Generative AI | [NIST SP 800-218A Secure Software Development Practices for Generative AI and Dual-Use Foundation Models](https://csrc.nist.gov/pubs/sp/800/218/a/final) |
|
|
2027
|
-
| OWASP LLM Top 10 | [OWASP Top 10 for Large Language Model Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/) |
|
|
2028
|
-
| OWASP Secure Coding | [OWASP Secure Coding Practices Quick Reference Guide](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/) |
|
|
2029
|
-
| OWASP Software Supply Chain | [OWASP Software Component Verification Standard](https://scvs.owasp.org/) |
|
|
2030
|
-
|
|
2031
|
-
---
|
|
2032
|
-
|
|
2033
|
-
# 最终收敛
|
|
2034
|
-
|
|
2035
|
-
AI 写完的代码不失控,靠的不是人类逐行盯住所有实现,而是把控制点前移:
|
|
2036
|
-
|
|
2037
|
-
```md
|
|
2038
|
-
第一层:架构层 —— 人必须控制系统边界、核心模块、数据流、外部依赖和非功能约束。
|
|
2039
|
-
第二层:模式与抽象层 —— 人必须控制目录、分层、接口契约、组件模式、错误处理和测试规范。
|
|
2040
|
-
第三层:实现层 —— AI 可以大幅放大函数、组件、页面、接口和测试的实现效率。
|
|
2041
|
-
```
|
|
2042
|
-
|
|
2043
|
-
当项目越来越大时,团队的掌控感不是来自“我读过每一行代码”,而是来自:
|
|
2044
|
-
|
|
2045
|
-
```md
|
|
2046
|
-
- 我知道系统边界在哪里。
|
|
2047
|
-
- 我知道模块之间怎么交互。
|
|
2048
|
-
- 我知道每层代码应该做什么、不应该做什么。
|
|
2049
|
-
- 我知道接口契约是什么。
|
|
2050
|
-
- 我知道哪些地方可以改,哪些地方不能随便改。
|
|
2051
|
-
- 我知道 AI 每次变更是否经过测试和 Review。
|
|
2052
|
-
- 我知道高风险代码有人类把关。
|
|
2053
|
-
```
|
|
2054
|
-
|
|
2055
|
-
这才是 AI Coding 从“快速生成代码”走向“可生产、可维护、可上线”的关键。
|
|
1
|
+
# AI Coding Production Control Framework:AI 写完的代码如何不失控的工程规范
|
|
2
|
+
|
|
3
|
+
> 版本:v1.0
|
|
4
|
+
> 生成日期:2026-05-17
|
|
5
|
+
> 文档定位:AI 编程项目的架构约束文档、Agent 工作入口文档、AI 生成代码验收规范、工程团队协作规范、代码评审与 Release Gate、React + Python 前后端分离项目示例。
|
|
6
|
+
> 核心观点:**人的职责不是把 AI 生成的每一行代码都读完,而是先定义系统边界、架构抽象、接口契约、验收标准和高风险人工 Review 点,再让 AI 在这些约束内放大实现能力。**
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 总目录
|
|
11
|
+
|
|
12
|
+
- 第一卷:AI Coding 可控性通用框架
|
|
13
|
+
- 0. 文档说明
|
|
14
|
+
- 1. 核心问题:AI 写的代码为什么会失控
|
|
15
|
+
- 2. AI Coding 三层控制模型
|
|
16
|
+
- 3. 人与 AI 的职责边界
|
|
17
|
+
- 4. AI Coding 失败模型与风险域
|
|
18
|
+
- 5. 项目文档地图:AGENTS.md 作为 Agent 入口
|
|
19
|
+
- 6. 第一层:架构层规范
|
|
20
|
+
- 7. 第二层:模式与抽象层规范
|
|
21
|
+
- 8. 第三层:实现层规范
|
|
22
|
+
- 9. AI Coding 工作流
|
|
23
|
+
- 10. AI 任务拆分与变更边界
|
|
24
|
+
- 11. 代码评审策略:不逐行盯死,但要盯住风险
|
|
25
|
+
- 12. 测试、CI 与质量门禁
|
|
26
|
+
- 13. 安全、隐私、依赖与供应链
|
|
27
|
+
- 14. 文档、证据留存与可追溯性
|
|
28
|
+
- 15. 团队治理、角色分工与持续改进
|
|
29
|
+
- 16. 通用 Release Gate
|
|
30
|
+
- 第二卷:React + Python 前后端分离项目示例
|
|
31
|
+
- 17. 示例项目边界
|
|
32
|
+
- 18. 推荐仓库结构
|
|
33
|
+
- 19. AGENTS.md 最小可用模板
|
|
34
|
+
- 20. 架构规范模板
|
|
35
|
+
- 21. API 契约规范模板
|
|
36
|
+
- 22. React 前端模式与抽象规范
|
|
37
|
+
- 23. Python 后端模式与抽象规范
|
|
38
|
+
- 24. 数据模型、状态与错误处理规范
|
|
39
|
+
- 25. 测试策略模板
|
|
40
|
+
- 26. 高风险人工 Review 清单
|
|
41
|
+
- 27. React + Python Release Gate
|
|
42
|
+
- 第三卷:模板、映射关系与落地清单
|
|
43
|
+
- 28. 三层控制模型映射表
|
|
44
|
+
- 29. 不同项目阶段的最低文档集
|
|
45
|
+
- 30. 不同 AI 工具的指令文件映射
|
|
46
|
+
- 31. AI Coding Prompt 模板
|
|
47
|
+
- 32. PR / Review 模板
|
|
48
|
+
- 33. 常见失控场景与处置方案
|
|
49
|
+
- 34. 与移动端生产可上线规范的衔接
|
|
50
|
+
- 35. 补充风险
|
|
51
|
+
- 36. 待确认问题
|
|
52
|
+
- 37. 建议下一步拆分的专项文档
|
|
53
|
+
- 附录 A:官方资料索引
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
# 第一卷:AI Coding 可控性通用框架
|
|
58
|
+
|
|
59
|
+
## 0. 文档说明
|
|
60
|
+
|
|
61
|
+
### 0.1 文档目的
|
|
62
|
+
|
|
63
|
+
本规范用于解决 AI 自动化编码、AI pair coding、Codex / Claude Code / Copilot / Cursor 等 Agent 参与开发后出现的典型问题:
|
|
64
|
+
|
|
65
|
+
> 功能看起来做完了,代码也能跑,但团队打开代码后发现系统结构不清楚、模块关系说不清、接口契约不稳定、抽象层混乱、维护者没有掌控感。
|
|
66
|
+
|
|
67
|
+
这类问题的本质不是“AI 代码一定不能用”,也不是“人必须逐行读完所有 AI 代码”。真正的问题是:
|
|
68
|
+
|
|
69
|
+
- 在 AI 写代码前,系统边界没有定义清楚。
|
|
70
|
+
- 架构层没有被团队确认。
|
|
71
|
+
- 模块划分和抽象模式没有被写成可执行规范。
|
|
72
|
+
- API 契约、数据流、错误处理、测试策略没有前置。
|
|
73
|
+
- AI 在实现层自由生长,形成了局部正确但全局混乱的系统。
|
|
74
|
+
- 团队把 Review 压力放到了最后一层实现代码,导致信息负担过重。
|
|
75
|
+
|
|
76
|
+
本规范的目标是建立一套 **AI Coding 的生产可控体系**:
|
|
77
|
+
|
|
78
|
+
- 让 AI 写代码前先读取架构与规范。
|
|
79
|
+
- 让 AI 的代码生成发生在被定义好的边界内。
|
|
80
|
+
- 让人类重点控制架构层、抽象层、接口契约和高风险实现点。
|
|
81
|
+
- 让 AI 负责放大实现层效率,而不是替代系统设计。
|
|
82
|
+
- 让每次 AI 变更都可追溯、可测试、可审计、可回滚。
|
|
83
|
+
|
|
84
|
+
### 0.2 适用范围
|
|
85
|
+
|
|
86
|
+
适用于以下场景:
|
|
87
|
+
|
|
88
|
+
- 个人使用 AI 辅助开发完整项目。
|
|
89
|
+
- 小团队使用 AI 自动化 Coding。
|
|
90
|
+
- 企业内部使用 Codex、Claude Code、Copilot、Cursor、Windsurf、Trae 等编码 Agent。
|
|
91
|
+
- 前后端分离项目。
|
|
92
|
+
- 移动端、Web、后端、SaaS、电商、AI 应用、内部工具等产品。
|
|
93
|
+
- 需要让 AI 基于项目规范生成代码、测试、文档、Review 意见的项目。
|
|
94
|
+
|
|
95
|
+
不局限于 React + Python。第二卷仅以 React + Python 前后端分离作为示例。
|
|
96
|
+
|
|
97
|
+
### 0.3 不适用范围
|
|
98
|
+
|
|
99
|
+
本规范不是:
|
|
100
|
+
|
|
101
|
+
- 某一个 AI 工具的完整使用手册。
|
|
102
|
+
- 替代代码审查、安全审计、合规审查的工具。
|
|
103
|
+
- 让 AI 完全自主上线代码的授权书。
|
|
104
|
+
- 法律、金融、医疗、隐私等高风险合规意见。
|
|
105
|
+
|
|
106
|
+
涉及支付、认证、授权、隐私、生产基础设施、数据迁移、财务、医疗、金融、法律、儿童数据、内容安全等高风险场景,必须额外做人工 Review 和专项评估。
|
|
107
|
+
|
|
108
|
+
### 0.4 目标读者
|
|
109
|
+
|
|
110
|
+
| 角色 | 关注重点 |
|
|
111
|
+
|---|---|
|
|
112
|
+
| 创始人 / 技术负责人 | 如何在 AI 加速开发时保持系统掌控感 |
|
|
113
|
+
| 架构师 | 系统边界、模块分层、接口契约、演进路线 |
|
|
114
|
+
| 前端工程师 | 组件、Hook、Service、状态、路由、请求、测试规范 |
|
|
115
|
+
| 后端工程师 | Router、Service、Repository、Model、事务、异常、API 规范 |
|
|
116
|
+
| QA / 测试 | AI 生成代码如何验收、如何自动化、哪些必须人工测 |
|
|
117
|
+
| 安全团队 | AI 生成代码的安全边界、依赖、Secrets、日志、权限 |
|
|
118
|
+
| 产品经理 | 需求如何变成可约束 AI 的规格说明 |
|
|
119
|
+
| DevOps / SRE | CI、灰度、回滚、监控、发布门禁 |
|
|
120
|
+
| AI Agent 使用者 | 如何写 AGENTS.md、CLAUDE.md、项目规则和任务模板 |
|
|
121
|
+
|
|
122
|
+
### 0.5 术语定义
|
|
123
|
+
|
|
124
|
+
| 术语 | 定义 |
|
|
125
|
+
|---|---|
|
|
126
|
+
| AI Coding | 使用 AI Agent 或 AI 辅助工具进行代码生成、修改、测试、重构和 Review |
|
|
127
|
+
| Agent | 能读取项目、编辑文件、运行命令、提交变更或辅助 Review 的 AI 编程执行体 |
|
|
128
|
+
| AGENTS.md | 项目级 Agent 指令入口文件,用于描述项目规范、工作流程、文档地图和约束 |
|
|
129
|
+
| CLAUDE.md | Claude Code 常用的项目记忆 / 指令文件,用于指导 Claude 在项目中的行为 |
|
|
130
|
+
| 架构层 | 定义系统边界、核心模块、外部依赖、数据流、部署和非功能约束的层级 |
|
|
131
|
+
| 模式与抽象层 | 定义代码组织方式、分层模式、组件模式、Service / Repository / Hook 等抽象的层级 |
|
|
132
|
+
| 实现层 | 函数、类、组件、页面、接口实现、测试代码等具体代码层级 |
|
|
133
|
+
| 接口契约 | API 请求、响应、错误码、鉴权、幂等、分页、版本兼容等约定 |
|
|
134
|
+
| Release Gate | 发布准入门槛,存在阻断项时不得合并、发布或全量上线 |
|
|
135
|
+
| Human Review Gate | 必须由人类审查的节点,尤其用于安全、支付、权限、隐私、数据迁移等高风险代码 |
|
|
136
|
+
| Progressive Loading | 让 Agent 按任务加载相关规范,而不是每次无差别读取全部文档 |
|
|
137
|
+
|
|
138
|
+
### 0.6 风险等级定义
|
|
139
|
+
|
|
140
|
+
| 等级 | 定义 | 处理要求 |
|
|
141
|
+
|---|---|---|
|
|
142
|
+
| Blocker | 会导致不能合并、不能发布、严重安全 / 隐私 / 支付 / 数据事故或系统不可理解 | 禁止合并或上线;已上线必须回滚、降级或关闭 |
|
|
143
|
+
| Critical | 严重影响可维护性、核心流程、质量、合规或后续扩展 | 必须修复后才能全量;可在严格灰度或隔离环境验证 |
|
|
144
|
+
| Major | 影响主要体验、代码质量或开发效率,但有临时方案 | 明确负责人和修复计划 |
|
|
145
|
+
| Minor | 不影响核心功能和架构稳定,主要是风格、文案或局部优化 | 可后续优化,但需记录 |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 1. 核心问题:AI 写的代码为什么会失控
|
|
150
|
+
|
|
151
|
+
### 1.1 失控不是“代码跑不了”,而是“系统不可理解”
|
|
152
|
+
|
|
153
|
+
AI Coding 中后期最常见的问题不是代码完全不能运行,而是:
|
|
154
|
+
|
|
155
|
+
```md
|
|
156
|
+
- 功能看起来能用,但没人能说明为什么这么设计。
|
|
157
|
+
- 代码分散在很多地方,模块边界模糊。
|
|
158
|
+
- 相同逻辑被写了多个版本。
|
|
159
|
+
- API 调用到处都是,错误处理各写各的。
|
|
160
|
+
- 组件、Service、Model、Repository 的职责混在一起。
|
|
161
|
+
- 新需求来了,不知道该改哪里。
|
|
162
|
+
- 改一个功能会影响不相关模块。
|
|
163
|
+
- AI 总是自信地说“已完成”,但实际留下隐性风险。
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
因此,AI 写代码后的核心验收不是只看“功能是否跑通”,而要看:
|
|
167
|
+
|
|
168
|
+
```md
|
|
169
|
+
这个系统是否仍然可理解?
|
|
170
|
+
这个系统是否仍然可解释?
|
|
171
|
+
这个系统是否仍然可修改?
|
|
172
|
+
这个系统是否仍然可测试?
|
|
173
|
+
这个系统是否仍然可审计?
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 1.2 人类逐行 Review 不是唯一答案
|
|
177
|
+
|
|
178
|
+
如果 AI 一次性生成大量代码,人类逐行阅读会带来极高的信息负担。逐行 Review 适合高风险代码,但不适合作为所有 AI 代码的默认控制方式。
|
|
179
|
+
|
|
180
|
+
更有效的控制点是:
|
|
181
|
+
|
|
182
|
+
| 控制对象 | 为什么重要 | 是否必须人工控制 |
|
|
183
|
+
|---|---|---|
|
|
184
|
+
| 系统边界 | 决定 AI 能改哪里、不能改哪里 | 是 |
|
|
185
|
+
| 架构分层 | 决定代码未来如何长大 | 是 |
|
|
186
|
+
| 模块关系 | 决定需求变更时影响范围 | 是 |
|
|
187
|
+
| 接口契约 | 决定前后端、服务间、版本间是否稳定 | 是 |
|
|
188
|
+
| 抽象模式 | 决定 AI 生成代码是否一致 | 是 |
|
|
189
|
+
| 测试策略 | 决定功能是否可验证 | 是 |
|
|
190
|
+
| 高风险实现 | 支付、安全、权限、隐私、迁移等 | 是 |
|
|
191
|
+
| 普通实现细节 | 普通函数、页面、组件、样式 | 部分抽样 + 自动化 |
|
|
192
|
+
|
|
193
|
+
结论:
|
|
194
|
+
|
|
195
|
+
> 人不需要默认读完 AI 生成的每一行普通代码,但必须定义边界、抽象、契约、验收标准,并对高风险实现做人工 Review。
|
|
196
|
+
|
|
197
|
+
### 1.3 AI 加速编码后,人更容易绕过思考
|
|
198
|
+
|
|
199
|
+
AI 的危险之处不只是“可能写错”,更是“让编码变得太容易”。当开发者用一两句话让 AI 直接生成代码时,很容易跳过这些必要思考:
|
|
200
|
+
|
|
201
|
+
```md
|
|
202
|
+
- 这个需求属于哪个业务域?
|
|
203
|
+
- 要不要改现有架构?
|
|
204
|
+
- 这个模块的边界是什么?
|
|
205
|
+
- 前端和后端的契约是什么?
|
|
206
|
+
- 这个状态应该由谁维护?
|
|
207
|
+
- 这个数据是否涉及隐私?
|
|
208
|
+
- 这个接口是否需要幂等?
|
|
209
|
+
- 这个错误是否应该统一处理?
|
|
210
|
+
- 这个功能是否需要测试?
|
|
211
|
+
- 这个实现是否会影响旧版本?
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
AI 的速度不应该阻挡人的思考。正确顺序是:
|
|
215
|
+
|
|
216
|
+
```md
|
|
217
|
+
先想清楚业务、边界、架构、抽象、契约、验收。
|
|
218
|
+
再让 AI 在这些约束内编码。
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## 2. AI Coding 三层控制模型
|
|
224
|
+
|
|
225
|
+
### 2.1 总览
|
|
226
|
+
|
|
227
|
+
AI Coding 的可控性应分为三层:
|
|
228
|
+
|
|
229
|
+
```mermaid
|
|
230
|
+
graph TB
|
|
231
|
+
A[第一层:架构层] --> B[第二层:模式与抽象层]
|
|
232
|
+
B --> C[第三层:实现层]
|
|
233
|
+
A --> D[人类强控制]
|
|
234
|
+
B --> D
|
|
235
|
+
C --> E[AI 放大实现能力]
|
|
236
|
+
C --> F[高风险人工 Review]
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
| 层级 | 控制内容 | 人类职责 | AI 职责 | 典型产物 |
|
|
240
|
+
|---|---|---|---|---|
|
|
241
|
+
| 第一层:架构层 | 系统边界、核心模块、数据流、外部依赖、非功能约束 | 定义、审查、冻结关键决策 | 解释、补全、生成图和文档草稿 | `01-architecture.md` |
|
|
242
|
+
| 第二层:模式与抽象层 | 分层模式、模块切分、接口契约、组件规则、错误处理、测试模式 | 定义团队规范,避免自由生长 | 按规范生成代码和建议 | `02-frontend-patterns.md`、`03-backend-patterns.md` |
|
|
243
|
+
| 第三层:实现层 | 函数、类、组件、页面、接口、测试代码 | 抽样 Review,高风险人工 Review | 主要实现、补测试、修复、重构 | 代码、测试、PR |
|
|
244
|
+
|
|
245
|
+
### 2.2 第一层:架构层
|
|
246
|
+
|
|
247
|
+
架构层回答:
|
|
248
|
+
|
|
249
|
+
```md
|
|
250
|
+
这个系统是什么?
|
|
251
|
+
边界在哪里?
|
|
252
|
+
核心模块有哪些?
|
|
253
|
+
模块之间怎么交互?
|
|
254
|
+
数据怎么流转?
|
|
255
|
+
哪些外部系统会接入?
|
|
256
|
+
哪些约束不能被破坏?
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
架构层要控制的是“系统骨架”。如果这一层没有定义,AI 会在实现层自由生长,导致后期无法理解。
|
|
260
|
+
|
|
261
|
+
### 2.3 第二层:模式与抽象层
|
|
262
|
+
|
|
263
|
+
模式与抽象层回答:
|
|
264
|
+
|
|
265
|
+
```md
|
|
266
|
+
前端组件怎么拆?
|
|
267
|
+
Hook 放哪里?
|
|
268
|
+
Service 放哪里?
|
|
269
|
+
状态怎么管理?
|
|
270
|
+
后端 Router / Service / Repository 怎么分工?
|
|
271
|
+
接口错误怎么返回?
|
|
272
|
+
异常怎么处理?
|
|
273
|
+
测试怎么写?
|
|
274
|
+
哪些命名和目录必须统一?
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
过去这些内容是“团队编码规范”。在 AI Coding 时代,它们也是 **Agent 的工作规范**。
|
|
278
|
+
|
|
279
|
+
### 2.4 第三层:实现层
|
|
280
|
+
|
|
281
|
+
实现层回答:
|
|
282
|
+
|
|
283
|
+
```md
|
|
284
|
+
具体函数怎么写?
|
|
285
|
+
组件怎么实现?
|
|
286
|
+
页面怎么渲染?
|
|
287
|
+
接口怎么调用?
|
|
288
|
+
单元测试怎么补?
|
|
289
|
+
异常分支怎么处理?
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
AI 最适合放大的就是这一层。前两层越清楚,第三层生成的代码越可控。
|
|
293
|
+
|
|
294
|
+
### 2.5 三层控制的核心原则
|
|
295
|
+
|
|
296
|
+
```md
|
|
297
|
+
第一层不清楚,不允许让 AI 大规模编码。
|
|
298
|
+
第二层不清楚,不允许让 AI 自由选择目录、抽象和模式。
|
|
299
|
+
第三层可以让 AI 高效生成,但必须受前两层约束。
|
|
300
|
+
高风险第三层代码必须人工 Review。
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## 3. 人与 AI 的职责边界
|
|
306
|
+
|
|
307
|
+
### 3.1 人类应该控制什么
|
|
308
|
+
|
|
309
|
+
| 人类控制项 | 说明 | 原因 |
|
|
310
|
+
|---|---|---|
|
|
311
|
+
| 产品边界 | 做什么、不做什么、MVP 范围 | 防止 AI 扩展出不需要的功能 |
|
|
312
|
+
| 架构边界 | 系统模块、服务边界、外部依赖 | 防止自由生长 |
|
|
313
|
+
| 数据边界 | 数据所有权、隐私、缓存、持久化 | 防止数据泄露和串数据 |
|
|
314
|
+
| 接口契约 | 请求、响应、错误、鉴权、幂等、版本 | 防止前后端错位 |
|
|
315
|
+
| 抽象模式 | 目录、层级、职责、命名 | 防止重复和混乱 |
|
|
316
|
+
| 高风险代码 | 支付、权限、认证、迁移、安全、生产配置 | 防止 P0 事故 |
|
|
317
|
+
| Release Gate | 合并、发布、灰度、回滚标准 | 防止问题进入生产 |
|
|
318
|
+
|
|
319
|
+
### 3.2 AI 适合承担什么
|
|
320
|
+
|
|
321
|
+
| AI 适合项 | 说明 | 前提 |
|
|
322
|
+
|---|---|---|
|
|
323
|
+
| 生成普通实现代码 | 页面、组件、函数、Service、Repository | 已有规范和接口契约 |
|
|
324
|
+
| 生成测试代码 | 单测、集成测试、Mock、边界测试 | 测试策略明确 |
|
|
325
|
+
| 生成文档草稿 | README、API 文档、变更说明 | 架构和业务事实已确认 |
|
|
326
|
+
| 重构重复代码 | 抽函数、统一错误处理、整理目录 | 有模式规范 |
|
|
327
|
+
| 分析代码影响范围 | 查找调用链、识别变更风险 | 不替代人工判断 |
|
|
328
|
+
| 生成 Review Checklist | 基于规范检查 PR | 不能替代高风险人工 Review |
|
|
329
|
+
| 生成迁移计划草稿 | 数据库、接口、配置迁移 | 必须人工审查 |
|
|
330
|
+
|
|
331
|
+
### 3.3 AI 不应该独立决定什么
|
|
332
|
+
|
|
333
|
+
```md
|
|
334
|
+
- 是否改变系统架构。
|
|
335
|
+
- 是否新增核心模块。
|
|
336
|
+
- 是否变更 API 契约。
|
|
337
|
+
- 是否改变权限、认证、支付、风控逻辑。
|
|
338
|
+
- 是否新增第三方依赖或 SDK。
|
|
339
|
+
- 是否修改生产配置。
|
|
340
|
+
- 是否修改数据库 schema 或迁移逻辑。
|
|
341
|
+
- 是否删除历史兼容逻辑。
|
|
342
|
+
- 是否降低安全控制。
|
|
343
|
+
- 是否把调试、mock、测试入口放进生产。
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
这些操作必须进入 Human Review Gate。
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## 4. AI Coding 失败模型与风险域
|
|
351
|
+
|
|
352
|
+
### 4.1 失败模型总览
|
|
353
|
+
|
|
354
|
+
| 风险域 | 典型表现 | 后果 | 阻断级别 |
|
|
355
|
+
|---|---|---|---|
|
|
356
|
+
| 架构漂移 | AI 新增目录、新增服务、新增抽象但无人确认 | 系统不可理解 | Critical |
|
|
357
|
+
| 模块边界混乱 | 前端组件直接调 API,后端 Router 写业务逻辑 | 难维护、难测试 | Critical |
|
|
358
|
+
| 接口契约漂移 | AI 改响应字段、状态码、错误结构 | 前后端不兼容 | Blocker / Critical |
|
|
359
|
+
| 隐式决策 | AI 自己选择技术方案但未记录 | 后续无法解释 | Major / Critical |
|
|
360
|
+
| 重复实现 | 相同工具函数、校验逻辑、错误处理多处重复 | 缺陷分散 | Major |
|
|
361
|
+
| 测试幻觉 | AI 声称已测试但没有真实跑测试 | 虚假完成 | Critical |
|
|
362
|
+
| 依赖膨胀 | 为小问题引入新库 | 供应链、包体积、漏洞风险 | Major / Critical |
|
|
363
|
+
| 安全漏洞 | Token 泄露、日志泄露、鉴权缺失、越权 | 数据事故 | Blocker |
|
|
364
|
+
| 数据迁移风险 | migration 不可回滚、旧数据不兼容 | 升级事故 | Blocker |
|
|
365
|
+
| 配置污染 | 测试环境、mock、debug 进入生产 | 生产事故 | Blocker |
|
|
366
|
+
| 过度工程化 | 简单需求被 AI 扩成复杂框架 | 维护成本上升 | Major |
|
|
367
|
+
| 局部正确全局错误 | 单功能能跑,但破坏全局模式 | 后续变更成本上升 | Critical |
|
|
368
|
+
|
|
369
|
+
### 4.2 最危险的不是错,而是“看似完成”
|
|
370
|
+
|
|
371
|
+
AI 常见输出是:
|
|
372
|
+
|
|
373
|
+
```md
|
|
374
|
+
我已经帮你完成了。
|
|
375
|
+
这不影响未来扩展。
|
|
376
|
+
这个实现是合理的。
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
但实际可能存在:
|
|
380
|
+
|
|
381
|
+
```md
|
|
382
|
+
- 没有跑测试。
|
|
383
|
+
- 没有覆盖异常分支。
|
|
384
|
+
- 没有说明改了哪些文件。
|
|
385
|
+
- 没有解释为什么这么设计。
|
|
386
|
+
- 没有检查旧接口兼容。
|
|
387
|
+
- 没有检查安全和隐私。
|
|
388
|
+
- 没有更新文档。
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
因此每次 AI 任务都必须要求输出:
|
|
392
|
+
|
|
393
|
+
```md
|
|
394
|
+
- 变更目标
|
|
395
|
+
- 变更文件
|
|
396
|
+
- 设计依据
|
|
397
|
+
- 影响范围
|
|
398
|
+
- 测试结果
|
|
399
|
+
- 未覆盖风险
|
|
400
|
+
- 需要人工确认的问题
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
## 5. 项目文档地图:AGENTS.md 作为 Agent 入口
|
|
406
|
+
|
|
407
|
+
### 5.1 为什么需要 AGENTS.md
|
|
408
|
+
|
|
409
|
+
AI Agent 不能只靠聊天上下文工作。项目需要一个固定入口,让 Agent 每次进入项目时知道:
|
|
410
|
+
|
|
411
|
+
```md
|
|
412
|
+
- 项目是什么。
|
|
413
|
+
- 哪些文档必须读。
|
|
414
|
+
- 当前任务应该读哪些专项规范。
|
|
415
|
+
- 哪些目录可以改。
|
|
416
|
+
- 哪些目录不能改。
|
|
417
|
+
- 代码应该按什么模式写。
|
|
418
|
+
- 做完后必须如何验证。
|
|
419
|
+
- 哪些情况必须停下来询问或人工 Review。
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### 5.2 AGENTS.md 的定位
|
|
423
|
+
|
|
424
|
+
`AGENTS.md` 不应该塞满所有规范。它应该像地图:
|
|
425
|
+
|
|
426
|
+
```md
|
|
427
|
+
AGENTS.md = Agent 入口 + 文档索引 + 工作规则 + Release Gate 摘要
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
详细规范应拆到独立文档:
|
|
431
|
+
|
|
432
|
+
```md
|
|
433
|
+
/docs/ai-coding/
|
|
434
|
+
00-project-context.md
|
|
435
|
+
01-architecture.md
|
|
436
|
+
02-api-contracts.md
|
|
437
|
+
03-frontend-patterns.md
|
|
438
|
+
04-backend-patterns.md
|
|
439
|
+
05-data-model.md
|
|
440
|
+
06-testing-strategy.md
|
|
441
|
+
07-security-privacy.md
|
|
442
|
+
08-review-release-gate.md
|
|
443
|
+
09-task-templates.md
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### 5.3 渐进式加载
|
|
447
|
+
|
|
448
|
+
不建议每次任务都让 AI 读取所有文档。更好的方式是:
|
|
449
|
+
|
|
450
|
+
```md
|
|
451
|
+
所有任务必须读:
|
|
452
|
+
- AGENTS.md
|
|
453
|
+
- 00-project-context.md
|
|
454
|
+
- 01-architecture.md 摘要
|
|
455
|
+
- 08-review-release-gate.md 摘要
|
|
456
|
+
|
|
457
|
+
前端任务额外读:
|
|
458
|
+
- 03-frontend-patterns.md
|
|
459
|
+
- 02-api-contracts.md,若涉及 API
|
|
460
|
+
|
|
461
|
+
后端任务额外读:
|
|
462
|
+
- 04-backend-patterns.md
|
|
463
|
+
- 05-data-model.md
|
|
464
|
+
- 02-api-contracts.md
|
|
465
|
+
|
|
466
|
+
安全 / 支付 / 权限任务额外读:
|
|
467
|
+
- 07-security-privacy.md
|
|
468
|
+
- 08-review-release-gate.md
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
### 5.4 CLAUDE.md / Copilot Instructions / Cursor Rules 映射
|
|
472
|
+
|
|
473
|
+
不同工具的项目指令文件不同,但逻辑相同:让工具先理解项目规则,再写代码。
|
|
474
|
+
|
|
475
|
+
| 工具 / 场景 | 推荐入口 | 说明 |
|
|
476
|
+
|---|---|---|
|
|
477
|
+
| Codex | `AGENTS.md` | Codex 官方支持项目级 AGENTS.md 指令入口 |
|
|
478
|
+
| Claude Code | `CLAUDE.md` | 可将 `CLAUDE.md` 写成项目记忆 / 规则,也可指向同一套规范 |
|
|
479
|
+
| GitHub Copilot | `.github/copilot-instructions.md`,以及 `.github/instructions/*.instructions.md` | 适合仓库级和路径级指令 |
|
|
480
|
+
| Cursor / Windsurf 等 | `.cursor/rules`、项目规则文件,按工具支持情况配置 | 建议引用同一套 `/docs/ai-coding` 规范 |
|
|
481
|
+
| 通用 Agent | `AGENTS.md` + `/docs/ai-coding` | 避免每个工具维护一份不同规范 |
|
|
482
|
+
|
|
483
|
+
可选做法:
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
# macOS / Linux 示例
|
|
487
|
+
ln -s AGENTS.md CLAUDE.md
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
注意:不同工具、不同操作系统和 Git 配置对符号链接支持不同。若团队环境复杂,可以让 `CLAUDE.md`、`.github/copilot-instructions.md` 保持简短,并在其中明确引用 `AGENTS.md` 和 `/docs/ai-coding`。
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## 6. 第一层:架构层规范
|
|
495
|
+
|
|
496
|
+
### 6.1 架构层必须回答的问题
|
|
497
|
+
|
|
498
|
+
| 问题 | 必须写清楚什么 |
|
|
499
|
+
|---|---|
|
|
500
|
+
| 系统边界是什么 | 当前系统负责什么,不负责什么 |
|
|
501
|
+
| 核心模块是什么 | 用户、认证、订单、支付、内容、配置等模块 |
|
|
502
|
+
| 模块关系是什么 | 哪些模块可以调用哪些模块 |
|
|
503
|
+
| 数据流转是什么 | 数据从输入到存储、输出、同步如何流动 |
|
|
504
|
+
| 外部依赖是什么 | 支付、短信、邮件、对象存储、AI 模型、第三方 API |
|
|
505
|
+
| 非功能约束是什么 | 性能、安全、隐私、可靠性、可观测性、可扩展性 |
|
|
506
|
+
| 部署边界是什么 | 前端、后端、数据库、缓存、队列、CDN、对象存储 |
|
|
507
|
+
| 版本兼容是什么 | API 版本、旧客户端、数据库迁移、灰度策略 |
|
|
508
|
+
|
|
509
|
+
### 6.2 架构层文档模板
|
|
510
|
+
|
|
511
|
+
```md
|
|
512
|
+
# 01-architecture.md
|
|
513
|
+
|
|
514
|
+
## 1. 系统目标
|
|
515
|
+
- 本系统解决什么问题
|
|
516
|
+
- 当前版本范围
|
|
517
|
+
- 明确不做什么
|
|
518
|
+
|
|
519
|
+
## 2. 平台和技术栈
|
|
520
|
+
- 前端:React / TypeScript / Vite / ...
|
|
521
|
+
- 后端:Python / FastAPI / SQLAlchemy / ...
|
|
522
|
+
- 数据库:PostgreSQL / Redis / ...
|
|
523
|
+
- 部署:Docker / Kubernetes / ...
|
|
524
|
+
|
|
525
|
+
## 3. 系统边界
|
|
526
|
+
- 前端负责:页面、交互、输入校验、展示、客户端缓存
|
|
527
|
+
- 后端负责:业务规则、鉴权、数据持久化、支付校验、审计
|
|
528
|
+
- 第三方负责:支付、短信、邮件、对象存储、AI 模型等
|
|
529
|
+
|
|
530
|
+
## 4. 核心模块
|
|
531
|
+
| 模块 | 职责 | 主要输入 | 主要输出 | 不允许做什么 |
|
|
532
|
+
|---|---|---|---|---|
|
|
533
|
+
|
|
534
|
+
## 5. 数据流
|
|
535
|
+
- 用户操作 -> 前端校验 -> API -> Service -> Repository -> DB
|
|
536
|
+
- 异步任务 -> Queue -> Worker -> 状态更新 -> 通知
|
|
537
|
+
|
|
538
|
+
## 6. 外部依赖
|
|
539
|
+
| 依赖 | 用途 | 风险 | 降级方案 | 负责人 |
|
|
540
|
+
|---|---|---|---|---|
|
|
541
|
+
|
|
542
|
+
## 7. 非功能约束
|
|
543
|
+
- 性能
|
|
544
|
+
- 安全
|
|
545
|
+
- 隐私
|
|
546
|
+
- 可观测性
|
|
547
|
+
- 可回滚
|
|
548
|
+
- 可测试
|
|
549
|
+
|
|
550
|
+
## 8. 禁止破坏的架构规则
|
|
551
|
+
- 不允许前端直接绕过后端调用第三方支付确认结果
|
|
552
|
+
- 不允许 Router 写业务规则
|
|
553
|
+
- 不允许组件直接访问数据库或后端私有逻辑
|
|
554
|
+
- 不允许新增未登记的第三方依赖
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
### 6.3 架构层检查项
|
|
558
|
+
|
|
559
|
+
| 检查项 | 测试 / 验证方法 | 自动化可行性 | 阻断级别 | 通过标准 |
|
|
560
|
+
|---|---|---|---|---|
|
|
561
|
+
| 系统边界明确 | 阅读架构文档 + 需求对照 | 低 | Critical | 能说清系统负责和不负责什么 |
|
|
562
|
+
| 核心模块明确 | 架构图 + 模块表 | 中 | Critical | 每个模块有职责和禁止事项 |
|
|
563
|
+
| 外部依赖登记 | 依赖台账 + 配置检查 | 中 | Critical | 无未登记关键依赖 |
|
|
564
|
+
| 数据流清晰 | 画出核心流程数据流 | 低 | Critical | 核心流程可追踪 |
|
|
565
|
+
| 非功能约束明确 | 性能、安全、隐私、监控清单 | 中 | Major / Critical | 上线前有验收标准 |
|
|
566
|
+
|
|
567
|
+
---
|
|
568
|
+
|
|
569
|
+
## 7. 第二层:模式与抽象层规范
|
|
570
|
+
|
|
571
|
+
### 7.1 模式与抽象层的目标
|
|
572
|
+
|
|
573
|
+
这一层的目标是让 AI 在写代码时有稳定模式,而不是临时发挥。
|
|
574
|
+
|
|
575
|
+
必须回答:
|
|
576
|
+
|
|
577
|
+
```md
|
|
578
|
+
- 目录如何组织?
|
|
579
|
+
- 哪些文件放在哪?
|
|
580
|
+
- 前端组件怎么分?
|
|
581
|
+
- 后端 Router / Service / Repository 怎么分?
|
|
582
|
+
- 错误怎么处理?
|
|
583
|
+
- API 怎么请求?
|
|
584
|
+
- 状态怎么管理?
|
|
585
|
+
- 测试怎么写?
|
|
586
|
+
- 命名怎么统一?
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### 7.2 抽象层不清楚时的典型事故
|
|
590
|
+
|
|
591
|
+
```md
|
|
592
|
+
- 页面里直接 fetch API。
|
|
593
|
+
- Hook 里写业务规则和持久化逻辑。
|
|
594
|
+
- Service 里拼 UI 文案。
|
|
595
|
+
- Router 里写数据库事务。
|
|
596
|
+
- Repository 返回业务 DTO。
|
|
597
|
+
- 错误处理到处 try/catch。
|
|
598
|
+
- 同一个 API 的响应类型重复定义。
|
|
599
|
+
- 多个组件各自实现 loading / error / empty 状态。
|
|
600
|
+
- 测试只测成功路径。
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
### 7.3 模式与抽象层模板
|
|
604
|
+
|
|
605
|
+
```md
|
|
606
|
+
# 03-frontend-patterns.md
|
|
607
|
+
|
|
608
|
+
## 1. 目录规范
|
|
609
|
+
## 2. 组件分层
|
|
610
|
+
## 3. Hook 规范
|
|
611
|
+
## 4. Service / API Client 规范
|
|
612
|
+
## 5. 状态管理规范
|
|
613
|
+
## 6. 表单和校验规范
|
|
614
|
+
## 7. 错误、Loading、Empty 状态规范
|
|
615
|
+
## 8. 路由和权限规范
|
|
616
|
+
## 9. 测试规范
|
|
617
|
+
## 10. 禁止事项
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
```md
|
|
621
|
+
# 04-backend-patterns.md
|
|
622
|
+
|
|
623
|
+
## 1. 目录规范
|
|
624
|
+
## 2. Router / Controller 规范
|
|
625
|
+
## 3. Service 规范
|
|
626
|
+
## 4. Repository 规范
|
|
627
|
+
## 5. Model / Schema / DTO 规范
|
|
628
|
+
## 6. 事务规范
|
|
629
|
+
## 7. 异常和错误码规范
|
|
630
|
+
## 8. 鉴权和权限规范
|
|
631
|
+
## 9. 日志与审计规范
|
|
632
|
+
## 10. 测试规范
|
|
633
|
+
## 11. 禁止事项
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
### 7.4 抽象层检查项
|
|
637
|
+
|
|
638
|
+
| 检查项 | 测试 / 验证方法 | 自动化可行性 | 阻断级别 | 通过标准 |
|
|
639
|
+
|---|---|---|---|---|
|
|
640
|
+
| 目录结构一致 | 静态扫描 + PR Review | 高 | Major / Critical | 新代码落在正确目录 |
|
|
641
|
+
| 分层职责清晰 | Review 关键文件 | 中 | Critical | 不跨层写逻辑 |
|
|
642
|
+
| 错误处理统一 | 测试错误分支 + 代码扫描 | 中 | Critical | API / UI 错误结构一致 |
|
|
643
|
+
| 测试模式明确 | 测试目录 + coverage + 用例审查 | 高 | Major / Critical | 关键分支有测试 |
|
|
644
|
+
| 禁止事项可检查 | lint、脚本、依赖扫描 | 高 | Critical | 禁止模式未出现 |
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## 8. 第三层:实现层规范
|
|
649
|
+
|
|
650
|
+
### 8.1 实现层可以让 AI 放大效率
|
|
651
|
+
|
|
652
|
+
实现层包括:
|
|
653
|
+
|
|
654
|
+
```md
|
|
655
|
+
- 函数
|
|
656
|
+
- 类
|
|
657
|
+
- React 组件
|
|
658
|
+
- 页面
|
|
659
|
+
- Hook
|
|
660
|
+
- API Client
|
|
661
|
+
- Router
|
|
662
|
+
- Service
|
|
663
|
+
- Repository
|
|
664
|
+
- DTO
|
|
665
|
+
- 测试用例
|
|
666
|
+
- Mock 数据
|
|
667
|
+
- 文档片段
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
这些是 AI 最适合生成的内容,但必须遵守前两层约束。
|
|
671
|
+
|
|
672
|
+
### 8.2 实现层必须遵守的规则
|
|
673
|
+
|
|
674
|
+
```md
|
|
675
|
+
- 不得新增架构中不存在的核心模块,除非任务明确要求并通过架构 Review。
|
|
676
|
+
- 不得改变 API 契约,除非任务明确要求并更新 API 文档。
|
|
677
|
+
- 不得新增第三方依赖,除非说明原因、替代方案和风险。
|
|
678
|
+
- 不得在组件里直接写 API 细节。
|
|
679
|
+
- 不得在 Router 里写复杂业务逻辑。
|
|
680
|
+
- 不得绕过统一错误处理。
|
|
681
|
+
- 不得删除已有测试来让新代码通过。
|
|
682
|
+
- 不得把 mock、debug、测试入口放进生产路径。
|
|
683
|
+
- 不得硬编码 secret、token、API key、支付参数。
|
|
684
|
+
- 不得声称测试通过但没有提供命令和结果。
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
### 8.3 实现层什么时候必须人工 Review
|
|
688
|
+
|
|
689
|
+
以下场景不能只靠 AI Review:
|
|
690
|
+
|
|
691
|
+
| 场景 | 原因 | 阻断级别 |
|
|
692
|
+
|---|---|---|
|
|
693
|
+
| 支付金额、订单状态、回调验证 | 涉及资金和权益 | Blocker |
|
|
694
|
+
| 登录、认证、授权、权限 | 涉及账号安全和越权 | Blocker |
|
|
695
|
+
| 数据库 schema / migration | 涉及数据丢失和升级事故 | Blocker |
|
|
696
|
+
| Token、密钥、本地存储、日志 | 涉及敏感信息泄露 | Blocker |
|
|
697
|
+
| 用户隐私和数据采集 | 涉及合规风险 | Blocker / Critical |
|
|
698
|
+
| 生产配置、CI/CD、部署脚本 | 涉及生产事故 | Blocker |
|
|
699
|
+
| 删除兼容逻辑 | 可能影响旧版本用户 | Critical |
|
|
700
|
+
| 新增依赖 / SDK | 涉及供应链和隐私 | Critical |
|
|
701
|
+
| 风控规则 | 涉及黑灰产和误伤 | Critical |
|
|
702
|
+
| 法律、医疗、金融、儿童相关逻辑 | 高合规风险 | Blocker / Critical |
|
|
703
|
+
|
|
704
|
+
---
|
|
705
|
+
|
|
706
|
+
## 9. AI Coding 工作流
|
|
707
|
+
|
|
708
|
+
### 9.1 标准流程
|
|
709
|
+
|
|
710
|
+
```mermaid
|
|
711
|
+
graph LR
|
|
712
|
+
A[需求输入] --> B[澄清边界]
|
|
713
|
+
B --> C[检查架构影响]
|
|
714
|
+
C --> D[检查模式与抽象]
|
|
715
|
+
D --> E[生成任务计划]
|
|
716
|
+
E --> F[人工确认高风险点]
|
|
717
|
+
F --> G[AI 实现]
|
|
718
|
+
G --> H[自动化测试]
|
|
719
|
+
H --> I[AI 自检报告]
|
|
720
|
+
I --> J[人工 Review]
|
|
721
|
+
J --> K[合并 / 灰度 / 发布]
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
### 9.2 不允许直接进入编码的情况
|
|
725
|
+
|
|
726
|
+
当出现以下任一情况时,AI 必须先产出方案,而不是直接改代码:
|
|
727
|
+
|
|
728
|
+
```md
|
|
729
|
+
- 需求边界不清楚。
|
|
730
|
+
- 需要新增模块。
|
|
731
|
+
- 需要改 API 契约。
|
|
732
|
+
- 需要改数据库结构。
|
|
733
|
+
- 涉及支付、权限、认证、安全、隐私。
|
|
734
|
+
- 涉及删除旧逻辑。
|
|
735
|
+
- 涉及大范围重构。
|
|
736
|
+
- 需要新增依赖。
|
|
737
|
+
- 涉及生产配置。
|
|
738
|
+
- 现有文档与代码不一致。
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
### 9.3 AI 任务计划必须包含
|
|
742
|
+
|
|
743
|
+
```md
|
|
744
|
+
## Task Plan
|
|
745
|
+
|
|
746
|
+
1. 任务目标
|
|
747
|
+
2. 需求边界
|
|
748
|
+
3. 涉及模块
|
|
749
|
+
4. 需要读取的规范文档
|
|
750
|
+
5. 计划修改文件
|
|
751
|
+
6. 是否影响 API 契约
|
|
752
|
+
7. 是否影响数据库 / 缓存 / 配置
|
|
753
|
+
8. 是否影响权限 / 安全 / 隐私
|
|
754
|
+
9. 测试计划
|
|
755
|
+
10. 需要人工确认的问题
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
### 9.4 AI 完成后必须输出
|
|
759
|
+
|
|
760
|
+
```md
|
|
761
|
+
## Change Report
|
|
762
|
+
|
|
763
|
+
1. 本次完成了什么
|
|
764
|
+
2. 修改了哪些文件
|
|
765
|
+
3. 每个文件为什么修改
|
|
766
|
+
4. 是否遵守架构与模式规范
|
|
767
|
+
5. 是否改动 API 契约
|
|
768
|
+
6. 是否新增依赖
|
|
769
|
+
7. 是否涉及安全 / 隐私 / 支付 / 权限
|
|
770
|
+
8. 已运行的测试命令和结果
|
|
771
|
+
9. 未覆盖风险
|
|
772
|
+
10. 建议人工 Review 的点
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
---
|
|
776
|
+
|
|
777
|
+
## 10. AI 任务拆分与变更边界
|
|
778
|
+
|
|
779
|
+
### 10.1 任务必须小而明确
|
|
780
|
+
|
|
781
|
+
不建议给 AI 这样的任务:
|
|
782
|
+
|
|
783
|
+
```md
|
|
784
|
+
帮我把整个商城做完。
|
|
785
|
+
帮我重构一下项目。
|
|
786
|
+
帮我优化代码。
|
|
787
|
+
帮我把后端补完整。
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
应拆成:
|
|
791
|
+
|
|
792
|
+
```md
|
|
793
|
+
- 基于现有 API 契约,实现商品列表页面,不改 API。
|
|
794
|
+
- 为订单创建接口补充幂等校验,不改数据库结构。
|
|
795
|
+
- 将用户资料页面的 API 调用从组件迁移到 userService,保持 UI 不变。
|
|
796
|
+
- 为 authService 增加 token refresh 失败用例。
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
### 10.2 任务粒度标准
|
|
800
|
+
|
|
801
|
+
| 任务规模 | 适合 AI 直接实现吗 | 要求 |
|
|
802
|
+
|---|---|---|
|
|
803
|
+
| 单函数 / 单组件 | 可以 | 有明确输入输出 |
|
|
804
|
+
| 单页面 | 可以 | UI 状态、API、错误、测试明确 |
|
|
805
|
+
| 单接口 | 可以 | API 契约和业务规则明确 |
|
|
806
|
+
| 单模块 | 谨慎 | 先设计模块边界 |
|
|
807
|
+
| 跨模块功能 | 不建议直接实现 | 先出架构 / 任务拆分 |
|
|
808
|
+
| 大型重构 | 不允许直接实现 | 必须分阶段、可回滚 |
|
|
809
|
+
| 支付 / 鉴权 / 迁移 | 不允许自动完成后直接合并 | 必须人工 Review |
|
|
810
|
+
|
|
811
|
+
### 10.3 AI 变更边界声明
|
|
812
|
+
|
|
813
|
+
每个任务应声明:
|
|
814
|
+
|
|
815
|
+
```md
|
|
816
|
+
允许修改:
|
|
817
|
+
- src/features/product/**
|
|
818
|
+
- src/services/productService.ts
|
|
819
|
+
- tests/product/**
|
|
820
|
+
|
|
821
|
+
禁止修改:
|
|
822
|
+
- src/auth/**
|
|
823
|
+
- src/payment/**
|
|
824
|
+
- database/migrations/**
|
|
825
|
+
- deployment/**
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
---
|
|
829
|
+
|
|
830
|
+
## 11. 代码评审策略:不逐行盯死,但要盯住风险
|
|
831
|
+
|
|
832
|
+
### 11.1 Review 的核心变化
|
|
833
|
+
|
|
834
|
+
AI Coding 时代,Review 不应只问:
|
|
835
|
+
|
|
836
|
+
```md
|
|
837
|
+
这几行代码写得对不对?
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
还要问:
|
|
841
|
+
|
|
842
|
+
```md
|
|
843
|
+
这个变更是否破坏架构?
|
|
844
|
+
这个抽象是否和项目一致?
|
|
845
|
+
这个接口契约是否稳定?
|
|
846
|
+
这个变更是否可测试?
|
|
847
|
+
这个功能出了问题能否回滚?
|
|
848
|
+
这个代码是否引入安全、隐私、依赖风险?
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
### 11.2 Review 分层
|
|
852
|
+
|
|
853
|
+
| Review 层级 | 关注点 | 负责人 | 是否必须 |
|
|
854
|
+
|---|---|---|---|
|
|
855
|
+
| 架构 Review | 系统边界、模块关系、数据流 | Tech Lead / 架构师 | 大变更必须 |
|
|
856
|
+
| 抽象 Review | 分层、目录、命名、职责 | 模块 Owner | 必须 |
|
|
857
|
+
| 契约 Review | API、错误码、字段、版本兼容 | 前后端 Owner | 涉及接口必须 |
|
|
858
|
+
| 测试 Review | 单测、集成、边界、异常 | QA / Owner | 必须 |
|
|
859
|
+
| 安全 Review | 鉴权、隐私、日志、依赖、Secrets | 安全 / Senior | 高风险必须 |
|
|
860
|
+
| 实现 Review | 具体代码、可读性、性能 | 代码 Owner | 普通变更抽样,高风险全量 |
|
|
861
|
+
|
|
862
|
+
### 11.3 不必逐行读的代码
|
|
863
|
+
|
|
864
|
+
以下代码在规范充分、测试覆盖充分时,可以用自动化 + 抽样 Review:
|
|
865
|
+
|
|
866
|
+
```md
|
|
867
|
+
- 普通 UI 样式调整
|
|
868
|
+
- 简单展示组件
|
|
869
|
+
- 已有模式下的 CRUD 页面
|
|
870
|
+
- 已有 Service 模板下的普通 API 调用
|
|
871
|
+
- 普通表单校验
|
|
872
|
+
- 普通单元测试补充
|
|
873
|
+
```
|
|
874
|
+
|
|
875
|
+
### 11.4 必须重点读的代码
|
|
876
|
+
|
|
877
|
+
```md
|
|
878
|
+
- 影响鉴权、权限、Session、Token 的代码
|
|
879
|
+
- 影响支付、订单、退款、权益的代码
|
|
880
|
+
- 影响数据迁移、删除、清理的代码
|
|
881
|
+
- 影响外部回调、Webhook、签名验证的代码
|
|
882
|
+
- 影响日志、监控、审计的代码
|
|
883
|
+
- 影响生产配置、CI/CD、部署的代码
|
|
884
|
+
- 修改公共工具、公共中间件、全局状态的代码
|
|
885
|
+
- 删除旧兼容逻辑的代码
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
---
|
|
889
|
+
|
|
890
|
+
## 12. 测试、CI 与质量门禁
|
|
891
|
+
|
|
892
|
+
### 12.1 AI 生成代码必须可验证
|
|
893
|
+
|
|
894
|
+
AI 不能只说“已完成”。必须提供验证证据:
|
|
895
|
+
|
|
896
|
+
```md
|
|
897
|
+
- 运行了哪些测试命令
|
|
898
|
+
- 测试是否通过
|
|
899
|
+
- 哪些测试未运行,为什么
|
|
900
|
+
- 手动验证了哪些页面 / 接口
|
|
901
|
+
- 未覆盖哪些风险
|
|
902
|
+
```
|
|
903
|
+
|
|
904
|
+
### 12.2 CI 最低门禁
|
|
905
|
+
|
|
906
|
+
| 门禁 | 说明 | 阻断级别 |
|
|
907
|
+
|---|---|---|
|
|
908
|
+
| Lint | 代码风格和基础错误 | Major / Critical |
|
|
909
|
+
| Type Check | TypeScript / Python typing | Critical |
|
|
910
|
+
| Unit Test | 单元测试 | Critical |
|
|
911
|
+
| Integration Test | API / Service / DB 集成 | Critical |
|
|
912
|
+
| E2E Smoke | 核心流程冒烟 | Critical |
|
|
913
|
+
| Dependency Scan | 依赖漏洞和许可证 | Critical |
|
|
914
|
+
| Secret Scan | 密钥泄露扫描 | Blocker |
|
|
915
|
+
| Build | 生产构建可通过 | Blocker |
|
|
916
|
+
| Contract Test | API 契约测试 | Critical |
|
|
917
|
+
|
|
918
|
+
### 12.3 AI 不得规避测试
|
|
919
|
+
|
|
920
|
+
禁止:
|
|
921
|
+
|
|
922
|
+
```md
|
|
923
|
+
- 删除失败测试。
|
|
924
|
+
- 降低断言强度。
|
|
925
|
+
- 把失败测试标记 skip,除非有审批。
|
|
926
|
+
- 用 mock 掩盖真实集成问题。
|
|
927
|
+
- 只跑局部测试却声称全量通过。
|
|
928
|
+
- 不提供测试命令和结果。
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
### 12.4 测试策略矩阵
|
|
932
|
+
|
|
933
|
+
| 场景 | 必测内容 | 自动化可行性 | 人工要求 |
|
|
934
|
+
|---|---|---|---|
|
|
935
|
+
| 普通 UI | 展示、交互、错误态 | 高 | 抽样 |
|
|
936
|
+
| API | 成功、失败、鉴权、边界 | 高 | 契约 Review |
|
|
937
|
+
| 支付 | 取消、超时、回调、重复支付、对账 | 中 | 必须人工 |
|
|
938
|
+
| 权限 | 拒绝、永久拒绝、降级 | 中 | 关键路径人工 |
|
|
939
|
+
| 数据迁移 | 老数据、新数据、中断、回滚 | 中 | 必须人工 |
|
|
940
|
+
| 安全 | 越权、注入、日志、Secrets | 中 | 必须人工 |
|
|
941
|
+
|
|
942
|
+
---
|
|
943
|
+
|
|
944
|
+
## 13. 安全、隐私、依赖与供应链
|
|
945
|
+
|
|
946
|
+
### 13.1 AI 生成代码的安全基线
|
|
947
|
+
|
|
948
|
+
```md
|
|
949
|
+
- 不得硬编码 secret、token、API key、数据库密码。
|
|
950
|
+
- 不得在日志中打印 token、手机号、邮箱、地址、身份证、支付信息。
|
|
951
|
+
- 不得把敏感错误直接返回给前端。
|
|
952
|
+
- 不得绕过鉴权和权限校验。
|
|
953
|
+
- 不得信任客户端金额、用户 ID、角色、权限、订单状态。
|
|
954
|
+
- 不得忽略 TLS / HTTPS 错误。
|
|
955
|
+
- 不得引入未登记依赖。
|
|
956
|
+
- 不得把用户输入直接拼接到 SQL、命令、模板、URL。
|
|
957
|
+
- 不得让 WebView / JSBridge / Deep Link 直接触发敏感操作。
|
|
958
|
+
```
|
|
959
|
+
|
|
960
|
+
### 13.2 依赖治理
|
|
961
|
+
|
|
962
|
+
AI 很容易为了快速完成任务引入依赖。必须约束:
|
|
963
|
+
|
|
964
|
+
```md
|
|
965
|
+
新增依赖必须说明:
|
|
966
|
+
- 为什么需要
|
|
967
|
+
- 是否有内置替代方案
|
|
968
|
+
- 是否有更轻量替代
|
|
969
|
+
- 是否有安全漏洞
|
|
970
|
+
- 是否影响包体积
|
|
971
|
+
- 是否影响启动性能
|
|
972
|
+
- 是否有许可证风险
|
|
973
|
+
- 谁负责后续升级
|
|
974
|
+
```
|
|
975
|
+
|
|
976
|
+
### 13.3 AI / LLM 特有风险
|
|
977
|
+
|
|
978
|
+
如果项目本身使用 LLM 或 AI Agent,还必须检查:
|
|
979
|
+
|
|
980
|
+
```md
|
|
981
|
+
- Prompt Injection
|
|
982
|
+
- 不安全输出处理
|
|
983
|
+
- 训练 / 检索数据污染
|
|
984
|
+
- 模型拒绝服务和成本滥用
|
|
985
|
+
- 供应链风险
|
|
986
|
+
- 敏感信息泄露
|
|
987
|
+
- 工具调用越权
|
|
988
|
+
- 过度自治
|
|
989
|
+
- 错误信息导致用户误导
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
### 13.4 高风险安全任务必须人工 Review
|
|
993
|
+
|
|
994
|
+
AI 可以协助生成安全代码,但不能独立批准:
|
|
995
|
+
|
|
996
|
+
```md
|
|
997
|
+
- 鉴权中间件
|
|
998
|
+
- 权限模型
|
|
999
|
+
- 支付签名验证
|
|
1000
|
+
- Webhook 验证
|
|
1001
|
+
- 数据加密
|
|
1002
|
+
- Secrets 管理
|
|
1003
|
+
- 数据删除
|
|
1004
|
+
- 审计日志
|
|
1005
|
+
- 风控规则
|
|
1006
|
+
```
|
|
1007
|
+
|
|
1008
|
+
---
|
|
1009
|
+
|
|
1010
|
+
## 14. 文档、证据留存与可追溯性
|
|
1011
|
+
|
|
1012
|
+
### 14.1 每次 AI 变更必须留下证据
|
|
1013
|
+
|
|
1014
|
+
```md
|
|
1015
|
+
- 任务描述
|
|
1016
|
+
- 任务计划
|
|
1017
|
+
- 变更文件清单
|
|
1018
|
+
- 关键设计决策
|
|
1019
|
+
- 测试命令和结果
|
|
1020
|
+
- 未覆盖风险
|
|
1021
|
+
- 人工 Review 记录
|
|
1022
|
+
- 是否更新文档
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
### 14.2 架构决策记录 ADR
|
|
1026
|
+
|
|
1027
|
+
对于重要决策,必须写 ADR:
|
|
1028
|
+
|
|
1029
|
+
```md
|
|
1030
|
+
/docs/adr/0001-use-fastapi-service-repository-pattern.md
|
|
1031
|
+
```
|
|
1032
|
+
|
|
1033
|
+
模板:
|
|
1034
|
+
|
|
1035
|
+
```md
|
|
1036
|
+
# ADR-0001:决策标题
|
|
1037
|
+
|
|
1038
|
+
## 背景
|
|
1039
|
+
为什么需要这个决策?
|
|
1040
|
+
|
|
1041
|
+
## 决策
|
|
1042
|
+
我们决定采用什么方案?
|
|
1043
|
+
|
|
1044
|
+
## 替代方案
|
|
1045
|
+
考虑过哪些方案?为什么不用?
|
|
1046
|
+
|
|
1047
|
+
## 影响
|
|
1048
|
+
对架构、测试、性能、安全、团队有什么影响?
|
|
1049
|
+
|
|
1050
|
+
## 回滚或调整方式
|
|
1051
|
+
如果未来不合适,怎么调整?
|
|
1052
|
+
```
|
|
1053
|
+
|
|
1054
|
+
### 14.3 AI 生成代码的可追溯字段
|
|
1055
|
+
|
|
1056
|
+
PR 或任务记录中建议包含:
|
|
1057
|
+
|
|
1058
|
+
```md
|
|
1059
|
+
- AI 工具:Codex / Claude Code / Copilot / Cursor / 其他
|
|
1060
|
+
- 模型,若团队需要记录
|
|
1061
|
+
- 使用的规范文件
|
|
1062
|
+
- 任务 Prompt 摘要
|
|
1063
|
+
- 是否由 AI 生成主要代码
|
|
1064
|
+
- 人工 Review 人
|
|
1065
|
+
- 合并人
|
|
1066
|
+
```
|
|
1067
|
+
|
|
1068
|
+
---
|
|
1069
|
+
|
|
1070
|
+
## 15. 团队治理、角色分工与持续改进
|
|
1071
|
+
|
|
1072
|
+
### 15.1 角色分工
|
|
1073
|
+
|
|
1074
|
+
| 角色 | 职责 |
|
|
1075
|
+
|---|---|
|
|
1076
|
+
| Tech Lead | 维护架构层规范,批准架构变更 |
|
|
1077
|
+
| Module Owner | 维护模块边界和模式规范,Review 模块变更 |
|
|
1078
|
+
| AI Operator | 操作 AI Agent,提交任务计划和变更报告 |
|
|
1079
|
+
| Reviewer | Review 代码、架构、测试和风险 |
|
|
1080
|
+
| QA | 维护测试矩阵和自动化策略 |
|
|
1081
|
+
| Security | 维护安全基线和高风险 Review 清单 |
|
|
1082
|
+
| DevOps | 维护 CI、构建、发布、回滚和监控 |
|
|
1083
|
+
| Product | 明确需求边界和不做范围 |
|
|
1084
|
+
|
|
1085
|
+
### 15.2 规范不是一次性写完
|
|
1086
|
+
|
|
1087
|
+
AGENTS.md 和规范文档应该持续迭代:
|
|
1088
|
+
|
|
1089
|
+
```md
|
|
1090
|
+
当 AI 第二次犯同样错误时,把规则写入规范。
|
|
1091
|
+
当 Code Review 发现 AI 应该知道的项目知识时,把规则写入规范。
|
|
1092
|
+
当团队反复在聊天里解释同一件事时,把规则写入规范。
|
|
1093
|
+
当新人需要同样上下文才能上手时,把规则写入规范。
|
|
1094
|
+
```
|
|
1095
|
+
|
|
1096
|
+
### 15.3 规范更新流程
|
|
1097
|
+
|
|
1098
|
+
```md
|
|
1099
|
+
发现问题 -> 归因到架构 / 抽象 / 实现 / 工具 / 测试 -> 更新对应规范 -> 加入自动化检查 -> 复盘是否降低重复错误
|
|
1100
|
+
```
|
|
1101
|
+
|
|
1102
|
+
---
|
|
1103
|
+
|
|
1104
|
+
## 16. 通用 Release Gate
|
|
1105
|
+
|
|
1106
|
+
### 16.1 Blocker:存在一个就不能合并 / 发布
|
|
1107
|
+
|
|
1108
|
+
```md
|
|
1109
|
+
- AI 未读项目规范即进行大范围修改。
|
|
1110
|
+
- 未经确认改变系统架构或核心模块边界。
|
|
1111
|
+
- 未经确认改变 API 契约。
|
|
1112
|
+
- 未经确认修改数据库 schema / migration。
|
|
1113
|
+
- 支付金额、权限、用户身份、订单状态依赖客户端可信输入。
|
|
1114
|
+
- 用户 A 可以访问用户 B 数据。
|
|
1115
|
+
- Token、secret、API key 明文存储或泄露。
|
|
1116
|
+
- 测试环境、mock、debug 入口进入生产路径。
|
|
1117
|
+
- AI 删除测试或降低断言来让代码通过。
|
|
1118
|
+
- 生产构建失败。
|
|
1119
|
+
- 关键流程没有可回滚 / 可关闭方案。
|
|
1120
|
+
- 高风险代码没有人工 Review。
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
### 16.2 Critical:必须修复后才能全量
|
|
1124
|
+
|
|
1125
|
+
```md
|
|
1126
|
+
- 架构文档与代码明显不一致。
|
|
1127
|
+
- 模块职责混乱,存在跨层调用。
|
|
1128
|
+
- API 错误结构不统一。
|
|
1129
|
+
- 旧版本兼容失败。
|
|
1130
|
+
- 依赖未登记或存在高危漏洞。
|
|
1131
|
+
- 核心流程测试缺失。
|
|
1132
|
+
- AI 变更没有说明测试命令和结果。
|
|
1133
|
+
- 日志可能泄露敏感信息。
|
|
1134
|
+
- 权限拒绝或异常分支无降级。
|
|
1135
|
+
- 监控、告警、日志缺失导致无法定位问题。
|
|
1136
|
+
```
|
|
1137
|
+
|
|
1138
|
+
### 16.3 Major / Minor
|
|
1139
|
+
|
|
1140
|
+
```md
|
|
1141
|
+
Major:
|
|
1142
|
+
- 部分组件命名不一致。
|
|
1143
|
+
- 普通页面缺少某些边界状态。
|
|
1144
|
+
- 部分测试覆盖不足但不影响核心路径。
|
|
1145
|
+
- 文档更新不完整但关键事实清楚。
|
|
1146
|
+
|
|
1147
|
+
Minor:
|
|
1148
|
+
- 文案、样式、注释、格式等低风险问题。
|
|
1149
|
+
```
|
|
1150
|
+
|
|
1151
|
+
---
|
|
1152
|
+
|
|
1153
|
+
# 第二卷:React + Python 前后端分离项目示例
|
|
1154
|
+
|
|
1155
|
+
## 17. 示例项目边界
|
|
1156
|
+
|
|
1157
|
+
本示例假设:
|
|
1158
|
+
|
|
1159
|
+
```md
|
|
1160
|
+
前端:React + TypeScript + Vite
|
|
1161
|
+
后端:Python + FastAPI
|
|
1162
|
+
数据库:PostgreSQL
|
|
1163
|
+
缓存:Redis,可选
|
|
1164
|
+
认证:JWT / Session,按项目选择
|
|
1165
|
+
API:REST JSON
|
|
1166
|
+
部署:Docker / CI/CD
|
|
1167
|
+
```
|
|
1168
|
+
|
|
1169
|
+
目标不是规定所有项目必须这样选型,而是演示如何把“三层控制模型”落到具体技术栈。
|
|
1170
|
+
|
|
1171
|
+
---
|
|
1172
|
+
|
|
1173
|
+
## 18. 推荐仓库结构
|
|
1174
|
+
|
|
1175
|
+
```md
|
|
1176
|
+
project-root/
|
|
1177
|
+
AGENTS.md
|
|
1178
|
+
CLAUDE.md # 可选:指向 AGENTS.md 或引用同一套规范
|
|
1179
|
+
.github/
|
|
1180
|
+
copilot-instructions.md # 可选:引用 AGENTS.md
|
|
1181
|
+
workflows/
|
|
1182
|
+
ci.yml
|
|
1183
|
+
pull_request_template.md
|
|
1184
|
+
|
|
1185
|
+
docs/
|
|
1186
|
+
ai-coding/
|
|
1187
|
+
00-project-context.md
|
|
1188
|
+
01-architecture.md
|
|
1189
|
+
02-api-contracts.md
|
|
1190
|
+
03-frontend-patterns.md
|
|
1191
|
+
04-backend-patterns.md
|
|
1192
|
+
05-data-model.md
|
|
1193
|
+
06-testing-strategy.md
|
|
1194
|
+
07-security-privacy.md
|
|
1195
|
+
08-review-release-gate.md
|
|
1196
|
+
09-task-templates.md
|
|
1197
|
+
adr/
|
|
1198
|
+
0001-example.md
|
|
1199
|
+
|
|
1200
|
+
frontend/
|
|
1201
|
+
src/
|
|
1202
|
+
app/
|
|
1203
|
+
routes/
|
|
1204
|
+
features/
|
|
1205
|
+
components/
|
|
1206
|
+
hooks/
|
|
1207
|
+
services/
|
|
1208
|
+
types/
|
|
1209
|
+
lib/
|
|
1210
|
+
test/
|
|
1211
|
+
|
|
1212
|
+
backend/
|
|
1213
|
+
app/
|
|
1214
|
+
main.py
|
|
1215
|
+
api/
|
|
1216
|
+
routers/
|
|
1217
|
+
core/
|
|
1218
|
+
services/
|
|
1219
|
+
repositories/
|
|
1220
|
+
models/
|
|
1221
|
+
schemas/
|
|
1222
|
+
db/
|
|
1223
|
+
workers/
|
|
1224
|
+
tests/
|
|
1225
|
+
|
|
1226
|
+
scripts/
|
|
1227
|
+
deployment/
|
|
1228
|
+
```
|
|
1229
|
+
|
|
1230
|
+
---
|
|
1231
|
+
|
|
1232
|
+
## 19. AGENTS.md 最小可用模板
|
|
1233
|
+
|
|
1234
|
+
```md
|
|
1235
|
+
# AGENTS.md
|
|
1236
|
+
|
|
1237
|
+
本文件是本仓库所有 AI Coding Agent 的入口说明。任何编码任务开始前必须先阅读本文件。
|
|
1238
|
+
|
|
1239
|
+
## 1. 项目概览
|
|
1240
|
+
- 项目名称:待填写
|
|
1241
|
+
- 项目类型:React + Python 前后端分离
|
|
1242
|
+
- 当前阶段:MVP / Beta / Production,待填写
|
|
1243
|
+
- 核心业务:待填写
|
|
1244
|
+
|
|
1245
|
+
## 2. 必读文档
|
|
1246
|
+
所有任务必须读取:
|
|
1247
|
+
- docs/ai-coding/00-project-context.md
|
|
1248
|
+
- docs/ai-coding/01-architecture.md
|
|
1249
|
+
- docs/ai-coding/08-review-release-gate.md
|
|
1250
|
+
|
|
1251
|
+
前端任务额外读取:
|
|
1252
|
+
- docs/ai-coding/03-frontend-patterns.md
|
|
1253
|
+
- docs/ai-coding/02-api-contracts.md,若涉及 API
|
|
1254
|
+
|
|
1255
|
+
后端任务额外读取:
|
|
1256
|
+
- docs/ai-coding/04-backend-patterns.md
|
|
1257
|
+
- docs/ai-coding/05-data-model.md
|
|
1258
|
+
- docs/ai-coding/02-api-contracts.md
|
|
1259
|
+
|
|
1260
|
+
安全、支付、认证、权限、隐私、生产配置任务额外读取:
|
|
1261
|
+
- docs/ai-coding/07-security-privacy.md
|
|
1262
|
+
|
|
1263
|
+
## 3. 工作规则
|
|
1264
|
+
- 不允许在没有计划的情况下进行跨模块修改。
|
|
1265
|
+
- 不允许未经确认改变 API 契约。
|
|
1266
|
+
- 不允许未经确认新增第三方依赖。
|
|
1267
|
+
- 不允许未经确认修改数据库 migration。
|
|
1268
|
+
- 不允许硬编码 secret、token、API key、支付参数。
|
|
1269
|
+
- 不允许删除测试或降低断言来让代码通过。
|
|
1270
|
+
- 修改完成必须输出变更报告和测试结果。
|
|
1271
|
+
|
|
1272
|
+
## 4. 任务计划要求
|
|
1273
|
+
开始编码前必须说明:
|
|
1274
|
+
- 任务目标
|
|
1275
|
+
- 涉及模块
|
|
1276
|
+
- 计划修改文件
|
|
1277
|
+
- 是否影响 API / DB / 权限 / 安全 / 隐私
|
|
1278
|
+
- 测试计划
|
|
1279
|
+
- 需要人工确认的问题
|
|
1280
|
+
|
|
1281
|
+
## 5. 完成报告要求
|
|
1282
|
+
完成后必须说明:
|
|
1283
|
+
- 修改了哪些文件
|
|
1284
|
+
- 为什么这样改
|
|
1285
|
+
- 跑了哪些测试命令
|
|
1286
|
+
- 测试结果
|
|
1287
|
+
- 未覆盖风险
|
|
1288
|
+
- 建议人工 Review 点
|
|
1289
|
+
|
|
1290
|
+
## 6. 高风险人工 Review
|
|
1291
|
+
以下变更必须人工 Review:
|
|
1292
|
+
- 支付
|
|
1293
|
+
- 认证 / 授权
|
|
1294
|
+
- 用户权限
|
|
1295
|
+
- 数据库 migration
|
|
1296
|
+
- 生产配置
|
|
1297
|
+
- Secrets
|
|
1298
|
+
- 第三方依赖
|
|
1299
|
+
- 用户隐私数据
|
|
1300
|
+
- 删除旧兼容逻辑
|
|
1301
|
+
```
|
|
1302
|
+
|
|
1303
|
+
---
|
|
1304
|
+
|
|
1305
|
+
## 20. 架构规范模板
|
|
1306
|
+
|
|
1307
|
+
```md
|
|
1308
|
+
# docs/ai-coding/01-architecture.md
|
|
1309
|
+
|
|
1310
|
+
## 1. 系统边界
|
|
1311
|
+
|
|
1312
|
+
前端负责:
|
|
1313
|
+
- 页面渲染
|
|
1314
|
+
- 用户交互
|
|
1315
|
+
- 表单初步校验
|
|
1316
|
+
- 客户端状态
|
|
1317
|
+
- API 调用封装
|
|
1318
|
+
- 错误 / Loading / Empty 展示
|
|
1319
|
+
|
|
1320
|
+
后端负责:
|
|
1321
|
+
- 业务规则
|
|
1322
|
+
- 鉴权和权限
|
|
1323
|
+
- 数据持久化
|
|
1324
|
+
- 事务
|
|
1325
|
+
- 幂等
|
|
1326
|
+
- 审计日志
|
|
1327
|
+
- 支付 / 外部回调验证
|
|
1328
|
+
- 服务端可信判断
|
|
1329
|
+
|
|
1330
|
+
前端不得负责:
|
|
1331
|
+
- 判断支付是否成功
|
|
1332
|
+
- 判断用户是否有服务端权限
|
|
1333
|
+
- 生成可信金额
|
|
1334
|
+
- 直接写入数据库
|
|
1335
|
+
|
|
1336
|
+
后端不得负责:
|
|
1337
|
+
- 具体 UI 展示
|
|
1338
|
+
- 页面状态样式
|
|
1339
|
+
|
|
1340
|
+
## 2. 核心模块
|
|
1341
|
+
| 模块 | 职责 | 依赖 | 禁止事项 |
|
|
1342
|
+
|---|---|---|---|
|
|
1343
|
+
| auth | 登录、会话、权限 | user | 不允许返回敏感 token 到日志 |
|
|
1344
|
+
| user | 用户资料 | auth | 不允许跨账号访问 |
|
|
1345
|
+
| product,若有 | 商品展示 | inventory | 不允许直接处理支付 |
|
|
1346
|
+
| order,若有 | 订单创建、状态 | payment / inventory | 不允许信任客户端金额 |
|
|
1347
|
+
| payment,若有 | 支付创建、回调、对账 | order | 不允许客户端确认支付成功 |
|
|
1348
|
+
|
|
1349
|
+
## 3. 数据流
|
|
1350
|
+
用户操作 -> React 页面 -> Service -> API -> Router -> Service -> Repository -> DB
|
|
1351
|
+
|
|
1352
|
+
## 4. 外部依赖
|
|
1353
|
+
| 依赖 | 用途 | 降级方案 | Owner |
|
|
1354
|
+
|---|---|---|---|
|
|
1355
|
+
|
|
1356
|
+
## 5. 架构禁止事项
|
|
1357
|
+
- 不允许跨层调用。
|
|
1358
|
+
- 不允许前端绕过后端调用需要服务端可信判断的第三方。
|
|
1359
|
+
- 不允许新增未登记依赖。
|
|
1360
|
+
- 不允许将业务规则分散到多个层。
|
|
1361
|
+
```
|
|
1362
|
+
|
|
1363
|
+
---
|
|
1364
|
+
|
|
1365
|
+
## 21. API 契约规范模板
|
|
1366
|
+
|
|
1367
|
+
### 21.1 API 基本规则
|
|
1368
|
+
|
|
1369
|
+
```md
|
|
1370
|
+
- API 使用 REST JSON。
|
|
1371
|
+
- 所有 API 必须有 OpenAPI / Schema 定义。
|
|
1372
|
+
- 所有错误必须使用统一错误结构。
|
|
1373
|
+
- 创建 / 支付 / 提交类操作必须考虑幂等。
|
|
1374
|
+
- 客户端不能作为可信来源。
|
|
1375
|
+
- API 版本变更必须记录兼容策略。
|
|
1376
|
+
```
|
|
1377
|
+
|
|
1378
|
+
### 21.2 统一响应结构示例
|
|
1379
|
+
|
|
1380
|
+
```json
|
|
1381
|
+
{
|
|
1382
|
+
"data": {},
|
|
1383
|
+
"error": null,
|
|
1384
|
+
"requestId": "req_123"
|
|
1385
|
+
}
|
|
1386
|
+
```
|
|
1387
|
+
|
|
1388
|
+
错误示例:
|
|
1389
|
+
|
|
1390
|
+
```json
|
|
1391
|
+
{
|
|
1392
|
+
"data": null,
|
|
1393
|
+
"error": {
|
|
1394
|
+
"code": "ORDER_NOT_FOUND",
|
|
1395
|
+
"message": "订单不存在",
|
|
1396
|
+
"details": {}
|
|
1397
|
+
},
|
|
1398
|
+
"requestId": "req_123"
|
|
1399
|
+
}
|
|
1400
|
+
```
|
|
1401
|
+
|
|
1402
|
+
### 21.3 API 契约检查项
|
|
1403
|
+
|
|
1404
|
+
| 检查项 | 要求 | 阻断级别 |
|
|
1405
|
+
|---|---|---|
|
|
1406
|
+
| 请求参数 | Schema 明确,必填 / 可选清楚 | Critical |
|
|
1407
|
+
| 响应字段 | 字段类型、空值、默认值明确 | Critical |
|
|
1408
|
+
| 错误码 | 统一 code,不直接暴露内部异常 | Critical |
|
|
1409
|
+
| 鉴权 | 每个接口声明是否需要登录和权限 | Blocker |
|
|
1410
|
+
| 幂等 | 创建、支付、退款、提交类操作必须有策略 | Blocker / Critical |
|
|
1411
|
+
| 版本兼容 | 字段废弃和新增有过渡期 | Critical |
|
|
1412
|
+
|
|
1413
|
+
---
|
|
1414
|
+
|
|
1415
|
+
## 22. React 前端模式与抽象规范
|
|
1416
|
+
|
|
1417
|
+
### 22.1 前端目录示例
|
|
1418
|
+
|
|
1419
|
+
```md
|
|
1420
|
+
frontend/src/
|
|
1421
|
+
app/ # 应用初始化、Provider、全局配置
|
|
1422
|
+
routes/ # 路由定义
|
|
1423
|
+
features/ # 业务功能域
|
|
1424
|
+
user/
|
|
1425
|
+
pages/
|
|
1426
|
+
components/
|
|
1427
|
+
hooks/
|
|
1428
|
+
services/
|
|
1429
|
+
types.ts
|
|
1430
|
+
tests/
|
|
1431
|
+
components/ # 跨业务通用组件
|
|
1432
|
+
hooks/ # 跨业务通用 hooks
|
|
1433
|
+
services/ # API client 和通用服务
|
|
1434
|
+
types/ # 全局类型
|
|
1435
|
+
lib/ # 工具函数
|
|
1436
|
+
```
|
|
1437
|
+
|
|
1438
|
+
### 22.2 组件分层
|
|
1439
|
+
|
|
1440
|
+
| 层级 | 职责 | 禁止事项 |
|
|
1441
|
+
|---|---|---|
|
|
1442
|
+
| Page | 路由级页面,组合业务组件 | 不直接写复杂 API 细节 |
|
|
1443
|
+
| Feature Component | 业务组件,展示业务状态 | 不直接访问全局底层配置 |
|
|
1444
|
+
| Shared Component | 通用 UI | 不包含业务规则 |
|
|
1445
|
+
| Hook | 复用状态和行为 | 不直接承担服务端可信判断 |
|
|
1446
|
+
| Service | 封装 API 调用 | 不处理 UI 展示 |
|
|
1447
|
+
|
|
1448
|
+
### 22.3 React 禁止事项
|
|
1449
|
+
|
|
1450
|
+
```md
|
|
1451
|
+
- 不允许在组件中散落 fetch / axios 调用。
|
|
1452
|
+
- 不允许在组件中拼接 API URL。
|
|
1453
|
+
- 不允许在 UI 层判断服务端权限。
|
|
1454
|
+
- 不允许将 token 打印到 console。
|
|
1455
|
+
- 不允许每个页面各自实现错误结构。
|
|
1456
|
+
- 不允许为了简单状态引入不必要全局状态。
|
|
1457
|
+
- 不允许把业务规则写进通用组件。
|
|
1458
|
+
```
|
|
1459
|
+
|
|
1460
|
+
### 22.4 状态、错误与 Loading
|
|
1461
|
+
|
|
1462
|
+
```md
|
|
1463
|
+
每个远程数据页面必须有:
|
|
1464
|
+
- loading
|
|
1465
|
+
- success
|
|
1466
|
+
- empty
|
|
1467
|
+
- error
|
|
1468
|
+
- retry
|
|
1469
|
+
- permission denied,若涉及权限
|
|
1470
|
+
```
|
|
1471
|
+
|
|
1472
|
+
### 22.5 前端测试要求
|
|
1473
|
+
|
|
1474
|
+
| 类型 | 内容 |
|
|
1475
|
+
|---|---|
|
|
1476
|
+
| 单元测试 | 工具函数、Hook、格式化、校验 |
|
|
1477
|
+
| 组件测试 | 状态渲染、用户交互、错误态 |
|
|
1478
|
+
| 集成测试 | 页面 + API mock + 路由 |
|
|
1479
|
+
| E2E | 登录、核心业务流程、异常流程 |
|
|
1480
|
+
|
|
1481
|
+
---
|
|
1482
|
+
|
|
1483
|
+
## 23. Python 后端模式与抽象规范
|
|
1484
|
+
|
|
1485
|
+
### 23.1 后端目录示例
|
|
1486
|
+
|
|
1487
|
+
```md
|
|
1488
|
+
backend/app/
|
|
1489
|
+
main.py
|
|
1490
|
+
api/
|
|
1491
|
+
routers/
|
|
1492
|
+
user_router.py
|
|
1493
|
+
order_router.py
|
|
1494
|
+
services/
|
|
1495
|
+
user_service.py
|
|
1496
|
+
order_service.py
|
|
1497
|
+
repositories/
|
|
1498
|
+
user_repository.py
|
|
1499
|
+
order_repository.py
|
|
1500
|
+
models/
|
|
1501
|
+
user.py
|
|
1502
|
+
order.py
|
|
1503
|
+
schemas/
|
|
1504
|
+
user_schema.py
|
|
1505
|
+
order_schema.py
|
|
1506
|
+
core/
|
|
1507
|
+
config.py
|
|
1508
|
+
security.py
|
|
1509
|
+
errors.py
|
|
1510
|
+
logging.py
|
|
1511
|
+
db/
|
|
1512
|
+
session.py
|
|
1513
|
+
migrations/
|
|
1514
|
+
tests/
|
|
1515
|
+
```
|
|
1516
|
+
|
|
1517
|
+
### 23.2 分层职责
|
|
1518
|
+
|
|
1519
|
+
| 层 | 职责 | 禁止事项 |
|
|
1520
|
+
|---|---|---|
|
|
1521
|
+
| Router | 接收请求、参数校验、调用 Service、返回响应 | 不写复杂业务逻辑,不直接访问 DB |
|
|
1522
|
+
| Service | 业务规则、事务、权限判断、调用 Repository | 不拼 UI 文案,不依赖具体 HTTP 实现 |
|
|
1523
|
+
| Repository | 数据读写、查询封装 | 不写业务决策 |
|
|
1524
|
+
| Model | 数据库实体 | 不写复杂业务流程 |
|
|
1525
|
+
| Schema / DTO | 请求响应结构 | 不包含持久化逻辑 |
|
|
1526
|
+
| Core | 配置、安全、错误、日志 | 不写具体业务 |
|
|
1527
|
+
|
|
1528
|
+
### 23.3 后端禁止事项
|
|
1529
|
+
|
|
1530
|
+
```md
|
|
1531
|
+
- 不允许 Router 直接写数据库查询。
|
|
1532
|
+
- 不允许 Service 返回未脱敏的敏感字段。
|
|
1533
|
+
- 不允许 Repository 判断业务权限。
|
|
1534
|
+
- 不允许信任客户端 user_id、role、price、order_status。
|
|
1535
|
+
- 不允许在日志中打印 token、password、secret。
|
|
1536
|
+
- 不允许直接吞掉异常而不记录 requestId。
|
|
1537
|
+
- 不允许没有事务地执行多步骤关键写操作。
|
|
1538
|
+
```
|
|
1539
|
+
|
|
1540
|
+
### 23.4 事务和幂等
|
|
1541
|
+
|
|
1542
|
+
```md
|
|
1543
|
+
- 创建订单、支付、退款、发货、权益发放必须考虑幂等。
|
|
1544
|
+
- 外部回调必须验证签名和重复回调。
|
|
1545
|
+
- 多表写入必须使用事务。
|
|
1546
|
+
- 失败后必须能重试或回滚。
|
|
1547
|
+
```
|
|
1548
|
+
|
|
1549
|
+
### 23.5 后端测试要求
|
|
1550
|
+
|
|
1551
|
+
| 类型 | 内容 |
|
|
1552
|
+
|---|---|
|
|
1553
|
+
| Unit | Service 业务规则、Repository 查询逻辑 |
|
|
1554
|
+
| Integration | Router + Service + DB |
|
|
1555
|
+
| Contract | 请求响应 Schema、错误码 |
|
|
1556
|
+
| Security | 鉴权、越权、输入校验、敏感日志 |
|
|
1557
|
+
| Migration | 数据库迁移、回滚、中断恢复 |
|
|
1558
|
+
|
|
1559
|
+
---
|
|
1560
|
+
|
|
1561
|
+
## 24. 数据模型、状态与错误处理规范
|
|
1562
|
+
|
|
1563
|
+
### 24.1 数据所有权
|
|
1564
|
+
|
|
1565
|
+
```md
|
|
1566
|
+
每个核心实体必须定义 Owner:
|
|
1567
|
+
- User 由 user-service 管理。
|
|
1568
|
+
- Order 由 order-service 管理。
|
|
1569
|
+
- Payment 由 payment-service 管理。
|
|
1570
|
+
- Product 由 product-service 管理。
|
|
1571
|
+
```
|
|
1572
|
+
|
|
1573
|
+
不得多个模块同时维护同一份核心状态。
|
|
1574
|
+
|
|
1575
|
+
### 24.2 错误码规范
|
|
1576
|
+
|
|
1577
|
+
```md
|
|
1578
|
+
错误码命名:DOMAIN_ACTION_REASON
|
|
1579
|
+
示例:
|
|
1580
|
+
- AUTH_TOKEN_EXPIRED
|
|
1581
|
+
- USER_NOT_FOUND
|
|
1582
|
+
- ORDER_ALREADY_PAID
|
|
1583
|
+
- PAYMENT_SIGNATURE_INVALID
|
|
1584
|
+
```
|
|
1585
|
+
|
|
1586
|
+
### 24.3 错误处理要求
|
|
1587
|
+
|
|
1588
|
+
```md
|
|
1589
|
+
- 前端展示用户可理解文案。
|
|
1590
|
+
- 后端记录可诊断日志。
|
|
1591
|
+
- 外部错误不得原样暴露给用户。
|
|
1592
|
+
- 每个错误必须关联 requestId。
|
|
1593
|
+
- 支付、安全、隐私错误必须进入审计日志。
|
|
1594
|
+
```
|
|
1595
|
+
|
|
1596
|
+
---
|
|
1597
|
+
|
|
1598
|
+
## 25. 测试策略模板
|
|
1599
|
+
|
|
1600
|
+
```md
|
|
1601
|
+
# docs/ai-coding/06-testing-strategy.md
|
|
1602
|
+
|
|
1603
|
+
## 1. 测试目标
|
|
1604
|
+
- 保证核心流程正确。
|
|
1605
|
+
- 保证架构和接口契约不被 AI 破坏。
|
|
1606
|
+
- 保证异常、弱网、安全、权限分支可验证。
|
|
1607
|
+
|
|
1608
|
+
## 2. 测试分层
|
|
1609
|
+
| 层级 | 工具 | 覆盖内容 |
|
|
1610
|
+
|---|---|---|
|
|
1611
|
+
| Unit | pytest / vitest | 函数、Service、Hook |
|
|
1612
|
+
| Integration | pytest + test DB / MSW | API、DB、Service |
|
|
1613
|
+
| E2E | Playwright / Cypress | 核心流程 |
|
|
1614
|
+
| Contract | OpenAPI / schema test | API 契约 |
|
|
1615
|
+
| Security | secret scan / dependency scan | 安全和依赖 |
|
|
1616
|
+
|
|
1617
|
+
## 3. AI 任务最低测试要求
|
|
1618
|
+
- 普通 UI:组件测试或 E2E smoke。
|
|
1619
|
+
- API 变更:Contract + Integration。
|
|
1620
|
+
- 业务规则:Service unit test。
|
|
1621
|
+
- 支付 / 权限:单测 + 集成 + 人工 Review。
|
|
1622
|
+
- 数据迁移:迁移测试 + 回滚策略。
|
|
1623
|
+
```
|
|
1624
|
+
|
|
1625
|
+
---
|
|
1626
|
+
|
|
1627
|
+
## 26. 高风险人工 Review 清单
|
|
1628
|
+
|
|
1629
|
+
```md
|
|
1630
|
+
## 必须人工 Review
|
|
1631
|
+
|
|
1632
|
+
### 支付
|
|
1633
|
+
- 金额是否服务端计算
|
|
1634
|
+
- 商品 ID / 订单 ID 是否服务端校验
|
|
1635
|
+
- 回调签名是否验证
|
|
1636
|
+
- 重复回调是否幂等
|
|
1637
|
+
- 退款和权益回收是否一致
|
|
1638
|
+
|
|
1639
|
+
### 认证与权限
|
|
1640
|
+
- Token 是否安全存储
|
|
1641
|
+
- 过期和刷新是否正确
|
|
1642
|
+
- 是否存在越权访问
|
|
1643
|
+
- 角色和权限是否服务端判断
|
|
1644
|
+
|
|
1645
|
+
### 数据库迁移
|
|
1646
|
+
- 老数据是否兼容
|
|
1647
|
+
- migration 是否可重复执行
|
|
1648
|
+
- 失败是否可回滚
|
|
1649
|
+
- 中断后是否可恢复
|
|
1650
|
+
|
|
1651
|
+
### 安全与隐私
|
|
1652
|
+
- 日志是否脱敏
|
|
1653
|
+
- 是否硬编码 secret
|
|
1654
|
+
- 是否新增数据采集
|
|
1655
|
+
- 隐私政策是否需要更新
|
|
1656
|
+
|
|
1657
|
+
### 生产配置
|
|
1658
|
+
- 是否连接生产环境
|
|
1659
|
+
- 是否关闭 debug / mock
|
|
1660
|
+
- 是否上传 source map / mapping / 日志配置正确
|
|
1661
|
+
```
|
|
1662
|
+
|
|
1663
|
+
---
|
|
1664
|
+
|
|
1665
|
+
## 27. React + Python Release Gate
|
|
1666
|
+
|
|
1667
|
+
### 27.1 Blocker
|
|
1668
|
+
|
|
1669
|
+
```md
|
|
1670
|
+
- 生产构建失败。
|
|
1671
|
+
- TypeScript typecheck 失败。
|
|
1672
|
+
- Python 测试失败。
|
|
1673
|
+
- API 契约变更未更新文档。
|
|
1674
|
+
- Router 直接访问数据库并写业务逻辑。
|
|
1675
|
+
- React 组件直接信任客户端金额 / 权限。
|
|
1676
|
+
- 支付 / 权限 / migration 未人工 Review。
|
|
1677
|
+
- Secret 泄露。
|
|
1678
|
+
- 新增依赖未登记。
|
|
1679
|
+
- 测试环境配置进入生产构建。
|
|
1680
|
+
```
|
|
1681
|
+
|
|
1682
|
+
### 27.2 Critical
|
|
1683
|
+
|
|
1684
|
+
```md
|
|
1685
|
+
- 前端状态缺少 error / loading / empty 处理。
|
|
1686
|
+
- 后端错误结构不统一。
|
|
1687
|
+
- 旧接口兼容失败。
|
|
1688
|
+
- 关键 Service 无单元测试。
|
|
1689
|
+
- 核心流程无 E2E smoke。
|
|
1690
|
+
- 日志缺少 requestId。
|
|
1691
|
+
- 监控无法定位核心错误。
|
|
1692
|
+
```
|
|
1693
|
+
|
|
1694
|
+
---
|
|
1695
|
+
|
|
1696
|
+
# 第三卷:模板、映射关系与落地清单
|
|
1697
|
+
|
|
1698
|
+
## 28. 三层控制模型映射表
|
|
1699
|
+
|
|
1700
|
+
| 能力 / 风险项 | 架构层 | 模式与抽象层 | 实现层 | 是否 MVP 必须 | 说明 |
|
|
1701
|
+
|---|---|---|---|---|---|
|
|
1702
|
+
| 系统边界 | 是 | 否 | 否 | 是 | 没有边界不应让 AI 大规模编码 |
|
|
1703
|
+
| 核心模块 | 是 | 是 | 否 | 是 | 先定义模块,再生成实现 |
|
|
1704
|
+
| API 契约 | 是 | 是 | 是 | 是 | 前后端分离项目 P0 |
|
|
1705
|
+
| 前端组件规范 | 否 | 是 | 是 | 是 | 控制 AI 生成 UI 的结构 |
|
|
1706
|
+
| 后端分层规范 | 否 | 是 | 是 | 是 | 避免 Router / Service / Repository 混乱 |
|
|
1707
|
+
| 普通页面实现 | 否 | 否 | 是 | 视业务 | AI 可主要承担 |
|
|
1708
|
+
| 支付逻辑 | 是 | 是 | 是 | 视业务 | 高风险,必须人工 Review |
|
|
1709
|
+
| 权限逻辑 | 是 | 是 | 是 | 是 | 高风险,必须人工 Review |
|
|
1710
|
+
| 数据迁移 | 是 | 是 | 是 | 视业务 | 必须可回滚 |
|
|
1711
|
+
| 测试策略 | 是 | 是 | 是 | 是 | 没有测试,AI 完成不可验证 |
|
|
1712
|
+
| 文档地图 | 是 | 是 | 否 | 是 | AGENTS.md 是入口 |
|
|
1713
|
+
| Release Gate | 是 | 是 | 是 | 是 | 防止不可控代码合并 |
|
|
1714
|
+
|
|
1715
|
+
---
|
|
1716
|
+
|
|
1717
|
+
## 29. 不同项目阶段的最低文档集
|
|
1718
|
+
|
|
1719
|
+
### 29.1 个人 Demo
|
|
1720
|
+
|
|
1721
|
+
```md
|
|
1722
|
+
必须:
|
|
1723
|
+
- AGENTS.md
|
|
1724
|
+
- 00-project-context.md
|
|
1725
|
+
- 01-architecture.md 简版
|
|
1726
|
+
- 03/04 patterns 简版
|
|
1727
|
+
- 06-testing-strategy.md 简版
|
|
1728
|
+
```
|
|
1729
|
+
|
|
1730
|
+
### 29.2 MVP 项目
|
|
1731
|
+
|
|
1732
|
+
```md
|
|
1733
|
+
必须:
|
|
1734
|
+
- AGENTS.md
|
|
1735
|
+
- 00-project-context.md
|
|
1736
|
+
- 01-architecture.md
|
|
1737
|
+
- 02-api-contracts.md
|
|
1738
|
+
- 03-frontend-patterns.md
|
|
1739
|
+
- 04-backend-patterns.md
|
|
1740
|
+
- 06-testing-strategy.md
|
|
1741
|
+
- 08-review-release-gate.md
|
|
1742
|
+
```
|
|
1743
|
+
|
|
1744
|
+
### 29.3 生产项目
|
|
1745
|
+
|
|
1746
|
+
```md
|
|
1747
|
+
必须:
|
|
1748
|
+
- MVP 全部文档
|
|
1749
|
+
- 05-data-model.md
|
|
1750
|
+
- 07-security-privacy.md
|
|
1751
|
+
- ADR
|
|
1752
|
+
- Dependency Inventory
|
|
1753
|
+
- Build Manifest
|
|
1754
|
+
- Runbook
|
|
1755
|
+
- Release Gate 证据留存
|
|
1756
|
+
```
|
|
1757
|
+
|
|
1758
|
+
### 29.4 高风险项目
|
|
1759
|
+
|
|
1760
|
+
涉及支付、金融、医疗、儿童、隐私、AI Agent 工具调用、生产自动化时,必须额外增加:
|
|
1761
|
+
|
|
1762
|
+
```md
|
|
1763
|
+
- Threat Model
|
|
1764
|
+
- Security Review Checklist
|
|
1765
|
+
- Privacy Impact Assessment
|
|
1766
|
+
- Data Retention Policy
|
|
1767
|
+
- Incident Runbook
|
|
1768
|
+
- Human Review Gate
|
|
1769
|
+
- Red Team / Abuse Case 清单
|
|
1770
|
+
```
|
|
1771
|
+
|
|
1772
|
+
---
|
|
1773
|
+
|
|
1774
|
+
## 30. 不同 AI 工具的指令文件映射
|
|
1775
|
+
|
|
1776
|
+
| 工具 | 仓库级入口 | 路径级 / 任务级规则 | 建议做法 |
|
|
1777
|
+
|---|---|---|---|
|
|
1778
|
+
| Codex | `AGENTS.md` | 可引用子文档、计划文件 | 主文件简洁,分文档加载 |
|
|
1779
|
+
| Claude Code | `CLAUDE.md` | 子代理、技能、项目记忆 | `CLAUDE.md` 引用 `AGENTS.md` 或同源规范 |
|
|
1780
|
+
| GitHub Copilot | `.github/copilot-instructions.md` | `.github/instructions/*.instructions.md` | 仓库级 + 路径级结合 |
|
|
1781
|
+
| Cursor | `.cursor/rules` | 规则文件 | 引用同一套 docs |
|
|
1782
|
+
| 通用 IDE Agent | README / AGENTS.md | 任务 Prompt | 不要每个工具写一套不同事实 |
|
|
1783
|
+
|
|
1784
|
+
---
|
|
1785
|
+
|
|
1786
|
+
## 31. AI Coding Prompt 模板
|
|
1787
|
+
|
|
1788
|
+
### 31.1 开发任务模板
|
|
1789
|
+
|
|
1790
|
+
```md
|
|
1791
|
+
你是本项目的资深工程师。开始前必须先阅读 AGENTS.md,并根据任务类型读取相关 docs/ai-coding 文档。
|
|
1792
|
+
|
|
1793
|
+
任务:
|
|
1794
|
+
- [写清楚要做什么]
|
|
1795
|
+
|
|
1796
|
+
范围:
|
|
1797
|
+
- 允许修改:[目录 / 文件]
|
|
1798
|
+
- 禁止修改:[目录 / 文件]
|
|
1799
|
+
|
|
1800
|
+
约束:
|
|
1801
|
+
- 不允许改变 API 契约,除非先提出方案。
|
|
1802
|
+
- 不允许新增依赖,除非说明原因并等待确认。
|
|
1803
|
+
- 不允许修改数据库 migration。
|
|
1804
|
+
- 必须遵守前端 / 后端分层规范。
|
|
1805
|
+
|
|
1806
|
+
输出要求:
|
|
1807
|
+
1. 先给 Task Plan,不要立即改代码。
|
|
1808
|
+
2. 标明是否涉及架构、API、DB、安全、隐私、支付、权限。
|
|
1809
|
+
3. 经确认后再实现。
|
|
1810
|
+
4. 实现后输出 Change Report、测试命令和结果。
|
|
1811
|
+
```
|
|
1812
|
+
|
|
1813
|
+
### 31.2 代码审查模板
|
|
1814
|
+
|
|
1815
|
+
```md
|
|
1816
|
+
请基于 AGENTS.md 和 docs/ai-coding 规范审查本次 diff。
|
|
1817
|
+
|
|
1818
|
+
重点检查:
|
|
1819
|
+
- 是否破坏架构层边界
|
|
1820
|
+
- 是否破坏前后端分层
|
|
1821
|
+
- 是否改变 API 契约
|
|
1822
|
+
- 是否涉及安全 / 隐私 / 支付 / 权限
|
|
1823
|
+
- 是否新增依赖
|
|
1824
|
+
- 是否有测试覆盖
|
|
1825
|
+
- 是否有高风险点需要人工 Review
|
|
1826
|
+
|
|
1827
|
+
输出:
|
|
1828
|
+
- Blocker
|
|
1829
|
+
- Critical
|
|
1830
|
+
- Major
|
|
1831
|
+
- Minor
|
|
1832
|
+
- 建议修改
|
|
1833
|
+
- 必须人工确认项
|
|
1834
|
+
```
|
|
1835
|
+
|
|
1836
|
+
### 31.3 重构任务模板
|
|
1837
|
+
|
|
1838
|
+
```md
|
|
1839
|
+
请不要直接大范围重构。先输出重构计划:
|
|
1840
|
+
|
|
1841
|
+
1. 当前问题是什么
|
|
1842
|
+
2. 涉及哪些模块
|
|
1843
|
+
3. 哪些行为必须保持不变
|
|
1844
|
+
4. 分几步改
|
|
1845
|
+
5. 每步如何测试
|
|
1846
|
+
6. 如何回滚
|
|
1847
|
+
7. 哪些文件不能改
|
|
1848
|
+
8. 是否影响 API / DB / 权限 / 安全
|
|
1849
|
+
```
|
|
1850
|
+
|
|
1851
|
+
---
|
|
1852
|
+
|
|
1853
|
+
## 32. PR / Review 模板
|
|
1854
|
+
|
|
1855
|
+
```md
|
|
1856
|
+
## 1. 变更目标
|
|
1857
|
+
|
|
1858
|
+
## 2. 变更范围
|
|
1859
|
+
- 修改文件:
|
|
1860
|
+
- 未修改但相关文件:
|
|
1861
|
+
|
|
1862
|
+
## 3. 是否由 AI 生成主要代码
|
|
1863
|
+
- 是 / 否
|
|
1864
|
+
- 使用工具:
|
|
1865
|
+
- 使用的规范文件:
|
|
1866
|
+
|
|
1867
|
+
## 4. 架构影响
|
|
1868
|
+
- 是否改变模块边界:是 / 否
|
|
1869
|
+
- 是否改变 API 契约:是 / 否
|
|
1870
|
+
- 是否改变 DB / migration:是 / 否
|
|
1871
|
+
|
|
1872
|
+
## 5. 风险检查
|
|
1873
|
+
- 支付:是 / 否
|
|
1874
|
+
- 权限:是 / 否
|
|
1875
|
+
- 认证:是 / 否
|
|
1876
|
+
- 隐私:是 / 否
|
|
1877
|
+
- 安全:是 / 否
|
|
1878
|
+
- 生产配置:是 / 否
|
|
1879
|
+
- 新增依赖:是 / 否
|
|
1880
|
+
|
|
1881
|
+
## 6. 测试结果
|
|
1882
|
+
- 命令:
|
|
1883
|
+
- 结果:
|
|
1884
|
+
|
|
1885
|
+
## 7. 未覆盖风险
|
|
1886
|
+
|
|
1887
|
+
## 8. 人工 Review 点
|
|
1888
|
+
```
|
|
1889
|
+
|
|
1890
|
+
---
|
|
1891
|
+
|
|
1892
|
+
## 33. 常见失控场景与处置方案
|
|
1893
|
+
|
|
1894
|
+
| 场景 | 表现 | 处置 |
|
|
1895
|
+
|---|---|---|
|
|
1896
|
+
| AI 写了一堆没人认识的代码 | 目录、函数、模块突然变多 | 暂停合并,要求 AI 生成架构差异报告 |
|
|
1897
|
+
| AI 自己改了 API | 前端和后端字段对不上 | 回滚契约变更,先更新 `02-api-contracts.md` |
|
|
1898
|
+
| AI 新增多个依赖 | package / requirements 膨胀 | 做依赖审查,不必要依赖移除 |
|
|
1899
|
+
| AI 把业务写进 UI | 组件里出现权限 / 金额 / 订单状态判断 | 下沉到 Service / 后端 |
|
|
1900
|
+
| AI 绕过测试 | 删除测试、skip 测试 | Blocker,恢复测试并复盘 |
|
|
1901
|
+
| AI 过度重构 | 小任务改了大范围文件 | 拆分 PR,限定修改范围 |
|
|
1902
|
+
| AI 重复造轮子 | 多个工具函数重复 | 抽象统一工具,更新规范 |
|
|
1903
|
+
| AI 忽略高风险 | 支付 / 鉴权代码无人工 Review | 禁止合并 |
|
|
1904
|
+
|
|
1905
|
+
---
|
|
1906
|
+
|
|
1907
|
+
## 34. 与移动端生产可上线规范的衔接
|
|
1908
|
+
|
|
1909
|
+
前一份《移动端 App 全平台生产可上线规范》强调:上线不是只测功能,而要覆盖平台差异、设备矩阵、权限、支付、隐私、安全、发布、监控、长期维护。AI Coding 规范与它的关系是:
|
|
1910
|
+
|
|
1911
|
+
| 移动端生产规范中的能力 | AI Coding 中应如何前置 |
|
|
1912
|
+
|---|---|
|
|
1913
|
+
| iOS / Android 平台差异 | 写入架构层与平台专项规范,禁止 AI 自由处理 |
|
|
1914
|
+
| 支付合规 | 写入高风险人工 Review Gate |
|
|
1915
|
+
| 权限与隐私 | 写入安全隐私规范和 Release Gate |
|
|
1916
|
+
| 设备适配 | 写入前端 / 移动端 UI 模式规范 |
|
|
1917
|
+
| 构建产物审计 | 写入 CI / Build Manifest |
|
|
1918
|
+
| SDK 供应链 | 写入依赖治理和 SDK Inventory |
|
|
1919
|
+
| 可观测性 / Runbook | 写入生产发布 Gate |
|
|
1920
|
+
| 宠物商城行业专项 | 写入行业业务边界和商品 / 订单 / 售后模型 |
|
|
1921
|
+
|
|
1922
|
+
结论:
|
|
1923
|
+
|
|
1924
|
+
```md
|
|
1925
|
+
移动端生产可上线规范 = 产品能不能上线的生产标准。
|
|
1926
|
+
AI Coding 可控规范 = AI 写代码时如何不破坏这些生产标准。
|
|
1927
|
+
```
|
|
1928
|
+
|
|
1929
|
+
---
|
|
1930
|
+
|
|
1931
|
+
## 35. 补充风险
|
|
1932
|
+
|
|
1933
|
+
### 35.1 Context 漂移
|
|
1934
|
+
|
|
1935
|
+
AI 多轮对话后可能逐渐偏离原始架构和规范。应对方式:
|
|
1936
|
+
|
|
1937
|
+
```md
|
|
1938
|
+
- 关键任务使用 AGENTS.md + 任务文档重新锚定。
|
|
1939
|
+
- 长任务拆成多个小 PR。
|
|
1940
|
+
- 每个阶段输出变更报告。
|
|
1941
|
+
- 避免在同一对话里连续做多个无关大任务。
|
|
1942
|
+
```
|
|
1943
|
+
|
|
1944
|
+
### 35.2 规范过大导致 Agent 忽略重点
|
|
1945
|
+
|
|
1946
|
+
应对方式:
|
|
1947
|
+
|
|
1948
|
+
```md
|
|
1949
|
+
- AGENTS.md 保持简洁。
|
|
1950
|
+
- 详细规范拆到 docs。
|
|
1951
|
+
- 使用渐进式加载。
|
|
1952
|
+
- 每个任务只加载相关规范。
|
|
1953
|
+
```
|
|
1954
|
+
|
|
1955
|
+
### 35.3 AI Review 自我确认偏差
|
|
1956
|
+
|
|
1957
|
+
同一个 Agent 写代码又 Review 代码,容易漏掉自己的错误。应对方式:
|
|
1958
|
+
|
|
1959
|
+
```md
|
|
1960
|
+
- 高风险代码由人审。
|
|
1961
|
+
- 关键 PR 可用另一个 Agent 做独立 Review。
|
|
1962
|
+
- Review Prompt 必须基于规范和风险等级,而不是泛泛检查。
|
|
1963
|
+
```
|
|
1964
|
+
|
|
1965
|
+
### 35.4 自动化通过但架构失败
|
|
1966
|
+
|
|
1967
|
+
测试通过不代表架构合理。应对方式:
|
|
1968
|
+
|
|
1969
|
+
```md
|
|
1970
|
+
- 大改动必须架构 Review。
|
|
1971
|
+
- 关键模块必须维护 ADR。
|
|
1972
|
+
- 每次新增目录 / 抽象 / 依赖都要说明理由。
|
|
1973
|
+
```
|
|
1974
|
+
|
|
1975
|
+
---
|
|
1976
|
+
|
|
1977
|
+
## 36. 待确认问题
|
|
1978
|
+
|
|
1979
|
+
落地到具体项目时,需要确认:
|
|
1980
|
+
|
|
1981
|
+
```md
|
|
1982
|
+
- 项目使用哪些 AI 工具:Codex、Claude Code、Copilot、Cursor、其他?
|
|
1983
|
+
- 是否统一使用 AGENTS.md 作为主入口?
|
|
1984
|
+
- CLAUDE.md 是否使用符号链接,还是单独维护?
|
|
1985
|
+
- 前端是否使用 TypeScript?
|
|
1986
|
+
- 后端是否使用 FastAPI、Django、Flask 或其他 Python 框架?
|
|
1987
|
+
- API 是否使用 REST、GraphQL 或 RPC?
|
|
1988
|
+
- 是否有支付、权限、隐私、AI、移动端、跨境数据等高风险业务?
|
|
1989
|
+
- 哪些目录允许 AI 自动修改?
|
|
1990
|
+
- 哪些目录必须人工审批?
|
|
1991
|
+
- CI 是否具备 typecheck、unit test、integration test、secret scan、dependency scan?
|
|
1992
|
+
- 团队是否要求记录 AI 工具、模型和 Prompt 摘要?
|
|
1993
|
+
```
|
|
1994
|
+
|
|
1995
|
+
---
|
|
1996
|
+
|
|
1997
|
+
## 37. 建议下一步拆分的专项文档
|
|
1998
|
+
|
|
1999
|
+
```md
|
|
2000
|
+
1. AGENTS.md 落地模板专项
|
|
2001
|
+
2. React 项目前端 AI Coding 规范专项
|
|
2002
|
+
3. Python / FastAPI 后端 AI Coding 规范专项
|
|
2003
|
+
4. AI 代码 Review Checklist 专项
|
|
2004
|
+
5. 支付 / 权限 / 安全高风险人工 Review 专项
|
|
2005
|
+
6. CI 自动化门禁专项
|
|
2006
|
+
7. 依赖与供应链治理专项
|
|
2007
|
+
8. 移动端项目 AI Coding 专项
|
|
2008
|
+
9. 电商项目 AI Coding 专项
|
|
2009
|
+
10. AI Agent / LLM 应用安全专项
|
|
2010
|
+
```
|
|
2011
|
+
|
|
2012
|
+
---
|
|
2013
|
+
|
|
2014
|
+
# 附录 A:官方资料索引
|
|
2015
|
+
|
|
2016
|
+
以下资料用于校准本规范中关于 Agent 指令文件、安全开发、AI / LLM 风险和供应链治理的表述。具体项目落地时,应以团队实际工具版本和官方文档为准。
|
|
2017
|
+
|
|
2018
|
+
| 主题 | 官方资料 |
|
|
2019
|
+
|---|---|
|
|
2020
|
+
| Codex AGENTS.md | [OpenAI Codex:Custom instructions with AGENTS.md](https://developers.openai.com/codex/guides/agents-md) |
|
|
2021
|
+
| Codex Best Practices | [OpenAI Codex:Best practices](https://developers.openai.com/codex/learn/best-practices) |
|
|
2022
|
+
| Codex PLANS.md / ExecPlan | [OpenAI Cookbook:Using PLANS.md for multi-hour problem solving](https://developers.openai.com/cookbook/articles/codex_exec_plans) |
|
|
2023
|
+
| Claude Code CLAUDE.md | [Anthropic Claude Code:How Claude remembers your project](https://docs.anthropic.com/en/docs/claude-code/memory) |
|
|
2024
|
+
| GitHub Copilot Custom Instructions | [GitHub Docs:Adding repository custom instructions for GitHub Copilot](https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot) |
|
|
2025
|
+
| NIST SSDF | [NIST SP 800-218 Secure Software Development Framework](https://csrc.nist.gov/pubs/sp/800/218/final) |
|
|
2026
|
+
| NIST SSDF for Generative AI | [NIST SP 800-218A Secure Software Development Practices for Generative AI and Dual-Use Foundation Models](https://csrc.nist.gov/pubs/sp/800/218/a/final) |
|
|
2027
|
+
| OWASP LLM Top 10 | [OWASP Top 10 for Large Language Model Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/) |
|
|
2028
|
+
| OWASP Secure Coding | [OWASP Secure Coding Practices Quick Reference Guide](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/) |
|
|
2029
|
+
| OWASP Software Supply Chain | [OWASP Software Component Verification Standard](https://scvs.owasp.org/) |
|
|
2030
|
+
|
|
2031
|
+
---
|
|
2032
|
+
|
|
2033
|
+
# 最终收敛
|
|
2034
|
+
|
|
2035
|
+
AI 写完的代码不失控,靠的不是人类逐行盯住所有实现,而是把控制点前移:
|
|
2036
|
+
|
|
2037
|
+
```md
|
|
2038
|
+
第一层:架构层 —— 人必须控制系统边界、核心模块、数据流、外部依赖和非功能约束。
|
|
2039
|
+
第二层:模式与抽象层 —— 人必须控制目录、分层、接口契约、组件模式、错误处理和测试规范。
|
|
2040
|
+
第三层:实现层 —— AI 可以大幅放大函数、组件、页面、接口和测试的实现效率。
|
|
2041
|
+
```
|
|
2042
|
+
|
|
2043
|
+
当项目越来越大时,团队的掌控感不是来自“我读过每一行代码”,而是来自:
|
|
2044
|
+
|
|
2045
|
+
```md
|
|
2046
|
+
- 我知道系统边界在哪里。
|
|
2047
|
+
- 我知道模块之间怎么交互。
|
|
2048
|
+
- 我知道每层代码应该做什么、不应该做什么。
|
|
2049
|
+
- 我知道接口契约是什么。
|
|
2050
|
+
- 我知道哪些地方可以改,哪些地方不能随便改。
|
|
2051
|
+
- 我知道 AI 每次变更是否经过测试和 Review。
|
|
2052
|
+
- 我知道高风险代码有人类把关。
|
|
2053
|
+
```
|
|
2054
|
+
|
|
2055
|
+
这才是 AI Coding 从“快速生成代码”走向“可生产、可维护、可上线”的关键。
|