= AGENT 执行规范

本规范用于约束 agent 的编码与协作行为，供**任何语言、任何项目**遵循。

== 访问与解析（引用方须知）

* 引用方式：引用方项目通过 https 公网静态路径或本地相对/绝对路径引用本文件，不限方式。本文件与 `specs/` 目录**始终在同一目录下**（目录结构不变），这是所有相对引用的固定前提。
* 路径解析规则：文中出现的 `specs/...` 均为**相对本文件所在目录**的路径。无论本文件以何种 URL/路径被打开，解析方式都是：
  ** https 访问：`specs/core/execution.adoc` = `本文件所在目录URL/specs/core/execution.adoc`；
  ** 本地相对/绝对路径：`specs/core/execution.adoc` = `本文件所在目录/specs/core/execution.adoc`。
* agent 执行要求：读取本文件后，须将本文件所在目录视为基准，把文中的 `specs/...` 解析为 `<基准目录>/specs/...` 后加载对应文件；禁止仅凭本文件内容猜测规范，凡工作涉及对应主题或项目具备对应技术特征，必须加载对应规范（见下「加载调度器」）。

严格使用本规范。规范以本文件当前内容为准；与本规范冲突时，以本规范定义为准。若本规范与**引用方项目自己编写/维护的项目规范**（即引入本规范的那个项目自身定义的规范，非本规范文件）冲突，以引用方项目自身规范为准。

== 分类与懒加载（加载调度器）

规范按"必加载层 / 通用层 / 技术栈层 / 平台层"分层分类存储于 `specs/` 下，**按需懒加载**（避免常驻加载不需要的规范、节省上下文）。懒加载是手段，**"强制不漏"是底线**——凡工作涉及对应主题或项目具备对应技术特征，必须加载对应规范，不得因"规范文件不在常驻上下文"而凭记忆或仅凭本入口文件猜测执行。

加载规则：

* 必加载层（每次工作都须加载）：
  ** 执行原则：link:specs/core/execution.adoc[]
  ** 规范管理：link:specs/core/management.adoc[]
* 通用层（涉及对应活动时加载，不得跳过）：
  ** 编写代码 → link:specs/general/coding.adoc[]（通用编码，跨语言）
  ** 写注释/文档/格式 → link:specs/general/doc.adoc[]
  ** 设计文档/测试设计文档（核心功能新增、重构、行为变更、方案选型） → link:specs/general/doc-design.adoc[]
  ** 业务系统全生命周期文档（**项目按生命周期阶段组织文档**，识别特征：`doc/` 下存在按阶段编号的子目录（如 `1-initiation/`、`3-design/`、`operations/`），或项目涉及需求→设计→开发→测试→部署→验收→上线的完整流程、存在需求规格/测试报告/部署方案/验收报告等阶段级文档、或存在 `doc/external/` 外部系统文档目录） → link:specs/general/doc-lifecycle.adoc[]
  ** git/版本控制操作 → link:specs/general/git.adoc[]
  ** code review → link:specs/general/review.adoc[]
  ** 多 agent 协作 → link:specs/general/collab.adoc[]
  ** 跑测试/补测试 → link:specs/general/testing.adoc[]（公共测试规范，跨语言）
  ** 编译/运行/分步验证 → link:specs/general/verify.adoc[]
* 技术栈层（按项目实际使用的语言/技术栈加载，**检测到即必须加载，不得遗漏**）：
  ** Java 项目（存在 `.java`、`pom.xml`、`mvnw`、lombok 配置等）→ link:specs/stack/java.adoc[] + link:specs/stack/java-syntax.adoc[] + link:specs/stack/java-testing.adoc[]
  ** Spring 项目（存在 Spring 依赖/注解）→ link:specs/stack/spring.adoc[]
  ** Maven 构建（存在 `pom.xml`/`mvnw`）→ link:specs/stack/maven.adoc[]
  ** 其他语言/技术栈（nodejs、ubuntu 服务器配置、python 等）按其对应栈文件加载——栈文件由引用方项目按「技术栈扩展约定」在 `specs/stack/` 下补充登记（尚未登记的栈按 AGENTS.adoc 通用层与 coding.adoc 执行，不臆造其专属规则）
* 平台层（按使用平台加载）：
  ** CNB 平台 → link:specs/platform/cnb.adoc[]

== 技术栈扩展约定

本规范按"分类 + 懒加载"设计，天然支持多语言、多项目类型。新增技术栈规范时：

* 在 `specs/stack/` 下新增对应栈文件（如 `nodejs.adoc`、`python.adoc`），只收录该栈专属规则；
* 跨语言通用规则一律写入 link:specs/general/coding.adoc[]，避免重复；
* 同步在本入口文件的"技术栈层"登记，明确检测特征，保证"按项目类型加载且不漏"。
