--- name: 0007-context-anchoring description: 上下文锚定,执行只读操作(搜索与读取),不产生代码 --- # 技能:上下文锚定 (Context Anchoring) ## 元数据 (Metadata) - **name**: context-anchoring - **description**: 上下文锚定,执行只读操作(搜索与读取),不产生代码 - **version**: 1.0.0 - **author**: SSOT Architect - **lastUpdated**: 2026-01-15 ## 触发与定位 (Triggers & Scope) ### 触发条件 (Triggers) 当以下情况发生时,AI 应当"觉醒"本技能: 1. **提示词资产化完成**: 完成提示词编写后,需要锚定上下文 2. **代码生成前**: 在生成代码前需要了解现有代码结构 3. **新功能开发**: 需要参考现有类似功能的实现 4. **代码重构**: 需要理解现有代码的架构和依赖 5. **工作流阶段 4**: 用户进入工作流的"上下文锚定"阶段 ### 定位范围 (Scope) - **适用模块**: 所有 Datai 项目模块 - **影响操作**: 只读操作(搜索、读取) - **相关技能**: skill-prompt-engineering, skill-execution-logging ## 核心指令集 (Instructions) ### 架构约束 (Architecture Constraints) 1. **只读操作原则**: - **严禁**在上下文锚定阶段产生代码 - 只允许使用搜索和读取工具 - 只允许分析现有代码,不允许修改 2. **上下文锚定三步法**: - **Stop & Look**: 暂停生成,根据提示词策略查找文件 - **Mount**: 读取相关文件内容进入上下文 - **Align**: 分析现有代码风格,声明参考模式 3. **必须分析的内容**: - 现有类似功能的实现 - 接口定义和规范 - 全局配置和常量 - 代码风格和命名规范 - 错误处理模式 - 日志记录模式 ### 业务逻辑 SOP (Business Logic SOP) #### 步骤 1: Stop & Look - 停止并查找 ```markdown ## Stop & Look ### 暂停生成 在生成代码前,先停止生成,进行上下文分析。 ### 查找策略 基于提示词中定义的搜索策略,查找以下文件: 1. 搜索关键词:[关键词1],文件类型:[文件类型] 2. 搜索关键词:[关键词2],文件类型:[文件类型] 3. 搜索关键词:[关键词3],文件类型:[文件类型] ### 搜索工具 - 使用 `SearchCodebase` 工具进行代码搜索 - 使用 `Grep` 工具进行文本搜索 - 使用 `Glob` 工具进行文件名搜索 ``` #### 步骤 2: Mount - 挂载上下文 ```markdown ## Mount - 挂载上下文 ### 读取文件 根据搜索结果,读取以下文件: 1. [文件1](../../path/to/file1.java) - [说明] 2. [文件2](../../path/to/file2.java) - [说明] 3. [文件3](../../path/to/file3.java) - [说明] ### 读取工具 - 使用 `Read` 工具读取文件内容 - 使用 `LS` 工具查看目录结构 - 使用 `GetDiagnostics` 工具获取代码诊断信息 ### 上下文分析 分析以下内容: - [ ] 代码结构 - [ ] 命名规范 - [ ] 注释风格 - [ ] 错误处理 - [ ] 日志记录 - [ ] 测试覆盖 ``` #### 步骤 3: Align - 对齐代码风格 ```markdown ## Align - 对齐代码风格 ### 代码风格分析 基于读取的文件,分析现有代码风格: #### 命名规范 - 类名:[命名规范] - 方法名:[命名规范] - 变量名:[命名规范] - 常量名:[命名规范] #### 注释风格 - 类注释:[注释风格] - 方法注释:[注释风格] - 行内注释:[注释风格] #### 错误处理 - 异常处理:[处理模式] - 错误日志:[日志格式] - 错误返回:[返回格式] #### 日志记录 - 日志级别:[使用规范] - 日志格式:[日志格式] - 日志内容:[记录内容] ### 参考模式声明 我将参考以下模式进行开发: 1. **类结构**: 参考 [类名](../../path/to/Class.java) 2. **方法实现**: 参考 [方法名](../../path/to/Class.java#LXX-YY) 3. **错误处理**: 参考 [错误处理](../../path/to/Class.java#LXX-YY) 4. **日志记录**: 参考 [日志记录](../../path/to/Class.java#LXX-YY) ### 依赖分析 分析以下依赖: - [ ] 第三方库依赖 - [ ] 内部模块依赖 - [ ] 工具类依赖 - [ ] 配置依赖 ``` #### 步骤 4: 创建上下文锚定记录 ```markdown --- name: CONTEXT-YYYYMMDD-TaskName description: 上下文锚定记录 --- # 上下文锚定: [任务名称] ## 元数据 (Metadata) - **Date**: YYYY-MM-DD - **Task**: [任务名称] - **Related Prompt**: [PROMPT-XXX](../prompts/PROMPT-XXX.md) - **Context Files**: [上下文文件数量] ## Stop & Look - 停止并查找 ### 搜索策略 1. 搜索关键词:[关键词1],文件类型:[文件类型] 2. 搜索关键词:[关键词2],文件类型:[文件类型] ### 搜索结果 - [结果1](../../path/to/file1.java) - [说明] - [结果2](../../path/to/file2.java) - [说明] ## Mount - 挂载上下文 ### 读取的文件 | 文件 | 说明 | 关键发现 | |------|------|----------| | [文件1](../../path/to/file1.java) | [说明] | [关键发现] | | [文件2](../../path/to/file2.java) | [说明] | [关键发现] | ### 代码风格分析 #### 命名规范 - 类名:[命名规范] - 方法名:[命名规范] - 变量名:[命名规范] #### 注释风格 - 类注释:[注释风格] - 方法注释:[注释风格] #### 错误处理 - 异常处理:[处理模式] - 错误日志:[日志格式] #### 日志记录 - 日志级别:[使用规范] - 日志格式:[日志格式] ## Align - 对齐代码风格 ### 参考模式 1. **类结构**: 参考 [类名](../../path/to/Class.java) 2. **方法实现**: 参考 [方法名](../../path/to/Class.java#LXX-YY) 3. **错误处理**: 参考 [错误处理](../../path/to/Class.java#LXX-YY) 4. **日志记录**: 参考 [日志记录](../../path/to/Class.java#LXX-YY) ### 依赖分析 - [ ] 第三方库依赖:[依赖列表] - [ ] 内部模块依赖:[依赖列表] - [ ] 工具类依赖:[依赖列表] - [ ] 配置依赖:[依赖列表] ## 相关文档 (Related Documents) - [提示词文档](../prompts/PROMPT-XXX.md) - [需求文档](../../requirements/REQ-XXX.md) - [设计文档](../../design/DES-XXX.md) ``` ### 工具调用 (Tool Usage) 1. **搜索工具**: - 使用 `SearchCodebase` 工具进行代码搜索 - 使用 `Grep` 工具进行文本搜索 - 使用 `Glob` 工具进行文件名搜索 2. **读取工具**: - 使用 `Read` 工具读取文件内容 - 使用 `LS` 工具查看目录结构 3. **诊断工具**: - 使用 `GetDiagnostics` 工具获取代码诊断信息 ## 错误陷阱与验证 (Anti-Patterns & Checklist) ### 常见错误 (Anti-Patterns) 1. **错误**: 在上下文锚定阶段生成代码 - **后果**: 违反工作流规范,可能导致代码质量低 - **修正**: 严格遵守只读操作原则,不生成任何代码 2. **错误**: 只搜索不读取文件 - **后果**: 无法深入理解代码细节 - **修正**: 必须读取相关文件的完整内容 3. **错误**: 不分析代码风格 - **后果**: 生成的代码与现有代码风格不一致 - **修正**: 必须详细分析命名、注释、错误处理、日志记录等风格 4. **错误**: 不声明参考模式 - **后果**: 无法追踪代码来源和参考依据 - **修正**: 必须明确声明参考的文件和代码位置 5. **错误**: 忽略依赖分析 - **后果**: 可能引入不必要的依赖或遗漏必要依赖 - **修正**: 必须分析第三方库、内部模块、工具类和配置依赖 ### 验收清单 (Acceptance Checklist) - [ ] 已停止生成代码 - [ ] 已执行搜索操作 - [ ] 已读取相关文件 - [ ] 已分析代码风格 - [ ] 已声明参考模式 - [ ] 已分析依赖关系 - [ ] 已创建上下文锚定记录 - [ ] 未生成任何代码 - [ ] 未修改任何文件 ### Correct vs Incorrect 对比 #### Correct 示例 ```markdown ## Stop & Look - 停止并查找 ### 搜索策略 1. 搜索关键词:UserService,文件类型:java 2. 搜索关键词:saveUser,文件类型:java ### 搜索结果 - UserServiceImpl.java - 用户服务实现 - UserController.java - 用户控制器 ## Mount - 挂载上下文 ### 读取的文件 | 文件 | 说明 | 关键发现 | |------|------|----------| | UserServiceImpl.java | 用户服务实现 | 使用@Transactional注解 | | UserController.java | 用户控制器 | 使用@RestController注解 | ## Align - 对齐代码风格 ### 参考模式 1. **类结构**: 参考 UserServiceImpl 2. **方法实现**: 参考 saveUser 方法 3. **错误处理**: 参考 try-catch 模式 4. **日志记录**: 参考 log.info() 模式 ``` #### Incorrect 示例 ```markdown ## 上下文分析 搜索了 UserService 相关文件,发现了一些代码。 现在开始编写代码... ``` **问题**: 没有详细的搜索策略,没有读取文件内容,没有分析代码风格,直接开始编写代码。 ## 相关文档 (Related Documents) - [工作流提示词](../prompts/03-创建工作流提示词.md#阶段-4-上下文锚定-context-anchoring-critical) - [提示词资产化技能](./0006-prompt-engineering.md) - [执行与记录技能](./0008-execution-logging.md) - [上下文锚定原则](../prompts/03-创建工作流提示词.md#阶段-4-上下文锚定-context-anchoring-critical)