---
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)
