#### F. 类别六:“从0到1”(创造与生成) (Creation & Scaffolding) **模板索引 (Index)** | 模板ID | 核心用途 | 使用场景 / 关键词 | | :--- | :--- | :--- | | **F-1: 模块与服务创建** | | | | **[`F1`](#F1)** | 自然语言项目初始化 | 项目脚手架, 目录结构, CMake初始化 | | **[`F2`](#F2)** | 基于设计文档模块脚手架 | TDD解析, 接口/实现骨架, Stub生成 | | **[`F3`](#F3)** | MVP/服务原型生成 | gRPC/REST原型, 服务器+客户端, 构建脚本 | | **F-2: 任务与功能实现** | | | | **[`F4`](#F4)** | 跨文件特性实现 | 接口+实现+测试联动, 纵向切片 | | **[`F5`](#F5)** | 新模块测试套件生成 | gtest/gmock, Fixture, Mock依赖 | | **F-3: 基础设施与环境创建** | | | | **[`F6`](#F6)** | 基础设施即代码(IaC)生成 | Dockerfile, compose, CI配置 | | **[`F7`](#F7)** | 适配层/绑定代码生成 | pybind11, 头文件解析, API绑定 | ----- **子类别 F-1: 模块与服务创建 (Module & Service Scaffolding)** ----- **模板名称:** `F1: 基于自然语言的项目工作区初始化` **适用场景:** `D4 (Agent)` 模式。项目启动的“第0步”。将一个高层级的自然语言想法(“我要做一个XX项目”)直接转化为一个标准化的、包含目录结构和基础配置文件的工作区。 **内嵌原则:** `[原则二:任务解构]` (D4)、`[原则八:决定论]`、`[原则五:上下文即燃料]`。 **[Prompt 模板]** ```txt 角色:你是一个项目脚手架生成机器人(Project Scaffolding Bot)。 任务:请根据我的“项目描述”,在 @workspace 中初始化一个全新的项目结构。 == 项目描述 == 1. 项目名称 (Project Name): [例如:RadarSignalSimulator] 2. 核心语言 (Language): [例如:C++] 3. 构建系统 (Build System): [例如:CMake (现代C++17标准)] 4. 项目类型 (Type): [例如:可执行程序 (Executable)] 5. (可选) 核心依赖: [例如:Boost, gtest (用于测试)] == 执行计划 (Execution Plan) == 1. 创建根目录: 在 @workspace 中创建 [项目名称] 根目录。 2. 创建目录结构 (Directory Structure): - 在 [项目名称]/ 下创建 src/ (用于源代码) - 在 [项目名称]/ 下创建 include/ (用于头文件) - 在 [项目名称]/ 下创建 tests/ (用于测试) - 在 [项目名称]/ 下创建 docs/ (用于文档) - 在 [项目名称]/ 下创建 scripts/ (用于辅助脚本) 3. 生成 .gitignore: - 在 [项目名称]/ 根目录创建 .gitignore 文件。 - 必须填入适用于 [语言] 和 [构建系统] 的标准模板内容 (例如:忽略 build/, *.o, *.exe, *.out)。 4. 生成 README.md: - 在 [项目名称]/ 根目录创建 README.md。 - 必须包含一级标题 #[项目名称] 和“快速上手”章节的占位符。 5. 生成构建系统骨架 (Build System Scaffolding): - 在 [项目名称]/ 根目录创建 CMakeLists.txt。 - 必须包含:cmake_minimum_required, project(...), set(CMAKE_CXX_STANDARD 17), add_executable(...), 以及 find_package (针对 [核心依赖]) 的占位符。 - (可选) 在 [项目名称]/tests/ 下创建 CMakeLists.txt (用于 gtest)。 6. 生成“Hello World”骨架: - 创建 [项目名称]/src/main.cpp。 - 必须包含一个最小可运行的 main 函数 (例如:打印 "Hello, [项目名称]!")。 == 最终约束 == - 严格按照上述计划创建目录和文件,严禁添加任何未提及的文件。 - 生成的文件内容必须是健壮的、遵循最佳实践的“骨架”代码。 ``` **填充指南:** - `[项目描述]`:**这是核心燃料**。用户必须提供清晰的项目名称、语言和构建系统,Agent才能生成匹配的脚手架。 - **使用指南:** 这是“从0到0.1”的模板,它负责建立结构,后续的 `F2` 或 `F3` 模板则负责在结构中填充内容。 ----- **模板名称:** `F2: 基于设计文档的模块脚手架生成` **适用场景:** `D4 (Agent)` 模式。在项目结构(F1)已存在后,根据详细的TDD(技术设计文档)自动生成一个新模块所需的全部C++文件骨架。 **内嵌原则:** `[原则二:任务解构]` (D4)、`[原则五:上下文即燃料]` (设计文档是核心)、`[原则七:结构化输出]`。 **[Prompt 模板]** ```txt 角色:你是一个“技术设计文档到代码”(TDD-to-Code)的生成引擎。 任务:请严格按照我提供的 [设计文档] (例如 @file:docs/Logger.md),在 @workspace 中生成对应C++模块的完整文件脚手架。 == 执行上下文 == 1. 工作区: @workspace 2. 设计文档 (必须在调用时提供): [例如:@file:docs/Logger.md] 3. 目标根目录 (Target Root): [例如:@dir:src/modules/] == 执行计划 (Execution Plan) == 1. 读取 (Read): 打开并深度解析 [设计文档]。 2. 提取实体 (Extract): 从文档中提取 [模块名] (例如:Logger), [接口/基类] (例如:ILogger), 以及 [实现类] (例如:FileLogger, ConsoleLogger, LoggerManager)。 3. 创建目录: 在 [目标根目录] 下创建 [模块名] 目录 (例如:src/modules/Logger/)。 4. 循环生成文件 (Loop & Generate): - (a) 对于 [接口/基类] (例如 ILogger): - 创建 [模块名]/[接口名].h 文件。 - 必须包含:头文件保护 (#pragma once 或 #ifndef)。 - 必须包含:[设计文档] 中定义的所有纯虚函数 (例如 virtual void log(...) = 0;)。 - 必须包含:Doxygen 注释骨架 (@brief, @param, @return)。 - (b) 对于 [实现类] (例如 FileLogger): - 创建 [模块名]/[类名].h 文件。 - 必须包含:头文件保护。 - 必须 public 继承自 [接口名] (例如 class FileLogger : public ILogger)。 - 必须声明 [设计文档] 中定义的所有成员函数(添加 override)和私有成员变量。 - 必须添加 Doxygen 注释骨架。 - (c) 对于 [实现类] (例如 FileLogger): - 创建 [模块名]/[类名].cpp 文件。 - 必须 include 对应的 .h 文件。 - 必须为所有成员函数生成“桩函数”(Stub)实现。 - 桩实现规范: 必须包含 // TODO: Implement [函数名] 注释,并返回一个默认值(如 void, true, nullptr)。 == 最终约束 == - 生成的文件必须严格匹配 [设计文档] 中定义的类名、继承关系和函数签名。 - 所有生成的 .h 和 .cpp 文件都必须包含 Doxygen 注释骨架。 ``` **填充指南:** - **使用指南:** 用户必须在调用时提供 `@workspace` 和设计文档的路径 (`@file:...`)。 - `[设计文档]`:这份文档的质量(是否清晰、无歧义)直接决定了Agent生成脚手架的质量。 ----- **模板名称:** `F3: [Agent模板] 最小可行产品(MVP)/服务原型生成` **适用场景:** `D4 (Agent)` 模式。用于快速启动一个特定技术栈(如gRPC, REST API)的“最小可行”(MVP)服务,生成所有必需的文件(API定义、服务器、客户端、构建脚本)。 **内嵌原则:** `[原则二:任务解构]` (D4)、`[原则七:结构化输出]`、`[原则五:上下文即燃料]`。 **[Prompt 模板]** ```txt 角色:你是一名精通 [技术栈, 例如:gRPC 和 C++ CMake] 的全栈原型工程师。 任务:请在 @workspace 中为我生成一个 [技术栈] 的最小可行产品(MVP)服务原型。 == 原型需求 == 1. 服务名称 (Service Name): [例如:RadarConfigService] 2. 技术栈 (Tech Stack): [例如:gRPC (C++)] 3. 核心功能 (Core RPC): [例如:定义一个 SetConfig RPC] 4. RPC 请求 (Request): [例如:ConfigData (包含 int32 param1, float param2)] 5. RPC 响应 (Response): [例如:ConfigResponse (包含 bool success)] == 执行计划 (Execution Plan) == 请在 @workspace 根目录下创建并填充以下文件: 1. 文件 1:API 定义 (例如 [服务名称].proto) - 必须包含:syntax = "proto3";, package ...; - 必须定义:service [服务名称]。 - 必须包含:rpc [核心功能]([RPC 请求]) returns ([RPC 响应]); - 必须定义:message [RPC 请求] 和 message [RPC 响应] 的结构。 2. 文件 2:服务器实现 (例如 server.cpp) - 必须包含:gRPC 和 .proto 生成的 .h 文件。 - 必须实现:[服务名称]ServiceImpl 类,继承自 [服务名称]::Service。 - 必须实现:[核心功能] 方法的桩函数(返回一个默认的 [RPC 响应])。 - 必须包含:main() 函数,用于启动 gRPC 服务器并监听 [端口, 例如:0.0.0.0:50051]。 3. 文件 3:客户端示例 (例如 client.cpp) - 必须包含:gRPC 和 .proto 生成的 .h 文件。 - 必须包含:main() 函数。 - 必须展示:如何创建 Channel、创建 Stub、组装 [RPC 请求]、调用 [核心功能] RPC,并打印 [RPC 响应]。 4. 文件 4:构建脚本 (例如 CMakeLists.txt) - 必须包含:find_package(gRPC REQUIRED), find_package(Protobuf REQUIRED)。 - 必须包含:用于编译 .proto 文件的 protobuf_generate_- 规则。 - 必须包含:add_executable(server server.cpp ...) 和 add_executable(client client.cpp ...)。 - 必须包含:target_link_libraries (链接 gRPC, Protobuf 等)。 == 最终约束 == - 生成的所有文件必须是相互关联、可编译、可运行的(假设依赖已安装)。 - 所有桩函数必须包含 // TODO: Add business logic here 注释。 ``` **填充指南:** - `[原型需求]`:**这是核心燃料**。用户必须清晰定义服务名称、技术栈和至少一个核心功能(如RPC)的输入输出。 - `[技术栈]`:此模板可适配多种技术,如 `REST API (FastAPI, Python)` 或 `gRPC (Go)`,只需修改提示中的技术栈名称和 `[执行计划]` 中的文件名及库即可。 ----- **子类别 F-2: 任务与功能实现 (Feature & Task Implementation)** ----- **模板名称:** `F4: 跨文件特性实现` **适用场景:** `D4 (Agent)` 模式。实现一个“纵向特性”(Vertical Feature Slice),该特性需要**同时修改**多个现有的、不同角色的文件(如接口、实现、测试)。 **内嵌原则:** `[原则二:任务解构]` (D4,核心)、`[原则八:决定论]`。 **[Prompt 模板]** ```txt 角色:你是一个遵循指令的自动化C++特性实现Agent。 任务:请严格按照以下“特性实现执行计划”,在 @workspace 中修改现有文件以实现新功能。 == 特性名称 == - [例如:添加“重置”功能到所有处理器] == 执行计划 (Execution Plan) == 你必须严格按照以下顺序和规范,修改指定的文件: Step 1:修改 [接口文件] - 文件: [例如:@file:src/interfaces/IProcessor.h] - 动作: 在 IProcessor 接口中,添加一个新的纯虚函数: [粘贴新接口签名,例如:virtual void reset() = 0;] Step 2:修改 [实现类A] - 文件: [例如:@file:src/cpu/CpuProcessor.h] - 动作: 在 CpuProcessor 类的 public 部分添加方法声明: [粘贴派生类声明,例如:void reset() override;] - 文件: [例如:@file:src/cpu/CpuProcessor.cpp] - 动作: 在文件末尾添加桩函数实现: [粘贴桩函数实现,例如: void CpuProcessor::reset() { // TODO: Implement reset logic for CPU m_internal_state = 0; // 示例逻辑 } ] Step 3:修改 [实现类B] - 文件: [例如:@file:src/gpu/GpuProcessor.h] - 动作: 在 GpuProcessor 类的 public 部分添加方法声明: [粘贴派生类声明,例如:void reset() override;] - 文件: [例如:@file:src/gpu/GpuProcessor.cpp] - 动作: 在文件末尾添加桩函数实现: [粘贴桩函数实现,例如: void GpuProcessor::reset() { // TODO: Implement reset logic for GPU // (e.g., reset CUDA buffers) } ] Step 4:修改 [测试文件] - 文件: [例如:@file:tests/ProcessorTest.cpp] - 动作: 添加一个新的gtest测试用例骨架: [粘贴测试用例骨架,例如: TEST(ProcessorTest, ResetFunction) { // TODO: Write test for reset() // CpuProcessor cpu; // cpu.reset(); // EXPECT_EQ(cpu.getState(), 0); } ] == 最终约束 == - 原子性: 必须按顺序完成所有步骤。 - 精确性: 严禁修改任何 [执行计划] 中未明确提及的文件或代码行。 ``` **填充指南:** - **使用指南:** 这是D4 Agent的“高级”用法。工程师(用户)扮演“架构师”,负责将特性“解构”为`[执行计划]`。Agent(AI)扮演“执行者”。 - `[执行计划]`:**这是核心燃料**。工程师提供的步骤越详细、越精确(包括粘贴目标代码),Agent的执行成功率越高。 ----- **模板名称:** `F5: 新模块的“测试套件”生成` **适用场景:** `D4 (Agent)` 模式。在模块(如 `NewModule.h`)的核心功能已定义后,用于自动创建配套的、包含 `gtest` 和 `gmock` 的完整测试文件(`_test.cpp`)。 **内嵌原则:** `[原则二:任务解构]` (D4)、`[原则七:结构化输出]`、`[原则五:上下文即燃料]`。 **[Prompt 模板]** ```txt 角色:你是一名精通C++ gtest 和 gmock 框架的自动化QA工程师。 任务:请为我提供的 [目标头文件] 自动生成一个完整的gtest测试套件文件。 == 执行上下文 == 1. 工作区: @workspace 2. 目标头文件 (Source of Truth): [例如:@file:src/modules/NewModule.h] 3. 测试文件输出路径: [例如:@file:tests/NewModule_test.cpp] == 执行计划 (Execution Plan) == 1. 读取 (Read): 打开并深度解析 [目标头文件]。 2. 分析 (Analyze): - (a) 识别目标类名(例如 NewModule)。 - (b) 识别所有 public 方法(例如 methodA, methodB)。 - (c) 识别构造函数中的依赖(例如 IDependencyA- dep),这些是需要Mock的目标。 3. 创建测试文件 (Create): 创建 [测试文件输出路径]。 4. 生成文件内容 (Generate): - (a) Includes: 必须包含 gtest/gtest.h, gmock/gmock.h, 以及 [目标头文件]。 - (b) Mock 类生成: - 针对 [分析] (c) 中识别的每一个依赖(例如 IDependencyA): - 生成 Mock[依赖名] 类 (例如 class MockDependencyA : public IDependencyA { ... })。 - 必须使用 MOCK_METHOD 宏为所有接口方法生成Mock。 - (c) Test Fixture 生成: - 生成 class [模块名]Test : public ::testing::Test { ... }。 - 必须在 SetUp() 方法中初始化Mock对象和被测类 [模块名]。 - (d) 测试用例 (Test Cases) 生成: - 针对 [分析] (b) 中识别的每一个 public 方法: - 至少生成一个 TEST_F([模块名]Test, [方法名]_HappyPath) 骨架。 - 至少生成一个 TEST_F([模块名]Test, [方法名]_EdgeCase) 骨架。 - 骨架要求: 必须包含 // Arrange, // Act, // Assert 三段式注释,并添加 // TODO: ... 占位符。 == 最终约束 == - 必须自动识别依赖并生成 gmock 类。 - 必须为所有 public 方法生成测试用例骨架。 ``` **填充指南:** - **使用指南:** 用户调用时必须提供 `@workspace` 和 `@file:[目标头文件]` 的路径。 - `[目标头文件]`:Agent将解析此文件以确定要测试什么和要Mock什么。 ----- **子类别 F-3: 基础设施与环境创建 (Infrastructure & Environment)** ----- **模板名称:** `F6: [Agent模板] 基础设施即代码(IaC)生成` (原F5) **适用场景:** `D4 (Agent)` 模式。为现有的C++ CMake项目自动生成DevOps/IaC(基础设施即代码)所需的环境配置文件,如 `Dockerfile`, `docker-compose.yml`, `.gitlab-ci.yml`。 **内嵌原则:** `[原则二:任务解构]` (D4)、`[原则七:结构化输出]`、`[原则五:上下文即燃料]`。 **[Prompt 模板]** ```txt 角色:你是一名精通DevOps、容器化(Docker)和CI/CD(GitLab CI)的SRE工程师。 任务:请为我当前的C++ CMake项目(在 @workspace 中)生成一套标准化的IaC(基础设施即代码)配置文件。 == 项目上下文 == 1. 项目类型: [例如:C++ CMake 项目] 2. 构建命令 (Build): [例如:cmake .. && make -j] 3. 测试命令 (Test): [例如:ctest] 或 [./build/run_tests] 4. 最终产物 (Artifact): [例如:./build/my_app] (可执行文件) == 执行计划 (Execution Plan) == 请在 @workspace 根目录创建并填充以下文件: 1. 文件 1:Dockerfile (用于生产/部署) - 规范: 必须使用“多阶段构建”(Multi-Stage Build)。 - (a) builder 阶段: - FROM [基础镜像, 例如:ubuntu:22.04] - WORKDIR /build - COPY . . - RUN [安装依赖, 例如:apt-get install cmake build-essential ...] - RUN [构建命令] - (b) final 阶段: - FROM [轻量级镜像, 例如:ubuntu:22.04-slim] - COPY --from=builder /build/[最终产物] /app/ - ENTRYPOINT ["/app/[最终产物]"] 2. 文件 2:docker-compose.yml (用于本地开发/测试) - 规范: 定义一个服务(例如 dev)。 - 必须包含 build: . (使用 Dockerfile)。 - 必须包含 volumes: [.:/app] (挂载本地代码以实现热重载/开发)。 - (可选) 覆盖 command: 以进行调试。 3. 文件 3:.gitlab-ci.yml (用于CI/CD) - 规范: 必须定义 stages: [build, test]。 - (a) build_job: - stage: build - script: [安装依赖] 和 [构建命令] - artifacts: paths: [[最终产物]] (保存构建产物) - (b) test_job: - stage: test - dependencies: [build_job] (依赖构建) - script: [测试命令] == 最终约束 == - 生成的配置文件必须语法正确,并遵循 [项目上下文] 中提供的命令和路径。 ``` **填充指南:** - `[项目上下文]`:**这是核心燃料**。用户必须提供构建、测试命令和最终产物的路径,AI才能生成正确的IaC脚本。 ----- **模板名称:** `F7: 适配层/绑定代码生成` **适用场景:** `D4 (Agent)` 模式。连接不同语言或系统。自动解析一个C++头文件,并生成“适配层”或“绑定”(Binding)代码,使其能被另一种语言(如Python)调用。 **内嵌原则:** `[原则二:任务解构]` (D4)、`[原则五:上下文即燃料]` (头文件)、`[原则七:结构化输出]`。 **[Prompt 模板]** ```txt 角色:你是一名精通 [绑定技术, 例如:pybind11] 和C++ API绑定的专家。 任务:请为我提供的 [目标头文件],自动生成 [绑定技术] 的C++绑定(wrapper)代码。 == 执行上下文 == 1. 工作区: @workspace 2. 目标头文件 (Source of Truth): [例如:@file:src/libProcessor.h] 3. 绑定技术 (Tech): [例如:pybind11] 4. Python 模块名 (Module Name): [例如:radar_processor_py] 5. 输出文件 (Output): [例如:@file:bindings/py_bindings.cpp] == 执行计划 (Execution Plan) == 1. 读取 (Read): 打开并深度解析 [目标头文件]。 2. 分析 (Analyze): - (a) 识别所有 public class [ClassName]。 - (b) 识别 [ClassName] 的所有 public 构造函数。 - (c) 识别 [ClassName] 的所有 public 成员函数(包括重载)。 - (d) (可选) 识别 public enum。 3. 创建绑定文件 (Create): 创建 [输出文件]。 4. 生成文件内容 (Generate): - (a) Includes: 必须包含 [绑定技术].h (例如 pybind11/pybind11.h) 和 [目标头文件]。 - (b) 模块定义宏: 必须生成 [宏, 例如:PYBIND11_MODULE([Python 模块名], m)] { ... }。 - (c) 类绑定 (Class Binding): - 在宏内部,为 [分析] (a) 中识别的 [ClassName] 生成 py::class_... 定义。 - (d) 构造函数绑定: 为 [分析] (b) 中识别的每个构造函数生成 .def(py::init<...>());。 - (e) 方法绑定: 为 [分析] (c) 中识别的每个成员函数生成 .def("[python_name]", &[ClassName]::[method_name])。 - (f) (可选) 重载处理: 必须使用 py::overload_cast 来处理C++中的函数重载。 - (g) (可选) Enum 绑定: 为 [分析] (d) 中的 enum 生成 py::enum_ 绑定。 == 最终约束 == - 必须自动解析C++头文件并绑定所有 public 接口。 - 必须正确处理C++函数重载(这是最关键的风险点)。 - 生成的 .cpp 文件必须是语法正确的 [绑定技术] 代码。 ``` **填充指南:** - **使用指南:** 用户调用时必须提供 `@workspace`、`@file:[目标头文件]` 以及 `[绑定技术]`。 - `[绑定技术]`:例如 `pybind11`, `cffi` (生成C头文件), `JNI` (生成Java JNI样板代码)。AI的能力高度依赖于其对特定绑定技术的训练深度。 -----